Compare commits
476 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e44e5a0128 | ||
![]() |
f26b8890f0 | ||
![]() |
f1e54eec76 | ||
![]() |
37ee134d7a | ||
![]() |
6cc6a72d18 | ||
![]() |
38adf70e7d | ||
![]() |
abed35b79b | ||
![]() |
78c2f2e954 | ||
![]() |
e8271cd138 | ||
![]() |
da713c4bf5 | ||
![]() |
392e04a9eb | ||
![]() |
71b4ada5c4 | ||
![]() |
2ce5f658e7 | ||
![]() |
5f232bf604 | ||
![]() |
e8ebd6ceff | ||
![]() |
332ed60fcf | ||
![]() |
408e4469b3 | ||
![]() |
e0abfaa743 | ||
![]() |
a19920700b | ||
![]() |
c1a5621d47 | ||
![]() |
00baf7d42c | ||
![]() |
2aa218f509 | ||
![]() |
808acc9e85 | ||
![]() |
67cc3b0638 | ||
![]() |
96e27afe76 | ||
![]() |
df228df56a | ||
![]() |
bbab147cd6 | ||
![]() |
b3cdf881a0 | ||
![]() |
feb86cb839 | ||
![]() |
99ce33e7ef | ||
![]() |
5fd0c15502 | ||
![]() |
9f1bea517c | ||
![]() |
8bdecab59e | ||
![]() |
f320b7be11 | ||
![]() |
c7ea504892 | ||
![]() |
f99e74ae69 | ||
![]() |
e4d3ffda78 | ||
![]() |
5cd8b3b6c9 | ||
![]() |
8b29e0530c | ||
![]() |
413c13fc08 | ||
![]() |
f101c27251 | ||
![]() |
26ccfb778b | ||
![]() |
3c27d274a7 | ||
![]() |
245576ce7d | ||
![]() |
6825707b34 | ||
![]() |
bb2cdb889f | ||
![]() |
a0ef4cbb4a | ||
![]() |
dc4f616514 | ||
![]() |
c7cd11e0b7 | ||
![]() |
5a6c3a87ad | ||
![]() |
5b08b79a84 | ||
![]() |
88fd63556a | ||
![]() |
1ae6f481ff | ||
![]() |
62685dc523 | ||
![]() |
8ecc810826 | ||
![]() |
17a9c802c6 | ||
![]() |
fea220ddf8 | ||
![]() |
25014855c6 | ||
![]() |
979545b60d | ||
![]() |
ff81419ccf | ||
![]() |
9ad05132ee | ||
![]() |
4f3d3fba36 | ||
![]() |
a42030eae2 | ||
![]() |
617bd92c31 | ||
![]() |
3a7804e43c | ||
![]() |
b46932004b | ||
![]() |
1977fef81b | ||
![]() |
8cf5612e57 | ||
![]() |
57934bfb8d | ||
![]() |
a9bae2e6ca | ||
![]() |
7c7a079ffc | ||
![]() |
10976c3f45 | ||
![]() |
f8034fc4fe | ||
![]() |
f00dbb066b | ||
![]() |
abaaefc6bd | ||
![]() |
98d0af2ca2 | ||
![]() |
2f06922052 | ||
![]() |
28310a4006 | ||
![]() |
f524731153 | ||
![]() |
170253beab | ||
![]() |
7a8d459e54 | ||
![]() |
4285a9ca09 | ||
![]() |
f464f1d9aa | ||
![]() |
e5f63526b6 | ||
![]() |
ad8fd351c1 | ||
![]() |
7837deeec5 | ||
![]() |
0c3b1d31b1 | ||
![]() |
5a174662b3 | ||
![]() |
0e693b8077 | ||
![]() |
fa1b943bac | ||
![]() |
0b34ff94c5 | ||
![]() |
9984f63f92 | ||
![]() |
fbdfa23a03 | ||
![]() |
e2c17ed742 | ||
![]() |
b6a73c3b8f | ||
![]() |
b157ddc4ec | ||
![]() |
cece8f963d | ||
![]() |
3aee83a88a | ||
![]() |
b6c6fabd21 | ||
![]() |
8dfe3e6178 | ||
![]() |
eb8b04751d | ||
![]() |
e6a4bbf2f3 | ||
![]() |
e6dd32b8e8 | ||
![]() |
0630f10830 | ||
![]() |
1f5d45a9f3 | ||
![]() |
e82c5c433e | ||
![]() |
36fac11ad2 | ||
![]() |
59ad396840 | ||
![]() |
812f779e23 | ||
![]() |
1243984f9a | ||
![]() |
a850dad851 | ||
![]() |
85324ae26c | ||
![]() |
1b47cea9c5 | ||
![]() |
63e8b69236 | ||
![]() |
da31d005ea | ||
![]() |
20e1989615 | ||
![]() |
e8493cd807 | ||
![]() |
e940d62ba9 | ||
![]() |
62df15b6c8 | ||
![]() |
2e2db9b4d1 | ||
![]() |
16405a5595 | ||
![]() |
07a04c0645 | ||
![]() |
72f2fabadf | ||
![]() |
46efc9cec9 | ||
![]() |
15794ceee7 | ||
![]() |
ec16918236 | ||
![]() |
4af6073c40 | ||
![]() |
10ff03c389 | ||
![]() |
cf7ceb6f24 | ||
![]() |
2f73ec0fdb | ||
![]() |
b4d6878169 | ||
![]() |
17d9d2ecd6 | ||
![]() |
69cd90c915 | ||
![]() |
06c0caf910 | ||
![]() |
88fc3cda4f | ||
![]() |
bf85b31c59 | ||
![]() |
4ac8b52563 | ||
![]() |
e42f83a8d2 | ||
![]() |
a56ff99f78 | ||
![]() |
b446e077bf | ||
![]() |
20636bb698 | ||
![]() |
e4fb2344c9 | ||
![]() |
cb1639da4d | ||
![]() |
57ceb7ac66 | ||
![]() |
32b82e1c47 | ||
![]() |
ef95de6649 | ||
![]() |
f6c3a31e0e | ||
![]() |
5c442ae9c6 | ||
![]() |
5cd164ed8c | ||
![]() |
44cd0bf496 | ||
![]() |
791e23b2ba | ||
![]() |
d5b726df6e | ||
![]() |
087fa65dc5 | ||
![]() |
0d27d59901 | ||
![]() |
af9dd1bfb6 | ||
![]() |
54f7c206a9 | ||
![]() |
d0111b33b4 | ||
![]() |
b7f703a330 | ||
![]() |
d9fa0ed182 | ||
![]() |
94412ee7b4 | ||
![]() |
a37aadcbc5 | ||
![]() |
2a54d4aaf1 | ||
![]() |
d1dd992d08 | ||
![]() |
e13d4dcaf8 | ||
![]() |
d8cd3449e0 | ||
![]() |
e461e35729 | ||
![]() |
daf204f6f7 | ||
![]() |
80d07152c7 | ||
![]() |
c2a59869cf | ||
![]() |
08358a38db | ||
![]() |
6cc8b2e1e1 | ||
![]() |
cfc85d63e2 | ||
![]() |
f880bbaec8 | ||
![]() |
677e950d75 | ||
![]() |
1a3ed67ec2 | ||
![]() |
2d4a675069 | ||
![]() |
0c409d5391 | ||
![]() |
305166e977 | ||
![]() |
1b55cee68a | ||
![]() |
55aa8b44cf | ||
![]() |
2a195e128b | ||
![]() |
b4b67f83b2 | ||
![]() |
8b95042949 | ||
![]() |
72a308ab32 | ||
![]() |
9da76b2123 | ||
![]() |
6408559b02 | ||
![]() |
b990c4c10b | ||
![]() |
b1458835cc | ||
![]() |
961a8d7835 | ||
![]() |
ef4cf3d0ac | ||
![]() |
e447ccf70d | ||
![]() |
c51b35f249 | ||
![]() |
c9c7b5e547 | ||
![]() |
d9619c1fca | ||
![]() |
5f1da43829 | ||
![]() |
2d816e8786 | ||
![]() |
9163d84c07 | ||
![]() |
635f6f035a | ||
![]() |
2580c34c12 | ||
![]() |
d461156a3d | ||
![]() |
56533dcf93 | ||
![]() |
d64b602e03 | ||
![]() |
bcc75d840b | ||
![]() |
4487b32063 | ||
![]() |
24b623ce5d | ||
![]() |
f4a1d25d3f | ||
![]() |
d5203c100d | ||
![]() |
d84ee4ae2d | ||
![]() |
12aca1caa0 | ||
![]() |
437e6f4820 | ||
![]() |
12e15b004c | ||
![]() |
f012d1199a | ||
![]() |
4fa1f4a027 | ||
![]() |
82fb578eea | ||
![]() |
ea7a485629 | ||
![]() |
16db8c6dba | ||
![]() |
292dfd426a | ||
![]() |
99d5190b79 | ||
![]() |
4d425a87a4 | ||
![]() |
1f3982d0f9 | ||
![]() |
98808019d0 | ||
![]() |
bc0e88458c | ||
![]() |
c7b09d0984 | ||
![]() |
f230cd6f11 | ||
![]() |
176140c9ff | ||
![]() |
9aec6e2d06 | ||
![]() |
7e45cc3bac | ||
![]() |
5ed6874de2 | ||
![]() |
e786b4bd58 | ||
![]() |
d7967f8883 | ||
![]() |
5f196160c5 | ||
![]() |
60c39ea239 | ||
![]() |
7c8f357d09 | ||
![]() |
d17549b5f9 | ||
![]() |
ad14fb5de8 | ||
![]() |
8ada1bf323 | ||
![]() |
02ed6f2b58 | ||
![]() |
67f3b6f9ab | ||
![]() |
e861d33533 | ||
![]() |
306be61f57 | ||
![]() |
0160eb6e6d | ||
![]() |
21ea192584 | ||
![]() |
f927bb344a | ||
![]() |
48cee23179 | ||
![]() |
96ee41d87b | ||
![]() |
0fda4450ae | ||
![]() |
4e06423b43 | ||
![]() |
545ba266bd | ||
![]() |
8c83da78e2 | ||
![]() |
76cdd3bfb5 | ||
![]() |
5491e48ad9 | ||
![]() |
b9d2095ec0 | ||
![]() |
3dec7e6c78 | ||
![]() |
4fbb2a5228 | ||
![]() |
c2a4745eec | ||
![]() |
4d952bbe61 | ||
![]() |
ebe5149dbc | ||
![]() |
4dfb946fc8 | ||
![]() |
cfb2ca9fa6 | ||
![]() |
320aa7bf88 | ||
![]() |
fc87104995 | ||
![]() |
099b6bb3e0 | ||
![]() |
3bf9b0f811 | ||
![]() |
39cc21db8e | ||
![]() |
9632febdb5 | ||
![]() |
9b2016a4af | ||
![]() |
5327400b96 | ||
![]() |
b426ae92a5 | ||
![]() |
f53dbc0b58 | ||
![]() |
e6b00ad9f1 | ||
![]() |
7e802aab98 | ||
![]() |
cb2b850c01 | ||
![]() |
b91e5e2343 | ||
![]() |
4dfd2903c9 | ||
![]() |
2f57b412b6 | ||
![]() |
f90af33be4 | ||
![]() |
a3c1bc17cc | ||
![]() |
d39ceb1aa3 | ||
![]() |
b8b1972ccf | ||
![]() |
6d7eb170e3 | ||
![]() |
dbc3265794 | ||
![]() |
f884868f2a | ||
![]() |
f2c1ca464e | ||
![]() |
b501342d3e | ||
![]() |
a9642e41f6 | ||
![]() |
26ead85914 | ||
![]() |
37af71bd65 | ||
![]() |
f9af941f1e | ||
![]() |
3ac1b686e8 | ||
![]() |
8ade92b096 | ||
![]() |
4c5ff69b95 | ||
![]() |
3cb4cc7d28 | ||
![]() |
d23e0bd7bb | ||
![]() |
78dbf2d309 | ||
![]() |
f40e821c7b | ||
![]() |
233295c35b | ||
![]() |
49d586a537 | ||
![]() |
6b1ccd9761 | ||
![]() |
3dae9a89cd | ||
![]() |
1a05133de7 | ||
![]() |
da79275657 | ||
![]() |
be306abb44 | ||
![]() |
ce35bfd13d | ||
![]() |
04d29f4e3b | ||
![]() |
24082fe594 | ||
![]() |
9682afbc26 | ||
![]() |
d64cb1b2af | ||
![]() |
e4239634e5 | ||
![]() |
d199f05097 | ||
![]() |
8845bb48e9 | ||
![]() |
e2d1f924b1 | ||
![]() |
3cc79ac681 | ||
![]() |
c80fdc2283 | ||
![]() |
09f465727d | ||
![]() |
f7a0f119de | ||
![]() |
4384caf0dd | ||
![]() |
72a102ccd4 | ||
![]() |
76f3121b2f | ||
![]() |
d7dfd59910 | ||
![]() |
adce3fe79b | ||
![]() |
84ed5488e0 | ||
![]() |
35f5fac39f | ||
![]() |
cdfbed4ea4 | ||
![]() |
5c5167cba0 | ||
![]() |
6e625ef091 | ||
![]() |
cab17d16e8 | ||
![]() |
c2e9eab6c4 | ||
![]() |
c6589a78b7 | ||
![]() |
439c43a59e | ||
![]() |
c4bc379411 | ||
![]() |
d1d60728a1 | ||
![]() |
1c94648dd5 | ||
![]() |
62641e9ed0 | ||
![]() |
9a92c81fae | ||
![]() |
0edc2b9ae4 | ||
![]() |
ebb1a2fea1 | ||
![]() |
8051d9f8fe | ||
![]() |
579a1314ae | ||
![]() |
8ba2b3ebd3 | ||
![]() |
ace2c8c9bc | ||
![]() |
629f176fe5 | ||
![]() |
4ad9ccbe38 | ||
![]() |
b6f55dfbbb | ||
![]() |
6add53c677 | ||
![]() |
4c29c98a6c | ||
![]() |
54e0785f9d | ||
![]() |
99b3e141f0 | ||
![]() |
51e8f01627 | ||
![]() |
530e042c97 | ||
![]() |
5471d3cb98 | ||
![]() |
bd9677e597 | ||
![]() |
ead20e4a17 | ||
![]() |
a86fca0d01 | ||
![]() |
f53be636ba | ||
![]() |
2be2adec99 | ||
![]() |
1a0de0e4b2 | ||
![]() |
2b9ed47080 | ||
![]() |
6d7fd11dab | ||
![]() |
013b373541 | ||
![]() |
7571420b3b | ||
![]() |
0692916f73 | ||
![]() |
032ee9ca18 | ||
![]() |
087faa728e | ||
![]() |
119595fffe | ||
![]() |
58c53f9822 | ||
![]() |
00a0552c18 | ||
![]() |
4fd13e5145 | ||
![]() |
b039c67200 | ||
![]() |
86d459fc60 | ||
![]() |
c750e78d6b | ||
![]() |
e33c8a3f3c | ||
![]() |
860a760263 | ||
![]() |
7ee7d59e96 | ||
![]() |
055b0d72fc | ||
![]() |
ae3bb1331f | ||
![]() |
4ecb10731d | ||
![]() |
4376f1c8cd | ||
![]() |
abf559712a | ||
![]() |
350437ebf7 | ||
![]() |
0808e89f27 | ||
![]() |
1de3ff043b | ||
![]() |
e4992dd518 | ||
![]() |
cdf77c8bb7 | ||
![]() |
90fe48ea18 | ||
![]() |
70dd7d8f02 | ||
![]() |
8b58dbc07f | ||
![]() |
019c5352c2 | ||
![]() |
9b79c92acd | ||
![]() |
3599083eb4 | ||
![]() |
4977eb9d8c | ||
![]() |
8f67d90767 | ||
![]() |
be9c2a9d38 | ||
![]() |
62efe11705 | ||
![]() |
7422b02ab5 | ||
![]() |
a1c0f60524 | ||
![]() |
a70f1d0ced | ||
![]() |
6797db582c | ||
![]() |
d6a8c98211 | ||
![]() |
42822ac374 | ||
![]() |
de65fad72e | ||
![]() |
37150b4e22 | ||
![]() |
db30ca53ae | ||
![]() |
43dd442a4f | ||
![]() |
4fc7906f3e | ||
![]() |
60a9ac8f6d | ||
![]() |
95bf03f357 | ||
![]() |
9153d704ae | ||
![]() |
fa353495d3 | ||
![]() |
0fdd140b62 | ||
![]() |
660c982f1e | ||
![]() |
caac0c0b83 | ||
![]() |
bac29601fa | ||
![]() |
827b3950e8 | ||
![]() |
fb758041ca | ||
![]() |
8660561ad9 | ||
![]() |
7ac222916a | ||
![]() |
f620e21c12 | ||
![]() |
79973dc787 | ||
![]() |
612224c54e | ||
![]() |
b71b97b468 | ||
![]() |
2c01b8e69b | ||
![]() |
1d693d324c | ||
![]() |
718b3e5c68 | ||
![]() |
45b8e936ca | ||
![]() |
13c0fa6391 | ||
![]() |
b853e9e10c | ||
![]() |
4ed1d509dc | ||
![]() |
a32a698ca2 | ||
![]() |
bbe353c8dd | ||
![]() |
7a83817989 | ||
![]() |
da12e97bca | ||
![]() |
652f98792e | ||
![]() |
3ac99d1d86 | ||
![]() |
7f5c687196 | ||
![]() |
a9e4a3cce8 | ||
![]() |
92b8a8cb00 | ||
![]() |
3110a1762c | ||
![]() |
510167b26c | ||
![]() |
41dfd886c7 | ||
![]() |
b7797864d6 | ||
![]() |
4738455f14 | ||
![]() |
7a769a9d2c | ||
![]() |
40fad78f5c | ||
![]() |
8f856bf05d | ||
![]() |
5b0d72c9ca | ||
![]() |
e419eb903c | ||
![]() |
d13c2cc47a | ||
![]() |
52b7c2e428 | ||
![]() |
ae13828cfd | ||
![]() |
dd1d7e3ca7 | ||
![]() |
526a09df2a | ||
![]() |
dba52e903c | ||
![]() |
6bfd776157 | ||
![]() |
8ba1eb84b4 | ||
![]() |
d24f75e8f4 | ||
![]() |
523467c40b | ||
![]() |
fe5f4556e5 | ||
![]() |
cb6fb85fe1 | ||
![]() |
1aa56c01a3 | ||
![]() |
c64777433a | ||
![]() |
918431dce9 | ||
![]() |
83fc5a0c56 | ||
![]() |
40fc9a8be7 | ||
![]() |
2d7fc054dd | ||
![]() |
9e8ede348f | ||
![]() |
55e141313f | ||
![]() |
3e8f352e2d | ||
![]() |
6d052aa72e | ||
![]() |
77ad4bb1be | ||
![]() |
e115745125 | ||
![]() |
cc7dda2ba0 | ||
![]() |
f719ae8fc9 | ||
![]() |
2c56a58a42 | ||
![]() |
1095bf104d | ||
![]() |
982d264094 | ||
![]() |
4906f3cc7a |
58
.github/workflows/ci-main.yml
vendored
|
@ -2,9 +2,9 @@ name: CI
|
|||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
branches: [ 1.18 ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
branches: [ 1.18 ]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
|
@ -44,7 +44,7 @@ jobs:
|
|||
- { uses: actions/checkout@v4, with: { fetch-depth: 50 } }
|
||||
|
||||
- name: Copyright check
|
||||
run: ./update_copyrights --output=
|
||||
run: ./update_copyrights
|
||||
|
||||
ubuntu:
|
||||
strategy:
|
||||
|
@ -69,7 +69,7 @@ jobs:
|
|||
SDL_VIDEODRIVER: dummy
|
||||
|
||||
steps:
|
||||
- { uses: actions/checkout@v3, with: { submodules: "recursive" } }
|
||||
- { uses: actions/checkout@v4, with: { submodules: "recursive" } }
|
||||
|
||||
# 1) wesnothd and campaignd should be buildable without SDL2 being present
|
||||
# 2) boost is installed via apt as well as built and installed into /usr/local (for _GLIBCXX_DEBUG support in boost program options)
|
||||
|
@ -121,14 +121,15 @@ jobs:
|
|||
for opt in config data userconfig userdata
|
||||
do
|
||||
output=$(./wesnoth --nobanner --"$opt"-path)
|
||||
if [ "$output" = "" ]; then printf 'option --%s-path prints nothing to stdout!' "$opt" >&2; exit 1; fi
|
||||
if [ "$output" = "" ]; then printf 'option --%s-path prints nothing to stdout!\n' "$opt" >&2; exit 1; fi
|
||||
printf '%s-path: %s\n' "$opt" "$output"
|
||||
done
|
||||
- name: WML validation
|
||||
if: success() || steps.build.outcome == 'success'
|
||||
run: ./utils/CI/schema_validation.sh
|
||||
- name: Run WML tests
|
||||
if: success() || steps.build.outcome == 'success'
|
||||
# only run on release builds (takes ~10 times as long on debug)
|
||||
if: matrix.cfg == 'release' && (success() || steps.build.outcome == 'success')
|
||||
run: ./run_wml_tests -g -c -t 20 -bt 1000
|
||||
- name: Run play tests
|
||||
if: success() || steps.build.outcome == 'success'
|
||||
|
@ -137,14 +138,15 @@ jobs:
|
|||
if: success() || steps.build.outcome == 'success'
|
||||
run: ./utils/CI/mp_test_executor.sh
|
||||
- name: Run unit tests
|
||||
if: success() || steps.build.outcome == 'success'
|
||||
# only run on release builds (takes ~10 times as long on debug)
|
||||
if: matrix.cfg == 'release' && (success() || steps.build.outcome == 'success')
|
||||
run: ./run_boost_tests
|
||||
|
||||
steam-runtime:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- { uses: actions/checkout@v3, with: { submodules: "recursive" } }
|
||||
- { uses: actions/checkout@v4, with: { submodules: "recursive" } }
|
||||
|
||||
- name: Steam Runtime
|
||||
run: |
|
||||
|
@ -153,7 +155,7 @@ jobs:
|
|||
tar -cf "steambuild-$version.tar" steambuild
|
||||
|
||||
- name: Upload
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Steam-Linux
|
||||
path: utils/dockerbuilds/steambuild-*.tar
|
||||
|
@ -162,7 +164,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- { uses: actions/checkout@v3, with: { submodules: "recursive" } }
|
||||
- { uses: actions/checkout@v4, with: { submodules: "recursive" } }
|
||||
|
||||
- name: MinGW Crosscompile
|
||||
run: |
|
||||
|
@ -175,13 +177,13 @@ jobs:
|
|||
mv mingwbuild/wesnoth*-win64.exe "wesnoth-$version-win64.exe"
|
||||
|
||||
- name: Upload Source
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Source
|
||||
path: wesnoth-*.tar.bz2
|
||||
|
||||
- name: Upload Windows-Installer
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Windows-Installer
|
||||
path: utils/dockerbuilds/wesnoth-*-win64.exe
|
||||
|
@ -193,20 +195,20 @@ jobs:
|
|||
options: --tty --cap-add=ALL --privileged # docker create options
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: "recursive"
|
||||
- { uses: actions/checkout@v4, with: { submodules: "recursive", fetch-depth: 500, fetch-tags: true } }
|
||||
|
||||
- name: Flatpak
|
||||
run: |
|
||||
# write to an ignored filename so the build is not marked as modified
|
||||
jq '.modules |= map(select(.name == "wesnoth").sources[0]={"type":"dir","path":"."}) | ."build-options".env.FLATPAK_BUILDER_N_JOBS="2"' packaging/flatpak/org.wesnoth.Wesnoth.json > wesnoth-manifest.json
|
||||
flatpak-builder --force-clean --default-branch=ci --disable-rofiles-fuse wesnoth-app wesnoth-manifest.json
|
||||
flatpak build-export export wesnoth-app ci
|
||||
flatpak build-bundle export wesnoth.flatpak org.wesnoth.Wesnoth ci --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo
|
||||
jq '.modules |= map(select(.name == "wesnoth").sources[0]={type:"dir",path:"."})' packaging/flatpak/org.wesnoth.Wesnoth.json > wesnoth-manifest.json
|
||||
git config --global --add safe.directory "$PWD"
|
||||
branch=ci-$(git describe || git log -n 1 --format=%h) # if git describe fails fall back to the commit hash
|
||||
flatpak-builder --force-clean --default-branch="$branch" --disable-rofiles-fuse --jobs=2 wesnoth-app wesnoth-manifest.json
|
||||
flatpak build-export export wesnoth-app "$branch"
|
||||
flatpak build-bundle export wesnoth.flatpak org.wesnoth.Wesnoth "$branch" --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo
|
||||
|
||||
- name: Upload flatpak bundle
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Flatpak-Bundle
|
||||
path: wesnoth.flatpak
|
||||
|
@ -222,7 +224,7 @@ jobs:
|
|||
CLICOLOR_FORCE: 1
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: "recursive"
|
||||
|
||||
|
@ -245,12 +247,12 @@ jobs:
|
|||
fail-fast: false
|
||||
matrix:
|
||||
cfg: [ Debug, Release ]
|
||||
runs-on: macos-11.0
|
||||
runs-on: macos-13
|
||||
env:
|
||||
CFG: ${{ matrix.cfg }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: "recursive"
|
||||
|
||||
|
@ -271,7 +273,7 @@ jobs:
|
|||
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@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: MacOS ${{ matrix.cfg }} disk image
|
||||
path: projectfiles/Xcode/Wesnoth_${{ matrix.cfg }}.dmg
|
||||
|
@ -297,21 +299,21 @@ jobs:
|
|||
runs-on: windows-2019
|
||||
|
||||
steps:
|
||||
- { uses: actions/checkout@v3, with: { submodules: "recursive" } }
|
||||
- { uses: actions/checkout@v4, with: { submodules: "recursive" } }
|
||||
|
||||
- name: Make version of the runner image (https://github.com/actions/runner-images/releases) accessible to expression
|
||||
run: echo IMAGE_VERSION=%ImageVersion%>> %GITHUB_ENV%
|
||||
|
||||
- name: Cache object files
|
||||
id: windows-cache
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: vcpkg_installed # vcpkg generates this dir next to vcpkg.json
|
||||
# the final key part needs to be changed if anything in the build process changes that is not already included here
|
||||
key: win-cache-master-${{ matrix.cfg }}-${{ env.IMAGE_VERSION }}-${{ hashFiles('vcpkg.json') }}-0001
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v1.1.3
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
|
||||
- name: Run cmake
|
||||
run: cmake -DCMAKE_BUILD_TYPE=%CFG% -DENABLE_GAME=true -DENABLE_SERVER=true -DENABLE_CAMPAIGN_SERVER=true
|
||||
|
@ -329,7 +331,7 @@ jobs:
|
|||
# run after all other jobs have completed to check overall build status
|
||||
notification:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [checks, ubuntu, steam-runtime, mingw, flatpak, translations, macos-intel, windows]
|
||||
needs: [checks, copyright, ubuntu, steam-runtime, mingw, flatpak, translations, macos-intel, windows]
|
||||
if: failure() && github.event_name == 'push'
|
||||
|
||||
steps:
|
||||
|
|
4
.github/workflows/codeql.yml
vendored
|
@ -53,8 +53,8 @@ jobs:
|
|||
sudo apt install scons libboost-system1.74-dev libboost-filesystem1.74-dev libboost-iostreams1.74-dev \
|
||||
libboost-serialization1.74-dev libboost-locale1.74-dev libboost-regex1.74-dev libboost-random1.74-dev \
|
||||
libboost-program-options1.74-dev libboost-thread1.74-dev libboost-context1.74-dev libboost-test-dev \
|
||||
libboost-coroutine1.74-dev libasio-dev libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libvorbis-dev \
|
||||
libpango1.0-dev libssl-dev libcurl4-openssl-dev liblua5.4-dev
|
||||
libboost-coroutine1.74-dev libboost-graph1.74-dev libasio-dev libsdl2-dev libsdl2-image-dev \
|
||||
libsdl2-mixer-dev libvorbis-dev libpango1.0-dev libssl-dev libcurl4-openssl-dev liblua5.4-dev
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v3
|
||||
|
|
|
@ -93,7 +93,7 @@ if(APPLE)
|
|||
find_library(SECURITY_LIBRARY Security REQUIRED)
|
||||
endif()
|
||||
|
||||
find_package(Boost ${BOOST_VERSION} REQUIRED COMPONENTS iostreams program_options regex system thread random coroutine locale filesystem)
|
||||
find_package(Boost ${BOOST_VERSION} REQUIRED COMPONENTS iostreams program_options regex system thread random coroutine locale filesystem graph)
|
||||
find_package(ICU REQUIRED COMPONENTS data i18n uc)
|
||||
|
||||
# no, gettext executables are not required when NLS is deactivated
|
||||
|
|
|
@ -18,6 +18,7 @@ order to build Wesnoth:
|
|||
* Program Options
|
||||
* System
|
||||
* Coroutine
|
||||
* Graph
|
||||
* SDL2 libraries:
|
||||
* SDL2 >= 2.0.10 (macOS: 2.0.22 due to needing https://github.com/libsdl-org/SDL/commit/3bebdaccb7bff8c40438856081d404a7ce3def30)
|
||||
* SDL2_image >= 2.0.2 (with PNG, JPEG, and WEBP support)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|Branch|CI status|
|
||||
|------|---------|
|
||||
|Master|[](https://github.com/wesnoth/wesnoth/actions/workflows/ci-main.yml?query=branch%3Amaster)|
|
||||
|1.16|[](https://github.com/wesnoth/wesnoth/actions/workflows/ci-main.yml?query=branch%3A1.16)|
|
||||
|1.18|[](https://github.com/wesnoth/wesnoth/actions/workflows/ci-main.yml?query=branch%3A1.18)|
|
||||
|
||||
About
|
||||
=====
|
||||
|
|
|
@ -409,6 +409,7 @@ if env["prereqs"]:
|
|||
have_client_prereqs = have_client_prereqs & conf.CheckPKG("fontconfig")
|
||||
have_client_prereqs = have_client_prereqs & conf.CheckBoost("regex")
|
||||
have_client_prereqs = have_client_prereqs & conf.CheckLib("curl")
|
||||
have_client_prereqs = have_client_prereqs & conf.CheckBoost("graph")
|
||||
|
||||
if env["system_lua"]:
|
||||
if env["PLATFORM"] == 'win32':
|
||||
|
|
|
@ -7,6 +7,7 @@ test_gui2/modal_dialog_test_addon_license_prompt
|
|||
test_gui2/modal_dialog_test_campaign_difficulty
|
||||
test_gui2/modal_dialog_test_chat_log
|
||||
test_gui2/modal_dialog_test_editor_choose_addon
|
||||
test_gui2/modal_dialog_test_community_dialog
|
||||
test_gui2/modal_dialog_test_core_selection
|
||||
test_gui2/modal_dialog_test_custom_tod
|
||||
test_gui2/modal_dialog_test_depcheck_confirm_change
|
||||
|
@ -43,6 +44,7 @@ test_gui2/modal_dialog_test_log_settings
|
|||
test_gui2/modal_dialog_test_message
|
||||
test_gui2/modal_dialog_test_mp_alerts_options
|
||||
test_gui2/modal_dialog_test_mp_connect
|
||||
test_gui2/modal_dialog_test_migrate_version_selection_dialog
|
||||
test_gui2/modal_dialog_test_mp_join_game_password_prompt
|
||||
test_gui2/modal_dialog_test_mp_login
|
||||
test_gui2/modal_dialog_test_mp_method_selection
|
||||
|
@ -88,6 +90,7 @@ config_cache/test_lead_spaces_loading
|
|||
config_filters/test_int_add_sub_filter
|
||||
config_filters/test_int_positive_filter
|
||||
config_filters/test_int_signed_filter
|
||||
config_filters/test_without_attribute_filter
|
||||
filesystem/test_fs_game_path_reverse_engineering
|
||||
filesystem/test_fs_base
|
||||
filesystem/test_fs_enum
|
||||
|
@ -261,3 +264,14 @@ whiteboard_side_actions_container/test_insertion
|
|||
whiteboard_side_actions_container/test_removal
|
||||
feature_test_WML_macro_define/macro_define_noArgument_ParseAsExpected
|
||||
feature_test_WML_macro_define/macro_define_1Argument_ParseAsExpected
|
||||
test_schema_self_validator/test_schema_super_self_reference
|
||||
test_schema_self_validator/test_schema_super_cycle
|
||||
test_schema_validator/test_super_cycle
|
||||
test_schema_validator/test_super_cycle_only_if_used
|
||||
test_schema_validator/test_super_cycle_crashes_on_unknown_key
|
||||
test_schema_validator/test_super_missing
|
||||
test_schema_validator/test_super_missing_only_if_used
|
||||
test_schema_validator/test_super_mandatory
|
||||
test_schema_validator/test_super_mandatory_missing
|
||||
test_schema_validator/test_super_cycle_mandatory
|
||||
test_schema_validator/test_schema_link_cycle
|
||||
|
|
25946
changelog.md
2
changelog_entries/editor-tool-help-toggle.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
### Editor
|
||||
* Added Show Tool Information toggle option in the menus and toolbar to allow hiding the informational tooltip on the edge of the screen that shows the current editor tool's usage and palette information
|
7
changelog_entries/ei_scenario_bugfixes.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
### Campaigns
|
||||
* Eastern Invasion
|
||||
* S04c: achievement now only triggers when escaping with all knights alive
|
||||
* S11/S99: flying units can no longer enter prison cells via the river
|
||||
* S12: fixed Dra-Nak (if present) having incorrect traits and portraits
|
||||
* S17b: AI is now more forced to recruit only higher-level units when gold reserves get too high
|
||||
* S99: prisoners now escape if their jailers are killed
|
2
changelog_entries/fix_infinite_recursion.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
### WML Engine
|
||||
* Fix crash when weapon specials' filters lead to infinite recursion (issue #8940)
|
2
changelog_entries/game_load_filter.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
### Miscellaneous and Bug Fixes
|
||||
* Fixed the Load Game dialog forgetting the filename filter when changing directory
|
2
changelog_entries/non-ascii-case-insensitve-filtering.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
### User interface
|
||||
* Search filter should now be case-insensitive for more than just ASCII characters (#9328)
|
|
@ -755,7 +755,7 @@ Date,File,License,Author - Real Name(other name);Real Name(other name);etc,Notes
|
|||
2023/09/15,data/campaigns/Eastern_Invasion/images/items/yeti-meat.png,CC BY-SA 4.0,Nemaara Lang(nemaara),,,ce883b8e21d2dcfb55f268476e0b9d07
|
||||
2023/09/15,data/campaigns/Eastern_Invasion/images/maps/ei.webp,GNU GPL v2+,Lari Nieminen(zookeeper);(dalas),,,2dd97aa9b8358057fa149cf3e72262e1
|
||||
2022/04/13,data/campaigns/Eastern_Invasion/images/maps/l10n/de/ei--overlay.webp,GNU GPL v2+,unknown,,,630d20d4a616cd3807e67289e5820b60
|
||||
2022/04/13,data/campaigns/Eastern_Invasion/images/maps/l10n/it/ei--overlay.webp,GNU GPL v2+,unknown,,,ba6a5e6311706ff4790337b3ff040542
|
||||
2024/03/16,data/campaigns/Eastern_Invasion/images/maps/l10n/it/ei--overlay.webp,GNU GPL v2+,Antonio Rosella,,,3410bf6f1d7169f1a224b222521dcc2e
|
||||
2022/04/13,data/campaigns/Eastern_Invasion/images/maps/l10n/pt/ei--overlay.webp,GNU GPL v2+,unknown,,,3a11d92fb80fbf01187b29e4ce6efd86
|
||||
2022/04/13,data/campaigns/Eastern_Invasion/images/maps/l10n/ru/ei--overlay.webp,GNU GPL v2+,unknown,,,a900312001d4724f3e74e7d1e52a8e51
|
||||
2022/04/13,data/campaigns/Eastern_Invasion/images/maps/l10n/zh_CN/ei--overlay.webp,GNU GPL v2+,unknown,,,f9f5ae10e64aacb93df06534d2faf909
|
||||
|
@ -2147,6 +2147,7 @@ Date,File,License,Author - Real Name(other name);Real Name(other name);etc,Notes
|
|||
2018/07/27,data/campaigns/Under_the_Burning_Suns/images/halo/eloh-halo-back.png,CC BY-SA 4.0,Iris Morelle(Iris),,,b02cfa130423e6ac5ca6c9b6e5745fd6
|
||||
2018/07/27,data/campaigns/Under_the_Burning_Suns/images/halo/eloh-halo-bottom.png,CC BY-SA 4.0,Iris Morelle(Iris),,,5ffbfafc44e42e214fb8b50d7952ae64
|
||||
2018/06/16,data/campaigns/Under_the_Burning_Suns/images/items/burial2.png,CC BY-SA 4.0,(doofus-01),,,6fb90490eca46783621bb6e0ba74f892
|
||||
2024/08/10,data/campaigns/Under_the_Burning_Suns/images/items/cold-sword.png,GNU GPL v2+,(Elvish_Hunter),,,85e087f68832193b5e01ddaaf09044e1
|
||||
2018/04/27,data/campaigns/Under_the_Burning_Suns/images/items/kaleh-dead.png,CC BY-SA 4.0,(doofus-01),,,d6d08f5a933a9c65d63d7b4077adc100
|
||||
2011/03/11,data/campaigns/Under_the_Burning_Suns/images/items/magiccircle-n.png,GNU GPL v2+,unknown,,,73c7e7c9c485b4b0afac52b4654b8c79
|
||||
2011/03/11,data/campaigns/Under_the_Burning_Suns/images/items/magiccircle-ne.png,GNU GPL v2+,unknown,,,086f1fd9b23a91fa0b25d228bf79ad60
|
||||
|
@ -3319,7 +3320,6 @@ Date,File,License,Author - Real Name(other name);Real Name(other name);etc,Notes
|
|||
2022/04/13,data/core/images/maps/l10n/gl/titlescreen--overlay.webp,GNU GPL v2+,unknown,,,926eb5fd3dc920bb2a6cf562e5e4d093
|
||||
2022/04/13,data/core/images/maps/l10n/hu/wesnoth--overlay.webp,GNU GPL v2+,unknown,,,82876c7102874f37f44c1a060d8360d1
|
||||
2022/04/13,data/core/images/maps/l10n/it/titlescreen--overlay.webp,GNU GPL v2+,unknown,,,e17bf3b92a4bc21551678dc78a0eb36f
|
||||
2022/04/13,data/core/images/maps/l10n/it/wesnoth--overlay.webp,GNU GPL v2+,unknown,,,2e7f95ec7ca87057ce5898a9a3ee186c
|
||||
2022/04/13,data/core/images/maps/l10n/la/wesnoth--overlay.webp,GNU GPL v2+,unknown,,,1b33e9879378368de02ac9fd80b7dcab
|
||||
2022/04/13,data/core/images/maps/l10n/lt/titlescreen--overlay.webp,GNU GPL v2+,unknown,,,9a8f9a31af9f1cac55582bf94db68326
|
||||
2022/04/13,data/core/images/maps/l10n/pt/titlescreen--overlay.webp,GNU GPL v2+,unknown,,,6a3afeb73be1e348671cfec0601a3989
|
||||
|
@ -3330,7 +3330,7 @@ Date,File,License,Author - Real Name(other name);Real Name(other name);etc,Notes
|
|||
2022/04/13,data/core/images/maps/l10n/sr@ijekavian/wesnoth--overlay.webp,GNU GPL v2+,unknown,,,778f20f633dc74a1eac16060c3c237b6
|
||||
2022/04/13,data/core/images/maps/l10n/sr@ijekavianlatin/wesnoth--overlay.webp,GNU GPL v2+,unknown,,,41fc9106a6856bdf87cdf039546e01cc
|
||||
2022/04/13,data/core/images/maps/l10n/sr@latin/wesnoth--overlay.webp,GNU GPL v2+,unknown,,,1851ded66e81ff7107462b4d96d80ba8
|
||||
2023/01/02,data/core/images/maps/l10n/tr/titlescreen--overlay.png,GNU GPL v2+,unknown,,,849bcf58613f08db7b6373eabb9356f2
|
||||
2024/08/23,data/core/images/maps/l10n/tr/titlescreen--overlay.webp,GNU GPL v2+,unknown,,,900507067033c9e250da52392ca6dfbc
|
||||
2022/04/13,data/core/images/maps/l10n/zh_CN/titlescreen--overlay.webp,GNU GPL v2+,unknown,,,7ff8710c9a338e72b7ae856bef1bb0d5
|
||||
2022/04/13,data/core/images/maps/l10n/zh_CN/wesnoth--overlay.webp,GNU GPL v2+,unknown,,,f60707bf287113fdb7f972a9f40da154
|
||||
2022/04/13,data/core/images/maps/titlescreen.webp,GNU GPL v2+,Lari Nieminen(zookeeper),,,e5c46c93612a3be48f379f5094347ef7
|
||||
|
@ -3555,6 +3555,7 @@ Date,File,License,Author - Real Name(other name);Real Name(other name);etc,Notes
|
|||
2022/04/13,data/core/images/portraits/monsters/bat-dread.webp,CC BY-SA 4.0,(doofus-01),,,178214850930874244829f0599d94864
|
||||
2022/04/13,data/core/images/portraits/monsters/bat-red.webp,CC BY-SA 4.0,unknown,,,fc8d97031f6fb4fee202971b2b0b729e
|
||||
2022/04/13,data/core/images/portraits/monsters/bat.webp,GNU GPL v2+,Kathrin Polikeit(Kitty),,,ed48b93dc5d784d0aa3853ad87c82f02
|
||||
2024/02/24,data/core/images/portraits/monsters/bear-alt.webp,CC BY-SA 4.0,(doofus-01),,,1fb6854051686f42e0436e4357894330
|
||||
2022/04/13,data/core/images/portraits/monsters/bear.webp,CC BY-SA 4.0,(doofus-01),,,0b8007dbc6806d8db18926cf3235f00b
|
||||
2022/04/13,data/core/images/portraits/monsters/big-icemonax.webp,CC BY-SA 4.0,(doofus-01),,,f98386ba8713c037a67dc7ff6558aa30
|
||||
2022/04/13,data/core/images/portraits/monsters/black-stallion.webp,CC BY-SA 4.0,(doofus-01),,,eb679e6b022e69b0b8b4d5c7d7993b7f
|
||||
|
@ -3652,6 +3653,7 @@ Date,File,License,Author - Real Name(other name);Real Name(other name);etc,Notes
|
|||
2022/04/13,data/core/images/portraits/undead/nightgaunt.webp,GNU GPL v2+,Kathrin Polikeit(Kitty),,,f22051a644832147b17349dc77a1dd24
|
||||
2022/04/13,data/core/images/portraits/undead/revenant.webp,GNU GPL v2+,Chris Wilson(Valkier),,,0891f02072780973019dba182cd34e52
|
||||
2022/04/13,data/core/images/portraits/undead/shadow.webp,GNU GPL v2+,Kathrin Polikeit(Kitty),,,4bfb774bc7324b8b5c1a6a7a7c0fa2be
|
||||
2024/02/25,data/core/images/portraits/undead/skeletal_rider.webp,CC BY-SA 4.0,(doofus-01),,,0e5facc1c9474d748259c267375d8d0d
|
||||
2022/04/13,data/core/images/portraits/undead/skeleton.webp,GNU GPL v2+,Chris Wilson(Valkier),,,5fcf3c01432624465884169f5084bbb9
|
||||
2022/04/13,data/core/images/portraits/undead/soulless.webp,GNU GPL v2+,(doofus-01),,,fcf58f0ac2d8a1117b307e171a5de867
|
||||
2022/04/13,data/core/images/portraits/undead/spectre.webp,GNU GPL v2+,Kathrin Polikeit(Kitty),,,879d56c47e9d6ee70a079d12f180d7bc
|
||||
|
@ -17415,6 +17417,12 @@ Date,File,License,Author - Real Name(other name);Real Name(other name);etc,Notes
|
|||
2013/04/29,images/icons/action/editor-draw-terrain-codes_30-active.png,GNU GPL v2+,Emilien Rotival(LordBob),,,324bc3aa8af556d137d7a3051240026a
|
||||
2013/04/29,images/icons/action/editor-draw-terrain-codes_30-pressed.png,GNU GPL v2+,Emilien Rotival(LordBob),,,6c0e878e65cde4086681d2349ee8c942
|
||||
2013/04/29,images/icons/action/editor-draw-terrain-codes_30.png,GNU GPL v2+,Emilien Rotival(LordBob),,,2ee66dbc7482f411c163920ec89fa1bc
|
||||
2024/05/07,images/icons/action/editor-help-text-shown_25-active.png,GNU GPL v2+,Subhraman Sarkar(babaissarkar),,,f993763bb3688c1335574aada7241d55
|
||||
2024/05/07,images/icons/action/editor-help-text-shown_25-pressed.png,GNU GPL v2+,Subhraman Sarkar(babaissarkar),,,fbdff4755b938f20ce0e432760049a3f
|
||||
2024/05/07,images/icons/action/editor-help-text-shown_25.png,GNU GPL v2+,Subhraman Sarkar(babaissarkar),,,eac26eabc031c44a7907c07479623aa9
|
||||
2024/05/07,images/icons/action/editor-help-text-shown_30-active.png,GNU GPL v2+,Subhraman Sarkar(babaissarkar),,,ecf77f14b657e34f7a6a231aa06d40d0
|
||||
2024/05/07,images/icons/action/editor-help-text-shown_30-pressed.png,GNU GPL v2+,Subhraman Sarkar(babaissarkar),,,8b00a2cc52e8b2d12bd4b52ee44792c0
|
||||
2024/05/07,images/icons/action/editor-help-text-shown_30.png,GNU GPL v2+,Subhraman Sarkar(babaissarkar),,,59eb378d046b4b01165c083d0574e02e
|
||||
2013/04/29,images/icons/action/editor-map-flip_25-active.png,GNU GPL v2+,Emilien Rotival(LordBob),,,e47f95f26109060428575ce27b422623
|
||||
2013/04/29,images/icons/action/editor-map-flip_25-pressed.png,GNU GPL v2+,Emilien Rotival(LordBob),,,17a549a9c3bad71f593bf0f4be297f30
|
||||
2013/04/29,images/icons/action/editor-map-flip_25.png,GNU GPL v2+,Emilien Rotival(LordBob),,,6ddd79b611141def85b91826933f4ab8
|
||||
|
@ -18278,6 +18286,7 @@ Date,File,License,Author - Real Name(other name);Real Name(other name);etc,Notes
|
|||
2015/11/05,images/misc/l10n/ang/logo.png,GNU GPL v2+,Timo Honkasalo(Sgt. Groovy),,,38cec3bc5ecffc4b8d045b38fe38b66c
|
||||
2015/11/05,images/misc/l10n/ang@latin/logo.png,GNU GPL v2+,Timo Honkasalo(Sgt. Groovy),,,ae542e27f1a6bb424db92e116b6d2529
|
||||
2015/11/05,images/misc/l10n/bg/logo.png,GNU GPL v2+,Timo Honkasalo(Sgt. Groovy),,,5e303b18837d1f3026d3e273424f1163
|
||||
2024/03/07,images/misc/l10n/bn/logo.png,GNU GPL v2+,Subhraman Sarkar(babaissarkar/LumiousE),,,37aa6dc07bac8eae635087792536c420
|
||||
2015/11/05,images/misc/l10n/ca/logo.png,GNU GPL v2+,Timo Honkasalo(Sgt. Groovy),,,c39bb70fd15355186d58ae05e07b01d9
|
||||
2015/11/05,images/misc/l10n/cs/logo.png,GNU GPL v2+,Timo Honkasalo(Sgt. Groovy),,,69e01cb22b1034654bd69e419a465154
|
||||
2015/11/05,images/misc/l10n/da/logo.png,GNU GPL v2+,Timo Honkasalo(Sgt. Groovy),,,d47b83a8262e66dd16f3f0a13c1789a4
|
||||
|
|
Can't render this file because it is too large.
|
|
@ -21,6 +21,14 @@
|
|||
[/option]
|
||||
[/advanced_preference]
|
||||
|
||||
[advanced_preference]
|
||||
field=addon_icons
|
||||
name= _ "Whether to show icons in the add-ons list on the add-ons manager"
|
||||
description= _ "Disabling saves bandwidth by not sending icons for the add-ons list in the add-ons manager"
|
||||
type=boolean
|
||||
default=yes
|
||||
[/advanced_preference]
|
||||
|
||||
[advanced_preference]
|
||||
field=ask_delete
|
||||
name= _ "Confirm deleting saves"
|
||||
|
|
|
@ -588,7 +588,7 @@ function ai_helper.split(str, sep)
|
|||
sep = sep or ","
|
||||
local fields = {}
|
||||
local pattern = string.format("([^%s]+)", sep)
|
||||
string.gsub(str, pattern, function(c) fields[#fields+1] = c end)
|
||||
local _ = string.gsub(str, pattern, function(c) fields[#fields+1] = c end)
|
||||
return fields
|
||||
end
|
||||
|
||||
|
@ -1046,10 +1046,7 @@ function ai_helper.split_location_list_to_strings(list)
|
|||
locsx[i] = loc[1]
|
||||
locsy[i] = loc[2]
|
||||
end
|
||||
locsx = table.concat(locsx, ",")
|
||||
locsy = table.concat(locsy, ",")
|
||||
|
||||
return locsx, locsy
|
||||
return table.concat(locsx, ","), table.concat(locsy, ",")
|
||||
end
|
||||
|
||||
---Returns a location set of hexes to be avoided by the AI. Information about
|
||||
|
@ -1186,7 +1183,7 @@ function ai_helper.get_visible_units(viewing_side, filter)
|
|||
table.insert(filter_plus_vision, wml.tag.filter_vision { side = viewing_side, visible = 'yes' })
|
||||
|
||||
local units = {}
|
||||
local all_units = wesnoth.units.find_on_map()
|
||||
local all_units = wesnoth.units.find_on_map{}
|
||||
for _,unit in ipairs(all_units) do
|
||||
if unit:matches(filter_plus_vision) then
|
||||
table.insert(units, unit)
|
||||
|
@ -1241,7 +1238,7 @@ function ai_helper.get_attackable_enemies(filter, side, cfg)
|
|||
end
|
||||
|
||||
local enemies = {}
|
||||
local all_units = wesnoth.units.find_on_map()
|
||||
local all_units = wesnoth.units.find_on_map{}
|
||||
for _,unit in ipairs(all_units) do
|
||||
if wesnoth.sides.is_enemy(side, unit.side)
|
||||
and (not unit.status.petrified)
|
||||
|
@ -1434,14 +1431,15 @@ function ai_helper.my_moves()
|
|||
-- [1] = { dst = { x = 7, y = 16 },
|
||||
-- src = { x = 6, y = 16 } }
|
||||
|
||||
local dstsrc = ai.get_dstsrc()
|
||||
local dstsrc = ai.get_dst_src()
|
||||
|
||||
---@type ai_move[]
|
||||
local my_moves = {}
|
||||
for key,value in pairs(dstsrc) do
|
||||
local hex_x, hex_y = ai_helper.get_LS_xy(key)
|
||||
table.insert( my_moves,
|
||||
{ src = { x = value[1].x , y = value[1].y },
|
||||
dst = { x = key.x , y = key.y }
|
||||
dst = { x = hex_x , y = hex_y }
|
||||
}
|
||||
)
|
||||
end
|
||||
|
@ -1456,13 +1454,14 @@ function ai_helper.enemy_moves()
|
|||
-- [1] = { dst = { x = 7, y = 16 },
|
||||
-- src = { x = 6, y = 16 } }
|
||||
|
||||
local dstsrc = ai.get_enemy_dstsrc()
|
||||
local dstsrc = ai.get_enemy_dst_src()
|
||||
|
||||
local enemy_moves = {}
|
||||
for key,value in pairs(dstsrc) do
|
||||
local hex_x, hex_y = ai_helper.get_LS_xy(key)
|
||||
table.insert( enemy_moves,
|
||||
{ src = { x = value[1].x , y = value[1].y },
|
||||
dst = { x = key.x , y = key.y }
|
||||
dst = { x = hex_x , y = hex_y }
|
||||
}
|
||||
)
|
||||
end
|
||||
|
@ -1749,7 +1748,7 @@ function ai_helper.find_path_with_shroud(unit, x, y, cfg)
|
|||
if wesnoth.sides[viewing_side].shroud then
|
||||
local extracted_units = {}
|
||||
if (not cfg) or (not cfg.ignore_units) then
|
||||
local all_units = wesnoth.units.find_on_map()
|
||||
local all_units = wesnoth.units.find_on_map{}
|
||||
for _,u in ipairs(all_units) do
|
||||
if (u.id ~= unit.id) and (u.side ~= viewing_side)
|
||||
and (not ignore_visibility) and (not ai_helper.is_visible_unit(viewing_side, u))
|
||||
|
@ -1936,7 +1935,7 @@ function ai_helper.find_path_with_avoid(unit, x, y, avoid_map, options)
|
|||
return nil, ai_helper.no_path
|
||||
end
|
||||
|
||||
local all_units = wesnoth.units.find_on_map()
|
||||
local all_units = wesnoth.units.find_on_map{}
|
||||
local ally_map, enemy_map = LS.create(), LS.create()
|
||||
for _,u in ipairs(all_units) do
|
||||
if (u.id ~= unit.id) and ai_helper.is_visible_unit(wesnoth.current.side, u) then
|
||||
|
@ -2178,7 +2177,7 @@ function ai_helper.get_attacks(units, cfg)
|
|||
|
||||
-- Note: the remainder is optimized for speed, so we only get_units once,
|
||||
-- do not use WML filters, etc.
|
||||
local all_units = wesnoth.units.find_on_map()
|
||||
local all_units = wesnoth.units.find_on_map{}
|
||||
|
||||
local enemy_map, my_unit_map, other_unit_map = LS.create(), LS.create(), LS.create()
|
||||
for i,unit in ipairs(all_units) do
|
||||
|
|
|
@ -332,6 +332,9 @@
|
|||
[/message]
|
||||
[message]
|
||||
speaker=Delfador
|
||||
#po: The same text is used both before and after closing the portal.
|
||||
#po: Shown if the player kills Iliah-Malal instead of following the hints to run away,
|
||||
#po: this is his last breath event, but he gets fully healed and the battle continues.
|
||||
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
|
||||
|
@ -439,10 +442,7 @@
|
|||
id=Delfador
|
||||
[/not]
|
||||
[/filter]
|
||||
[put_to_recall_list]
|
||||
id=$unit.id
|
||||
heal=yes
|
||||
[/put_to_recall_list]
|
||||
{DELFADOR_ESCAPED_UNITS}
|
||||
[/event]
|
||||
|
||||
[event]
|
||||
|
@ -482,6 +482,8 @@
|
|||
time=10
|
||||
[/delay]
|
||||
{COLOR_ADJUST 0 0 0}
|
||||
{MEMOIRS_UNSTORE_UNITS delfador_escaped_units}
|
||||
{CLEAR_VARIABLE delfador_escaped_units}
|
||||
[endlevel]
|
||||
result=victory
|
||||
[/endlevel]
|
||||
|
|
|
@ -391,6 +391,19 @@
|
|||
[/allow_recruit]
|
||||
#enddef
|
||||
|
||||
# Store units who escape through the tunnel in Portal of Doom (18), so that they can no longer be recalled in the same scenario.
|
||||
|
||||
#define DELFADOR_ESCAPED_UNITS
|
||||
[store_unit]
|
||||
kill=yes
|
||||
mode=append
|
||||
variable=delfador_escaped_units
|
||||
[filter]
|
||||
id=$unit.id
|
||||
[/filter]
|
||||
[/store_unit]
|
||||
#enddef
|
||||
|
||||
# At the beginning of Showdown in the Northern Swamp (19), Kalenz
|
||||
# rejoins Delfador. Chantal is not here for this one.
|
||||
|
||||
|
@ -537,7 +550,7 @@
|
|||
end
|
||||
-- level the unit and give it a random amount of experience up to half of max
|
||||
units[i].experience = units[i].max_experience
|
||||
units[i]:advance( )
|
||||
units[i]:advance(false)
|
||||
units[i].experience = mathx.random ( 0, mathx.round( units[i].max_experience / 2 ) )
|
||||
end
|
||||
>>
|
||||
|
|
|
@ -1380,7 +1380,7 @@ All sense of time and being are entombed within darkness. How long has passed si
|
|||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
type=Wolf,Great Wolf,Direwolf
|
||||
type_adv_tree=Wolf,Great Wolf,Direwolf
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to=status
|
||||
|
|
|
@ -708,7 +708,7 @@
|
|||
[filter]
|
||||
x,y=9,15
|
||||
side=1
|
||||
type=Walking Corpse, Soulless
|
||||
type_adv_tree=Walking Corpse
|
||||
variation=mounted
|
||||
[/filter]
|
||||
|
||||
|
|
|
@ -1027,7 +1027,7 @@
|
|||
x=$bookX
|
||||
y=$bookY
|
||||
side=1
|
||||
type=Ghost,Wraith,Spectre,Shadow,Nightgaunt,Spectral Servant,Phantom,Eidolon
|
||||
type_adv_tree=Ghost,Spectral Servant,Phantom,Eidolon
|
||||
[/filter]
|
||||
|
||||
[message]
|
||||
|
@ -1043,7 +1043,7 @@
|
|||
x=$bookX
|
||||
y=$bookY
|
||||
side=1
|
||||
type=Vampire Bat,Blood Bat,Dread Bat
|
||||
type_adv_tree=Vampire Bat
|
||||
[/filter]
|
||||
|
||||
[message]
|
||||
|
|
|
@ -580,7 +580,7 @@
|
|||
[filter_self]
|
||||
[filter_adjacent]
|
||||
count=1
|
||||
type=Walking Corpse,Soulless
|
||||
type_adv_tree=Walking Corpse
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter_self]
|
||||
|
@ -592,7 +592,7 @@
|
|||
[filter_self]
|
||||
[filter_adjacent]
|
||||
count=2
|
||||
type=Walking Corpse,Soulless
|
||||
type_adv_tree=Walking Corpse
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter_self]
|
||||
|
@ -604,7 +604,7 @@
|
|||
[filter_self]
|
||||
[filter_adjacent]
|
||||
count=3
|
||||
type=Walking Corpse,Soulless
|
||||
type_adv_tree=Walking Corpse
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter_self]
|
||||
|
@ -616,7 +616,7 @@
|
|||
[filter_self]
|
||||
[filter_adjacent]
|
||||
count=4
|
||||
type=Walking Corpse,Soulless
|
||||
type_adv_tree=Walking Corpse
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter_self]
|
||||
|
@ -628,7 +628,7 @@
|
|||
[filter_self]
|
||||
[filter_adjacent]
|
||||
count=5
|
||||
type=Walking Corpse,Soulless
|
||||
type_adv_tree=Walking Corpse
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter_self]
|
||||
|
@ -640,7 +640,7 @@
|
|||
[filter_self]
|
||||
[filter_adjacent]
|
||||
count=6
|
||||
type=Walking Corpse,Soulless
|
||||
type_adv_tree=Walking Corpse
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter_self]
|
||||
|
@ -657,7 +657,7 @@
|
|||
[/filter_attack]
|
||||
[store_unit]
|
||||
[filter]
|
||||
type=Walking Corpse,Soulless
|
||||
type_adv_tree=Walking Corpse
|
||||
[filter_adjacent]
|
||||
x,y=$x1,$y1
|
||||
is_enemy=no
|
||||
|
@ -763,7 +763,7 @@
|
|||
[affect_adjacent]
|
||||
adjacent=n,ne,se,s,sw,nw
|
||||
[filter]
|
||||
type=Walking Corpse,Soulless
|
||||
type_adv_tree=Walking Corpse
|
||||
[/filter]
|
||||
[/affect_adjacent]
|
||||
[/heals]
|
||||
|
@ -779,7 +779,7 @@
|
|||
[affect_adjacent]
|
||||
adjacent=n,ne,se,s,sw,nw
|
||||
[filter]
|
||||
type=Walking Corpse,Soulless
|
||||
type_adv_tree=Walking Corpse
|
||||
[/filter]
|
||||
[/affect_adjacent]
|
||||
[/resistance]
|
||||
|
@ -798,7 +798,7 @@
|
|||
[affect_adjacent]
|
||||
adjacent=n,ne,se,s,sw,nw
|
||||
[filter]
|
||||
type=Walking Corpse,Soulless
|
||||
type_adv_tree=Walking Corpse
|
||||
[/filter]
|
||||
[/affect_adjacent]
|
||||
[/leadership]
|
||||
|
@ -811,7 +811,7 @@
|
|||
[affect_adjacent]
|
||||
adjacent=n,ne,se,s,sw,nw
|
||||
[filter]
|
||||
type=Walking Corpse,Soulless
|
||||
type_adv_tree=Walking Corpse
|
||||
[/filter]
|
||||
[/affect_adjacent]
|
||||
[/berserk]
|
||||
|
@ -829,7 +829,7 @@
|
|||
[filter]
|
||||
[filter_adjacent]
|
||||
count=1
|
||||
type=Ghoul,Necrophage,Ghast
|
||||
type_adv_tree=Ghoul
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter]
|
||||
|
@ -841,7 +841,7 @@
|
|||
[filter]
|
||||
[filter_adjacent]
|
||||
count=2
|
||||
type=Ghoul,Necrophage,Ghast
|
||||
type_adv_tree=Ghoul
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter]
|
||||
|
@ -853,7 +853,7 @@
|
|||
[filter]
|
||||
[filter_adjacent]
|
||||
count=3
|
||||
type=Ghoul,Necrophage,Ghast
|
||||
type_adv_tree=Ghoul
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter]
|
||||
|
@ -865,7 +865,7 @@
|
|||
[filter]
|
||||
[filter_adjacent]
|
||||
count=4
|
||||
type=Ghoul,Necrophage,Ghast
|
||||
type_adv_tree=Ghoul
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter]
|
||||
|
@ -877,7 +877,7 @@
|
|||
[filter]
|
||||
[filter_adjacent]
|
||||
count=5
|
||||
type=Ghoul,Necrophage,Ghast
|
||||
type_adv_tree=Ghoul
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter]
|
||||
|
@ -889,7 +889,7 @@
|
|||
[filter]
|
||||
[filter_adjacent]
|
||||
count=6
|
||||
type=Ghoul,Necrophage,Ghast
|
||||
type_adv_tree=Ghoul
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter]
|
||||
|
@ -914,7 +914,7 @@
|
|||
[filter]
|
||||
[filter_adjacent]
|
||||
count=1
|
||||
type=Ghoul,Necrophage,Ghast
|
||||
type_adv_tree=Ghoul
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter]
|
||||
|
@ -926,7 +926,7 @@
|
|||
[filter]
|
||||
[filter_adjacent]
|
||||
count=2
|
||||
type=Ghoul,Necrophage,Ghast
|
||||
type_adv_tree=Ghoul
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter]
|
||||
|
@ -938,7 +938,7 @@
|
|||
[filter]
|
||||
[filter_adjacent]
|
||||
count=3
|
||||
type=Ghoul,Necrophage,Ghast
|
||||
type_adv_tree=Ghoul
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter]
|
||||
|
@ -950,7 +950,7 @@
|
|||
[filter]
|
||||
[filter_adjacent]
|
||||
count=4
|
||||
type=Ghoul,Necrophage,Ghast
|
||||
type_adv_tree=Ghoul
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter]
|
||||
|
@ -962,7 +962,7 @@
|
|||
[filter]
|
||||
[filter_adjacent]
|
||||
count=5
|
||||
type=Ghoul,Necrophage,Ghast
|
||||
type_adv_tree=Ghoul
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter]
|
||||
|
@ -974,7 +974,7 @@
|
|||
[filter]
|
||||
[filter_adjacent]
|
||||
count=6
|
||||
type=Ghoul,Necrophage,Ghast
|
||||
type_adv_tree=Ghoul
|
||||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter]
|
||||
|
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 40 KiB |
|
@ -3,12 +3,12 @@ Xu, Xu, Xu, Xu, Xu, Qxu, Qxu, Qxu, Qxu, Xu, Qxu, Qxu, Qxu, Xu, Xu, Xu, Xu, Xu, X
|
|||
Xu, Xu, Xu, Xu, Xu, Xu, Qxu, Qxu, Qxu, Xu, Uu^Qhu, Qxu, Xu, Xu, Xu, Xu, Xu, Xu, Tb^Tf, Tb^Tf, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wo^Qhux, Xu, Xu, Xu, Xu, Wo^Qhux, Xu, Xu, Xu, Xu, Xu^Qhh, Xu^Qhh, Ms, Ms, Ha^Fda, Ai, Aa^Fdw, Ai^Qhh
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Qxu, Ur, Uu^Qhu, Ur, Ur, Uu^Dr, Xu, Xu, Xu, Uu^Em, Xu, Re, Wwf^Qhu, Uh, Xu, Uh^Qhh, Xu, Uu^Qhh, Xu, Xu, Xu, Xu, Xu, Wo^Qhux, Wo^Qhux, Wo^Qhux, Xu, Wo^Qhux, Wo^Qhux, Wo^Qhux, Wo^Qhux, Xu, Xu, Xu^Qhh, Ms, Ms, Ha, Aa^_mh, Aa, Ai, Aa^Qhhf
|
||||
Uu^Qhh, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ur^Dr, Xu, Ur, Re, Xu, Uu^Qhu, Uu^Dr, Uu^Qhu, Re^Dr, Xu, Xu, Xu, Xu, Xu, Uu^Qhh, Ur, Uu, Xu, Xu, Xu, Xu, Xu, Wo^Qhux, Xu, Wo^Qhux, Wo^Qhux, Wo^Qhux, Wo^Qhux, Wo^Qhux, Xu, Xu^Qhh, Ms, Ms, Ha, Ha^Fda, Ha^Fda, Ai, Ai, Aa^Qhhf
|
||||
Xu, Uu^Dr, Wwrg, Uu^Qhh, Uu, Xu, Xu, Xu, Xu, Xu, Uu^Dr, Xu, Re, Ur, Xu, Uu^Qhu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ur, Ur, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wo^Qhux, Wo^Qhux, Wo^Qhux, Xu, Xu, Xu^Qhh, Xu^Qhh, Ms, Ha, Ha, Aa, Aa^Fdw, Aa^Fdw, Aa, Aa^Qhh
|
||||
Xu, Xu, Xu, Xu, Xu, Ur^Dr, Xu, Xu, Uh^Qhh, Uu^Qhh, Ur, Re, Xu, Xu, Xu, Xu, Xu, Xu, Uh^Qhh, Uu^Qhh, Ur, Wwf^Qhu, Xu, Xu, Xu, Re^Pr/, Uu, Xu, Xu, Uh^Qhh, Uu^Qhh, Xu, Xu, Xu, Wo^Qhux, Wo^Qhux, Xu, Xu, Xu^Qhh, Xu^Qhh, Ha, Ha, Aa, Aa, Aa^Qhh, Aa, Aa^Qhh, Aa^Qhh
|
||||
Xu, Xu, Xu, Xu, Xu, Ur^Dr, Ur, Xu, Uu, Ur, Uu^Qhu, Uu^Qhu, Xu, Xu, Tb^Qhh, Tb^Qhh, Xu, Xu, Uh^Qhh, Ur, Ur, Uu^Em, Xu, Xu, Xu^Efs, Re, Uu^Dr, Xu, Uu^Qhu, Ur, Ur, Uu^Qhu, Wo^Qhux, Wo^Qhux, Xu, Xu, Xu, Xu, Xu^Qhh, Ms, Ms, Ha, Ms^Qhh, Aa^Qhh, Ha, Aa^Qhh, Aa, Aa
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wwf^Qhu, Xu, Uu, Xu, Xu, Xu, Xu, Uu^Em, Uu^Qhh, Uu^Em, Xu, Xu, Uu^Qhh, Xu, Re^Pr/, Re, Uu^Em, Uu^Em, Uu, Uu^Vu, Xu, Re^Pr\, Ur, Uu^Em, Uu^Qhu, Wo^Qhux, Xu, Xu, Xu, Xu, Xu, Xu^Qhh, Ms, Ms^Qhh, Ms^Qhh, Ms, Ha, Aa, Aa, Aa, Aa
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Xu, Xu, Xu, Wwf^Qhu, Ur, Xu, Ur, Xu, Xu, Xu, Xu^Efs, Re, Uu, Uu, Re, Uu^Ii, Re^Ii, Re^Ii, Uh, Xu, Xu^Efs, Xu, Wo^Qhux, Xu, Xu, Xu, Xu, Xu, Xu, Xu^Qhh, Xu, Ms, Ha, Ha, Ha^Fda, Aa, Aa, Gd
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Qhu, Xu, Xu, Xu, Wwf^Qhu, Uu^Qhu, Ur, Re^Pr/, Xu, Uu, Uu, Uu^Ii, Uu^Vu, Uu^Ii, Re, Re, Re^Ii, Re^Ii, Qxu^Ii, Qxu, Uu^Qhu, Wwf^Qhu, Wwg^Qhu, Xu, Xu^Efs, Isa, Xu^Efs, Xu, Xu, Xu, Xu, Xu, Ms, Ms, Ms, Ha^Fda, Ha, Coa, Re
|
||||
Xu, Uu^Dr, Wwrg, Uu^Qhh, Uu, Xu, Xu, Xu, Xu, Xu, Uu^Dr, Xu, Re, Ur, Xu, Uu^Qhu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ur, Ur, Xu, Xu, Xu, Xu, Xu, Xu, Xu^Qhu, Wo^Qhux, Wo^Qhux, Wo^Qhux, Xu, Xu, Xu^Qhh, Xu^Qhh, Ms, Ha, Ha, Aa, Aa^Fdw, Aa^Fdw, Aa, Aa^Qhh
|
||||
Xu, Xu, Xu, Xu, Xu, Ur^Dr, Xu, Xu, Uh^Qhh, Uu^Qhh, Ur, Re, Xu, Xu, Xu, Xu, Xu, Xu, Uh^Qhh, Uu^Qhh, Ur, Wwf^Qhu, Xu, Xu, Xu, Re^Pr/, Uu, Xu, Xu, Uh^Qhh, Uu^Qhh, Xu^Qhu, Xu^_ml, Xu^Qhu, Wo^Qhux, Wo^Qhux, Xu, Xu, Xu^Qhh, Xu^Qhh, Ha, Ha, Aa, Aa, Aa^Qhh, Aa, Aa^Qhh, Aa^Qhh
|
||||
Xu, Xu, Xu, Xu, Xu, Ur^Dr, Ur, Xu, Uu, Ur, Uu^Qhu, Uu^Qhu, Xu, Xu, Tb^Qhh, Tb^Qhh, Xu, Xu, Uh^Qhh, Ur, Ur, Uu^Em, Xu, Xu, Xu^Efs, Re, Uu^Dr, Xu, Uu^Qhu, Ur, Ur, Uu^Qhu, Wo^Xo, Wo^Qhu, Xu^Qhu, Xu, Xu, Xu, Xu^Qhh, Ms, Ms, Ha, Ms^Qhh, Aa^Qhh, Ha, Aa^Qhh, Aa, Aa
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wwf^Qhu, Xu, Uu, Xu, Xu, Xu, Xu, Uu^Em, Uu^Qhh, Uu^Em, Xu, Xu, Uu^Qhh, Xu, Re^Pr/, Re, Uu^Em, Uu^Em, Uu, Uu^Vu, Xu, Re^Pr\, Ur, Uu^Em, Uu^Qhu, Wo^Xo, Xu^Qhu, Xu, Xu, Xu, Xu, Xu^Qhh, Ms, Ms^Qhh, Ms^Qhh, Ms, Ha, Aa, Aa, Aa, Aa
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Xu, Xu, Xu, Wwf^Qhu, Ur, Xu, Ur, Xu, Xu, Xu, Xu^Efs, Re, Uu, Uu, Re, Uu^Ii, Re^Ii, Re^Ii, Uh, Xu, Xu^Efs, Xu^Qhu, Wo^Xo, Xu^Qhu, Xu, Xu, Xu, Xu, Xu, Xu^Qhh, Xu, Ms, Ha, Ha, Ha^Fda, Aa, Aa, Gd
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Qhu, Xu, Xu, Xu, Wwf^Qhu, Uu^Qhu, Ur, Re^Pr/, Xu, Uu, Uu, Uu^Ii, Uu^Vu, Uu^Ii, Re, Re, Re^Ii, Re^Ii, Qxu^Ii, Qxu, Uu^Qhu, Wwf^Qhu, Wwg^Qhu, Xu^Qhu, Xu^Qhu, Isa, Xu^Efs, Xu, Xu, Xu, Xu, Xu, Ms, Ms, Ms, Ha^Fda, Ha, Coa, Re
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh, Uu^Qhu, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Vu, Re, Re, Re, Uu^Ii, Re^Ii, Re^Ii, Re, Re, Uu^Qhu, Uu^Qhu, Qxu, Ur^Qhu, Wwf^Qhu, Xu, Xu, Xu, Isa, Isa, Isa, Xu, Xu, Xu, Xu, Xu, Ms, Ha^Fda, Ha^Fda, Ha^Fda, Hhd^Vo, 5 Koa, Co
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu, Uu^Dr, Xu, Xu, Xu, Xu, Xu, Ur^Qhh, Wwrg^Qhu, Uu, Uu, Re, Re^Ii, Uu^Qhu, Re, Uu^Qhu, Uu^Qhu, Urb, Urb, Urb^Ii, Ur^Qhu, Ur^Qhu, Uu^Ebn, Wwf^Qhu, Xu, Re, Xu, Xu, Xu, Xu, Xu, Xu, Ha, Aa, Ha, Aa^Fdw, Coa, Co, Gs
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wwrg^Qhu, Wwf^Qhu, Uu, Uh^Qhh, Uh^Qhh, Xu, Xu, Xu, Xu, Ur^Qhh, Uu^Ebn, Re, Re, Uu^Qhu, Uu^Qhu, Uu^Qhu, Urb, Urb, Urb, Urb^Efs, Urb^Ii, Urb^Ii, Urc^Ii, Uu, Uu, Wwrg^Qhu, Re, Uh^Qhh, Xu, Xu, Xu, Xu, Aa, Aa, Aa, Re, Re, Re, Co, Co
|
||||
|
|
|
@ -3,12 +3,12 @@ Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu^_s, Xu, Xu^_s
|
|||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu^_s, Xu^_s, Xu^_s, Xu^_s, Tb^Tf, Tb^Tf, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wo^Qhux, Xu, Xu, Xu, Xu, Wo^Qhux, Xu, Xu, Xu, Xu, Xu^Qhh, Xu^Qhh, Ms, Ms, Ha^Fda, Ai, Aa^Fdw, Ai^Qhh
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu^_s, Uu^_s, Uu^_s, Xu^_s, Re, Wwf^Qhu, Uh, Uu^Dr, Uh^Qhh, Xu, Uu^Qhh, Xu, Xu, Xu, Xu, Xu, Wo^Qhux, Wo^Qhux, Wo^Qhux, Xu, Wo^Qhux, Wo^Qhux, Wo^Qhux, Wo^Qhux, Xu, Xu, Xu^Qhh, Ms, Ms, Ha, Aa^_mh, Aa, Ai, Aa^Qhhf
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu^_s, Uu^_s, Uu^_s, Re^_s, Xu, Xu, Xu, Xu, Xu, Uu^Qhh, Ur, Uu, Xu, Xu, Xu, Xu, Xu, Wo^Qhux, Xu, Wo^Qhux, Wo^Qhux, Wo^Qhux, Wo^Qhux, Wo^Qhux, Xu, Xu^Qhh, Ms, Ms, Ha, Ha^Fda, Ha^Fda, Ai, Ai, Aa^Qhhf
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu^_s, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ur, Ur, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wo^Qhux, Wo^Qhux, Wo^Qhux, Xu, Xu, Xu^Qhh, Xu^Qhh, Ms, Ha, Ha, Aa, Aa^Fdw, Aa^Fdw, Aa, Aa^Qhh
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh^Qhh, Uu^Qhh, 6 Ur, Wwf^Qhu, Xu, Xu, Xu, Re^Pr/o, Uu, Xu, Xu, Uh^Qhh, Uu^Qhh, Xu, Xu, Xu, Wo^Qhux, Wo^Qhux, Xu, Xu, Xu^Qhh, Xu^Qhh, Ha, Ha, Aa, Aa, Aa^Qhh, Aa, Aa^Qhh, Aa^Qhh
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Tb^Qhh, Tb^Qhh, Xu, Xu, Uh^Qhh, Ur, Ur, Uu^Em, Xu, Xu, Xu^Efs, Re, Uu^Dr, Xu, Uu^Qhu, Ur, Ur, Uu^Qhu, Wo^Qhux, Wo^Qhux, Xu, Xu, Xu, Xu, Xu^Qhh, Ms, Ms, Ha, Ms^Qhh, Aa^Qhh, Ha, Aa^Qhh, Aa, Aa
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Em, Uu^Qhh, Uu^Em, Xu, Xu, Uu^Qhh, Xu, Re^Pr/, Re, Uu^Em, Uu^Em, Uu, Uu^Vu, Xu, Re^Pr\, Ur, Uu^Em, Uu^Qhu, Wo^Qhux, Xu, Xu, Xu, Xu, Xu, Xu^Qhh, Ms, Ms^Qhh, Ms^Qhh, Ms, Ha, Aa, Aa, Aa, Aa
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wwf^Qhu, Ur, Xu, Ur, Xu, Xu, Xu, Xu^Efs, Re, Uu, Uu, Re, Uu^Ii, Re^Ii, Re^Ii, Uh, Xu, Xu^Efs, Xu, Wo^Qhux, Xu, Xu, Xu, Xu, Xu, Xu, Xu^Qhh, Xu, Ms, Ha, Ha, Ha^Fda, Aa, Aa, Gd
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wwf^Qhu, Uu^Qhu, Ur, Re^Pr/, Xu, Uu, Uu, Uu^Ii, Uu^Vu, Uu^Ii, Re, Re, Re^Ii, Re^Ii, Qxu^Ii, Qxu, Uu^Qhu, Wwf^Qhu, Wwg^Qhu, Xu, Xu^Efs, Isa, Xu^Efs, Xu, Xu, Xu, Xu, Xu, Ms, Ms, Ms, Ha^Fda, Ha, Coa, Re
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu^_s, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ur, Ur, Xu, Xu, Xu, Xu, Xu, Xu, Xu^Qhu, Wo^Qhux, Wo^Qhux, Wo^Qhux, Xu, Xu, Xu^Qhh, Xu^Qhh, Ms, Ha, Ha, Aa, Aa^Fdw, Aa^Fdw, Aa, Aa^Qhh
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uh^Qhh, Uu^Qhh, 6 Ur, Wwf^Qhu, Xu, Xu, Xu, Re^Pr/o, Uu, Xu, Xu, Uh^Qhh, Uu^Qhh, Xu^Qhu, Xu^_ml, Xu^Qhu, Wo^Qhu, Wo^Qhux, Xu, Xu, Xu^Qhh, Xu^Qhh, Ha, Ha, Aa, Aa, Aa^Qhh, Aa, Aa^Qhh, Aa^Qhh
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Tb^Qhh, Tb^Qhh, Xu, Xu, Uh^Qhh, Ur, Ur, Uu^Em, Xu, Xu, Xu^Efs, Re, Uu^Dr, Xu, Uu^Qhu, Ur, Ur, Uu^Qhu, Wo^Xo, Wo^Qhu, Xu^Qhu, Xu, Xu, Xu, Xu^Qhh, Ms, Ms, Ha, Ms^Qhh, Aa^Qhh, Ha, Aa^Qhh, Aa, Aa
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Em, Uu^Qhh, Uu^Em, Xu, Xu, Uu^Qhh, Xu, Re^Pr/, Re, Uu^Em, Uu^Em, Uu, Uu^Vu, Xu, Re^Pr\, Ur, Uu^Em, Uu^Qhu, Wo^Xo, Xu^Qhu, Xu, Xu, Xu, Xu, Xu^Qhh, Ms, Ms^Qhh, Ms^Qhh, Ms, Ha, Aa, Aa, Aa, Aa
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wwf^Qhu, Ur, Xu, Ur, Xu, Xu, Xu, Xu^Efs, Re, Uu, Uu, Re, Uu^Ii, Re^Ii, Re^Ii, Uh, Xu, Xu^Efs, Xu^Qhu, Wo^Xo, Xu^Qhu, Xu^Qhu, Xu, Xu, Xu, Xu, Xu^Qhh, Xu, Ms, Ha, Ha, Ha^Fda, Aa, Aa, Gd
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Wwf^Qhu, Uu^Qhu, Ur, Re^Pr/, Xu, Uu, Uu, Uu^Ii, Uu^Vu, Uu^Ii, Re, Re, Re^Ii, Re^Ii, Qxu^Ii, Qxu, Uu^Qhu, Wwf^Qhu, Wwg^Qhu, Xu^Qhu, Xu^Qhu, Isa, Xu^Efs, Xu, Xu, Xu, Xu, Xu, Ms, Ms, Ms, Ha^Fda, Ha, Coa, Re
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Uu^Vu, Re, Re, Re, Uu^Ii, Re^Ii, Re^Ii, Re, Re, Uu^Qhu, Uu^Qhu, Qxu, Ur^Qhu, Wwf^Qhu, Xu, Xu, Xu, Isa, Isa^Pr|o, Isa, Xu, Xu, Xu, Xu, Xu, Ms, Ha^Fda, Ha^Fda, Ha^Fda, Hhd^Vo, 2 Koa, Co
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Ur^Qhh, Wwrg^Qhu, Uu, Uu, Re, Re^Ii, Uu^Qhu, Re, Uu^Qhu, Uu^Qhu, Urb, Urb, Urb^Ii, Ur^Qhu, Ur^Qhu, Uu^Ebn, Wwf^Qhu, Xu, Re, Xu, Xu, Xu, Xu, Xu, Xu, Ha, Aa, Ha, Aa^Fdw, Coa, Co, Gs
|
||||
Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu, Xu^_s, Xu^_s, Xu^_s, Xu, Xu, Xu, Xu, Ur^Qhh, Uu^Ebn, Re, Re, Uu^Qhu, Uu^Qhu, Uu^Qhu, Urb, Urb, Urb, Urb^Efs, Urb^Ii, Urb^Ii, Urc^Ii, Uu, Uu, Wwrg^Qhu, Re, Uh^Qhh, Xu, Xu, Xu, Xu, Aa, Aa, Aa, Re, Re, Re, Co, Co
|
||||
|
|
|
@ -163,7 +163,7 @@
|
|||
condition=win
|
||||
[/objective]
|
||||
[objective]
|
||||
{OPTIONAL_OBJECTIVE_CAPTION}
|
||||
{BONUS_OBJECTIVE_CAPTION}
|
||||
description= _ "Kill Addogin (bonus reward)"
|
||||
condition=win
|
||||
[show_if]
|
||||
|
|
|
@ -555,6 +555,11 @@
|
|||
{HERBS_OBJECTIVE 3 (_ "To travel east, collect 3 alswdan herbs and pay Hahid al-Ali $gold_cost gold. <i>(challenging)</i>")}
|
||||
{HERBS_OBJECTIVE 2 (_ "To travel east, collect 2 alswdan herbs and pay Hahid al-Ali $gold_cost gold. <i>(challenging)</i>")}
|
||||
{HERBS_OBJECTIVE 1 (_ "To travel east, collect 1 alswdan herb and pay Hahid al-Ali $gold_cost gold. <i>(challenging)</i>")}
|
||||
[objective]
|
||||
description= _ "<i>(herbs are spread in all directions around your starting keep)</i>"
|
||||
condition=win
|
||||
{SHOW_IF_HERBS_OBJECTIVE_ACTIVE}
|
||||
[/objective]
|
||||
[objective]
|
||||
description= _ "Death of Gweddry or Dacyn"
|
||||
condition=lose
|
||||
|
@ -683,7 +688,7 @@
|
|||
{RANDOM_HERB 6 6-11 11-15} # near the mountains (hard)
|
||||
{RANDOM_HERB 7 8-18 15-24} # near the dunefolk (easy)
|
||||
|
||||
{RANDOM_HERB 8 28-36 17-22} # southeast of Gweddry (easy)
|
||||
{RANDOM_HERB 8 28-33 17-22} # southeast of Gweddry (easy)
|
||||
{RANDOM_HERB 9 33-35 8-11} # northeast of Gweddry (easy)
|
||||
{RANDOM_HERB 10 18-29 1-3 } # north of Gweddry (medium)
|
||||
{RANDOM_HERB 11 18-29 5-8 } # north of Gweddry (medium)
|
||||
|
|
|
@ -321,20 +321,6 @@
|
|||
[/then]
|
||||
[/if]
|
||||
{VARIABLE first_prisoner_freed yes}
|
||||
[if]
|
||||
[not]
|
||||
[have_unit]
|
||||
side=8
|
||||
[/have_unit]
|
||||
[/not]
|
||||
|
||||
[then]
|
||||
[set_achievement]
|
||||
content_for=eastern_invasion
|
||||
id=ei_S04c
|
||||
[/set_achievement]
|
||||
[/then]
|
||||
[/if]
|
||||
[/event]
|
||||
#enddef
|
||||
[event] # this is a really ugly way to have an additional line for Terraent
|
||||
|
@ -429,7 +415,7 @@
|
|||
condition=win
|
||||
[/objective]
|
||||
[objective]
|
||||
{OPTIONAL_OBJECTIVE_CAPTION}
|
||||
{BONUS_OBJECTIVE_CAPTION}
|
||||
#po: when initially shown there are 6 imprisoned knights, the text doesn't change as they're freed
|
||||
description= _ "Rescue the imprisoned knights"
|
||||
condition=win
|
||||
|
@ -948,6 +934,20 @@
|
|||
[/message]
|
||||
[/then]
|
||||
[/if]
|
||||
|
||||
[if]
|
||||
[have_unit]
|
||||
side=1
|
||||
trait=survivor
|
||||
count=6-999
|
||||
[/have_unit]
|
||||
[then]
|
||||
[set_achievement]
|
||||
content_for=eastern_invasion
|
||||
id=ei_S04c
|
||||
[/set_achievement]
|
||||
[/then]
|
||||
[/if]
|
||||
[/event]
|
||||
|
||||
{FOREIGN_DEFEAT}
|
||||
|
|
|
@ -259,9 +259,9 @@
|
|||
|
||||
[event]
|
||||
name=prestart
|
||||
{LOYAL_UNIT 4 (Necrophage) 22 8} {GUARDIAN}
|
||||
{LOYAL_UNIT 4 (Ghast) 28 10} {GUARDIAN}
|
||||
{LOYAL_UNIT 4 (Revenant) 26 7} {GUARDIAN}
|
||||
{LOYAL_UNIT 4 {ON_DIFFICULTY "Walking Corpse" Ghoul Necrophage} 22 8} {GUARDIAN}
|
||||
{LOYAL_UNIT 4 {ON_DIFFICULTY "Walking Corpse" Necrophage Ghast } 28 10} {GUARDIAN}
|
||||
{LOYAL_UNIT 4 {ON_DIFFICULTY "Walking Corpse" Skeleton Revenant } 26 7} {GUARDIAN}
|
||||
[/event]
|
||||
[event]
|
||||
name=side 4 turn
|
||||
|
@ -340,7 +340,7 @@
|
|||
[not] # mobilize if side 4 leader dies
|
||||
[have_unit]
|
||||
side=4
|
||||
can_recruit=yes
|
||||
canrecruit=yes
|
||||
[/have_unit]
|
||||
[/not]
|
||||
[or] # mobilize on turn 6
|
||||
|
@ -491,8 +491,8 @@
|
|||
show_turn_counter=yes
|
||||
[/objective]
|
||||
[objective]
|
||||
{OPTIONAL_OBJECTIVE_CAPTION}
|
||||
description= _ "Defeat as many enemy leaders as possible before turns run out (easier next scenario)."
|
||||
{BONUS_OBJECTIVE_CAPTION}
|
||||
description= _ "Defeat as many enemy leaders as possible, and then move any unit to the northern path (easier next scenario)"
|
||||
condition=win
|
||||
[show_if]
|
||||
[have_unit]
|
||||
|
@ -502,8 +502,8 @@
|
|||
[/show_if]
|
||||
[/objective]
|
||||
[objective]
|
||||
{OPTIONAL_OBJECTIVE_CAPTION}
|
||||
description= _ "Move Owaec next to Yannic."
|
||||
{BONUS_OBJECTIVE_CAPTION}
|
||||
description= _ "Move Owaec next to Yannic, and then protect Yannic until you move any unit to the northern path (bonus item next scenario)"
|
||||
condition=win
|
||||
[show_if]
|
||||
[have_unit]
|
||||
|
@ -516,8 +516,8 @@
|
|||
[/show_if]
|
||||
[/objective]
|
||||
[objective]
|
||||
{OPTIONAL_OBJECTIVE_CAPTION}
|
||||
description= _ "Keep Yannic alive (bonus reward)."
|
||||
{BONUS_OBJECTIVE_CAPTION}
|
||||
description= _ "Protect Yannic until you move any unit to the northern path (bonus item next scenario)"
|
||||
condition=win
|
||||
[show_if]
|
||||
[have_unit]
|
||||
|
|
|
@ -378,14 +378,18 @@
|
|||
|
||||
[message]
|
||||
speaker=Tarek
|
||||
#po: It’s a plague staff, giving both a plague attack and the ability to recruit animal walking corpses, but not human walking corpses.
|
||||
#po: The speaker is a horseman, a unit type that’s always male.
|
||||
message= _ "Hail, Owaec and company! We retreat from Soradoc, but Yannic sent me to bring a prize we took from one of the necromancers you slew. The temple healers have blessed it so that it may be used safely."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Dacyn
|
||||
#po: About the plague staff.
|
||||
message= _ "Fascinating... I’ve never had the chance to examine one of these up close before."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Owaec
|
||||
#po: Speaking to Tarek, a male horseman, about the plague staff.
|
||||
message= _ "Our thanks! You are a fair rider, yet you bring a foul boon. I will not wield such a dark artifact, though I shall not begrudge its use by my companions."
|
||||
[/message]
|
||||
{PLACE_ITEM_PLAGUE_STAFF 20 25}
|
||||
|
|
|
@ -268,7 +268,7 @@
|
|||
condition=win
|
||||
[/objective]
|
||||
[objective]
|
||||
{OPTIONAL_OBJECTIVE_CAPTION}
|
||||
{BONUS_OBJECTIVE_CAPTION}
|
||||
#po: two male dwarves
|
||||
description= _ "Move Dolburras next to Pelathsil."
|
||||
condition=win
|
||||
|
|
|
@ -432,7 +432,7 @@
|
|||
condition=win
|
||||
[/objective]
|
||||
[objective]
|
||||
{OPTIONAL_OBJECTIVE_CAPTION}
|
||||
{BONUS_OBJECTIVE_CAPTION}
|
||||
description= _ "Move Grug next to an enemy ogre."
|
||||
condition=win
|
||||
[show_if]
|
||||
|
@ -1146,7 +1146,7 @@ I shall not fall here."
|
|||
[event]
|
||||
name=grug_ogre_message
|
||||
[event]
|
||||
name=side 1 turn,side 1 turn end
|
||||
name=side 1 turn,side 1 turn end,grug_ogre_now
|
||||
[if]
|
||||
[have_unit]
|
||||
id=Grug
|
||||
|
@ -1299,6 +1299,11 @@ I shall not fall here."
|
|||
{FIND_NEARBY id=Grug 39 29 99}
|
||||
{FIND_NEARBY side=5 $found_unit.x $found_unit.y 99}
|
||||
|
||||
{GRUG_OGRE_MESSAGE}
|
||||
[fire_event]
|
||||
name=grug_ogre_now
|
||||
[/fire_event]
|
||||
|
||||
[message]
|
||||
image_pos=right
|
||||
x,y=$found_unit.x,$found_unit.y
|
||||
|
@ -1357,6 +1362,7 @@ I shall not fall here."
|
|||
#---------------------
|
||||
{PLACE_IMAGE scenery/wreck-3.png 8 15}
|
||||
{PLACE_IMAGE items/gold-coins-small.png 9 16}
|
||||
{SET_LABEL 9 16 _"25 gold"}
|
||||
[event]
|
||||
name=moveto
|
||||
[filter]
|
||||
|
|
|
@ -151,6 +151,17 @@
|
|||
name=prestart
|
||||
{INCIDENTAL_MUSIC heroes_rite.ogg}
|
||||
|
||||
# normally we don't scale anything except enemy count,
|
||||
# but I heard a couple comments that this scenario was too hard even on Easy,
|
||||
# so make both defense and economy easier on lower difficulties
|
||||
#ifdef EASY
|
||||
{MODIFY_TERRAIN Uu^Vud 40 18}
|
||||
{MODIFY_TERRAIN Rb^Vo 40 25}
|
||||
#endif
|
||||
#ifndef HARD
|
||||
{MODIFY_TERRAIN Uu^Vud 35 20}
|
||||
{MODIFY_TERRAIN Ha^Voa 48 21}
|
||||
#endif
|
||||
[time_area]
|
||||
x=30,31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
|
||||
y=30,30-31,29-31,29-31,28-31,27-31,27-31,26-31,24-31,25-31,24-31,24-31,23-31,23-31,22-31,22-31,21-31,21-31,20-31,21-31,20-31,20-31,19-31,19-31,18-31,18-31,18-31,18-31
|
||||
|
@ -923,7 +934,6 @@ The darkness between worlds opens its maw."
|
|||
[/event]
|
||||
|
||||
# Owaec refuses to enter the outer lock
|
||||
# this is good for flavor, but also helps with balance. Vanguard + Baneblade would be way too strong
|
||||
[event]
|
||||
name=enter hex
|
||||
first_time_only=no
|
||||
|
@ -938,7 +948,30 @@ The darkness between worlds opens its maw."
|
|||
speaker=Owaec
|
||||
message= _ "I will not aid in this evil quest."
|
||||
[/message]
|
||||
{MOVE_UNIT (id=Owaec) $x2 $y2}
|
||||
# prevent blocking Owaec to force him into the sanctuary
|
||||
[if]
|
||||
[have_unit]
|
||||
x,y=$x2,$y2
|
||||
[/have_unit]
|
||||
[then]
|
||||
[store_unit]
|
||||
[filter]
|
||||
x,y=$x2,$y2
|
||||
[/filter]
|
||||
variable=stored_forcepush
|
||||
kill=yes
|
||||
[/store_unit]
|
||||
{MOVE_UNIT (id=Owaec) $x2 $y2}
|
||||
[unstore_unit]
|
||||
variable=stored_forcepush
|
||||
find_vacant=yes
|
||||
[/unstore_unit]
|
||||
{CLEAR_VARIABLE stored_forcepush}
|
||||
[/then]
|
||||
[else]
|
||||
{MOVE_UNIT (id=Owaec) $x2 $y2}
|
||||
[/else]
|
||||
[/if]
|
||||
[/event]
|
||||
|
||||
# Dacyn cycles the outer lock
|
||||
|
@ -1178,10 +1211,10 @@ The darkness between worlds opens its maw."
|
|||
x,y=27,11
|
||||
[/filter]
|
||||
|
||||
{VARIABLE gold 130}
|
||||
{VARIABLE gold {ON_DIFFICULTY 200 160 130}}
|
||||
[message]
|
||||
speaker=unit
|
||||
#po: circa 130 gold
|
||||
#po: 200, 160, or 130 gold
|
||||
message= _ "This wyvern was rich! I count $gold gold in its hoard."
|
||||
sound=gold.ogg
|
||||
[/message]
|
||||
|
@ -1541,11 +1574,11 @@ The darkness between worlds opens its maw."
|
|||
|
||||
{REMOVE_IMAGE 43 10}
|
||||
{PLACE_IMAGE "items/chest-open.png~FL(horiz)" 43 10}
|
||||
{VARIABLE gold 45}
|
||||
{VARIABLE gold {ON_DIFFICULTY 70 55 45}}
|
||||
[message]
|
||||
speaker=unit
|
||||
sound=gold.ogg
|
||||
#po: circa 45 gold
|
||||
#po: 70, 55, or 45 gold
|
||||
message= _ "This chest contains $gold gold!"
|
||||
[/message]
|
||||
[gold]
|
||||
|
@ -2520,10 +2553,32 @@ Nothing is going well. My research has come to a dead end and even the spirits f
|
|||
message= _ "(grinning) I was hoping you’d say that!"
|
||||
[/message]
|
||||
{KILL id="Chief Dra-Nak"}
|
||||
{MOVE_UNIT id=Owaec 42 19} # hint that Owaec can recruit, if the player isn't already aware.
|
||||
|
||||
{VARIABLE orcs_attacking yes}
|
||||
[show_objectives]
|
||||
[/show_objectives]
|
||||
|
||||
# ensure the player is aware that Owaec can recruit. He's been able to since you first got him back in S05, but this is the first scenario where it's important.
|
||||
# the scenario is both unfun and extremely difficult without this knowledge.
|
||||
[event]
|
||||
name=side 5 turn end
|
||||
id=owaec_can_recruit_reminder
|
||||
[message]
|
||||
speaker=Owaec
|
||||
#po: this is a reminder to the player that Owaec is a leader and can recruit.
|
||||
message= _ "Gweddry may command the whole of our party, but do not forget that I too can recruit and recall! I will need soldiers to hold the line against these orcs."
|
||||
[/message]
|
||||
[/event]
|
||||
[event]
|
||||
name=recruit,recall
|
||||
[filter_second]
|
||||
id=Owaec
|
||||
[/filter_second]
|
||||
[remove_event]
|
||||
id=owaec_can_recruit_reminder
|
||||
[/remove_event]
|
||||
[/event]
|
||||
[/event]
|
||||
|
||||
#define REINFORCE_AFTER_NOATTACK TURN SIDE TYPE SPAWN_X SPAWN_Y
|
||||
|
@ -2558,18 +2613,18 @@ Nothing is going well. My research has come to a dead end and even the spirits f
|
|||
[/filter_condition]
|
||||
|
||||
{SCROLL_TO 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 60 2 ({ON_DIFFICULTY (Orcish Warrior) (Orcish Warrior) (Orcish Warrior) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 60 2 ({ON_DIFFICULTY (Orcish Warlord) (Orcish Warlord) (Orcish Warlord) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 60 2 ({ON_DIFFICULTY (Orcish Grunt) (Orcish Warrior) (Orcish Warrior) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 60 2 ({ON_DIFFICULTY (Goblin Spearman) (Orcish Grunt) (Orcish Warlord) }) 50 30}
|
||||
|
||||
{REINFORCE_AFTER_NOATTACK 24 2 ({ON_DIFFICULTY (Orcish Archer) (Orcish Crossbowman) (Orcish Crossbowman) }) 50 30}
|
||||
|
||||
{REINFORCE_AFTER_NOATTACK 12 2 ({ON_DIFFICULTY (Orcish Grunt) (Orcish Warrior) (Orcish Warrior) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 12 2 ({ON_DIFFICULTY (Orcish Grunt) (Orcish Grunt) (Orcish Warrior) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 12 2 ({ON_DIFFICULTY (Goblin Spearman) (Orcish Grunt) (Orcish Warrior) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 12 2 ({ON_DIFFICULTY (Goblin Spearman) (Orcish Grunt) (Orcish Warrior) }) 50 30}
|
||||
|
||||
{REINFORCE_AFTER_NOATTACK 0 2 ({ON_DIFFICULTY (Orcish Archer) (Orcish Crossbowman) (Orcish Crossbowman) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 0 2 ({ON_DIFFICULTY (Orcish Warrior) (Orcish Warrior) (Orcish Warrior) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 0 2 ({ON_DIFFICULTY (Orcish Archer) (Orcish Archer) (Orcish Crossbowman) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 0 2 ({ON_DIFFICULTY (Goblin Spearman) (Goblin Spearman) (Orcish Warrior) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 0 2 ({ON_DIFFICULTY (Orcish Grunt) (Orcish Grunt) (Orcish Grunt) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 0 2 ({ON_DIFFICULTY (Orcish Archer) (Orcish Archer) (Orcish Archer) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 0 2 ({ON_DIFFICULTY (Goblin Spearman) (Orcish Archer) (Orcish Archer) }) 50 30}
|
||||
|
||||
[if]
|
||||
[lua]
|
||||
|
@ -2642,12 +2697,14 @@ Nothing is going well. My research has come to a dead end and even the spirits f
|
|||
[/lua]
|
||||
[/or]
|
||||
[/filter_condition]
|
||||
#ifndef EASY
|
||||
{REINFORCE_AFTER_NOATTACK 72 2 ({ON_DIFFICULTY (Orcish Slurbow) (Orcish Slurbow) (Orcish Slurbow) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 72 2 ({ON_DIFFICULTY (Orcish Warlord) (Orcish Warlord) (Orcish Warlord) }) 50 30}
|
||||
|
||||
{REINFORCE_AFTER_NOATTACK 66 2 ({ON_DIFFICULTY (Orcish Slurbow) (Orcish Slurbow) (Orcish Slurbow) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 66 2 ({ON_DIFFICULTY (Orcish Assassin) (Orcish Assassin) (Orcish Slayer) }) 50 30}
|
||||
#ifndef EASY
|
||||
#endif
|
||||
#ifdef HARD
|
||||
{REINFORCE_AFTER_NOATTACK 24 2 ({ON_DIFFICULTY (Orcish Assassin) (Orcish Assassin) (Orcish Slayer) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 12 2 ({ON_DIFFICULTY (Orcish Assassin) (Orcish Assassin) (Orcish Assassin) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 12 2 ({ON_DIFFICULTY (Goblin Spearman) (Goblin Spearman) (Goblin Impaler) }) 50 30}
|
||||
|
@ -2671,12 +2728,14 @@ Nothing is going well. My research has come to a dead end and even the spirits f
|
|||
[/lua]
|
||||
[/or]
|
||||
[/filter_condition]
|
||||
#ifndef EASY
|
||||
{REINFORCE_AFTER_NOATTACK 84 2 ({ON_DIFFICULTY (Direwolf Rider) (Direwolf Rider) (Direwolf Rider) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 84 2 ({ON_DIFFICULTY (Goblin Knight) (Goblin Knight) (Goblin Knight) }) 50 30}
|
||||
|
||||
{REINFORCE_AFTER_NOATTACK 78 2 ({ON_DIFFICULTY (Goblin Pillager) (Goblin Pillager) (Goblin Pillager) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 78 2 ({ON_DIFFICULTY (Direwolf Rider) (Direwolf Rider) (Direwolf Rider) }) 50 30}
|
||||
#ifndef EASY
|
||||
#endif
|
||||
#ifdef HARD
|
||||
{REINFORCE_AFTER_NOATTACK 54 2 ({ON_DIFFICULTY (Wolf Rider) (Wolf Rider) (Goblin Knight) }) 50 30}
|
||||
{REINFORCE_AFTER_NOATTACK 54 2 ({ON_DIFFICULTY (Wolf Rider) (Goblin Knight) (Direwolf Rider) }) 50 30}
|
||||
|
||||
|
@ -2791,8 +2850,11 @@ Nothing is going well. My research has come to a dead end and even the spirits f
|
|||
name=human-old-die-1.ogg
|
||||
[/sound]
|
||||
|
||||
{MODIFY_UNIT (id=Dacyn) hitpoints 1}
|
||||
{MODIFY_UNIT (id=Dacyn) status.slowed yes}
|
||||
{MODIFY_UNIT id=Dacyn hitpoints 1}
|
||||
{MODIFY_UNIT id=Dacyn experience 0}
|
||||
# experience because 1: showing that the amulet interferes with his MoL-ing, and
|
||||
# experience because 2: preventing the player from deliberately AMLA-ing Dacyn in the next scenario (partially a difficulty issue, but mostly it's bad to punish blind playthroughs / reward foreknowledge)
|
||||
{MODIFY_UNIT id=Dacyn status.slowed yes}
|
||||
[message]
|
||||
speaker="Dacyn"
|
||||
#po: on putting on the amulet, he's been dropped to 1 hp
|
||||
|
|
|
@ -231,7 +231,12 @@
|
|||
|
||||
{RECALL_XY Dacyn 28 13}
|
||||
{MODIFY_UNIT id=Dacyn facing se}
|
||||
#ifndef EASY
|
||||
# Dacyn needs either full HP or low enough hp that the player realizes he needs to flee.
|
||||
# with medium HP the player might think they're expected to fight, even if it's not likely/possible
|
||||
# 7hp chosen arbitrarily
|
||||
{MODIFY_UNIT id=Dacyn hitpoints 7}
|
||||
#endif
|
||||
|
||||
{RECALL_XY Owaec 26 14}
|
||||
{MODIFY_UNIT id=Owaec facing se}
|
||||
|
@ -545,6 +550,30 @@
|
|||
[/not]
|
||||
) side 3}
|
||||
|
||||
# dump items in the orcish treasury
|
||||
# this is thematic, and also prevents cheese with shield+dacyn and baneblade+gate
|
||||
#define DROP_ITEM ID PLACE_ITEM
|
||||
[if]
|
||||
[have_unit]
|
||||
trait=TRAIT_{ID}
|
||||
[/have_unit]
|
||||
[then]
|
||||
[remove_trait]
|
||||
trait_id=TRAIT_{ID}
|
||||
[/remove_trait]
|
||||
{PLACE_ITEM}
|
||||
[/then]
|
||||
[/if]
|
||||
#enddef
|
||||
{DROP_ITEM {ID_HOLY_AMULET_1 } {PLACE_ITEM_HOLY_AMULET {ID_HOLY_AMULET_1} 14 16}}
|
||||
{DROP_ITEM {ID_HOLY_AMULET_2 } {PLACE_ITEM_HOLY_AMULET {ID_HOLY_AMULET_2} 16 17}}
|
||||
{DROP_ITEM {ID_CRYSTAL_QUIVER} {PLACE_ITEM_CRYSTAL_QUIVER 17 18}}
|
||||
|
||||
{DROP_ITEM {ID_SENTINEL } {PLACE_ITEM_SHIELD_OF_THE_SENTINEL 33 11}}
|
||||
{DROP_ITEM {ID_BANEBLADE } {PLACE_ITEM_BANEBLADE 34 11}}
|
||||
{DROP_ITEM {ID_PLAGUE_STAFF } {PLACE_ITEM_PLAGUE_STAFF 34 10}}
|
||||
#undef DROP_ITEM
|
||||
|
||||
#------------------
|
||||
# NO MAINTENANCE COSTS
|
||||
#------------------
|
||||
|
@ -1644,6 +1673,11 @@ Your punishment is death."
|
|||
{TREASURY_GOLD 34 10 "items/gold-coins-small.png" 70 (_"70 gold") (_"You’ve pillaged 70 orcish gold pieces!")}
|
||||
{TREASURY_GOLD 35 11 "items/gold-coins-medium.png" 115 (_"115 gold") (_"You’ve pillaged 115 orcish gold pieces!")}
|
||||
|
||||
# this gold pile draws the player's attention to this hex, which is also a great place to hide Dacyn
|
||||
#ifndef HARD
|
||||
{TREASURY_GOLD 30 10 "items/gold-coins-small.png" 20 (_"20 gold") (_"These orcs have a pile of 20 gold pieces!")}
|
||||
#endif
|
||||
|
||||
#---------------------------
|
||||
# RING OF INVISIBILITY
|
||||
#---------------------------
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
canrecruit=yes
|
||||
facing=sw
|
||||
[modifications]
|
||||
{TRAIT_RESILIENT}
|
||||
{TRAIT_INTELLIGENT}
|
||||
{TRAIT_STRONG}
|
||||
[/modifications]
|
||||
controller=ai
|
||||
|
@ -118,6 +118,7 @@
|
|||
[then]
|
||||
{MODIFY_UNIT id=Varrak-Klar name _"Chief Dra-Nak"}
|
||||
{ADVANCE_UNIT id=Varrak-Klar "Orcish Sovereign"}
|
||||
{MODIFY_UNIT id=Varrak-Klar profile portraits/orcs/ruler-2.webp}
|
||||
[/then]
|
||||
[/if]
|
||||
[/event]
|
||||
|
@ -243,14 +244,28 @@
|
|||
|
||||
{RECALL_XY Owaec 23 10}
|
||||
{RECALL_XY Dacyn 24 11} # he's slow, so put him near the bridge
|
||||
{MODIFY_UNIT id=Dacyn halo ""}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
id=Dacyn
|
||||
[/filter]
|
||||
[object]
|
||||
id=dacyn_no_halo
|
||||
[effect]
|
||||
apply_to=remove_ability
|
||||
[experimental_filter_ability]
|
||||
tag_name=illuminates
|
||||
[/experimental_filter_ability]
|
||||
[/effect]
|
||||
[/object]
|
||||
[/modify_unit]
|
||||
{RECALL_XY Addogin 24 9}
|
||||
{RECALL_XY (Hahid al-Ali) 24 9} # he drinks an elixir of haste. To make it more meaningful, put him on the furthest tile from the bridge
|
||||
{RECALL_XY Terraent 24 9}
|
||||
{RECALL_XY Dolburras 23 11} # he's slow, so put him near the bridge
|
||||
{RECALL_XY Grug 23 11}
|
||||
|
||||
{MODIFY_UNIT (id=Dacyn) hitpoints 21}
|
||||
# on Easy, Dacyn starts with full hitpoints in the previous scenario, so it would be odd for him to be injured here
|
||||
{MODIFY_UNIT (id=Dacyn) hitpoints {ON_DIFFICULTY 47 34 21}}
|
||||
|
||||
[objectives]
|
||||
side=1
|
||||
|
@ -396,13 +411,31 @@
|
|||
[delay]
|
||||
time=100
|
||||
[/delay]
|
||||
|
||||
{MODIFY_UNIT id=Dacyn halo ""}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
id=Dacyn
|
||||
[/filter]
|
||||
[object]
|
||||
id=dacyn_no_halo
|
||||
[effect]
|
||||
apply_to=remove_ability
|
||||
[experimental_filter_ability]
|
||||
tag_name=illuminates
|
||||
[/experimental_filter_ability]
|
||||
[/effect]
|
||||
[/object]
|
||||
[/modify_unit]
|
||||
[redraw]
|
||||
[/redraw]
|
||||
[delay]
|
||||
time=50
|
||||
[/delay]
|
||||
|
||||
{MODIFY_UNIT id=Dacyn halo "halo/illuminates-aura.png"}
|
||||
[remove_object]
|
||||
id=Dacyn
|
||||
object_id=dacyn_no_halo
|
||||
[/remove_object]
|
||||
[redraw]
|
||||
[/redraw]
|
||||
[/do]
|
||||
[/repeat]
|
||||
[delay]
|
||||
|
@ -661,7 +694,10 @@ We should press the attack."
|
|||
[not]
|
||||
id=Hahid al-Ali
|
||||
[/not]
|
||||
#po: Said by any left-behind unit except Hahid al-Ali (it would be very out of character for him).
|
||||
[not]
|
||||
race=ogre
|
||||
[/not]
|
||||
#po: Said by any left-behind unit except ogres (they can't speak fluently) and Hahid al-Ali (it would be very out of character for him).
|
||||
#po: TODO in 1.19: the "we" in this is a typo. It should be "you must ride ..."
|
||||
message= _ "At least you three commanders are safe. From here, we must ride swift, ride strong, and ride to save all of Wesnoth!"
|
||||
[/message]
|
||||
|
|
|
@ -843,10 +843,10 @@
|
|||
name=die
|
||||
[filter]
|
||||
id=Gaoler_Dwarves
|
||||
[filter_wml]
|
||||
max_moves=0 # so that these don't trigger after prisoners are executed
|
||||
[/filter_wml]
|
||||
[/filter]
|
||||
[filter_second]
|
||||
side=1
|
||||
[/filter_second]
|
||||
[message]
|
||||
speaker=Urmarol
|
||||
#po: "Thank you kindly for freeing us! My runesmithing arts are not meant to be used outside of knalga, but I think now is an exception. I just hope the East Gate didn't fare too bad after I was captured..."
|
||||
|
@ -921,10 +921,10 @@
|
|||
name=die
|
||||
[filter]
|
||||
id=Gaoler_Loyalists
|
||||
[filter_wml]
|
||||
max_moves=0 # so that these don't trigger after prisoners are executed
|
||||
[/filter_wml]
|
||||
[/filter]
|
||||
[filter_second]
|
||||
side=1
|
||||
[/filter_second]
|
||||
[message]
|
||||
speaker=Vinreddoc
|
||||
#po: Vinreddoc is a mage, but with random gender
|
||||
|
@ -1004,10 +1004,10 @@
|
|||
name=die
|
||||
[filter]
|
||||
id=Gaoler_Orcs
|
||||
[filter_wml]
|
||||
max_moves=0 # so that these don't trigger after prisoners are executed
|
||||
[/filter_wml]
|
||||
[/filter]
|
||||
[filter_second]
|
||||
side=1
|
||||
[/filter_second]
|
||||
[message]
|
||||
speaker=Ugzush
|
||||
#po: he's just been rescued
|
||||
|
@ -1088,10 +1088,10 @@
|
|||
name=die
|
||||
[filter]
|
||||
id=Gaoler_DarkAdept
|
||||
[filter_wml]
|
||||
max_moves=0 # so that these don't trigger after prisoners are executed
|
||||
[/filter_wml]
|
||||
[/filter]
|
||||
[filter_second]
|
||||
side=1
|
||||
[/filter_second]
|
||||
[message]
|
||||
speaker=Syner
|
||||
#po: speaking of Gaennell
|
||||
|
@ -1273,10 +1273,10 @@
|
|||
name=die
|
||||
[filter]
|
||||
id=Gaoler_Merfolk
|
||||
[filter_wml]
|
||||
max_moves=0 # so that these don't trigger after prisoners are executed
|
||||
[/filter_wml]
|
||||
[/filter]
|
||||
[filter_second]
|
||||
side=1
|
||||
[/filter_second]
|
||||
[message]
|
||||
speaker=Mame
|
||||
message= _ "Thanks stranger! I do not recognize these lands, but I do recognize a kind heart when I meet one. Should I ever find my way home to the coast, I will be sure to tell my kinsmen of your actions here."
|
||||
|
|
|
@ -1090,7 +1090,10 @@
|
|||
#po: loses his halo and advances to an L4 Twilight Mage (liminal, heals +4, does not illuminate, melee attack gains "drain")
|
||||
message= _ "... but it is a necessary price to pay. I will not let up until Mal-Ravanal is defeated, whatever the cost may be."
|
||||
[/message]
|
||||
{STORE_UNIT_VAR id=Dacyn experience dacyn_xp}
|
||||
{ADVANCE_UNIT id=Dacyn (Twilight Mage)}
|
||||
{MODIFY_UNIT id=Dacyn experience $dacyn_xp}
|
||||
{CLEAR_VARIABLE dacyn_xp}
|
||||
[/event]
|
||||
|
||||
#---------------------------
|
||||
|
@ -1230,12 +1233,7 @@
|
|||
condition=win
|
||||
[/objective]
|
||||
[objective]
|
||||
{OPTIONAL_OBJECTIVE_CAPTION}
|
||||
description= _ "Capture villages and build up an army before attacking."
|
||||
condition=win
|
||||
[/objective]
|
||||
[objective]
|
||||
{OPTIONAL_OBJECTIVE_CAPTION}
|
||||
{BONUS_OBJECTIVE_CAPTION}
|
||||
description= _ "Loot Addogin’s smugglers’ caches."
|
||||
condition=win
|
||||
[show_if]
|
||||
|
@ -1254,6 +1252,9 @@
|
|||
[note]
|
||||
description= _ "Enemy leaders are idle until first sighted, but will then abandon their keep and attack you."
|
||||
[/note]
|
||||
[note]
|
||||
description= _ "It may be wise to capture villages and build up an army before attacking."
|
||||
[/note]
|
||||
[/objectives]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -1139,6 +1139,8 @@
|
|||
[/message]
|
||||
{MODIFY_UNIT id=Yannic side 1}
|
||||
#define BONUS_UNIT X Y TYPE FACE XP COLOR TRAIT1 TRAIT2
|
||||
# no traits, because units with traits may sometimes have quick and may sometimes not have quick
|
||||
# this causes civilians to randomly block certain castle hexes that the player can use to recruit
|
||||
{NOTRAIT_UNIT 1 ({TYPE}) {X} {Y}}{ANIMATE} {FACING {FACE}}
|
||||
[+unit]
|
||||
[modifications]
|
||||
|
@ -1172,7 +1174,7 @@
|
|||
#define TOWNSFOLK X Y IMAGE TO_X TO_Y
|
||||
[event]
|
||||
name=prestart
|
||||
{GENERIC_UNIT 2 (Townsfolk) {X} {Y}}
|
||||
{NOTRAIT_UNIT 2 (Townsfolk) {X} {Y}}
|
||||
{STORE_UNIT_VAR x,y={X},{Y} id townsfolk_id}
|
||||
[object]
|
||||
[filter]
|
||||
|
@ -1582,7 +1584,10 @@ And leave eternal night to remain."
|
|||
[/effect]
|
||||
[/object]
|
||||
[/modify_unit]
|
||||
{STORE_UNIT_VAR id=Dacyn experience dacyn_xp}
|
||||
{ADVANCE_UNIT id=Dacyn (Fallen Mage)}
|
||||
{MODIFY_UNIT id=Dacyn experience $dacyn_xp}
|
||||
{CLEAR_VARIABLE dacyn_xp}
|
||||
[/event]
|
||||
[/event]
|
||||
[/event]
|
||||
|
|
|
@ -66,40 +66,26 @@
|
|||
{FLAG_VARIANT undead}
|
||||
#enddef
|
||||
#define CHANGE_RECRUITS_IF_RICH SIDE OLDTYPES NEWTYPES
|
||||
# if we're building a gold reserve (because our keep is too small), allow more expensive recruits
|
||||
# if we're building a gold reserve (because our keep is too small), force the AI to use expensive high-level recruits
|
||||
[store_gold]
|
||||
side={SIDE}
|
||||
[/store_gold]
|
||||
[if]
|
||||
[lua]
|
||||
code=<< return wesnoth.current.turn>15 >>
|
||||
[/lua]
|
||||
|
||||
{VARIABLE_CONDITIONAL gold greater_than 150}
|
||||
|
||||
{VARIABLE_CONDITIONAL turn_number greater_than 10}
|
||||
{VARIABLE_CONDITIONAL gold greater_than 300}
|
||||
[then]
|
||||
[disallow_recruit]
|
||||
[set_recruit]
|
||||
side={SIDE}
|
||||
type={OLDTYPES}
|
||||
[/disallow_recruit]
|
||||
[allow_recruit]
|
||||
side={SIDE}
|
||||
type={NEWTYPES}
|
||||
[/allow_recruit]
|
||||
recruit={NEWTYPES}
|
||||
[/set_recruit]
|
||||
[/then]
|
||||
|
||||
[else]
|
||||
[allow_recruit]
|
||||
[set_recruit]
|
||||
side={SIDE}
|
||||
type={OLDTYPES}
|
||||
[/allow_recruit]
|
||||
[disallow_recruit]
|
||||
side={SIDE}
|
||||
type={NEWTYPES}
|
||||
[/disallow_recruit]
|
||||
recruit={OLDTYPES}
|
||||
[/set_recruit]
|
||||
[/else]
|
||||
[/if]
|
||||
|
||||
{CLEAR_VARIABLE gold}
|
||||
#enddef
|
||||
{REANIMATION_IMPLEMENTATION}
|
||||
|
@ -1512,9 +1498,12 @@
|
|||
[filter]
|
||||
id=$unit.id
|
||||
[/filter]
|
||||
|
||||
flag=levelout
|
||||
[/animate_unit]
|
||||
[store_locations]
|
||||
owner_side=$unit.side
|
||||
variable=stored_villages
|
||||
[/store_locations]
|
||||
{KILL id=$unit.id}
|
||||
[unit]
|
||||
side=$ravanal_side
|
||||
|
@ -1522,11 +1511,15 @@
|
|||
facing=$unit.facing
|
||||
{CHARACTER_STATS_RAVANAL}
|
||||
[/unit]
|
||||
[capture_village]
|
||||
find_in=stored_villages
|
||||
side=$ravanal_side
|
||||
[/capture_village]
|
||||
{CLEAR_VARIABLE stored_villages}
|
||||
[animate_unit]
|
||||
[filter]
|
||||
id=Mal-Ravanal
|
||||
[/filter]
|
||||
|
||||
flag=levelin
|
||||
[/animate_unit]
|
||||
|
||||
|
|
|
@ -151,21 +151,15 @@
|
|||
first_time_only=no
|
||||
{RESET_SIDE_AI 2,3,4 defensive 0.9 0.1}
|
||||
{MODIFY_SIDE_AI (2) (
|
||||
[avoid] # avoid the prison guards and side 3's leader
|
||||
x=0-24,41-99
|
||||
y=0-12,19-99
|
||||
[avoid] # avoid side 3's leader
|
||||
x=41-99
|
||||
y=19-99
|
||||
[/avoid]
|
||||
)}
|
||||
{MODIFY_SIDE_AI (3) (
|
||||
[avoid] # avoid the prison guards and side 2's leader
|
||||
x=0-24,38-99
|
||||
y=0-12, 0-18
|
||||
[/avoid]
|
||||
)}
|
||||
{MODIFY_SIDE_AI (4) (
|
||||
[avoid] # avoid the prison guards
|
||||
x=0-24
|
||||
y=0-12
|
||||
[avoid] # avoid side 2's leader
|
||||
x=38-99
|
||||
y= 0-18
|
||||
[/avoid]
|
||||
)}
|
||||
|
||||
|
@ -1062,25 +1056,22 @@ I will not fall easily."
|
|||
[filter]
|
||||
x,y={X},{Y}
|
||||
[/filter]
|
||||
|
||||
hitpoints=$random
|
||||
[object]
|
||||
id=imprisoned
|
||||
[effect]
|
||||
apply_to=remove_attacks
|
||||
|
||||
[not]
|
||||
name=fire breath
|
||||
[/not]
|
||||
[/effect]
|
||||
|
||||
[effect]
|
||||
apply_to=new_attack
|
||||
|
||||
[filter]
|
||||
[not]
|
||||
trait=strong
|
||||
[/not]
|
||||
[/filter]
|
||||
|
||||
name=unarmed
|
||||
description= _ "unarmed"
|
||||
icon=attacks/fist-human.png
|
||||
|
@ -1092,11 +1083,9 @@ I will not fall easily."
|
|||
# same as the merman civilian
|
||||
[effect]
|
||||
apply_to=new_attack
|
||||
|
||||
[filter]
|
||||
trait=strong
|
||||
[/filter]
|
||||
|
||||
name=unarmed
|
||||
description= _ "unarmed"
|
||||
icon=attacks/fist-human.png
|
||||
|
@ -1137,6 +1126,9 @@ I will not fall easily."
|
|||
side=1
|
||||
[/not]
|
||||
[/filter]
|
||||
[filter_condition]
|
||||
{VARIABLE_CONDITIONAL prisons_captured not_equals yes}
|
||||
[/filter_condition]
|
||||
|
||||
[filter_second]
|
||||
side=1
|
||||
|
@ -1197,6 +1189,64 @@ I will not fall easily."
|
|||
{IMPRISON_UNIT 18 7}
|
||||
[/event]
|
||||
|
||||
#--------------------
|
||||
# JAILER DIES
|
||||
#--------------------
|
||||
[event]
|
||||
name=die
|
||||
[filter]
|
||||
side=7
|
||||
[not]
|
||||
x,y=21,10
|
||||
[/not]
|
||||
[/filter]
|
||||
[message]
|
||||
speaker=Chief Dra-Nak
|
||||
message= _ "Get away from my jail cells! Filthy traitors, there goes my income..."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Chief Dra-Nak
|
||||
message= _ "Fine then, I’m done taking prisoners. From here on out, you either submit or die!"
|
||||
[/message]
|
||||
{VARIABLE prisons_captured yes}
|
||||
[/event]
|
||||
[event]
|
||||
name=die
|
||||
[filter]
|
||||
side,x,y=7,16,11
|
||||
[/filter]
|
||||
{MODIFY_TERRAIN Re^Pr/o 16 10}
|
||||
{MODIFY_UNIT side,x,y=6,13-16,7-10 side 2}
|
||||
[remove_object]
|
||||
side=2
|
||||
object_id=imprisoned
|
||||
[/remove_object]
|
||||
[/event]
|
||||
[event]
|
||||
name=die
|
||||
[filter]
|
||||
side,x,y=7,22,8
|
||||
[/filter]
|
||||
{MODIFY_TERRAIN Re^Pr/o 21 8}
|
||||
{MODIFY_UNIT side,x,y=6,18-21,6-8 side 2}
|
||||
[remove_object]
|
||||
side=2
|
||||
object_id=imprisoned
|
||||
[/remove_object]
|
||||
[/event]
|
||||
[event]
|
||||
name=die
|
||||
[filter]
|
||||
side,x,y=7,26,8
|
||||
[/filter]
|
||||
{MODIFY_TERRAIN Re^Pr\o 28 8}
|
||||
{MODIFY_UNIT side,x,y=6,28-31,6-8 side 2}
|
||||
[remove_object]
|
||||
side=2
|
||||
object_id=imprisoned
|
||||
[/remove_object]
|
||||
[/event]
|
||||
|
||||
#--------------------
|
||||
# HUMAN ARRIVAL (if there are any)
|
||||
#--------------------
|
||||
|
@ -1587,13 +1637,12 @@ I will not fall easily."
|
|||
#--------------------
|
||||
# DEFEAT
|
||||
#--------------------
|
||||
# Dra-Nak dies
|
||||
[event]
|
||||
name=last breath
|
||||
|
||||
[filter]
|
||||
id=Chief Dra-Nak
|
||||
[/filter]
|
||||
|
||||
[message]
|
||||
speaker=Chief Dra-Nak
|
||||
#po: the chief's last breath
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
usage=fighter
|
||||
description= _ "At the heart of each giant ant burrow lies a queen. Much like their miniature cousins, a well-fed giant ant queen will continually lay eggs, ensuring that the colony never lacks workers for scavenging or soldiers for defense."
|
||||
die_sound=hiss-die.wav
|
||||
undead_variation=spider
|
||||
undead_variation=ant
|
||||
[abilities]
|
||||
{ABILITY_LEADERSHIP}
|
||||
[dummy]
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
usage=fighter
|
||||
description= _ "Each of these enormous egg sacs contains up to a dozen ant larvae, sheltering and nourishing them while they develop into worker drones. When the burrow is threatened, an ant queen can release pheromones that cause each sac to rapidly develop into a single large warrior ant."
|
||||
die_sound=squishy-hit.wav
|
||||
undead_variation=spider # not perfect, but better than a bald man
|
||||
undead_variation=ant
|
||||
[abilities]
|
||||
[dummy]
|
||||
name=_"hatch"
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
image="units/townsfolk/worker.png"
|
||||
alignment=lawful
|
||||
hitpoints=16
|
||||
movement=4
|
||||
movement=5
|
||||
movement_type=smallfoot
|
||||
level=0
|
||||
experience=25
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
blade=70
|
||||
pierce=80
|
||||
impact=90
|
||||
arcane=150
|
||||
arcane=120
|
||||
fire=120
|
||||
cold=40
|
||||
[/resistance]
|
||||
|
@ -44,6 +44,7 @@
|
|||
[attack]
|
||||
name=sword
|
||||
icon=attacks/greatsword-orcish.png
|
||||
#textdomain wesnoth-units
|
||||
description=_"sword"
|
||||
type=blade
|
||||
range=melee
|
||||
|
@ -54,6 +55,7 @@
|
|||
name=trample
|
||||
icon="attacks/hoof-skeletal.png"
|
||||
description=_"trample"
|
||||
#textdomain wesnoth-ei
|
||||
type=impact
|
||||
range=melee
|
||||
damage=14
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
blade=70
|
||||
pierce=80
|
||||
impact=90
|
||||
arcane=150
|
||||
arcane=120
|
||||
fire=90 # since they're fire-themed, give them fire resistance
|
||||
cold=110 # but cold vulnerability (only relevant vs Gaennell)
|
||||
[/resistance]
|
||||
|
|
|
@ -527,3 +527,46 @@ When an enemy unit of lower level within a 2 hex radius engages in combat, its a
|
|||
apply_to=fire,arcane
|
||||
[/resistance]
|
||||
#enddef
|
||||
|
||||
#define COMMON_ARCANE
|
||||
alternative_type=arcane
|
||||
active_on=offense
|
||||
[filter_opponent]
|
||||
[not]
|
||||
[experimental_filter_ability_active]
|
||||
tag_name=resistance
|
||||
id=shroud
|
||||
[/experimental_filter_ability_active]
|
||||
[/not]
|
||||
[/filter_opponent]
|
||||
#enddef
|
||||
|
||||
#define WEAPON_SPECIAL_ARCANE_EI
|
||||
[damage_type]
|
||||
id=arcane_damage
|
||||
#textdomain wesnoth-help
|
||||
name= _ "arcane"
|
||||
description= _ "This attack combines the arcane type with the type of weapon used so that resistance to the arcane type does not penalize the user."
|
||||
special_note=_ "This unit can use the arcane type when the opponent is particularly sensitive to it in relation to the weapon on which it is applied."
|
||||
#textdomain wesnoth-ei
|
||||
{COMMON_ARCANE}
|
||||
[/damage_type]
|
||||
[damage_type]
|
||||
id=arcane_damage_defense
|
||||
alternative_type=arcane
|
||||
active_on=defense
|
||||
[/damage_type]
|
||||
#enddef
|
||||
|
||||
#define ABILITY_ARCANE_EI
|
||||
[damage_type]
|
||||
id=arcane_blessing
|
||||
overlay_image="misc/arcane-icon.png"
|
||||
{COMMON_ARCANE}
|
||||
[/damage_type]
|
||||
[damage_type]
|
||||
id=arcane_blessing_defense
|
||||
alternative_type=arcane
|
||||
active_on=defense
|
||||
[/damage_type]
|
||||
#enddef
|
||||
|
|
|
@ -86,6 +86,10 @@
|
|||
#--------------------
|
||||
# ADD AMLAS
|
||||
#--------------------
|
||||
[remove_object]
|
||||
object_id=universal_amlas_object
|
||||
id=$unit.id
|
||||
[/remove_object]
|
||||
[modify_unit]
|
||||
[filter]
|
||||
id=$unit.id
|
||||
|
|
|
@ -144,20 +144,16 @@ crystal_quiver #enddef
|
|||
range=ranged
|
||||
[set_specials]
|
||||
mode=append
|
||||
{WEAPON_SPECIAL_ARCANE}
|
||||
{WEAPON_SPECIAL_ARCANE_EI}
|
||||
[/set_specials]
|
||||
name=bow,crossbow,composite bow
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=new_ability
|
||||
[abilities]
|
||||
{ABILITY_ILLUMINATES}
|
||||
{ABILITY_ILLUMINATES HALO="halo/illuminates-aura.png"}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=halo
|
||||
halo=halo/illuminates-aura.png
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=overlay
|
||||
add=misc/crystal-quiver-icon.png
|
||||
|
@ -198,15 +194,10 @@ holy_amulet_3 #enddef
|
|||
""
|
||||
(
|
||||
[effect]
|
||||
apply_to=attack
|
||||
[set_specials]
|
||||
mode=append
|
||||
{WEAPON_SPECIAL_ARCANE}
|
||||
[/set_specials]
|
||||
[/effect]
|
||||
[effect]
|
||||
apply_to=overlay
|
||||
add=misc/arcane-icon.png
|
||||
apply_to=new_ability
|
||||
[abilities]
|
||||
{ABILITY_ARCANE_EI}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
)
|
||||
()
|
||||
|
@ -424,8 +415,15 @@ sentinel #enddef
|
|||
id=sentinel_damage_blocker # after combat, remove this object
|
||||
[effect]
|
||||
apply_to=attack
|
||||
set_damage=0
|
||||
remove_specials=poison,slow
|
||||
[set_specials]
|
||||
mode=append
|
||||
[damage]
|
||||
apply_to=self
|
||||
value=0
|
||||
overwrite_specials=one_side # not overwriting causes issues with the survivor trait
|
||||
[/damage]
|
||||
[/set_specials]
|
||||
[/effect]
|
||||
[/object]
|
||||
[/modify_unit]
|
||||
|
@ -453,6 +451,9 @@ sentinel #enddef
|
|||
is_enemy=no
|
||||
[/filter_adjacent]
|
||||
[/filter]
|
||||
[filter_second]
|
||||
id=${ATTACKER}.id
|
||||
[/filter_second]
|
||||
|
||||
amount=$sentinel_damage
|
||||
damage_type=${WEAPON}.type
|
||||
|
@ -460,6 +461,7 @@ sentinel #enddef
|
|||
poisoned=$sentinel_poisons
|
||||
slowed=$sentinel_slows
|
||||
animate=yes
|
||||
delay=0
|
||||
fire_event=yes
|
||||
# variable=sentinel_damage_dealt # this throws an error if the unit dies. Instead, base drain_amount on $sentinel_damage, regardless of resistances
|
||||
[/harm_unit]
|
||||
|
@ -775,7 +777,7 @@ plague_staff #enddef
|
|||
{ID_PLAGUE_STAFF} _"staff" items/plague-staff.png {X} {Y}
|
||||
(
|
||||
[not]
|
||||
type=White Mage,Mage of Light,Paladin
|
||||
type_adv_tree=White Mage,Paladin
|
||||
|
||||
[not]
|
||||
id=Dacyn
|
||||
|
@ -783,15 +785,17 @@ plague_staff #enddef
|
|||
[/not]
|
||||
|
||||
[not]
|
||||
id=Owaec,Gweddry,Hahid al-Ali,Terraent
|
||||
id=Owaec,Gweddry,Dacyn,Hahid al-Ali,Terraent
|
||||
[/not]
|
||||
# messes with existing recruiting, and messes with the S19 cutscene
|
||||
# messes with existing recruiting, and messes with the S18 cutscene
|
||||
# if Dacyn gets this, it also breaks his scripted advancements (and his S17a recruitment)
|
||||
)
|
||||
_"Plague Staff"
|
||||
_"Looted from a dead necromancer, the wielder of this dark staff becomes <i><b>chaotic</b></i>, and can <i><b>recruit and recall</b></i> Walking Corpses and Soulless.
|
||||
<i><b>6x3 impact</b></i> damage, <i>plague</i>."
|
||||
{NOTE_REUSEABLE}
|
||||
_"I will not wield such a dark magical artifact, though I shall not begrudge its use by my companions."
|
||||
# this message makes no sense for Dacyn (his entire quest is to get a dark magical artifact), but I couldn't think of something good and generic that works for everyone.
|
||||
(
|
||||
[effect]
|
||||
apply_to=new_attack
|
||||
|
@ -902,10 +906,15 @@ plague_staff #enddef
|
|||
{VARIABLE owaec_done_complaining_plague yes}
|
||||
[message]
|
||||
speaker=Dacyn
|
||||
#po: If the player accepts the plague staff, the unit that picks it up can recruit walking corpses of animals (but not humans),
|
||||
#po: randomly getting a falcon, spider, wolf or sand scorpion corpse. Here “crown” means “top of head”, or “top of cephalothorax”.
|
||||
#po: Dacyn says this the first time a corpse is recruited, and this event could happen in almost any scenario from S07b onwards.
|
||||
#po: Even before picking up the amulet, he’s showing a level of interest that might get a student expelled from the Academy on Alduin
|
||||
message=_"Fascinating. The necromantic magic concentrates in the subject’s crown, replacing its bestial soul. Unnatural, yet effective."
|
||||
[/message]
|
||||
[message]
|
||||
speaker=Owaec
|
||||
#po: First time a corpse is recruited by the wielder of the plague staff.
|
||||
message=_"A disgusting abomination! I lament living in such times..."
|
||||
[/message]
|
||||
[/event]
|
||||
|
|
|
@ -168,25 +168,36 @@ Against all odds, this unit has endured the terrors and tortures of Mal-Ravanal
|
|||
apply_to=self
|
||||
[filter_opponent] # note that I also use this filter in the implementation for the Sentinel shield
|
||||
trait=undead
|
||||
|
||||
[or]
|
||||
type_adv_tree=Dark Adept,Vampire Bat
|
||||
[/or]
|
||||
[/filter_opponent]
|
||||
add=1
|
||||
[/damage]
|
||||
[damage]
|
||||
apply_to=opponent
|
||||
[filter_opponent]
|
||||
trait=undead
|
||||
|
||||
[or]
|
||||
type_adv_tree=Dark Adept,Vampire Bat
|
||||
[/or]
|
||||
[/filter_opponent]
|
||||
add=-1
|
||||
[/damage]
|
||||
[/set_specials]
|
||||
[/effect]
|
||||
# -1 damage for undead against self
|
||||
[effect]
|
||||
apply_to=new_ability
|
||||
[abilities]
|
||||
[damage]
|
||||
id=survivor_reduce_damage # id prevents multiple survivor traits on different units from stacking
|
||||
affect_enemies,affect_allies,affect_self=yes,no,no
|
||||
[filter_opponent]
|
||||
trait=survivor
|
||||
[/filter_opponent]
|
||||
[affect_adjacent]
|
||||
adjacent=n,ne,se,s,sw,nw
|
||||
[filter]
|
||||
trait=undead
|
||||
[or]
|
||||
type_adv_tree=Dark Adept,Vampire Bat
|
||||
[/or]
|
||||
[/filter]
|
||||
[/affect_adjacent]
|
||||
sub=1
|
||||
[/damage]
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/trait]
|
||||
#enddef
|
||||
|
|
|
@ -17,21 +17,21 @@ Ww, Ww, Ww, Ww, Ds, Ds, Gg, Gs^Fp, Gs^Fms, Ss, Ss, Gs^Fms, Rb^Gvs, Rb^Gvs, Gs, G
|
|||
Wo, Wo, Ww, Ww, Ds, Ds, Gg, Gg, Gs, Gs, Ss, Gs, Gs, Rb^Gvs, Gs, Re, Gs, Gs, Gs, Ss, Ss, Ss, Gs, Gs, Re, Gs, Gs
|
||||
Wo, Wo, Ww, Ww, Ww, Ds, Gg, Gs, Ss, Ss, Gg^Vh, Ss, Ss, Gs, Ww, Re, Ww, Ww, Ww, Ss, Gs, Gs, Gs, Gs, Gs, Gs, Gs
|
||||
Wo, Wo, Wo, Ww, Ww, Gg, Gs, Gs, Ss, Ss, Gg, Gg, Ww, Ww, Ww, Ww^Bw|, Ww, Wo, Wo, Ww, Gs, Gs, Re, Re, Gs, Gs, Gs^Fms
|
||||
Wo, Wo, Wo, Ww, Ww, Gg, Gg, Gs, Gs, Ss, Ww, Ww, Wo, Wo, Ww, Ww^Bw|, Gg, Ww, Ww, Ww, Ww^Bw/, Re, Gs, Gs, Gs, Gs^Fms, Gs^Fms
|
||||
Wo, Wo, Wo, Ww, Ww, Ww, Gg, Gs, Gg, Ww, Wo, Wo, Ww, Ww, Ch, Rr, Ch, Ww, Ww^Bw/, Ww^Bw/, Ww, Ww, Ww, Ss, Gs, Gs^Fms, Gs^Fp
|
||||
Wo, Wo, Wo, Ww, Ww, Ww, Gg, Gg^Vh, Ww, Ww, Ww, Ww, Ds, Gg, Gg, Rr, Rr, Rr, Ch, Ww, Ww, Wo, Wo, Ww, Ww, Ww, Ww
|
||||
Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Ww, Ww^Bw\, Ds, Gg, Rp^Vhc, Rr, Gs^Fds, Gg, Gg, Gg, Ds, Ww, Ww, Wo, Wo, Ww, Ww
|
||||
Wo, Wo, Wo, Ww, Ww, Gg, Gg, Gs, Gs, Ss, Ww, Ww, Wo, Wo, Ww^Es, Ww^Bw|, Gg, Ww, Ww, Ww, Ww^Bw/, Re, Gs, Gs, Gs, Gs^Fms, Gs^Fms
|
||||
Wo, Wo, Wo, Ww, Ww, Ww, Gg, Gs, Gg, Ww, Wo, Wo, Ww, Ww^Es, Chr, Rr^Edt, Chr^Edt, Ww^Es, Ww^Bw/, Ww^Bw/, Ww, Ww, Ww, Ss, Gs, Gs^Fms, Gs^Fp
|
||||
Wo, Wo, Wo, Ww, Ww, Ww, Gg, Gg^Vh, Ww, Ww, Ww, Ww, Ds, Gg^Es, Gg^Es, Rr^Edt, Rr^Es, Rr^Edt, Chr, Ww^Es, Ww, Wo, Wo, Ww, Ww, Ww, Ww
|
||||
Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Ww, Ww^Bw\, Ds, Gg, Rp^Vhc, Rr, Gs^Fds, Gg^Es, Gg^Es, Gg, Ds, Ww, Ww, Wo, Wo, Ww, Ww
|
||||
Wo, Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww^Bw\, Ds, Rr, Rr, Rr, Rr, Gs, Gs^Fds, Rr^Vhc, Gg, Gg^Vh, Ds, Gs^Fds, Ww, Ww, Wo, Wo
|
||||
Wo, Wo, Wo, Wo, Ww, Ww, Ww^Bw\, Ww, Gg, Ww, Ww, Ds, Gs, Rr^Vhc, Gs, Rr, Rr, Gs, Gs, Gg, Gg, Gs^Fds, Gs^Fds, Ww, Ww, Wo, Wo
|
||||
Wo, Wo, Wo, Wo, Ww, Ww, Ds, Ds, Gg, Gg, Ww, Ww, Ch, Gs, Rr, Rr, Ch, Rr, Rr, Gs, Gg^Efm, Gg^Vh, Ds, Ww, Wo, Wo, Wo
|
||||
Wo, Wo, Wo, Ww, Ww, Ww, Ds, Rr, Rr, Gg^Vh, Gg, Ww, Rr, Rr, Rr, Ch, 2 Kh, Ch, Rr, Gs, Gs, Ds, Ww, Ww, Ww, Ww, Ww
|
||||
Wo, Wo, Wo, Ww, Ww, Ww^Bw\, Ds, Gg, Rr, Rr, Rr, Ww^Bw/, Ch, Gs, Rr, Ch, Ch, Chr, Rr, Rr^Vhc, Gs, Ds, Ww, Wo, Ww, Ww, Ww
|
||||
Wo, Wo, Wo, Ww, Ww, Ww, Ds, Rr, Gg, Gg^Vh, Gg^Efm, Ww, Gs, Gs, Rr^Vhc, Rr, Rr, Rr, Gs^Fds, Gs, Ch, Ww, Wo, Ww, Gg, Gg, Gg
|
||||
Wo, Wo, Wo, Ww, Ww, Ww^Bw/, Ww, Ds, Ds, Gg^Efm, Ww, Ww, Gs^Fds, Gs^Fds, Gs, Gs, Gs, Rr, Rr, Gs, Rr, Ww, Ww, Ww, Gg, Gg, Gg
|
||||
Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww^Bw/, Ww, Gg, Ww, Ww, Ww, Gs^Fds, Gs, Rr^Vhc, Rr, Rr, Rr^Vh, Rr, Ch, Ww^Bw\, Ww^Bw\, Gg, Gg, Gg^Vh, Gg
|
||||
Wo, Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Wo, Ww^Bw/, Ds, Rr, Rr, Gg, Rr, Gg, Gg, Ds, Ww, Ww, Re, Re, Gg, Gg
|
||||
Wo, Wo, Wo, Wo, Ww, Ww, Gg, Ww, Ww, Ww, Wo, Ww, Ww, Ds, Ds, Gg, Chr, Rr, Ch, Ds, Ww, Ww, Ww, Gg, Re, Gg, Gg
|
||||
Wo, Wo, Wo, Ww, Ww, Ww, Gg, Gg, Gg, Ww, Wo, Ww, Ww, Ww^Bw/, Ww, Gg, Ww, Ww^Bw|, Ww, Ww, Ww, Ww, Gg, Gg, Re, Gg, Gg^Efm
|
||||
Wo, Wo, Wo, Ww, Ww, Ww, Ds, Rr, Gg, Gg^Vh, Gg^Efm, Ww, Gs, Gs, Rr^Vhc, Rr, Rr, Rr, Gs^Fds, Gs^Edt, Chr, Ww^Es, Wo, Ww, Gg, Gg, Gg
|
||||
Wo, Wo, Wo, Ww, Ww, Ww^Bw/, Ww, Ds, Ds, Gg^Efm, Ww, Ww, Gs^Fds, Gs^Fds, Gs, Gs, Gs, Rr, Rr, Gs^Edb, Rr^Edt, Ww^Es, Ww, Ww, Gg, Gg, Gg
|
||||
Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww^Bw/, Ww, Gg, Ww, Ww, Ww, Gs^Fds, Gs, Rr^Vhc, Rr, Rr, Rr^Vh, Rr, Chr^Edt, Ww^Bw\, Ww^Bw\, Gg, Gg, Gg^Vh, Gg
|
||||
Wo, Wo, Wo, Wo, Wo, Ww, Ww, Ww, Ww, Ww, Ww, Wo, Ww^Bw/, Ds, Rr, Rr, Gg^Edt, Rr, Gg^Edt, Gg, Ds, Ww^Edt, Ww, Re, Re, Gg, Gg
|
||||
Wo, Wo, Wo, Wo, Ww, Ww, Gg, Ww, Ww, Ww, Wo, Ww, Ww, Ds, Ds, Gg^Edt, Chr, Rr^Edt, Chr, Ds, Ww, Ww, Ww, Gg, Re, Gg, Gg
|
||||
Wo, Wo, Wo, Ww, Ww, Ww, Gg, Gg, Gg, Ww, Wo, Ww, Ww, Ww^Bw/, Ww, Gg^Es, Ww^Edt, Ww^Bw|, Ww^Edt, Ww^Edt, Ww, Ww, Gg, Gg, Re, Gg, Gg^Efm
|
||||
Wo, Wo, Ww, Ww, Gg, Gg, Gs^Fds, Gg, Gg, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww^Bw|, Ww, Ww, Gg, Gg, Gg, Gg, Re, Gg^Efm, Gg
|
||||
Wo, Wo, Ww, Ww, Gg, Gs^Fms, Gs^Fms, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Gg^Efm, Ww, Gg, Re, Gg, Gg, Re^Gvs, Re^Gvs, Gg, Re, Gg, Gg, Gg^Efm
|
||||
Wo, Wo, Ww, Ww, Gg, Gs^Fds, Gs^Fds, Gg^Vh, Re^Gvs, Re^Gvs, Gg, Gg, Re^Gvs, Gg^Efm, Gg^Efm, Gg, Gg, Re, Gg, Re^Gvs, Gg, Gg, Re, Re, Gg, Gg, Gg
|
||||
|
|
|
@ -224,7 +224,6 @@
|
|||
{NAMED_LOYAL_UNIT 1 (Outlaw) 20 10 (Delurin) ( _ "Delurin")}
|
||||
[+unit]
|
||||
[modifications]
|
||||
{TRAIT_LOYAL}
|
||||
{TRAIT_RESILIENT}
|
||||
{TRAIT_INTELLIGENT}
|
||||
[/modifications]
|
||||
|
|
|
@ -92,6 +92,7 @@
|
|||
type=Princess
|
||||
id="Li'sar"
|
||||
name= _ "Li’sar"
|
||||
unrenamable=yes
|
||||
profile=portraits/lisar.webp
|
||||
facing=sw
|
||||
[ai]
|
||||
|
@ -401,6 +402,7 @@
|
|||
[/filter]
|
||||
side=1
|
||||
canrecruit=no
|
||||
unrenamable=yes
|
||||
{TRAIT_LOYAL_HERO}
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
jagged=50
|
||||
[item_location]
|
||||
id = 1
|
||||
place_castle = yes
|
||||
[/item_location]
|
||||
[/chamber]
|
||||
|
||||
|
@ -48,7 +47,6 @@
|
|||
{PASSAGE_NORMAL player 2 10 10}
|
||||
[item_location]
|
||||
id = 2
|
||||
place_castle = yes
|
||||
[/item_location]
|
||||
[/chamber]
|
||||
[chamber]
|
||||
|
@ -61,7 +59,6 @@
|
|||
{PASSAGE_CHANCE 40 antechamber_1 1 9 9}
|
||||
[item_location]
|
||||
id = 3
|
||||
place_castle = yes
|
||||
[/item_location]
|
||||
[/chamber]
|
||||
|
||||
|
@ -156,7 +153,6 @@
|
|||
{PASSAGE_CHANCE 40 antechamber_2 1 5 2}
|
||||
[item_location]
|
||||
id = 4
|
||||
place_castle = yes
|
||||
[/item_location]
|
||||
[/chamber]
|
||||
[chamber]
|
||||
|
@ -171,7 +167,6 @@
|
|||
{PASSAGE_CHANCE 40 mini_3 1 5 2}
|
||||
[item_location]
|
||||
id = 5
|
||||
place_castle = yes
|
||||
[/item_location]
|
||||
[/chamber]
|
||||
[chamber]
|
||||
|
@ -185,7 +180,6 @@
|
|||
{PASSAGE_CHANCE 40 mini_3 1 5 2}
|
||||
[item_location]
|
||||
id = 6
|
||||
place_castle = yes
|
||||
[/item_location]
|
||||
[/chamber]
|
||||
[chamber]
|
||||
|
@ -200,7 +194,6 @@
|
|||
{PASSAGE_CHANCE 40 antechamber_2 1 5 2}
|
||||
[item_location]
|
||||
id = 7
|
||||
place_castle = yes
|
||||
[/item_location]
|
||||
[/chamber]
|
||||
[/generator]
|
||||
|
@ -422,7 +415,6 @@
|
|||
#ifdef HARD
|
||||
#else
|
||||
{VARIABLE_OP side_kill rand "4..7"}
|
||||
{ERASE_CASTLE $side_kill Uu}
|
||||
[kill]
|
||||
side=$side_kill
|
||||
[/kill]
|
||||
|
@ -432,7 +424,6 @@
|
|||
[/modify_side]
|
||||
#endif
|
||||
{VARIABLE_OP side_kill rand "2..3"}
|
||||
{ERASE_CASTLE $side_kill Uu}
|
||||
[kill]
|
||||
side=$side_kill
|
||||
[/kill]
|
||||
|
@ -442,33 +433,33 @@
|
|||
[/modify_side]
|
||||
{CLEAR_VARIABLE side_kill}
|
||||
|
||||
# just making sure that the starting castle is big enough that
|
||||
# no recalled units can end up inside walls
|
||||
[store_locations]
|
||||
# The [generator][chamber] tags have overlapping areas for placement of the chambers, which
|
||||
# means can generate a map where two sides' starting locations are on adjacent hexes.
|
||||
# If the generator places castles, erasing side_kill's castle needs care to ensure that it
|
||||
# doesn't remove the keep of a nearby leader too.
|
||||
#
|
||||
# Therefore, instead of using the generator's place_castle functionality, we place keeps on
|
||||
# any hex that now has a leader on it, and then convert the surrounding non-keep hexes into
|
||||
# castle hexes. In addition to handling the AI sides, this ensures that the player's
|
||||
# starting castle is big enough that no recalled units can end up inside walls.
|
||||
[terrain]
|
||||
terrain=Kud
|
||||
[and]
|
||||
[filter]
|
||||
id=Konrad
|
||||
canrecruit=yes
|
||||
[/filter]
|
||||
|
||||
[/and]
|
||||
[/terrain]
|
||||
[terrain]
|
||||
terrain=Cud
|
||||
[and]
|
||||
terrain=K*
|
||||
radius=1
|
||||
[/and]
|
||||
|
||||
[not]
|
||||
terrain=C*,K*
|
||||
terrain=K*
|
||||
[/not]
|
||||
|
||||
variable=adjacent_to_starting_loc
|
||||
[/store_locations]
|
||||
|
||||
[foreach]
|
||||
array=adjacent_to_starting_loc
|
||||
[do]
|
||||
[terrain]
|
||||
x,y=$this_item.x,$this_item.y
|
||||
terrain=Cud
|
||||
[/terrain]
|
||||
[/do]
|
||||
[/foreach]
|
||||
[/terrain]
|
||||
|
||||
{CLEAR_VARIABLE adjacent_to_starting_loc}
|
||||
[/event]
|
||||
|
@ -699,7 +690,7 @@
|
|||
[event]
|
||||
name=victory
|
||||
|
||||
{CLEAR_VARIABLE concentrating,moved_too_close,lava_body,lava_count,sceptre_x,sceptre_y}
|
||||
{CLEAR_VARIABLE concentrating,moved_too_close,lava_body,lava_count}
|
||||
[/event]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -130,7 +130,7 @@
|
|||
description= _ "This massive blade was created centuries ago by long-forgotten elvish forgemasters, who imbued the bluish steel with an inner magical fire. Tongues of flame dance on the surface, giving the metal a flawless mirrored finish."
|
||||
cannot_use_message= _ "Only the leader of an army can wield this sword!"
|
||||
[filter]
|
||||
type=Fighter,Commander,Lord,Princess,Battle Princess,Elvish Captain,Elvish Hero,Elvish Marshal,Elvish Champion,Paladin,Elvish Lord,Elvish High Lord
|
||||
type_adv_tree=Fighter,Princess,Elvish Captain,Elvish Hero,Paladin,Elvish Lord
|
||||
x,y={X},{Y}
|
||||
[/filter]
|
||||
[then]
|
||||
|
@ -217,7 +217,7 @@
|
|||
[filter]
|
||||
side=1
|
||||
x,y={X},{Y}
|
||||
type=Fighter,Commander,Lord,Princess,Battle Princess,Elvish Lord,Elvish High Lord,Elvish Fighter,Elvish Captain,Elvish Hero,Elvish Marshal,Elvish Champion,Elvish Ranger,Elvish Avenger,Horseman,Knight,Lancer,Paladin,Grand Knight,Dwarvish Fighter,Dwarvish Steelclad,Dwarvish Lord,Dwarvish Guardsman,Dwarvish Stalwart,Dwarvish Sentinel
|
||||
type_adv_tree=Fighter,Princess,Elvish Fighter,Elvish Lord,Elvish Ranger,Horseman,Dwarvish Fighter,Dwarvish Guardsman
|
||||
[/filter]
|
||||
[then]
|
||||
[remove_item]
|
||||
|
@ -351,7 +351,7 @@ fire: +10%"
|
|||
description= _ "This ancient Sceptre was forged by the great Dwarves of the Heart Mountains. A symbol of the kingship of Wesnoth, the Sceptre has the power to shoot fireballs at enemies of the bearer!"
|
||||
cannot_use_message= _ "This is the Sceptre of Fire. Only a true successor to the throne can possibly dare to take this!"
|
||||
[filter]
|
||||
type=Princess,Battle Princess,Fighter,Commander,Lord
|
||||
type_adv_tree=Fighter,Princess
|
||||
x,y=$x1,$y1
|
||||
[/filter]
|
||||
[effect]
|
||||
|
@ -463,6 +463,7 @@ fire: +10%"
|
|||
[/passage]
|
||||
#enddef
|
||||
|
||||
# Unused, but left as-is for a change that backports to 1.18.
|
||||
#define ERASE_CASTLE SIDE TERRAIN
|
||||
[store_unit]
|
||||
variable=side_store
|
||||
|
@ -520,8 +521,7 @@ fire: +10%"
|
|||
[/filter_adjacent_location]
|
||||
[not]
|
||||
# don't start near the cave floor around the sceptre
|
||||
x=$sceptre_x
|
||||
y=$sceptre_y
|
||||
location_id=sceptre
|
||||
radius=5
|
||||
[/not]
|
||||
[not]
|
||||
|
@ -598,7 +598,7 @@ fire: +10%"
|
|||
[/not]
|
||||
[not]
|
||||
# don't go anywhere near the cave floor around the sceptre
|
||||
x,y=$sceptre_x,$sceptre_y
|
||||
location_id=sceptre
|
||||
radius=4
|
||||
[filter_radius]
|
||||
terrain=U*,Re
|
||||
|
@ -642,7 +642,7 @@ fire: +10%"
|
|||
# everyone on lava dies
|
||||
[kill]
|
||||
[not]
|
||||
type=Elvish Shyde,Elvish Sylph,Gryphon Rider,Gryphon Master
|
||||
type_adv_tree=Elvish Shyde,Elvish Sylph,Gryphon Rider
|
||||
[/not]
|
||||
[filter_location]
|
||||
terrain=Ql
|
||||
|
|
|
@ -244,7 +244,7 @@ Chapter Three"
|
|||
kill=yes
|
||||
[filter]
|
||||
side={SIDE}
|
||||
type=Elvish Marshal,Elvish Champion,Elvish Avenger,Elvish Sharpshooter
|
||||
type_adv_tree=Elvish Marshal,Elvish Champion,Elvish Avenger,Elvish Sharpshooter
|
||||
[not]
|
||||
id=Kalenz
|
||||
[/not]
|
||||
|
|
|
@ -109,7 +109,7 @@
|
|||
kill=yes
|
||||
[filter]
|
||||
side={SIDE}
|
||||
type=Elvish Marshal,Elvish Champion,Elvish Avenger,Elvish Sharpshooter
|
||||
type_adv_tree=Elvish Marshal,Elvish Champion,Elvish Avenger,Elvish Sharpshooter
|
||||
[not]
|
||||
id=Kalenz
|
||||
[/not]
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
{FILTER_LOYALS}
|
||||
[/not]
|
||||
[not]
|
||||
type={ELVES_NON_STEEL}
|
||||
type_adv_tree={ELVES_NON_STEEL}
|
||||
[/not]
|
||||
[/filter]
|
||||
[/store_unit]
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
extra_recruit=Elvish Fighter, Elvish Archer, Elvish Scout
|
||||
placement=map,leader
|
||||
[filter_recall]
|
||||
type={ELVES_STEEL}
|
||||
type_adv_tree={ELVES_STEEL}
|
||||
[/filter_recall]
|
||||
[modifications]
|
||||
{TRAIT_QUICK}
|
||||
|
@ -83,7 +83,7 @@
|
|||
extra_recruit=Elvish Fighter, Elvish Archer, Elvish Scout
|
||||
placement=map,leader
|
||||
[filter_recall]
|
||||
type={ELVES_STEEL}
|
||||
type_adv_tree={ELVES_STEEL}
|
||||
[/filter_recall]
|
||||
[modifications]
|
||||
{TRAIT_DEXTROUS}
|
||||
|
@ -110,7 +110,7 @@
|
|||
unrenamable=yes
|
||||
placement=map,leader
|
||||
[filter_recall]
|
||||
type={ELVES_NON_STEEL}
|
||||
type_adv_tree={ELVES_NON_STEEL}
|
||||
[/filter_recall]
|
||||
[abilities]
|
||||
#ifndef MULTIPLAYER
|
||||
|
|
|
@ -63,13 +63,13 @@
|
|||
#enddef
|
||||
|
||||
#define ELVES_SCOUTS
|
||||
Elvish Scout, Elvish Rider, Elvish Outrider#enddef
|
||||
Elvish Scout#enddef
|
||||
|
||||
#define ELVES_STEEL
|
||||
Elvish Fighter, Elvish Hero, Elvish Captain, Elvish Marshal, Elvish Champion, Elvish Archer, Elvish Marksman, Elvish Sharpshooter, Elvish Ranger, Elvish Avenger, {ELVES_SCOUTS}#enddef
|
||||
Elvish Fighter, Elvish Archer, {ELVES_SCOUTS}#enddef
|
||||
|
||||
#define ELVES_NON_STEEL
|
||||
Elvish Shaman, Elvish Shyde, Elvish Enchantress, Elvish Sorceress, Elvish Sylph, Elvish Druid, Wose, Elder Wose, Ancient Wose, {ELVES_SCOUTS}#enddef
|
||||
Elvish Shaman, Wose, {ELVES_SCOUTS}#enddef
|
||||
|
||||
#define NORTH_ELVES_VILLAGES
|
||||
{STARTING_VILLAGES_AREA 2 24 7 12}
|
||||
|
|
|
@ -818,7 +818,7 @@
|
|||
|
||||
[if]
|
||||
[have_location]
|
||||
time_of_day=lawful
|
||||
time_of_day_id=dawn,morning,afternoon
|
||||
[/have_location]
|
||||
[then]
|
||||
[modify_unit]
|
||||
|
@ -841,7 +841,7 @@
|
|||
|
||||
[if]
|
||||
[have_location]
|
||||
time_of_day=lawful
|
||||
time_of_day_id=dawn,morning,afternoon
|
||||
[/have_location]
|
||||
[then]
|
||||
[set_achievement]
|
||||
|
|
|
@ -574,13 +574,13 @@ Been a tough few days since we left Elensefar with all them patrols running arou
|
|||
[event]
|
||||
name=attack_end
|
||||
[filter]
|
||||
side=2
|
||||
side=3
|
||||
[/filter]
|
||||
[filter_second]
|
||||
side=1
|
||||
[/filter_second]
|
||||
|
||||
{IF_VAR $second_unit.hitpoints greater_than 0 (
|
||||
{IF_VAR second_unit.hitpoints greater_than 0 (
|
||||
[then]
|
||||
[message]
|
||||
speaker=Baldras
|
||||
|
|
|
@ -144,8 +144,8 @@
|
|||
x,y=18,1
|
||||
side=2
|
||||
[modifications]
|
||||
{TRAIT_QUICK}
|
||||
{TRAIT_DEXTROUS}
|
||||
{TRAIT_STRONG}
|
||||
{TRAIT_RESILIENT}
|
||||
[/modifications]
|
||||
[/unit]
|
||||
[unit]
|
||||
|
@ -156,8 +156,8 @@
|
|||
side=2
|
||||
facing=sw
|
||||
[modifications]
|
||||
{TRAIT_STRONG}
|
||||
{TRAIT_QUICK}
|
||||
{TRAIT_DEXTROUS}
|
||||
{TRAIT_RESILIENT}
|
||||
[/modifications]
|
||||
[/unit]
|
||||
[unit]
|
||||
|
@ -172,18 +172,6 @@
|
|||
{TRAIT_RESILIENT}
|
||||
[/modifications]
|
||||
[/unit]
|
||||
[unit]
|
||||
type=Elvish Outrider
|
||||
id=Ealin
|
||||
name= _ "Ealin"
|
||||
x,y=18,1
|
||||
side=2
|
||||
facing=sw
|
||||
[modifications]
|
||||
{TRAIT_QUICK}
|
||||
{TRAIT_RESILIENT}
|
||||
[/modifications]
|
||||
[/unit]
|
||||
[scroll_to]
|
||||
x,y=18,1
|
||||
[/scroll_to]
|
||||
|
|
|
@ -379,6 +379,8 @@ of Healing"
|
|||
[unstore_unit]
|
||||
variable=frightened_bat
|
||||
x, y=16, 7
|
||||
find_vacant=yes
|
||||
check_passability=yes
|
||||
[/unstore_unit]
|
||||
# If there is a bat with a role, it's still on the recall list at this point,
|
||||
# though there is a copy of it on the map as well.
|
||||
|
@ -432,13 +434,13 @@ of Healing"
|
|||
[then]
|
||||
[set_variable]
|
||||
name=message_image
|
||||
value="units/undead/bat-se-3.png~CROP(13,15,46,39)~XBRZ(2)"
|
||||
value="units/bats/bat-se-3.png~CROP(13,15,46,39)~XBRZ(2)"
|
||||
[/set_variable]
|
||||
[/then]
|
||||
[else]
|
||||
[set_variable]
|
||||
name=message_image
|
||||
value="units/undead/bloodbat-se-3.png~CROP(13,15,46,39)~XBRZ(2)"
|
||||
value="units/bats/bloodbat-se-3.png~CROP(13,15,46,39)~XBRZ(2)"
|
||||
[/set_variable]
|
||||
[/else]
|
||||
[/if]
|
||||
|
|
|
@ -50,6 +50,10 @@ We crossed the high plateaus, and forded the Arkan-thoria. Then we headed up int
|
|||
name= _ "Crelanu"
|
||||
team_name=bad
|
||||
recruit=Red Mage,White Mage,Mage
|
||||
[ai]
|
||||
# Keep Crelanu within his ring of protective holy waters.
|
||||
passive_leader="yes"
|
||||
[/ai]
|
||||
{GOLD 160 180 200}
|
||||
{INCOME 10 15 20}
|
||||
color=green # To match his color in LoW
|
||||
|
|
|
@ -239,7 +239,7 @@
|
|||
name=die
|
||||
[filter]
|
||||
id=Shynal
|
||||
type=SotA Lich, SotA Ancient Lich, Lich, Ancient Lich
|
||||
type_adv_tree=SotA Lich, Lich, Ancient Lich
|
||||
[/filter]
|
||||
[if]
|
||||
[have_unit]
|
||||
|
|
|
@ -9,7 +9,7 @@ local recruitedType
|
|||
local recruitCost
|
||||
|
||||
local zombies = wml.array_access.get("zombies")
|
||||
local sides = wesnoth.sides.find()
|
||||
local sides = wesnoth.sides.find{}
|
||||
|
||||
local zombie_recruit_dialog = wml.load "campaigns/Secrets_of_the_Ancients/gui/zombie_recruit_dialog.cfg"
|
||||
|
||||
|
|
|
@ -148,7 +148,7 @@
|
|||
[/modifications]
|
||||
side=1
|
||||
type=Dwarvish Masked Steelclad
|
||||
profile=portraits/maskeddwarf3.webp
|
||||
profile=portraits/maskeddwarf3.webp~RIGHT()
|
||||
random_traits=no
|
||||
animate=yes
|
||||
[/unit]
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
side=2
|
||||
id=Masked Dwarf Leader
|
||||
generate_name=no
|
||||
profile="portraits/maskeddwarf.webp"
|
||||
profile="portraits/maskeddwarf.webp~RIGHT()"
|
||||
ai_special=guardian
|
||||
[/unit]
|
||||
{UNIT 2 "Dwarvish Masked Guardsman" 12 10 generate_name=no} {GUARDIAN}
|
||||
|
|
After Width: | Height: | Size: 1.6 KiB |
|
@ -310,6 +310,9 @@
|
|||
|
||||
{PLACE_IMAGE scenery/signpost.png 7 1}
|
||||
|
||||
# cold dagger
|
||||
{PLACE_IMAGE items/cold-sword.png 12 17}
|
||||
|
||||
#increase max moves by 1 (game engine will increase current moves to match)
|
||||
[object]
|
||||
id=FastGoblinKnight
|
||||
|
@ -900,6 +903,7 @@
|
|||
|
||||
id=ColdBlade
|
||||
name= _ "Cold Blade"
|
||||
image=items/cold-sword.png
|
||||
description= _ "The unit who wields this blade will deal cold damage with its melee attack."
|
||||
|
||||
[effect]
|
||||
|
@ -909,6 +913,11 @@
|
|||
[/effect]
|
||||
[/object]
|
||||
|
||||
[remove_item]
|
||||
x=12
|
||||
y=17
|
||||
[/remove_item]
|
||||
|
||||
{NAMED_NOTRAIT_UNIT 3 (Dawarf) 18 14 (Purple Abomination) ( _ "Purple Abomination")}
|
||||
|
||||
[message]
|
||||
|
|
|
@ -799,7 +799,7 @@
|
|||
[filter]
|
||||
side=1,3,4
|
||||
[not]
|
||||
type=Quenoth Sun Sylph,Quenoth Shyde,Dust Devil
|
||||
type_adv_tree=Quenoth Sun Sylph,Quenoth Shyde,Dust Devil
|
||||
[/not]
|
||||
[filter_location]
|
||||
terrain=*^Yl
|
||||
|
|
|
@ -20,8 +20,8 @@ Aa^Fp, Aa^Fp, Aa, Ai^Fp, Ww, Ww, Ww, Ww, Aa^Fp, Ww, Ss, Ww, Ds^Fp, Ha^Fp, Aa^Fp,
|
|||
Aa^Fp, Aa^Fp, Aa^Fp, Aa, Ww, Aa^Fp, Aa, Ai, Ai, Ss, Ss, Ww, Ds, Ds^Fp, Aa^Vc, Aa^Fp, Ss, Ww, Ww, Aa^Fp, Ds^Fp, Ds, Dd^Fp, Ds, Aa^Fp, Ha, Ms, Ha^Fp, Ms^Fp, Ha^Fp, Ha^Fp, Ai^Fp, Ai^Fp, Aa, Ds, Ds^Fp, Ds, Aa, Ai, Aa^Fp
|
||||
Aa^Fp, Aa^Fp, Ww, Ww, Aa, Aa^Fp, Ai, Aa, Aa^Fp, Ss, Ww, Ww, Aa^Fp, Aa^Fp, Ds^Fp, Ds^Fp, Ai, Ss, Ss, Ww, Ww^Bw/r, Ds, Ds^Fp, Ds^Fp, Aa^Fp, Aa^Fp, Ha^Fp, Aa^Fp, Qxu, Ms, Ai, Aa, Aa, Aa, Aa, Aa, Aa, Sm^Gvs, Ds^Fp, Ds^Fp
|
||||
Ww, Ww, Aa, Aa^Fp, Ha^Fp, Aa^Fp, Aa^Fp, Ai^Fp, Ww, Ww, Aa^Fp, Aa^Fp, Aa, Aa^Fp, Ds, Ai, Ai, Ai, Aa, Ds, Ww, Ai, Ha^Fp, Ha^Fp, Aa^Fp, Ha^Fp, Qxu, Qxu, Ms^Fp, Ms, Ai, Ai, Ai, Ds, Ds, Aa^Fp, Aa, Sm^Gvs, Ww^Gvs, Wwr
|
||||
Aa^Fp, Aa^Fp, Ha^Fp, Aa^Fp, Ha^Fp, Ha^Fp, Aa^Fp, Ww, Ss, Ss, Ai, Ai, Ds, Ds^Fp, Ai, Ai, Ai, Aa, Ds, Ds, Ww, Ai, Ha^Fp, Ms^Fp, Ha^Fp, Qxu, Aa^Fp, Aa^Fp, Aa^Fp, Ha^Fp, Aa, Ds, Ds, Ai, Ai, Ai, Ww, Ww^Bw\r, Ww^Bw\r, Ww
|
||||
Ha, Aa^Fp, Ha^Fp, Ha^Fp, Ha, Ha, Aa^Fp, Ww, Ss, Ai, Ds^Fp, Ds, Ai, Ai, Ai, Ai, Aa^Fp, Ds^Fp, Ww, Ww, Ai, Ai^Fp, Aa^Fp, Aa^Fp, Qxu, Qxu, Aa^Fp, Ms^Fp, Ms, Ms, Ms^Fp, Ha^Fp, Ds^Fp, Ai, Ai, Ai, Aa, Ww, Ww, Ww^Vht
|
||||
Aa^Fp, Aa^Fp, Ha^Fp, Aa^Fp, Ha^Fp, Ha^Fp, Aa^Fp, Ww, Ss, Ss, Ai, Ai, Ds, Ds^Fp, Ai, Ai, Ai, Aa, Ds, Ds, Ww, Ai, Ha^Fp, Ms^Fp, Ha^Fp, Qxu, Aa^Fp, Aa^Fp, Aa^Fp, Ha^Fp, Aa, Ds, Ds, Ai, Ai, Ai, Ww, Ww^Bw\r, Ww^Vht, Ww
|
||||
Ha, Aa^Fp, Ha^Fp, Ha^Fp, Ha, Ha, Aa^Fp, Ww, Ss, Ai, Ds^Fp, Ds, Ai, Ai, Ai, Ai, Aa^Fp, Ds^Fp, Ww, Ww, Ai, Ai^Fp, Aa^Fp, Aa^Fp, Qxu, Qxu, Aa^Fp, Ms^Fp, Ms, Ms, Ms^Fp, Ha^Fp, Ds^Fp, Ai, Ai, Ai, Aa, Ww, Ww, Ww
|
||||
Ha, Ha^Fp, Aa, Aa, Aa, Aa^Fp, Aa^Fp, Ss, Ai, Ds^Fp, Ai, Ds, Ai^Fp, Ai, Ai, Aa^Fp, Ds, Ds, Ww, Ai^Fp, Aa^Fp, Ha^Fp, Aa^Fp, Aa^Fp, Qxu, Ms^Fp, Ms^Fp, Ms, Ms^Fp, Ms, Ai^Vhs, Ha^Fp, Ai^Eff, Ai, Aa^Fp, Aa, Ds, Ww, Ww, Ww
|
||||
Ha, Aa^Fp, Aa, Aa^Fp, Aa^Fp, Ss, Ww^Vhs, Ss, Sm^Gvs, Ai, Ai, Ds^Fp, Ai, Ai, Ai, Ai^Fp, Ds, Ss^Vhs, Ww, Ai, Aa^Fp, Aa^Fp, Ha^Fp, Ha^Fp, Qxu, Ha^Fp, Ha^Fp, Ms^Fp, Ha^Fp, Ha^Fp, Sm^Gvs, Sm^Gvs, Ai^Eff, Aa^Eff, Aa^Fp, Aa^Fp, Ds, Ww, Ww, Ww
|
||||
Ha, Ms, Ha, Aa, Aa, Ww^Ewl, Ww, Sm^Gvs, Ss, Sm^Gvs, Ai, Ai, Ai, Ai, Ai, Ai, Ai, Ss, Ww, Ai, Ai, Ha^Fp, Ms, Aa^Fp, Ha^Fp, Ms, Ai^Fp, Ha^Fp, Ai^Fp, Sm^Gvs, Ai^Eff, Ai^Eff, Aa, Ai, Ai, Aa^Fp, Aa, Ds, Ww, Ww
|
||||
|
|
|
@ -20,8 +20,8 @@ Gg^Fp, Gg^Fp, Gg, Ss^Fp, Ww, Ww, Ww, Ww, Gg^Fp, Ww, Ss, Ww, Ds^Fp, Hh^Fp, Gg^Fp,
|
|||
Gg^Fp, Gg^Fp, Gg^Fp, Gg, Ww, Gg^Fp, Gg, Ss, Ss, Ss, Ss, Ww, Ds, Ds^Fp, Gg^Vd, Gg^Fp, Ss, Ww, Ww, Gg^Fp, Ds^Fp, Ds, Dd^Fp, Ds, Gg^Fp, Hh, Mm, Hh^Fp, Mm^Fp, Hh^Fp, Hh^Fp, Ss^Fp, Ss^Fp, Gg, Ds, Ds^Fp, Ds, Gg, Ss, Gg^Fp, Ds^Fp, Ds^Fp, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo
|
||||
Gg^Fp, Gg^Fp, Ww, Ww, Gg, Gg^Fp, Ss, Gg, Gg^Fp, Ss, Ww, Ww, Gg^Fp, Gg^Fp, Ds^Fp, Ds^Fp, Ss, Ss, Ss, Ww, Ww^Bw/r, Ds, Ds^Fp, Ds^Fp, Gg^Fp, Gg^Fp, Hh^Fp, Gs^Fp, Qxu, Mm, Ss, Gg, Gg, Gg, Gg, Gg, Gg, Sm^Gvs, Ds^Fp, Ds^Fp, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo
|
||||
Ww, Ww, Gg, Gg^Fp, Hh^Fp, Gg^Fp, Gg^Fp, Ss^Fp, Ww, Ww, Gg^Fp, Gg^Fp, Gg, Gg^Fp, Ds, Ss, Ss, Ss, Gg, Ds, Ww, Ss, Hh^Fp, Hh^Fp, Gg^Fp, Hh^Fp, Qxu, Qxu, Mm^Fp, Mm, Ss, Ss, Ss, Ds, Ds, Gg^Fp, Gg, Sm^Gvs, Ww^Gvs, Wwr, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Gg^Fp, Gg^Fp, Hh^Fp, Gg^Fp, Hh^Fp, Hh^Fp, Gg^Fp, Ww, Ss, Ss, Ss, Ss, Ds, Ds^Fp, Ss, Ss, Ss, Gg, Ds, Ds, Ww, Ss, Hh^Fp, Mm^Fp, Hh^Fp, Qxu, Gg^Fp, Gg^Fp, Gg^Fp, Hh^Fp, Gg, Ds, Ds, Ss, Ss, Ss, Ww, Ww^Bw\r, Ww^Bw\r, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Hh, Gg^Fp, Hh^Fp, Hh^Fp, Hh, Hh, Gg^Fp, Ww, Ss, Ss, Ds^Fp, Ds, Ss, Ss, Ss, Ss, Gg^Fp, Ds^Fp, Ww, Ww, Ss, Ss^Fp, Gg^Fp, Gg^Fp, Qxu, Qxu, Gg^Fp, Mm^Fp, Mm, Mm, Mm^Fp, Hh^Fp, Ds^Fp, Ss, Ss, Ss, Gg, Ww, Ww, Ww^Vht, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Gg^Fp, Gg^Fp, Hh^Fp, Gg^Fp, Hh^Fp, Hh^Fp, Gg^Fp, Ww, Ss, Ss, Ss, Ss, Ds, Ds^Fp, Ss, Ss, Ss, Gg, Ds, Ds, Ww, Ss, Hh^Fp, Mm^Fp, Hh^Fp, Qxu, Gg^Fp, Gg^Fp, Gg^Fp, Hh^Fp, Gg, Ds, Ds, Ss, Ss, Ss, Ww, Ww^Bw\r, Ww^Vht, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Hh, Gg^Fp, Hh^Fp, Hh^Fp, Hh, Hh, Gg^Fp, Ww, Ss, Ss, Ds^Fp, Ds, Ss, Ss, Ss, Ss, Gg^Fp, Ds^Fp, Ww, Ww, Ss, Ss^Fp, Gg^Fp, Gg^Fp, Qxu, Qxu, Gg^Fp, Mm^Fp, Mm, Mm, Mm^Fp, Hh^Fp, Ds^Fp, Ss, Ss, Ss, Gg, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Hh, Hh^Fp, Gg, Gg, Gg, Gg^Fp, Gg^Fp, Ss, Ss, Ds^Fp, Ss, Ds, Ss^Fp, Ss, Ss, Gg^Fp, Ds, Ds, Ww, Ss^Fp, Gg^Fp, Hh^Fp, Gg^Fp, Gg^Fp, Qxu, Mm^Fp, Mm^Fp, Mm, Mm^Fp, Mm, Ss^Vhs, Hh^Fp, Ss^Eff, Ss, Gg^Fp, Gg, Ds, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Hh, Gg^Fp, Gg, Gg^Fp, Gg^Fp, Ss, Ww^Vhs, Ss, Sm^Gvs, Ss, Ss, Ds^Fp, Ss, Ss, Ss, Ss^Fp, Ds, Ss^Vhs, Ww, Ss, Gg^Fp, Gg^Fp, Hh^Fp, Hh^Fp, Qxu, Hh^Fp, Hh^Fp, Mm^Fp, Hh^Fp, Hh^Fp, Sm^Gvs, Sm^Gvs, Ss^Eff, Gg^Eff, Gg^Fp, Gg^Fp, Ds, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Hh, Mm, Hh, Gg, Gg, Ww^Ewl, Ww, Sm^Gvs, Ss, Sm^Gvs, Ss, Ss, Ss, Ss, Ss, Ss, Ss, Ss, Ww, Ss, Ss, Hh^Fp, Mm, Gg^Fp, Hh^Fp, Mm, Ss^Fp, Hh^Fp, Ss^Fp, Ss^Gvs, Ss^Eff, Ss^Eff, Gg, Ss, Ss, Gg^Fp, Gg, Ds, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
|
|
|
@ -30,8 +30,8 @@ Gg^Fp, Gg^Fp, Gg, Ss^Fp, Ww, Ww, Ww, Ww, Gg^Fp, Ww, Ss, Ww, Ds^Fp, Hh^Fp, Gg^Fp,
|
|||
Gg^Fp, Gg^Fp, Gg^Fp, Gg, Ww, Gg^Fp, Gg, Ss, Ss, Ss, Ss, Ww, Ds, Ds^Fp, Gg^Vc, Gg^Fp, Ss, Ww, Ww, Gg^Fp, Ds^Fp, Ds, Dd^Fp, Ds, Gg^Fp, Hh, Mm, Hh^Fp, Mm^Fp, Hh^Fp, Hh^Fp, Ss^Fp, Ss^Fp, Gg, Ds, Ds^Fp, Ds, Gg, Ss, Gg^Fp, Ds^Fp, Ds^Fp, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo
|
||||
Gg^Fp, Gg^Fp, Ww, Ww, Gg, Gg^Fp, Ss, Gg, Gg^Fp, Ss, Ww, Ww, Gg^Fp, Gg^Fp, Ds^Fp, Ds^Fp, Ss, Ss, Ss, Ww, Ww^Bw/r, Ds, Ds^Fp, Ds^Fp, Gg^Fp, Gg^Fp, Hh^Fp, Gs^Fp, Qxu, Mm, Ss, Gg, Gg, Gg, Gg, Gg, Gg, Sm^Gvs, Ds^Fp, Ds^Fp, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo
|
||||
Ww, Ww, Gg, Gg^Fp, Hh^Fp, Gg^Fp, Gg^Fp, Ss^Fp, Ww, Ww, Gg^Fp, Gg^Fp, Gg, Gg^Fp, Ds, Ss, Ss, Ss, Gg, Ds, Ww, Ss, Hh^Fp, Hh^Fp, Gg^Fp, Hh^Fp, Qxu, Qxu, Mm^Fp, Mm, Ss, Ss, Ss, Ds, Ds, Gg^Fp, Gg, Sm^Gvs, Ww^Gvs, Wwr, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Gg^Fp, Gg^Fp, Hh^Fp, Gg^Fp, Hh^Fp, Hh^Fp, Gg^Fp, Ww, Ss, Ss, Ss, Ss, Ds, Ds^Fp, Ss, Ss, Ss, Gg, Ds, Ds, Ww, Ss, Hh^Fp, Mm^Fp, Hh^Fp, Qxu, Gg^Fp, Gg^Fp, Gg^Fp, Hh^Fp, Gg, Ds, Ds, Ss, Ss, Ss, Ww, Ww^Bw\r, Ww^Bw\r, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Hh, Gg^Fp, Hh^Fp, Hh^Fp, Hh, Hh, Gg^Fp, Ww, Ss, Ss, Ds^Fp, Ds, Ss, Ss, Ss, Ss, Gg^Fp, Ds^Fp, Ww, Ww, Ss, Ss^Fp, Gg^Fp, Gg^Fp, Qxu, Qxu, Gg^Fp, Mm^Fp, Mm, Mm, Mm^Fp, Hh^Fp, Ds^Fp, Ss, Ss, Ss, Gg, Ww, Ww, Ww^Vht, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Gg^Fp, Gg^Fp, Hh^Fp, Gg^Fp, Hh^Fp, Hh^Fp, Gg^Fp, Ww, Ss, Ss, Ss, Ss, Ds, Ds^Fp, Ss, Ss, Ss, Gg, Ds, Ds, Ww, Ss, Hh^Fp, Mm^Fp, Hh^Fp, Qxu, Gg^Fp, Gg^Fp, Gg^Fp, Hh^Fp, Gg, Ds, Ds, Ss, Ss, Ss, Ww, Ww^Bw\r, Ww^Vht, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Hh, Gg^Fp, Hh^Fp, Hh^Fp, Hh, Hh, Gg^Fp, Ww, Ss, Ss, Ds^Fp, Ds, Ss, Ss, Ss, Ss, Gg^Fp, Ds^Fp, Ww, Ww, Ss, Ss^Fp, Gg^Fp, Gg^Fp, Qxu, Qxu, Gg^Fp, Mm^Fp, Mm, Mm, Mm^Fp, Hh^Fp, Ds^Fp, Ss, Ss, Ss, Gg, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Hh, Hh^Fp, Gg, Gg, Gg, Gg^Fp, Gg^Fp, Ss, Ss, Ds^Fp, Ss, Ds, Ss^Fp, Ss, Ss, Gg^Fp, Ds, Ds, Ww, Ss^Fp, Gg^Fp, Hh^Fp, Gg^Fp, Gg^Fp, Qxu, Mm^Fp, Mm^Fp, Mm, Mm^Fp, Mm, Ss^Vhs, Hh^Fp, Ss^Eff, Ss, Gg^Fp, Gg, Ds, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Hh, Gg^Fp, Gg, Gg^Fp, Gg^Fp, Ss, Ww^Vhs, Ss, Sm^Gvs, Ss, Ss, Ds^Fp, Ss, Ss, Ss, Ss^Fp, Ds, Ss^Vhs, Ww, Ss, Gg^Fp, Gg^Fp, Hh^Fp, Hh^Fp, Qxu, Hh^Fp, Hh^Fp, Mm^Fp, Hh^Fp, Hh^Fp, Sm^Gvs, Sm^Gvs, Ss^Eff, Gg^Eff, Gg^Fp, Gg^Fp, Ds, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
Hh, Mm, Hh, Gg, Gg, Ww^Ewl, Ww, Sm^Gvs, Ss, Sm^Gvs, Ss, Ss, Ss, Ss, Ss, Ss, Ss, Ss, Ww, Ss, Ss, Hh^Fp, Mm, Gg^Fp, Hh^Fp, Mm, Ss^Fp, Hh^Fp, Ss^Fp, Ss^Gvs, Ss^Eff, Ss^Eff, Gg, Ss, Ss, Gg^Fp, Gg, Ds, Ww, Ww, Ww, Ww, Ww, Wo, Wo, Wo, Wo, Wo, Wo, Wo
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
{DEFAULT_SCHEDULE_DAWN}
|
||||
{INTRO_AND_SCENARIO_MUSIC revelation.ogg northern_mountains.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC legends_of_the_north.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC vengeful.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC breaking_the_chains.ogg}
|
||||
|
||||
[story]
|
||||
|
@ -58,18 +57,18 @@
|
|||
[/side]
|
||||
{WOF_DEATHS}
|
||||
|
||||
{SPAWNER_SIDE 2 "Stymphalian" Mm {ON_DIFFICULTY4 0.1 0.25 0.5 1} 9 2}
|
||||
{SPAWNER_SIDE 3 "Dragonfly" Ss {ON_DIFFICULTY4 0.1 0.25 0.5 1} 9 2}
|
||||
{SPAWNER_SIDE 4 "Leopard" *^Ftr {ON_DIFFICULTY4 0.1 0.25 0.5 1} 6 1}
|
||||
{SPAWNER_SIDE 5 "Horned Scarab" *^Ft {ON_DIFFICULTY4 0.1 0.25 0.5 1} 6 1}
|
||||
{SPAWNER_SIDE 6 "Fire Ant" Dd {ON_DIFFICULTY4 0.1 0.25 0.5 1} 9 2}
|
||||
{SPAWNER_SIDE 7 "Rock Scorpion" Mm {ON_DIFFICULTY4 0.1 0.25 0.5 1} 1 1}
|
||||
{SPAWNER_SIDE 8 "Swamp Lizard" Ss {ON_DIFFICULTY4 0.1 0.25 0.5 1} 6 1}
|
||||
{SPAWNER_SIDE 9 "Water Serpent" Wwt^Ew* {ON_DIFFICULTY4 0.05 0.125 0.25 0.5} 3 1}
|
||||
{SPAWNER_SIDE 10 "Dolphin" Ww 0.05 3 2}
|
||||
{SPAWNER_SIDE 11 "Nibbler" Wwt {ON_DIFFICULTY4 0.1 0.25 0.5 1} 9 2}
|
||||
{SPAWNER_SIDE 12 "Cuttle Fish" Wo* {ON_DIFFICULTY4 0.05 0.125 0.25 0.5} 6 2}
|
||||
{SPAWNER_SIDE 13 "Great Seahorse" Wwr 0.05 3 2}
|
||||
{SPAWNER_SIDE 2 "Stymphalian" Mm {ON_DIFFICULTY4 0.1 0.25 0.5 1} 9 2} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 3 "Dragonfly" Ss {ON_DIFFICULTY4 0.1 0.25 0.5 1} 9 2} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 4 "Leopard" *^Ftr {ON_DIFFICULTY4 0.1 0.25 0.5 1} 6 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 5 "Horned Scarab" *^Ft {ON_DIFFICULTY4 0.1 0.25 0.5 1} 6 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 6 "Fire Ant" Dd {ON_DIFFICULTY4 0.1 0.25 0.5 1} 9 2} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 7 "Rock Scorpion" Mm {ON_DIFFICULTY4 0.1 0.25 0.5 1} 1 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 8 "Swamp Lizard" Ss {ON_DIFFICULTY4 0.1 0.25 0.5 1} 6 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 9 "Water Serpent" Wwt^Ew* {ON_DIFFICULTY4 0.05 0.125 0.25 0.5} 3 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 10 "Dolphin" Ww 0.05 3 2} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 11 "Nibbler" Wwt {ON_DIFFICULTY4 0.1 0.25 0.5 1} 9 2} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 12 "Cuttle Fish" Wo* {ON_DIFFICULTY4 0.05 0.125 0.25 0.5} 6 2} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 13 "Great Seahorse" Wwr 0.05 3 2} # wmllint: skip-side
|
||||
|
||||
[event]
|
||||
name=prestart
|
||||
|
|
|
@ -31,8 +31,7 @@
|
|||
carryover_percentage=0
|
||||
disallow_recall=yes
|
||||
{DEFAULT_SCHEDULE_DAWN}
|
||||
{INTRO_AND_SCENARIO_MUSIC revelation.ogg battle.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC siege_of_laurelmor.ogg}
|
||||
{INTRO_AND_SCENARIO_MUSIC revelation.ogg siege_of_laurelmor.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC weight_of_revenge.ogg}
|
||||
|
||||
[story]
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
{RECALL_COSTS}
|
||||
{SUMMER_SCHEDULE} # It is summer.
|
||||
{INTRO_AND_SCENARIO_MUSIC revelation.ogg wanderer.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC traveling_minstrels.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC legends_of_the_north.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC knolls.ogg}
|
||||
|
||||
[story]
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
disallow_recall=yes # No recruiting or recalling in this scenario.
|
||||
{DEFAULT_SCHEDULE_MORNING}
|
||||
{INTRO_AND_SCENARIO_MUSIC revelation.ogg wanderer.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC traveling_minstrels.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC legends_of_the_north.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC knolls.ogg}
|
||||
|
||||
[story]
|
||||
|
@ -213,15 +213,15 @@
|
|||
[/ai]
|
||||
[/side]
|
||||
|
||||
{SPAWNER_SIDE 4 "Blood Bat" *^Ft {ON_DIFFICULTY4 0.1 0.25 0.5 0.5} 6 1}
|
||||
{SPAWNER_SIDE 5 "Woodland Boar" *^Ft {ON_DIFFICULTY4 0.1 0.25 0.5 0.5} 6 1}
|
||||
{SPAWNER_SIDE 6 "Elder Falcon" *^Fds {ON_DIFFICULTY4 0.1 0.25 0.5 0.5} 6 1}
|
||||
{SPAWNER_SIDE 7 "Great Wolf" *^Fds {ON_DIFFICULTY4 0.1 0.25 0.5 0.5} 6 1}
|
||||
{SPAWNER_SIDE 8 "Grand Dragonfly" Ss {ON_DIFFICULTY4 0.05 0.1 0.25 0.5} 6 1}
|
||||
{SPAWNER_SIDE 9 "Swamp Lizard" Ss {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 3 1}
|
||||
{SPAWNER_SIDE 10 "Firebane Ant" Hd {ON_DIFFICULTY4 0.05 0.1 0.25 0.5} 6 1}
|
||||
{SPAWNER_SIDE 11 "Firebomb Ant" Hd {ON_DIFFICULTY4 0.05 0.1 0.25 0.5} 6 1}
|
||||
{SPAWNER_SIDE 12 "Giant Spider" Md {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 3 1}
|
||||
{SPAWNER_SIDE 4 "Blood Bat" *^Ft {ON_DIFFICULTY4 0.1 0.25 0.5 0.5} 6 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 5 "Woodland Boar" *^Ft {ON_DIFFICULTY4 0.1 0.25 0.5 0.5} 6 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 6 "Elder Falcon" *^Fds {ON_DIFFICULTY4 0.1 0.25 0.5 0.5} 6 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 7 "Great Wolf" *^Fds {ON_DIFFICULTY4 0.1 0.25 0.5 0.5} 6 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 8 "Grand Dragonfly" Ss {ON_DIFFICULTY4 0.05 0.1 0.25 0.5} 6 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 9 "Swamp Lizard" Ss {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 3 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 10 "Firebane Ant" Hd {ON_DIFFICULTY4 0.05 0.1 0.25 0.5} 6 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 11 "Firebomb Ant" Hd {ON_DIFFICULTY4 0.05 0.1 0.25 0.5} 6 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 12 "Giant Spider" Md {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 3 1} # wmllint: skip-side
|
||||
|
||||
# Wisp
|
||||
[side]
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
{DEFAULT_SCHEDULE_DUSK}
|
||||
{INTRO_AND_SCENARIO_MUSIC revelation.ogg loyalists.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC the_city_falls.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC the_king_is_dead.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC frantic.ogg}
|
||||
|
||||
[story]
|
||||
[part]
|
||||
|
@ -100,7 +100,8 @@
|
|||
controller=ai
|
||||
recruit=Drake Burner, Drake Clasher, Drake Fighter, Drake Glider
|
||||
income=20
|
||||
village_gold={ON_DIFFICULTY4 1 1 4 6}
|
||||
village_gold={ON_DIFFICULTY4 1 1 2 4}
|
||||
village_support={ON_DIFFICULTY4 0 1 2 4}
|
||||
team_name=hero
|
||||
user_team_name= _ "Reinforcements"
|
||||
side_name= _ "Reinforcements"
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
carryover_percentage=0
|
||||
{RECALL_COSTS}
|
||||
{DEFAULT_SCHEDULE_DUSK}
|
||||
{INTRO_AND_SCENARIO_MUSIC revelation.ogg elvish-theme.ogg}
|
||||
{INTRO_AND_SCENARIO_MUSIC revelation.ogg elf-land.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC silvan_sanctuary.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC nunc_dimittis.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC the_dangerous_symphony.ogg}
|
||||
|
||||
[story]
|
||||
[part]
|
||||
|
@ -86,8 +86,8 @@
|
|||
ai_algorithm=idle_ai
|
||||
[/ai]
|
||||
# Castle Guards
|
||||
{UNIT 2 (Elvish Sorceress) 32 13 ()}
|
||||
{UNIT 2 (Elvish Druid) 30 14 ()}
|
||||
{UNIT 2 (Elvish Shaman) 32 13 ()}
|
||||
{UNIT 2 (Elvish Shaman) 30 14 ()}
|
||||
# Village Guards
|
||||
{LOYAL_UNIT 2 (Elvish Shaman) 35 20}
|
||||
{LOYAL_UNIT 2 (Elvish Shaman) 41 16}
|
||||
|
@ -214,11 +214,9 @@
|
|||
[/ai]
|
||||
{NAMED_UNIT 6 (Elvish Rider) 20 23 (Nomeon) ( _ "Nomeon") ()}
|
||||
# Castle Guards
|
||||
{UNIT 6 (Elvish Archer) 18 17 ()}
|
||||
{UNIT 6 (Elvish Fighter) 18 17 ()}
|
||||
{UNIT 6 (Elvish Fighter) 18 20 ()}
|
||||
{UNIT 6 (Elvish Fighter) 17 20 ()}
|
||||
{UNIT 6 (Elvish Fighter) 15 19 ()}
|
||||
{UNIT 6 (Elvish Fighter) 16 19 ()}
|
||||
# Village Guards
|
||||
{LOYAL_UNIT 6 (Elvish Archer) 14 14}
|
||||
{LOYAL_UNIT 6 (Elvish Archer) 20 14}
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
carryover_percentage=0
|
||||
{RECALL_COSTS}
|
||||
{DEFAULT_SCHEDULE_DUSK}
|
||||
{INTRO_AND_SCENARIO_MUSIC revelation.ogg the_deep_path.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC into_the_shadows.ogg}
|
||||
{INTRO_AND_SCENARIO_MUSIC revelation.ogg vengeful.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC the_deep_path.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC underground.ogg}
|
||||
|
||||
[story]
|
||||
|
@ -895,7 +895,7 @@ Just like we did the first one."
|
|||
[filter]
|
||||
id=Resha
|
||||
[/filter]
|
||||
variable=Resha
|
||||
variable=resha
|
||||
kill=yes
|
||||
[/store_unit]
|
||||
[hide_unit]
|
||||
|
|
|
@ -65,13 +65,13 @@
|
|||
no_leader=yes
|
||||
[/side]
|
||||
|
||||
{SPAWNER_SIDE 3 "Gryphon" Ms {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 3 1}
|
||||
{SPAWNER_SIDE 4 "Dread Bat" Qxu {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 3 1}
|
||||
{SPAWNER_SIDE 5 "Frost Stoat" Ai {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 3 3}
|
||||
{SPAWNER_SIDE 6 "Great Icemonax" Aa {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 6 6}
|
||||
{SPAWNER_SIDE 7 "Direwolf" *^F* {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 6 6}
|
||||
{SPAWNER_SIDE 8 "Cave Bear" Ms {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 6 6}
|
||||
{SPAWNER_SIDE 9 "Yeti" Ms {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 3 2}
|
||||
{SPAWNER_SIDE 3 "Gryphon" Ms {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 3 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 4 "Dread Bat" Qxu {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 3 1} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 5 "Frost Stoat" Ai {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 3 3} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 6 "Great Icemonax" Aa {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 6 6} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 7 "Direwolf" *^F* {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 6 6} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 8 "Cave Bear" Ms {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 6 6} # wmllint: skip-side
|
||||
{SPAWNER_SIDE 9 "Yeti" Ms {ON_DIFFICULTY4 0.02 0.05 0.1 0.25} 4 4} # wmllint: skip-side
|
||||
|
||||
# wmllint: validate-on
|
||||
|
||||
|
|
|
@ -103,7 +103,7 @@
|
|||
[/lua]
|
||||
[/filter_condition]
|
||||
[gold]
|
||||
amount={ON_DIFFICULTY4 55 110 220 440}
|
||||
amount={ON_DIFFICULTY4 50 100 200 400}
|
||||
side=2
|
||||
[/gold]
|
||||
[message]
|
||||
|
|
|
@ -13,9 +13,9 @@
|
|||
carryover_percentage=0
|
||||
{RECALL_COSTS}
|
||||
{DEFAULT_SCHEDULE_AFTERNOON}
|
||||
{INTRO_AND_SCENARIO_MUSIC revelation.ogg battle.ogg}
|
||||
{INTRO_AND_SCENARIO_MUSIC revelation.ogg weight_of_revenge.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC siege_of_laurelmor.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC weight_of_revenge.ogg}
|
||||
{EXTRA_SCENARIO_MUSIC the_city_falls.ogg}
|
||||
|
||||
[story]
|
||||
[part]
|
||||
|
@ -69,12 +69,20 @@
|
|||
side=2
|
||||
controller=ai
|
||||
recruit=Drake Arbiter, Drake Clasher, Drake Thrasher, Drake Fighter, Drake Warrior, Saurian Augur, Saurian Skirmisher, Saurian Ambusher, Saurian Oracle, Saurian Soothsayer
|
||||
gold=0
|
||||
gold=480
|
||||
village_gold={ON_DIFFICULTY4 1 1 2 4}
|
||||
village_support={ON_DIFFICULTY4 0 1 2 4}
|
||||
team_name=karron
|
||||
user_team_name= _ "Flight Karron"
|
||||
{FLAG_VARIANT long}
|
||||
[ai]
|
||||
[leader_goal]
|
||||
x,y=4,36
|
||||
auto_remove=yes
|
||||
id=land_on_keep
|
||||
max_risk=1
|
||||
[/leader_goal]
|
||||
[/ai]
|
||||
# wmllint: who KARRON is Karron
|
||||
[leader]
|
||||
{KARRON (Drake Blademaster)}
|
||||
|
@ -88,7 +96,7 @@
|
|||
{TRAIT_RESILIENT}
|
||||
{TRAIT_LOYAL}
|
||||
[/modifications]
|
||||
x,y=29,14
|
||||
x,y=28,14
|
||||
facing=ne
|
||||
[/unit]
|
||||
[unit]
|
||||
|
@ -110,7 +118,7 @@
|
|||
{TRAIT_STRONG}
|
||||
{TRAIT_LOYAL}
|
||||
[/modifications]
|
||||
x,y=23,11
|
||||
x,y=23,12
|
||||
facing=ne
|
||||
[/unit]
|
||||
#ifdef EASY
|
||||
|
@ -123,8 +131,8 @@
|
|||
#endif
|
||||
#ifdef NORMAL
|
||||
# Karron’s Personal Guard
|
||||
{GENERIC_UNIT 2 (Drake Warrior) 20 14}
|
||||
{GENERIC_UNIT 2 (Drake Thrasher) 27 18}
|
||||
{GENERIC_UNIT 2 (Drake Fighter) 20 14}
|
||||
{GENERIC_UNIT 2 (Drake Clasher) 27 18}
|
||||
# Karron’s Camp Guard
|
||||
{GENERIC_UNIT 2 (Drake Clasher) 3 35}
|
||||
{GENERIC_UNIT 2 (Drake Clasher) 5 35}
|
||||
|
@ -162,14 +170,6 @@
|
|||
{GENERIC_UNIT 2 (Drake Warrior) 4 35}
|
||||
{GENERIC_UNIT 2 (Drake Warrior) 3 36}
|
||||
#endif
|
||||
[ai]
|
||||
[leader_goal]
|
||||
x,y=4,36
|
||||
auto_remove=yes
|
||||
id=land_on_keep
|
||||
max_risk=1
|
||||
[/leader_goal]
|
||||
[/ai]
|
||||
[/side]
|
||||
|
||||
# wmllint: validate-on
|
||||
|
@ -462,12 +462,12 @@ We run, we fight and we live. That is only way for usss now." # no spellcheck
|
|||
name=moveto
|
||||
[filter]
|
||||
side=1
|
||||
x,y=39,23
|
||||
x,y=38,22
|
||||
[/filter]
|
||||
{LOYAL_UNIT 1 (Water Serpent) 39 23}
|
||||
{LOYAL_UNIT 1 (Water Serpent) 39 23}
|
||||
{LOYAL_UNIT 1 (Naga Zephyr) 39 23}
|
||||
{NAMED_LOYAL_UNIT 1 (Naga Myrmidon) 39 23 Shussek _"Shussek"}
|
||||
{LOYAL_UNIT 1 (Water Serpent) 38 22}
|
||||
{LOYAL_UNIT 1 (Water Serpent) 38 22}
|
||||
{LOYAL_UNIT 1 (Naga Zephyr) 38 22}
|
||||
{NAMED_LOYAL_UNIT 1 (Naga Myrmidon) 38 22 Shussek _"Shussek"}
|
||||
[message]
|
||||
speaker=Resha
|
||||
message= _ "Hail, Shussek.
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
name= _ "Epilogue"
|
||||
next_scenario=null
|
||||
{NO_MAP_DATA}
|
||||
{INTRO_AND_SCENARIO_MUSIC northern_mountains.ogg ()}
|
||||
{INTRO_AND_SCENARIO_MUSIC heroes_rite.ogg ()}
|
||||
|
||||
[story]
|
||||
[part]
|
||||
|
|
|
@ -122,7 +122,7 @@
|
|||
[if]
|
||||
[lua]
|
||||
code=<< local t = ...
|
||||
return (mathx.random() < t.rate) >>
|
||||
return (mathx.random() < tonumber(t.rate)) >>
|
||||
[args]
|
||||
rate={RATE}
|
||||
[/args]
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
id = "treeview_topics"
|
||||
definition = "default"
|
||||
horizontal_scrollbar_mode = "never"
|
||||
vertical_scrollbar_mode = "never"
|
||||
vertical_scrollbar_mode = "auto"
|
||||
indentation_step_size = 35
|
||||
[node]
|
||||
id = "subcategory"
|
||||
|
|
|
@ -512,6 +512,11 @@
|
|||
id=student
|
||||
[/filter]
|
||||
|
||||
# No longer need the hint about how to attack
|
||||
[hint_message]
|
||||
remove=yes
|
||||
[/hint_message]
|
||||
|
||||
[message]
|
||||
speaker=student
|
||||
message= _ "Hey! This quintain fights back!"
|
||||
|
@ -533,18 +538,6 @@
|
|||
message= _ "Good idea!"
|
||||
[/message]
|
||||
|
||||
{GENDER (
|
||||
[hint_message]
|
||||
caption= _ "Crowns"
|
||||
message= _ "The tiny golden crown above your leader (Konrad) indicates he is a side leader. In most scenarios, you will lose if your leader is killed. Be sure to keep him safe!"
|
||||
[/hint_message]
|
||||
) (
|
||||
[hint_message]
|
||||
caption= _ "Crowns"
|
||||
message= _ "The tiny golden crown above your leader (Li’sar) indicates she is a side leader. In most scenarios, you will lose if your leader is killed. Be sure to keep her safe!"
|
||||
[/hint_message]
|
||||
)}
|
||||
|
||||
# Check where Delfador is, to set the remaining moves accordingly
|
||||
[if]
|
||||
[have_unit]
|
||||
|
@ -620,6 +613,10 @@
|
|||
|
||||
{CLEAR_PRINT}
|
||||
|
||||
[hint_message]
|
||||
remove=yes
|
||||
[/hint_message]
|
||||
|
||||
[message]
|
||||
speaker=student
|
||||
message= _ "Ouch! I need to heal! Only $student_hp hitpoints left!"
|
||||
|
@ -760,10 +757,18 @@
|
|||
|
||||
{CLEAR_PRINT}
|
||||
|
||||
[hint_message]
|
||||
caption= _ "Traits"
|
||||
message= _"Be sure to examine the <i>traits</i> of your new recruits. They are listed under its race in the sidebar. Traits can subtly affect how you use your troops. For example, units with the <i>quick</i> trait can move an extra hex each turn, and units with the <i>intelligent</i> trait require 20% less experience to level up."
|
||||
[/hint_message]
|
||||
# The player has some units to compare their leader to, and this is also a hint it won't be game over if the recruited units die
|
||||
{GENDER (
|
||||
[hint_message]
|
||||
caption= _ "Crowns"
|
||||
message= _ "The tiny golden crown above your leader (Konrad) indicates he is a side leader. In most scenarios, you will lose if your leader is killed. Be sure to keep him safe!"
|
||||
[/hint_message]
|
||||
) (
|
||||
[hint_message]
|
||||
caption= _ "Crowns"
|
||||
message= _ "The tiny golden crown above your leader (Li’sar) indicates she is a side leader. In most scenarios, you will lose if your leader is killed. Be sure to keep her safe!"
|
||||
[/hint_message]
|
||||
)}
|
||||
|
||||
# Allow our hero to move freely until next turn without undo messages now that the recruiting is done
|
||||
{VARIABLE enable_undo_messages no}
|
||||
|
@ -840,6 +845,12 @@
|
|||
|
||||
{PRINT ( _ "Attack the quintain with your fighters")}
|
||||
|
||||
# The hint about traits is shown here because strong and dexterous can influence the player's choice of attack
|
||||
[hint_message]
|
||||
caption= _ "Traits"
|
||||
message= _ "Be sure to examine the <i>traits</i> of your new recruits. They are listed under its race in the sidebar. Traits can subtly affect how you use your troops. For example, units with the <i>quick</i> trait can move an extra hex each turn, and units with the <i>intelligent</i> trait require 20% less experience to level up."
|
||||
[/hint_message]
|
||||
|
||||
[event]
|
||||
name=select
|
||||
id=trying_to_be_a_wise_guy
|
||||
|
|
|
@ -751,6 +751,12 @@ Please report the bug."
|
|||
[filter_second]
|
||||
id=Dumbo
|
||||
[/filter_second]
|
||||
[filter_condition]
|
||||
[variable]
|
||||
name=second_unit.hitpoints
|
||||
greater_than=0
|
||||
[/variable]
|
||||
[/filter_condition]
|
||||
|
||||
[if]
|
||||
[variable]
|
||||
|
|
|
@ -61,12 +61,17 @@ sort=yes
|
|||
[/entry]
|
||||
[/about]
|
||||
|
||||
# no strings committed so far
|
||||
#[about]
|
||||
# title = _"Bengali Translation" # wmllint: no spellcheck
|
||||
# # [entry]
|
||||
# # [/entry]
|
||||
#[/about]
|
||||
[about]
|
||||
title = _"Bengali Translation" # wmllint: no spellcheck
|
||||
[entry]
|
||||
name = "Subhraman Sarkar (LumiousE/babaissarkar)"
|
||||
email = "suvrax_AT_gmail_DOT_com"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Tahsin J Khalid (Lord-Knightmare)" # wmllint: noconvert
|
||||
comment = "current maintainer"
|
||||
[/entry]
|
||||
[/about]
|
||||
|
||||
[about]
|
||||
title = _"Bulgarian Translation" # wmllint: no spellcheck
|
||||
|
@ -163,7 +168,7 @@ sort=yes
|
|||
[/entry]
|
||||
[entry]
|
||||
name = "CloudiDust"
|
||||
comment = "current maintainer"
|
||||
comment = "former maintainer"
|
||||
email = "cloudidust_AT_gmail.com"
|
||||
wikiuser = "CloudiDust"
|
||||
[/entry]
|
||||
|
@ -227,6 +232,10 @@ sort=yes
|
|||
[entry]
|
||||
name = "Teamzhangmeng"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "vimacs"
|
||||
comment = "current maintainer"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "vinneymail"
|
||||
[/entry]
|
||||
|
@ -565,6 +574,9 @@ sort=yes
|
|||
[entry]
|
||||
name = "Niklas Laxström (Nikerabbit)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Olavi Peltoniemi (MrPringles)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Otto Oikarinen"
|
||||
[/entry]
|
||||
|
@ -838,6 +850,9 @@ sort=yes
|
|||
[entry]
|
||||
name = "ghype"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Iwan Gabovitch (qubodup)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Lennard"
|
||||
[/entry]
|
||||
|
@ -882,6 +897,9 @@ sort=yes
|
|||
[entry]
|
||||
name = "Oliver Lange (Crommy)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "René Genz (Sobek)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Ronny Standtke"
|
||||
[/entry]
|
||||
|
@ -890,11 +908,17 @@ sort=yes
|
|||
[/entry]
|
||||
[entry]
|
||||
name = "Severin Glöckner (Shiki, Sevu)"
|
||||
comment = "current translation maintainer"
|
||||
comment = "former translation maintainer"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Simon Waldek (s1m0n)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Stephan Grochtmann (Schattenstephan)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Steve Cotton (octalot)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Tobias Schönau (SonIcco)"
|
||||
[/entry]
|
||||
|
@ -1042,7 +1066,7 @@ sort=yes
|
|||
name = "Benny Lin"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Irsyad Musthafa"
|
||||
name = "Irsyad Musthafa" # wmllint: noconvert
|
||||
comment = "translation maintainer"
|
||||
email = "sevennightmare_AT_tutanota.de"
|
||||
[/entry]
|
||||
|
@ -1303,6 +1327,10 @@ sort=yes
|
|||
[entry]
|
||||
name = "Asgeir Aakre (YbeRn00b)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Elias Nykrem (Bloodaxe)"
|
||||
comment = "Maintainer"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Erik J. Mesoy (Circon)"
|
||||
[/entry]
|
||||
|
@ -1651,6 +1679,9 @@ sort=yes
|
|||
[entry]
|
||||
name = "Martin Plávala (Empy)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Michal Fusatý"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Stanislav Hoferek (Elven, Greenie knižnica)"
|
||||
comment = "Current maintainer"
|
||||
|
@ -1844,15 +1875,33 @@ sort=yes
|
|||
[entry]
|
||||
name = "Anton Okhrimenko (AncientGeneral)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Andrii Serbovets (archdron)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "ForestDragon"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Igor Paliychuk"
|
||||
email = "mansonigor_AT_gmail_DOT_com"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "igorko"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Oleksii Okhrimenko (lexa04)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "robson"
|
||||
email = "arobson_AT_yandex_DOT_ru"
|
||||
wikiuser = "Robson"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "Sergiy Tkach (Apromix)"
|
||||
[/entry]
|
||||
[entry]
|
||||
name = "singalen"
|
||||
[/entry]
|
||||
[/about]
|
||||
|
||||
[about]
|
||||
|
|
|
@ -166,6 +166,7 @@ This turns any base terrain into a village, providing income and healing." + "
|
|||
Fake Shroud looks like an unexplored area, even in scenarios that have shroud disabled and even when the player’s units can see the hex."
|
||||
[/topic]
|
||||
|
||||
# wmllint: markcheck off
|
||||
[topic]
|
||||
id=editor_terrain_elevation
|
||||
title= _ "Terrain Elevation Graphics"
|
||||
|
@ -202,6 +203,7 @@ The graphics used to represent the ledge borders are determined by the base terr
|
|||
" +
|
||||
_ "editor^<format>text='Note for UMC authors: The flood-filled tiles do not have their terrain codes changed, or any other properties affected, so filtering a location by elevation is not simple.' italic='yes' font_size=10 </format>"
|
||||
[/topic]
|
||||
# wmllint: markcheck on
|
||||
|
||||
[topic]
|
||||
id=editor_deprecated_overlay
|
||||
|
@ -240,7 +242,10 @@ This tool is only available in Scenario Mode; the decorations are implemented in
|
|||
title= _ "Item Tool (Scenery Tool)"
|
||||
text= "<img>src=icons/action/editor-tool-item_60.png align=left box=yes</img>" + _ "The Item Tool allows placing decorations such as windmills, bookcases and monoliths. Multiple items can be placed on the same hex.
|
||||
|
||||
<bold>text='Note:'</bold> the tool doesn’t support deleting items once placed, nor does it support undo. Mistakes can currently only be fixed by editing the generated WML file.
|
||||
• Left-click will place a decoration on the clicked hex.
|
||||
• Right-click will remove the decoration.
|
||||
|
||||
<bold>text='Note:'</bold> the tool doesn’t support undo.
|
||||
|
||||
This tool is only available in Scenario Mode; the decorations are not part of the terrain and are implemented in the scenario using WML’s <italic>text='[item]'</italic> tag."
|
||||
[/topic]
|
||||
|
|
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 173 KiB |
BIN
data/core/images/maps/l10n/tr/titlescreen--overlay.webp
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
data/core/images/portraits/monsters/bear-alt.webp
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
data/core/images/portraits/undead/skeletal_rider.webp
Normal file
After Width: | Height: | Size: 45 KiB |
|
@ -289,9 +289,10 @@ Any units adjacent to this unit will fight as if it were dusk when it is night,
|
|||
Enemy units cannot see this unit while it is in forest, except if they have units next to it. Any enemy unit that first discovers this unit immediately loses all its remaining movement."
|
||||
special_note={INTERNAL:SPECIAL_NOTES_AMBUSH}
|
||||
affect_self=yes
|
||||
# ^Qhh* and ^Qhu* are the bluff and glutch terrains, like are already overlay the variant forest must be include in filter with 'traditionnals' forests terrains
|
||||
[filter]
|
||||
[filter_location]
|
||||
terrain=*^F*
|
||||
terrain=*^F*,*^Qhhf,*^Qhuf
|
||||
[/filter_location]
|
||||
[/filter]
|
||||
[/hides]
|
||||
|
@ -308,9 +309,10 @@ Enemy units cannot see this unit while it is in forest, except if they have unit
|
|||
|
||||
Enemy units cannot see this unit while it is resting in forest or sand, except if they have units next to it. Any enemy unit that first discovers this unit immediately loses all its remaining movement."
|
||||
affect_self=yes
|
||||
# ^Qhh* and ^Qhu* are the bluff and glutch terrains, like are already overlay the variant forest must be include in filter with 'traditionnals' forests terrains
|
||||
[filter]
|
||||
[filter_location]
|
||||
terrain=*^F*,D*^*
|
||||
terrain=*^F*,*^Qhhf,*^Qhuf,D*^*
|
||||
[/filter_location]
|
||||
# could not get resting filter to work, maybe this is better, maybe not
|
||||
formula="if(self.moves = self.max_moves, 1, 0)"
|
||||
|
|
|
@ -28,11 +28,11 @@
|
|||
{EDITOR_DEPRECATED *^Uf*}
|
||||
{EDITOR_DEPRECATED Xol}
|
||||
{EDITOR_DEPRECATED Xuce}
|
||||
{EDITOR_DEPRECATED Irs}
|
||||
{EDITOR_DEPRECATED Ias}
|
||||
{EDITOR_DEPRECATED Icr}
|
||||
{EDITOR_DEPRECATED Ior}
|
||||
{EDITOR_DEPRECATED Icn}
|
||||
{EDITOR_DEPRECATED Irs} # wmllint: noconvert
|
||||
{EDITOR_DEPRECATED Ias} # wmllint: noconvert
|
||||
{EDITOR_DEPRECATED Icr} # wmllint: noconvert
|
||||
{EDITOR_DEPRECATED Ior} # wmllint: noconvert
|
||||
{EDITOR_DEPRECATED Icn} # wmllint: noconvert
|
||||
|
||||
#############################################################
|
||||
# Macros for where normal terrain code filtering doesn't work
|
||||
|
@ -42,13 +42,15 @@
|
|||
#define TG_RSTAR_NOT_RRD
|
||||
Rb,Re,Rd,Rp,Rr,Rrc,Rra#enddef
|
||||
|
||||
# wmlindent: start ignoring
|
||||
# deprecated codes, as of 1.17.9
|
||||
#define TG_BUILT_STONE
|
||||
Irs,Icr#enddef
|
||||
Irs,Icr#enddef # wmllint: noconvert
|
||||
|
||||
# deprecated codes, as of 1.17.9
|
||||
#define TG_BUILT_WOOD
|
||||
Iwr,Ior,Icn#enddef
|
||||
Iwr,Ior,Icn#enddef # wmllint: noconvert
|
||||
# wmlindent: stop ignoring
|
||||
|
||||
#############################################################
|
||||
|
||||
|
@ -638,11 +640,11 @@ C*,K*,X*,Q*,W*,Ai,M*,*^Qh*,*^V*,*^B*,_off^_usr#enddef
|
|||
{NEW:BASE (Isr,Isc) interior/stone-regular LAYER=-284 FLAG=raised_base}
|
||||
|
||||
# deprecated codes, for compatibility
|
||||
{NEW:BASE Ias interior/stone-ancient}
|
||||
{NEW:BASE Ias interior/stone-ancient} # wmllint: noconvert
|
||||
# raised base to get it over the chasm images (LAYER=-284)
|
||||
{NEW:BASE Iwr,Icn interior/wood-regular LAYER=-284 FLAG=raised_base}
|
||||
{NEW:BASE Ior interior/wood-ruined LAYER=-284 FLAG=raised_base}
|
||||
{NEW:BASE Irs,Icr interior/stone-regular LAYER=-284 FLAG=raised_base}
|
||||
{NEW:BASE Iwr,Icn interior/wood-regular LAYER=-284 FLAG=raised_base} # wmllint: noconvert
|
||||
{NEW:BASE Ior interior/wood-ruined LAYER=-284 FLAG=raised_base} # wmllint: noconvert
|
||||
{NEW:BASE Irs,Icr interior/stone-regular LAYER=-284 FLAG=raised_base} # wmllint: noconvert
|
||||
#
|
||||
|
||||
# Water base terrains
|
||||
|
@ -894,8 +896,8 @@ C*,K*,X*,Q*,W*,Ai,M*,*^Qh*,*^V*,*^B*,_off^_usr#enddef
|
|||
{NEW:TRANSITION_INVERTED Iwc !,Iwc -223 interior/regular-rug/rug FLAG=regular_rug}
|
||||
|
||||
# deprecated terrain codes, for compatibility
|
||||
{NEW:TRANSITION_INVERTED Icr !,Icr -221 interior/royal-rug/rug FLAG=royal_rug}
|
||||
{NEW:TRANSITION_INVERTED Icn !,Icn -223 interior/regular-rug/rug FLAG=regular_rug}
|
||||
{NEW:TRANSITION_INVERTED Icr !,Icr -221 interior/royal-rug/rug FLAG=royal_rug} # wmllint: noconvert
|
||||
{NEW:TRANSITION_INVERTED Icn !,Icn -223 interior/regular-rug/rug FLAG=regular_rug} # wmllint: noconvert
|
||||
#
|
||||
# this one uses the Ur underlayer
|
||||
{NEW:DISABLE_TRANSITION (Urc) (Uu*) }
|
||||
|
@ -917,16 +919,16 @@ C*,K*,X*,Q*,W*,Ai,M*,*^Qh*,*^V*,*^B*,_off^_usr#enddef
|
|||
{NEW:TRANSITION Iw* Ql* -283 interior/wood-chasm/wood-burnt}
|
||||
|
||||
# compatibility code for deprecated terrain codes
|
||||
{NEW:THREE_TERRAIN_TRANSITION Irs,Icr Q* G*,R*,D*,A*,Uu,Ur,Urc -222 interior/stone-chasm/stone-regular}
|
||||
{NEW:THREE_TERRAIN_TRANSITION Irs,Icr Q* W* -222 interior/stone-chasm/stone-dock-regular}
|
||||
{NEW:TRANSITION_CROWDED !,*^Qh*,!,Irs,Icr Q* -222 interior/stone-chasm/stone-regular}
|
||||
{NEW:TRANSITION_CROWDED !,*^Qh*,!,Irs,Icr W*,S*,G*,R*,D*,A*,Uu,Ur,Urc -222 interior/stone-regular}
|
||||
{NEW:THREE_TERRAIN_TRANSITION Irs,Icr Q* G*,R*,D*,A*,Uu,Ur,Urc -222 interior/stone-chasm/stone-regular} # wmllint: noconvert
|
||||
{NEW:THREE_TERRAIN_TRANSITION Irs,Icr Q* W* -222 interior/stone-chasm/stone-dock-regular} # wmllint: noconvert
|
||||
{NEW:TRANSITION_CROWDED !,*^Qh*,!,Irs,Icr Q* -222 interior/stone-chasm/stone-regular} # wmllint: noconvert
|
||||
{NEW:TRANSITION_CROWDED !,*^Qh*,!,Irs,Icr W*,S*,G*,R*,D*,A*,Uu,Ur,Urc -222 interior/stone-regular} # wmllint: noconvert
|
||||
{NEW:TRANSITION {TG_BUILT_STONE} Q* -282 interior/stone-chasm/stone-regular}
|
||||
{NEW:TRANSITION !,*^Qh*,!,{TG_BUILT_STONE} W*,S* -222 interior/stone-dock-regular LAYER2=-221 ADJACENT2=!,Irs,Icr,W*,S*}
|
||||
{NEW:TRANSITION {TG_BUILT_STONE} !,Irs,Icr,!,I*r,Q*,W*,G*,R*,D*,A*,Uu,Ur,Urc,S* -222 interior/stone-regular}
|
||||
{NEW:TRANSITION {TG_BUILT_WOOD} G*,R*,D*,A*,Ur,Urc,Ias -283 interior/wood-regular}
|
||||
{NEW:TRANSITION !,*^Qh*,!,{TG_BUILT_STONE} W*,S* -222 interior/stone-dock-regular LAYER2=-221 ADJACENT2=!,Irs,Icr,W*,S*} # wmllint: noconvert
|
||||
{NEW:TRANSITION {TG_BUILT_STONE} !,Irs,Icr,!,I*r,Q*,W*,G*,R*,D*,A*,Uu,Ur,Urc,S* -222 interior/stone-regular} # wmllint: noconvert
|
||||
{NEW:TRANSITION {TG_BUILT_WOOD} G*,R*,D*,A*,Ur,Urc,Ias -283 interior/wood-regular} # wmllint: noconvert
|
||||
{NEW:TRANSITION {TG_BUILT_WOOD} W*,S*,Qx* -283 interior/wood-chasm/wood-clean}
|
||||
{NEW:TRANSITION Ior W*,S*,Qx* -283 interior/wood-chasm/wood-regular}
|
||||
{NEW:TRANSITION Ior W*,S*,Qx* -283 interior/wood-chasm/wood-regular} # wmllint: noconvert
|
||||
{NEW:TRANSITION {TG_BUILT_WOOD} Ql* -283 interior/wood-chasm/wood-burnt}
|
||||
# end compatibility code
|
||||
|
||||
|
@ -1043,7 +1045,7 @@ C*,K*,X*,Q*,W*,Ai,M*,*^Qh*,*^V*,*^B*,_off^_usr#enddef
|
|||
{NEW:WALL_TRANSITION2 Ql Qx*,Xv,_off^_usr (!,Ql,Qx*) unwalkable/lava-chasm LAYER=-290 FLAG=ground}
|
||||
{NEW:WALL_TRANSITION2 Qlf Qx*,Xv,_off^_usr (!,Ql*,Qx*) unwalkable/lava-chasm LAYER=-290 FLAG=ground}
|
||||
|
||||
# no compatibility code for ^Qh* overlays on Irs,Ias,Icr,Ior,Icn - no stable legacy maps would have such combinations
|
||||
# no compatibility code for ^Qh* overlays on Irs,Ias,Icr,Ior,Icn - no stable legacy maps would have such combinations # wmllint: noconvert
|
||||
{NEW:WALL_TRANSITION2 (!,I*,!,*^Qhu*) (!,Ql,Qx*,Xv,_off^_usr,*^Qh*,Is*) (!,*^Qh*,!,Isa) elevation/ancient-stone/corner-stone LAYER=-90 FLAG=ground}
|
||||
{NEW:WALL_TRANSITION2 (!,I*,!,*^Qhu*) (!,Ql,Qx*,Xv,_off^_usr,*^Qh*,Is*) (!,*^Qh*,!,Is*) elevation/stone/corner-stone LAYER=-90 FLAG=ground}
|
||||
{NEW:WALL_TRANSITION2 (!,I*,!,*^Qhu*) (!,Ql,Qx*,Xv,_off^_usr,*^Qh*,Iw*) (!,*^Qh*,!,Iw*) elevation/wood/corner-wood LAYER=-90 FLAG=ground}
|
||||
|
|