Compare commits
521 commits
VERSION_01
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fcd8330db0 | ||
|
|
98864f3802 | ||
|
|
0dff60f98e | ||
|
|
246d9ce288 | ||
|
|
31d417e31f | ||
|
|
60d20f593b | ||
|
|
f44e519104 | ||
|
|
70dc2ded31 | ||
|
|
542f4524db | ||
|
|
0d25beefa8 | ||
|
|
3a478f341d | ||
|
|
c9f865a894 | ||
|
|
afd5329fcc | ||
|
|
b8edcfb252 | ||
|
|
bebce66517 | ||
|
|
6f58eef4f5 | ||
|
|
4d2925aa4b | ||
|
|
fb2ae76fc5 | ||
|
|
aadec09b5d | ||
|
|
9fd4316d0f | ||
|
|
e1d01dea79 | ||
|
|
dd500a36e5 | ||
|
|
8b2727f392 | ||
|
|
d350c2b494 | ||
|
|
2022b28b76 | ||
|
|
1f9242ae6f | ||
|
|
03654e4459 | ||
|
|
fcadfcdbd3 | ||
|
|
581ffc886a | ||
|
|
e2146721d1 | ||
|
|
c6a51ffcf3 | ||
|
|
d846fa5818 | ||
|
|
13fc7f6b1a | ||
|
|
86cf9c0959 | ||
|
|
7c5cef1181 | ||
|
|
72f23a7bc1 | ||
|
|
404263a1ef | ||
|
|
b479ec3d52 | ||
|
|
b796ba36b0 | ||
|
|
07a41fddfe | ||
|
|
97ea5ab442 | ||
|
|
659c155a36 | ||
|
|
0f3ecbd3dd | ||
|
|
535e7f5727 | ||
|
|
1bf34316fb | ||
|
|
c7befd2fe1 | ||
|
|
230b25e5fa | ||
|
|
3b6d652aa8 | ||
|
|
41604ca00e | ||
|
|
7e0fbe0f16 | ||
|
|
2bd16f0307 | ||
|
|
afb06b8f97 | ||
|
|
95f373bd1c | ||
|
|
e58e6a54cb | ||
|
|
f109b551f5 | ||
|
|
5f4d9d9460 | ||
|
|
61f047a955 | ||
|
|
3534bf384f | ||
|
|
6b1296e059 | ||
|
|
c19e4b0627 | ||
|
|
72d569343a | ||
|
|
a6708ee0c2 | ||
|
|
e0dce1a242 | ||
|
|
55e802b988 | ||
|
|
d24e452f59 | ||
|
|
8fc173d923 | ||
|
|
1484f872da | ||
|
|
93a99c9c10 | ||
|
|
79ba39a030 | ||
|
|
1c50a2a454 | ||
|
|
4feb1e628a | ||
|
|
662aab6ded | ||
|
|
f9fc0230f5 | ||
|
|
ba6d507924 | ||
|
|
e121d44356 | ||
|
|
8b61de02e6 | ||
|
|
1ca1f0e47e | ||
|
|
3026afe931 | ||
|
|
f9a37f122e | ||
|
|
fd2cff8618 | ||
|
|
30494af57c | ||
|
|
2ed431fd6a | ||
|
|
cc4918a5ed | ||
|
|
6608eb2b02 | ||
|
|
79622ee9cf | ||
|
|
c6f2718aec | ||
|
|
1fd97009eb | ||
|
|
517b62c5b1 | ||
|
|
de36580350 | ||
|
|
3d971f37b5 | ||
|
|
4666911be6 | ||
|
|
c4723aba93 | ||
|
|
8c93122d1e | ||
|
|
2bec3a151b | ||
|
|
38f5c0124d | ||
|
|
2df3243f2d | ||
|
|
08873546ba | ||
|
|
26c4723749 | ||
|
|
6eeff4766d | ||
|
|
737cac9495 | ||
|
|
5ae5d33438 | ||
|
|
621a43579a | ||
|
|
45cd2ac30e | ||
|
|
b328b1aedf | ||
|
|
d633ebf947 | ||
|
|
f4935f4928 | ||
|
|
b71a29f883 | ||
|
|
3424b898b8 | ||
|
|
1f3abca39c | ||
|
|
d6ca574a20 | ||
|
|
612b4a6b88 | ||
|
|
a13ee36fe8 | ||
|
|
2abc8df666 | ||
|
|
14d7e046be | ||
|
|
6c64621496 | ||
|
|
6a4009c790 | ||
|
|
38934a8c09 | ||
|
|
738d3cd830 | ||
|
|
8cb1a7b050 | ||
|
|
d1fc6947b7 | ||
|
|
402bb84c43 | ||
|
|
819b80913f | ||
|
|
da4378d30c | ||
|
|
37d3e1c84d | ||
|
|
f1d98fff56 | ||
|
|
8f642ac446 | ||
|
|
6224a0638a | ||
|
|
c38740eaab | ||
|
|
cbf971e632 | ||
|
|
7546fbba80 | ||
|
|
face9f3a67 | ||
|
|
703fa61329 | ||
|
|
4dbe1f73fe | ||
|
|
09371bff47 | ||
|
|
6ff59a0040 | ||
|
|
063d03c45f | ||
|
|
d191c14232 | ||
|
|
d9b51f0d15 | ||
|
|
44f6a4a9fe | ||
|
|
d1d4eb5c49 | ||
|
|
0d56d2b63b | ||
|
|
a000e5f788 | ||
|
|
cc5414894f | ||
|
|
2e5dbc12c6 | ||
|
|
f756534846 | ||
|
|
7174c32521 | ||
|
|
049b91e98b | ||
|
|
a5db37305e | ||
|
|
179bc4d5e7 | ||
|
|
31c4f9cfb4 | ||
|
|
c4491004d2 | ||
|
|
e910892a16 | ||
|
|
7beb123117 | ||
|
|
a141cc187d | ||
|
|
c68f0a59d5 | ||
|
|
a3bd4b328a | ||
|
|
9e56945faf | ||
|
|
6f783d3ef6 | ||
|
|
ccee5a42b3 | ||
|
|
f2d519a29f | ||
|
|
d516c738bf | ||
|
|
ad92b7f2a9 | ||
|
|
2ee0aaa5e7 | ||
|
|
6592f5c245 | ||
|
|
8206631665 | ||
|
|
bdb34e8628 | ||
|
|
0fba46d89b | ||
|
|
4a55c4a706 | ||
|
|
4253e1e73b | ||
|
|
4e8fe0592e | ||
|
|
5709a85824 | ||
|
|
700e3ee730 | ||
|
|
0b2cb9df08 | ||
|
|
63d9667264 | ||
|
|
920ed5a3a2 | ||
|
|
f02fc6b04f | ||
|
|
807a8bb40a | ||
|
|
e6180e9ff5 | ||
|
|
3de1141898 | ||
|
|
3e31e6b788 | ||
|
|
ff9fb76ab3 | ||
|
|
ccb229efe9 | ||
|
|
5f3f86c6e7 | ||
|
|
42c30cdbda | ||
|
|
01dddc103f | ||
|
|
70bcbc3066 | ||
|
|
3c7b1a30ae | ||
|
|
e82524ec2f | ||
|
|
f224b79094 | ||
|
|
a7e66a4288 | ||
|
|
79e882fe5f | ||
|
|
8b63897d37 | ||
|
|
a24774cda9 | ||
|
|
2746ee1411 | ||
|
|
962bd11aec | ||
|
|
a9ae0db9a9 | ||
|
|
06f4e5eb78 | ||
|
|
ade5f226a9 | ||
|
|
d2f549394d | ||
|
|
4f9ffc1a48 | ||
|
|
178cd60429 | ||
|
|
f4f6fd6a2c | ||
|
|
23412db466 | ||
|
|
65d0e04af3 | ||
|
|
2cee409a77 | ||
|
|
aba72381ea | ||
|
|
14586c634c | ||
|
|
796a1e09cb | ||
|
|
706d485113 | ||
|
|
a10ec0272d | ||
|
|
d53d3f690e | ||
|
|
52b1df5f96 | ||
|
|
76feee77fd | ||
|
|
bf60fed1b8 | ||
|
|
c4aa1a9786 | ||
|
|
21d00772ad | ||
|
|
2d232b1646 | ||
|
|
0f2a5117f5 | ||
|
|
cb6db786f2 | ||
|
|
212eba66d5 | ||
|
|
cdadb33ca0 | ||
|
|
5e4d873a38 | ||
|
|
cb4d5b609f | ||
|
|
a6f3e22538 | ||
|
|
7c1b52bff6 | ||
|
|
8930612a49 | ||
|
|
b7c552cdf4 | ||
|
|
236bb8bd72 | ||
|
|
89ee706681 | ||
|
|
ef768a1ba6 | ||
|
|
c8f5d45eef | ||
|
|
98e0cf4222 | ||
|
|
b6f066508f | ||
|
|
2dc2318a3b | ||
|
|
bbe8c03b97 | ||
|
|
e06b6737c4 | ||
|
|
d6428edaf3 | ||
|
|
b71d3a7ccc | ||
|
|
42f98da03f | ||
|
|
418d9cde03 | ||
|
|
9e387d13ec | ||
|
|
cbf59d11b8 | ||
|
|
0de7b82913 | ||
|
|
228898fa15 | ||
|
|
21b6930a11 | ||
|
|
38c71e284e | ||
|
|
593d27f2c4 | ||
|
|
26b56245b9 | ||
|
|
e867756659 | ||
|
|
f33639737c | ||
|
|
a70721a98f | ||
|
|
96e8aa1a1f | ||
|
|
743eaf8384 | ||
|
|
e81ee6a33c | ||
|
|
585981f8c4 | ||
|
|
d5f3712ee7 | ||
|
|
68b99deaec | ||
|
|
1bc83e61c0 | ||
|
|
c76392f854 | ||
|
|
c2a79db036 | ||
|
|
4794564af9 | ||
|
|
254ebf2ee1 | ||
|
|
d5a889c58e | ||
|
|
5e7b1f9c73 | ||
|
|
ce872ef5d2 | ||
|
|
ed42b5a074 | ||
|
|
26883d7afa | ||
|
|
e166b717b3 | ||
|
|
24fbeee56b | ||
|
|
f520851d46 | ||
|
|
e76888cc51 | ||
|
|
5cf76c7f03 | ||
|
|
9bd676a3c3 | ||
|
|
81b46c3fa0 | ||
|
|
2edcfb1cf7 | ||
|
|
bf5a4e73bd | ||
|
|
485e626083 | ||
|
|
1f5d4be5ed | ||
|
|
423bd033e0 | ||
|
|
96acebae7d | ||
|
|
40db53c75d | ||
|
|
01a3d15134 | ||
|
|
345926808a | ||
|
|
637effbf69 | ||
|
|
e2cf347731 | ||
|
|
e681dc2fcc | ||
|
|
02ef1ed34f | ||
|
|
05ff7ffd66 | ||
|
|
336d83854f | ||
|
|
ac34c133ee | ||
|
|
e6b34706ac | ||
|
|
aad2005dc0 | ||
|
|
e6e0d60bf5 | ||
|
|
845df00bdd | ||
|
|
1af92af6af | ||
|
|
dcc390c30a | ||
|
|
d5adb7c5ae | ||
|
|
92752ac7fe | ||
|
|
e1f897fa30 | ||
|
|
3ba6448011 | ||
|
|
0d334d4a22 | ||
|
|
2848042ea7 | ||
|
|
fccda47c93 | ||
|
|
a4fc86c04a | ||
|
|
4dd4e8840c | ||
|
|
52a3809c35 | ||
|
|
757eb04038 | ||
|
|
6653634128 | ||
|
|
8d42afbf0d | ||
|
|
2d43a41541 | ||
|
|
858320c8e2 | ||
|
|
95bf1616ba | ||
|
|
0616ea3a8b | ||
|
|
246a5b47dc | ||
|
|
0f118cbe46 | ||
|
|
2f78691d05 | ||
|
|
28b7ae2a23 | ||
|
|
f8a09deb53 | ||
|
|
87c1111b63 | ||
|
|
d0d0330ea2 | ||
|
|
7412928f51 | ||
|
|
a2bcd77959 | ||
|
|
ee715a5fe5 | ||
|
|
b614dad186 | ||
|
|
179520b9df | ||
|
|
ba56253b84 | ||
|
|
e906f1f3df | ||
|
|
4d2d68907a | ||
|
|
8a75706607 | ||
|
|
d6f528f81a | ||
|
|
4db3ad4d67 | ||
|
|
fc644a9755 | ||
|
|
0c32227a7b | ||
|
|
a39f2e65db | ||
|
|
65fb1748a7 | ||
|
|
df48d0daac | ||
|
|
a26777d722 | ||
|
|
9f532e2bc3 | ||
|
|
1827a40eac | ||
|
|
091c6deb79 | ||
|
|
abcbc1dbae | ||
|
|
1d3a249d76 | ||
|
|
7929acb4d2 | ||
|
|
54d149a7bd | ||
|
|
c0f3e237c1 | ||
|
|
4c05093b01 | ||
|
|
c22e919f9c | ||
|
|
4d1251c906 | ||
|
|
f662040941 | ||
|
|
77972930a5 | ||
|
|
19346b3143 | ||
|
|
20b9335645 | ||
|
|
5a4904c96f | ||
|
|
d028bc624e | ||
|
|
ace5065bd3 | ||
|
|
f2055ab79e | ||
|
|
2e6bcc67ba | ||
|
|
fe5cde1145 | ||
|
|
5c883098c2 | ||
|
|
8f9aa9825b | ||
|
|
78a60745a5 | ||
|
|
d7703f3721 | ||
|
|
ba6e2848f0 | ||
|
|
6771560c91 | ||
|
|
a510097efb | ||
|
|
fbdc8e33cf | ||
|
|
4d5fc5cee2 | ||
|
|
d5153a72af | ||
|
|
fc81162673 | ||
|
|
c1078e197c | ||
|
|
c653a2b35c | ||
|
|
792ca5e414 | ||
|
|
b09aa4e2c2 | ||
|
|
45b271bd72 | ||
|
|
32a2ac6957 | ||
|
|
96df82c461 | ||
|
|
b936af9375 | ||
|
|
675913dcfa | ||
|
|
84d1b7aab4 | ||
|
|
062b4d1667 | ||
|
|
8a46d1e8ce | ||
|
|
958a36d2de | ||
|
|
873048f98b | ||
|
|
66d280f10c | ||
|
|
92089cbcaa | ||
|
|
0ce79fdad8 | ||
|
|
d60d216466 | ||
|
|
4746f125ed | ||
|
|
3e5d472bc3 | ||
|
|
3845fc69da | ||
|
|
97ff41869f | ||
|
|
a5251127dc | ||
|
|
46f63776cb | ||
|
|
d6aed77641 | ||
|
|
a6ddc99d8d | ||
|
|
46e399b30f | ||
|
|
22b57a3e5e | ||
|
|
8ce87348e1 | ||
|
|
a2747d3f80 | ||
|
|
b01060f667 | ||
|
|
8ede1b841a | ||
|
|
542fe5be1b | ||
|
|
e80ce98382 | ||
|
|
c3f81e5d31 | ||
|
|
2df0596cfc | ||
|
|
947fc79489 | ||
|
|
43353e1ef8 | ||
|
|
98e2f70218 | ||
|
|
30399d830d | ||
|
|
60026dde03 | ||
|
|
9a5e5b0223 | ||
|
|
356f36ad07 | ||
|
|
60cb09077f | ||
|
|
4d50010790 | ||
|
|
2b10df791f | ||
|
|
752626b3aa | ||
|
|
4b6319d910 | ||
|
|
29d53375c0 | ||
|
|
582748b551 | ||
|
|
6f5a275694 | ||
|
|
98d5349bb4 | ||
|
|
c1241a3e08 | ||
|
|
16a6731d24 | ||
|
|
d1c96181a5 | ||
|
|
7f06ef1346 | ||
|
|
4e4fa1aeca | ||
|
|
0c2ff23ed1 | ||
|
|
d1174e5fd6 | ||
|
|
7fa046294b | ||
|
|
01b6cf9dc7 | ||
|
|
fa0a522070 | ||
|
|
5a8add7e5d | ||
|
|
e3188b3986 | ||
|
|
5072211638 | ||
|
|
0bc610eb6c | ||
|
|
ee7faac1da | ||
|
|
9c0315793a | ||
|
|
a39087c1ab | ||
|
|
f9af9aa9df | ||
|
|
f7baa36ede | ||
|
|
1cef2c4f6a | ||
|
|
086cfbe00b | ||
|
|
59a0727dd1 | ||
|
|
7e1f493839 | ||
|
|
d9a045f2d5 | ||
|
|
3675593ae4 | ||
|
|
631fd7d932 | ||
|
|
b2447e8c7d | ||
|
|
07f367b9bc | ||
|
|
eca1a46448 | ||
|
|
9257fe4ee5 | ||
|
|
13f136adc8 | ||
|
|
9fb6a0d96e | ||
|
|
6356e1f23c | ||
|
|
8f6c3cacdf | ||
|
|
a08d9ae3e2 | ||
|
|
9f854e7ab7 | ||
|
|
6cb9be3b49 | ||
|
|
1e4bbaa84a | ||
|
|
033b302d9f | ||
|
|
0c722d8a12 | ||
|
|
2ae840aaf1 | ||
|
|
0f1e8927ea | ||
|
|
5f8d34f249 | ||
|
|
07346dd0eb | ||
|
|
7336fc1821 | ||
|
|
953b7b5b20 | ||
|
|
3927596105 | ||
|
|
fd39cda6e3 | ||
|
|
3ab51b17ea | ||
|
|
85d6cff21a | ||
|
|
c53a1ebef7 | ||
|
|
8873a242b2 | ||
|
|
38d0e8d715 | ||
|
|
347008b896 | ||
|
|
77f6e44abb | ||
|
|
8128bed44e | ||
|
|
3496eb9af4 | ||
|
|
c1b967d1b5 | ||
|
|
60173d582d | ||
|
|
7d2c2e128f | ||
|
|
68cf101189 | ||
|
|
a9baa4af19 | ||
|
|
7113c11d53 | ||
|
|
6723d7f5bf | ||
|
|
fb158dbc11 | ||
|
|
bcedecad50 | ||
|
|
057afa534a | ||
|
|
e61506126c | ||
|
|
212dc7623e | ||
|
|
dbc3de7055 | ||
|
|
a7bdde5331 | ||
|
|
9e4ef5146b | ||
|
|
bf275d84bf | ||
|
|
02cdffe0af | ||
|
|
45b94965e9 | ||
|
|
c9c06ad5a7 | ||
|
|
c302d2dcd6 | ||
|
|
c0288c5360 | ||
|
|
2277a276fb | ||
|
|
f376b0cb87 | ||
|
|
05eb315e41 | ||
|
|
6385ed51cb | ||
|
|
05d61c6bcb | ||
|
|
71ad4108fd | ||
|
|
4379d81a25 | ||
|
|
b9de8c3117 | ||
|
|
23332a7c8c | ||
|
|
477a0ed37d | ||
|
|
4276878a60 | ||
|
|
75895904e6 | ||
|
|
356937fe33 | ||
|
|
59abb15ba5 | ||
|
|
f7f01ecaa0 | ||
|
|
2049f2b4b7 | ||
|
|
02602f0bc5 | ||
|
|
07d34cf25b | ||
|
|
0bc6f28204 | ||
|
|
e02d87b8e6 | ||
|
|
0b056f3b81 | ||
|
|
31911288d7 |
50
.github/workflows/android-build.yml
vendored
|
|
@ -7,16 +7,56 @@ on:
|
|||
pull_request:
|
||||
paths:
|
||||
- 'app/android/**'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- id: job_info
|
||||
uses: daleyjem/gh-job-id@v1
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
job_name: 'build'
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v3
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Build Android Packages
|
||||
run: cd app/android/client && gradle assemble
|
||||
- name: Set Up JDK
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'adopt'
|
||||
|
||||
- name: Validate Gradle Wrapper .jar
|
||||
run: |
|
||||
cd app/android/gradle/wrapper
|
||||
curl --location --output gradle-wrapper.jar.sha256 \
|
||||
https://services.gradle.org/distributions/gradle-7.5.1-wrapper.jar.sha256
|
||||
echo " gradle-wrapper.jar" >> gradle-wrapper.jar.sha256
|
||||
sha256sum --check gradle-wrapper.jar.sha256
|
||||
|
||||
- name: Build APKs with Ant
|
||||
uses: cedx/setup-ant@v6
|
||||
with:
|
||||
version: '1.10'
|
||||
- run: ant -noinput -buildfile build.xml android -Dgradle.params="assembleDebug assembleRelease"
|
||||
|
||||
- name: Failure Report
|
||||
uses: sarisia/actions-status-discord@v1
|
||||
if: failure()
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_DEVELOPMENT }}
|
||||
with:
|
||||
title: 'Android Build Failed'
|
||||
description: '${{ steps.job_info.outputs.html_url }}'
|
||||
nodetail: true
|
||||
- uses: sarisia/actions-status-discord@v1
|
||||
if: failure()
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_DEVLOG }}
|
||||
with:
|
||||
title: 'Android Build Failed'
|
||||
description: '${{ steps.job_info.outputs.html_url }}'
|
||||
nodetail: true
|
||||
|
|
|
|||
12
.github/workflows/codeql-analysis.yml
vendored
|
|
@ -29,15 +29,15 @@ jobs:
|
|||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
uses: github/codeql-action/init@v3
|
||||
# Override language selection by uncommenting this and choosing your languages
|
||||
# with:
|
||||
# languages: go, javascript, csharp, python, cpp, java
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
#- name: Autobuild
|
||||
# uses: github/codeql-action/autobuild@v3
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
|
@ -46,9 +46,7 @@ jobs:
|
|||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
- run: ant -noinput -f build.xml clean compile
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
uses: github/codeql-action/analyze@v3
|
||||
|
|
|
|||
11
.project
|
|
@ -20,4 +20,15 @@
|
|||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1771748271774</id>
|
||||
<name></name>
|
||||
<type>30</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
||||
|
|
|
|||
19
README.md
|
|
@ -30,29 +30,28 @@ button to create or log in to your account.
|
|||
### Mobile
|
||||
|
||||
Play using the [progressive web app](https://en.wikipedia.org/wiki/Progressive_web_app). Just visit
|
||||
https://stendhalgame.org/ in your mobile browser and click "install" when prompted.
|
||||
[stendhalgame.org](https://stendhalgame.org/) in your mobile browser and click "install" when prompted.
|
||||
|
||||
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" height="75">](https://f-droid.org/packages/org.stendhalgame.client/)
|
||||
|
||||
Play on your Android device using the dedicated app. You can get it from the
|
||||
[F-Droid App Store](https://f-droid.org/) or download it from https://stendhalgame.org/download.html.
|
||||
[F-Droid App Store](https://f-droid.org/) or download it from [stendhalgame.org](https://stendhalgame.org/download.html).
|
||||
|
||||
### Classic Desktop
|
||||
|
||||
[](https://arianne-project.org/download/stendhal.zip)
|
||||
|
||||
Play using the classic desktop client. You will need Java which you can download from
|
||||
[https://www.java.com](https://www.java.com/en/download) on Microsoft Windows. Java is included in
|
||||
[java.com](https://www.java.com/en/download) on Microsoft Windows. Java is included in
|
||||
most Linux distributions. Both Oracle Java and OpenJDK are supported.
|
||||
|
||||
Please download Stendhal from [https://stendhalgame.org](https://stendhalgame.org)<br>
|
||||
You can double click on stendhal-starter.jar and the client will run.<br>
|
||||
If you prefer to run from command line, then just execute this command
|
||||
in the stendhal folder:
|
||||
Please download Stendhal from [stendhalgame.org](https://stendhalgame.org/download.html).<br>
|
||||
You can double click on `stendhal-starter.jar` and the client will run.<br>
|
||||
If you prefer to run from command line, then just execute this command in the stendhal folder:
|
||||
|
||||
`java -jar stendhal-starter.jar`
|
||||
|
||||
There is a [manual](https://stendhalgame.org/wiki/Stendhal_Manual), and there is Help from the client menu icons in the upper right hand side of the game screen.
|
||||
There is a [manual](https://stendhalgame.org/wiki/Stendhal_Manual), and there is Help from the client menu icons in the upper right hand side of the game screen.
|
||||
|
||||
|
||||
## Development environment
|
||||
|
|
@ -67,7 +66,7 @@ There is a [manual](https://stendhalgame.org/wiki/Stendhal_Manual), and there i
|
|||
|
||||
Stendhal is free software. You can redistribute it and/or modify under the following terms:
|
||||
|
||||
- The **server**, **java client**, and **Android client**: *GNU General Public License* 2 or later as published by the Free
|
||||
- The **server**, **java client**, and **Android client**: *GNU General Public License* 2 or later as published by the Free Software Foundation
|
||||
- The **web client** and **native client**: *GNU Affero General Public License* 3 or later as published by the Free Software Foundation with the definition of "System libraries" being extended to include authentication providers and software distribution platforms.
|
||||
- The **nativehelper** extensions: *GNU Lesser General Public License* 3 or later as published by the Free Software Foundation
|
||||
|
||||
|
|
@ -76,6 +75,6 @@ even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
|
|||
[LICENSE.txt](LICENSE.txt) and [src/js/LICENSE.html](src/js/LICENSE.html) file for more details.
|
||||
|
||||
Stendhal(c) is copyright of Miguel Angel Blanch Lardin, 2005-2008, arianne_rpg at users dot sourceforge dot net and others<br>
|
||||
Stendhal(c) is copyright of the Arianne Project, 2006-2024, arianne-general at lists dot sourceforge dot net
|
||||
Stendhal(c) is copyright of the Arianne Project, 2006-2026, arianne-general at lists dot sourceforge dot net
|
||||
|
||||
Please have a look at the list of [contributors](doc/contributors.md#contributors).
|
||||
|
|
|
|||
1
app/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
/godot/
|
||||
|
|
@ -10,15 +10,23 @@ android {
|
|||
applicationId namespace
|
||||
minSdk 21
|
||||
targetSdk 32
|
||||
versionCode 1046005
|
||||
versionName "1.46.5"
|
||||
versionCode 1049005
|
||||
versionName "1.49.5"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
targetSdkVersion 32
|
||||
minSdkVersion 21
|
||||
}
|
||||
|
||||
// F-Droid doesn't allow encrypted DependencyInfoBlock in APK
|
||||
dependenciesInfo {
|
||||
// disables dependency metadata when building APKs
|
||||
includeInApk = false
|
||||
// disables dependency metadata when building Android App Bundles
|
||||
includeInBundle = false
|
||||
}
|
||||
|
||||
// build output
|
||||
project.setProperty("archivesBaseName", "${namespace}-${defaultConfig.versionCode}")
|
||||
project.setProperty("archivesBaseName", "${namespace}-${defaultConfig.versionName}")
|
||||
project.setProperty("buildDir", "${projectDir}/../../../build/build_android_client")
|
||||
|
||||
/* A keystore.properties file can be placed in the root Android project directory and must
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ package org.stendhalgame.client;
|
|||
import java.util.Random;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
|
|
@ -189,7 +190,11 @@ public class ClientView extends WebView {
|
|||
if (!UrlHelper.isInternalUri(uri)) {
|
||||
// open external links in default browser/app
|
||||
// FIXME: should we ask for confirmation?
|
||||
MainActivity.get().startActivity(new Intent(Intent.ACTION_VIEW, uri));
|
||||
try {
|
||||
MainActivity.get().startActivity(new Intent(Intent.ACTION_VIEW, uri));
|
||||
} catch (final ActivityNotFoundException e) {
|
||||
Notifier.toast("No app found to open this link");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
view.loadUrl(UrlHelper.checkClientUrl(uri.toString()));
|
||||
|
|
@ -263,6 +268,9 @@ public class ClientView extends WebView {
|
|||
/**
|
||||
* Handles downloading screenshot created by web client.
|
||||
*
|
||||
* TODO: get filename to pass to `DownloadHandler.download` from "download" property of
|
||||
* anchor
|
||||
*
|
||||
* @param url
|
||||
* Content URL to the screenshot image.
|
||||
* @param userAgent
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ package org.stendhalgame.client;
|
|||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.net.URLDecoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
|
|
@ -26,61 +28,175 @@ import android.util.Base64;
|
|||
* created by the web client page.
|
||||
*/
|
||||
public class DownloadHandler {
|
||||
private boolean result = false;
|
||||
private String message = null;;
|
||||
|
||||
public void download(final String url, final String mimetype) {
|
||||
private static enum DownloadType {
|
||||
IMAGE_PNG("image/png"),
|
||||
TEXT_PLAIN("text/plain"),
|
||||
UNSUPPORTED(null);
|
||||
|
||||
private String value;
|
||||
|
||||
private DownloadType(final String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public static DownloadType fromString(final String value) {
|
||||
for (final DownloadType v: DownloadType.values()) {
|
||||
if (v.value != null && v.value.equals(value)) {
|
||||
return v;
|
||||
}
|
||||
}
|
||||
return DownloadType.UNSUPPORTED;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean result = false;
|
||||
private String message = null;
|
||||
|
||||
|
||||
/**
|
||||
* Checks for a supported MIME type.
|
||||
*
|
||||
* @param url
|
||||
* File or data URL.
|
||||
* @param mimetype
|
||||
* Detected MIME type.
|
||||
* @return
|
||||
* Download type or unsupported.
|
||||
*/
|
||||
private DownloadType checkMimeType(final String url, final String mimetype) {
|
||||
final DownloadType dtype = DownloadType.fromString(mimetype);
|
||||
if (DownloadType.UNSUPPORTED.equals(dtype) && url.startsWith("data:image/png;base64,")) {
|
||||
return DownloadType.IMAGE_PNG;
|
||||
}
|
||||
return dtype;
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes file data to device storage.
|
||||
*
|
||||
* @param dir
|
||||
* Directory where new file is to be created.
|
||||
* @param basename
|
||||
* Filename of new file.
|
||||
* @param data
|
||||
* File contents to be written to storage.
|
||||
*/
|
||||
private void downloadInternal(final File dir, final String basename, final byte[] data) {
|
||||
String stacktrace = null;
|
||||
try {
|
||||
if (!dir.exists()) {
|
||||
dir.mkdirs();
|
||||
}
|
||||
final FileOutputStream fos = new FileOutputStream(new File(dir, basename));
|
||||
fos.write(data);
|
||||
fos.close();
|
||||
this.result = true;
|
||||
} catch (final java.lang.NoClassDefFoundError e) {
|
||||
this.message = "an error occurred while decoding data (see debug log for more info)";
|
||||
stacktrace = stackTraceToString(e);
|
||||
} catch (java.io.IOException e) {
|
||||
this.message = "an error occurred while attempting to write file (see debug log for more info)";
|
||||
stacktrace = stackTraceToString(e);
|
||||
}
|
||||
|
||||
if (stacktrace != null) {
|
||||
Logger.error(stacktrace.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes file data to device storage.
|
||||
*
|
||||
* @param url
|
||||
* A data URL.
|
||||
* @param mimetype
|
||||
* Detected MIME type.
|
||||
* @param targetName
|
||||
* Filename for new file.
|
||||
*/
|
||||
public void download(final String url, final String mimetype, String targetName) {
|
||||
|
||||
final Uri uri = Uri.parse(url);
|
||||
final String scheme = uri.getScheme();
|
||||
final String storageState = Environment.getExternalStorageState();
|
||||
final DownloadType dtype = checkMimeType(url, mimetype);
|
||||
|
||||
if (!MainActivity.get().getActiveClientView().isGameActive()) {
|
||||
this.message = "downloading from this page not supported";
|
||||
} else if (!"data".equals(scheme)) {
|
||||
// only data URL supported
|
||||
this.message = "download type \"" + scheme + "\" not supported";
|
||||
} else if (!"image/png".equals(mimetype) || !url.startsWith("data:image/png;base64,")) {
|
||||
} else if (DownloadType.UNSUPPORTED.equals(dtype)) {
|
||||
this.message = "mimetype not supported: " + mimetype;
|
||||
} else if (!Environment.MEDIA_MOUNTED.equals(storageState)) {
|
||||
this.message = "storage not available for writing (state: " + storageState + ")";
|
||||
} else {
|
||||
} else if (DownloadType.IMAGE_PNG.equals(dtype)) {
|
||||
final File targetDir = new File(Environment.getExternalStorageDirectory()
|
||||
+ "/Pictures/Screenshots");
|
||||
final String targetName = "stendhal_"
|
||||
+ new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss").format(new Date()) + ".png";
|
||||
if (targetName == null) {
|
||||
// default filename
|
||||
targetName = "stendhal_" + new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss").format(new Date())
|
||||
+ ".png";
|
||||
}
|
||||
|
||||
Logger.debug("Saving screenshot: " + targetDir.getPath()
|
||||
+ "/" + targetName + " (" + mimetype + ")");
|
||||
|
||||
String msg;
|
||||
String stacktrace = null;
|
||||
try {
|
||||
if (!targetDir.exists()) {
|
||||
targetDir.mkdirs();
|
||||
final byte[] data = Base64.decode(url.split("base64,")[1], Base64.DEFAULT);
|
||||
downloadInternal(targetDir, targetName, data);
|
||||
if (this.result) {
|
||||
this.message = "saved screenshot to " + targetDir.getPath() + "/" + targetName;
|
||||
}
|
||||
} else if (DownloadType.TEXT_PLAIN.equals(dtype)) {
|
||||
// `Environment.DIRECTORY_DOWNLOADS` fails on newer Android versions
|
||||
//final File targetDir = new File(Environment.DIRECTORY_DOWNLOADS);
|
||||
final File targetDir = new File(Environment.getExternalStorageDirectory() + "/Download");
|
||||
if (targetName == null) {
|
||||
// default filename
|
||||
targetName = "stendhal_" + new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss").format(new Date())
|
||||
+ ".txt";
|
||||
}
|
||||
|
||||
Logger.debug("Saving file: " + targetDir.getPath()
|
||||
+ "/" + targetName + " (" + mimetype + ")");
|
||||
|
||||
final String[] parts = url.split(",");
|
||||
byte[] data;
|
||||
if (parts[0].endsWith(";base64")) {
|
||||
data = Base64.decode(parts[1], Base64.DEFAULT);
|
||||
} else {
|
||||
try {
|
||||
data = URLDecoder.decode(parts[1], StandardCharsets.UTF_8.name())
|
||||
.getBytes(StandardCharsets.UTF_8);
|
||||
} catch (final java.io.UnsupportedEncodingException e) {
|
||||
this.message = "an error occurred while attempting to decode data URL (see debug log for more info)";
|
||||
Logger.error(stackTraceToString(e));
|
||||
return;
|
||||
}
|
||||
|
||||
final byte[] data = Base64.decode(url.split("base64,")[1], Base64.DEFAULT);
|
||||
final FileOutputStream fos = new FileOutputStream(new File(targetDir, targetName));
|
||||
fos.write(data);
|
||||
fos.close();
|
||||
|
||||
this.result = true;
|
||||
msg = "saved screenshot to " + targetDir.getPath() + "/" + targetName;
|
||||
} catch (final java.lang.NoClassDefFoundError e) {
|
||||
msg = "an error occurred while decoding data (see debug log for more info)";
|
||||
stacktrace = stackTraceToString(e);
|
||||
} catch (java.io.IOException e) {
|
||||
msg = "an error occurred while attempting to write file (see debug log for more info)";
|
||||
stacktrace = stackTraceToString(e);
|
||||
}
|
||||
|
||||
this.message = msg;
|
||||
if (stacktrace != null) {
|
||||
Logger.error(stacktrace.toString());
|
||||
downloadInternal(targetDir, targetName, data);
|
||||
if (this.result) {
|
||||
this.message = "file saved to " + targetDir.getPath() + "/" + targetName;
|
||||
}
|
||||
} else {
|
||||
this.message = "an unknown error occurred";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes file data to device storage.
|
||||
*
|
||||
* @param url
|
||||
* A data URL.
|
||||
* @param mimetype
|
||||
* Detected MIME type.
|
||||
*/
|
||||
public void download(final String url, final String mimetype) {
|
||||
download(url, mimetype, null);
|
||||
}
|
||||
|
||||
public boolean getResult() {
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 335 KiB |
|
After Width: | Height: | Size: 647 KiB |
|
After Width: | Height: | Size: 597 KiB |
|
|
@ -1,65 +1,3 @@
|
|||
PUT RELEASE ANNOUNCEMENT LINES HERE
|
||||
|
||||
1.46
|
||||
|
||||
*world*
|
||||
- renamed items:
|
||||
- "courgette" to "zucchini"
|
||||
- "iron" to "iron bar"
|
||||
- "salad" to "lettuce"
|
||||
- fixed many NPCs not responding to certain chat options
|
||||
- normalized spelling of some words to American English in most NPC dialogues
|
||||
- "colour" -> "color"
|
||||
- "defence" -> "defense"
|
||||
- "favour" -> "favor"
|
||||
- "favourite" -> "favorite"
|
||||
- "fulfil" -> "fulfill"
|
||||
- "organise" -> "organize"
|
||||
- "recognise" -> "rocognize"
|
||||
- Orchiwald will stop after entity collision instead of reversing path
|
||||
- foghorn sounds plays when ferry arrives at mainland & island
|
||||
- added commerce sound to more NPCs when exchanging money for items/services
|
||||
- seeds can be used from inventory
|
||||
|
||||
*graphics*
|
||||
- redrawn placeholder tiles in Oni Palace
|
||||
- fixed some outfit errors
|
||||
- disabled unfinished weapon-style attack sprites
|
||||
|
||||
*web client*
|
||||
- improved movement handling with on-screen joystick & direction pad
|
||||
- alternate "floating" menu style
|
||||
- alternate "floating" chat panel style
|
||||
- software keyboard is automatically hidden after sending chat message
|
||||
- optional activity indicator for corpses & some signs
|
||||
- immediate configuration changes affect only the active client/browser tab
|
||||
- application menu dialog doesn't close when clicking on background
|
||||
- correct NPC title is displayed in chat options dialog
|
||||
- disabled highlighting joystick/d-pad button on mouse double-click & drag
|
||||
- joystick/d-pad isn't shown until user interface is ready
|
||||
- character name in stats panel uses default font size
|
||||
- fixed chest default open/close behavior (clicking on open chest opens inventory window instead of closing)
|
||||
- doesn't attempt to open corpse/chest inventory windows when character not in range
|
||||
- fixed chat history duplicates
|
||||
- chat options dialog remains open until NPC is no longer attending or player closes
|
||||
- fixed continuous movement state not always updated at startup
|
||||
- supports displaying members' HP status in group panel
|
||||
- fixed group panel not always showing membership after login
|
||||
- added support for touch drag-and-drop
|
||||
- fixed weather drawing to not appear to move with player
|
||||
- fixed subsequent single clicks on items to not count as double after double click
|
||||
- fixed deathmatch scrying orbs
|
||||
- fixed portal default action when on a collision tile
|
||||
- added autocomplete support
|
||||
- fixed positioning of door sprites (-2_orril_lich_palace 84 108)
|
||||
- optional click/touch indicator
|
||||
- fixed difficult to move small floating windows
|
||||
- supports chat commands tab completion
|
||||
- supports text highlighting in speech bubbles
|
||||
- fixed opening chat log context menu with touch
|
||||
- supports continued zone music when changed zone matches
|
||||
|
||||
*Android*
|
||||
- added option to clear WebView cache
|
||||
- added option to lock orientation
|
||||
- fixes for using the correct software keyboard
|
||||
- app ID changed to conform with F-Droid standards
|
||||
Please see the complete change log for further details: https://arianne-project.org/game/stendhal.html#changes
|
||||
|
|
|
|||
|
|
@ -5,6 +5,6 @@
|
|||
<string name="app_name">Stendhal</string>
|
||||
<string name="intent_url_scheme">stendhalprod8gps5y99pu</string>
|
||||
<string name="build_type">prod</string>
|
||||
<string name="build_version">1.46.5</string>
|
||||
<string name="build_version">1.49.5</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import android.content.DialogInterface;
|
|||
|
||||
/**
|
||||
* Semi-functional logger for release builds.
|
||||
*
|
||||
*
|
||||
* Displays notification dialogs but does not write to logs directory.
|
||||
*/
|
||||
public class Logger {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionSha256Sum=91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60
|
||||
distributionSha256Sum=f6b8596b10cce501591e92f229816aa4046424f3b24d771751b06779d58c8ec4
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ panic = 'abort'
|
|||
strip = true
|
||||
|
||||
[dependencies]
|
||||
lazy_static = "1.5.0"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
steamworks = "0.10.0"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
use lazy_static::lazy_static;
|
||||
use serde_json::Value;
|
||||
use std::io;
|
||||
use std::io::Read;
|
||||
use std::process;
|
||||
use std::sync::Arc;
|
||||
use std::sync::atomic::AtomicBool;
|
||||
use std::sync::atomic::Ordering;
|
||||
use std::sync::Mutex;
|
||||
use std::sync::mpsc::Sender;
|
||||
use std::sync::mpsc::channel;
|
||||
use std::thread;
|
||||
|
|
@ -16,6 +19,10 @@ use websocket::client::ClientBuilder;
|
|||
use websocket::{Message, OwnedMessage};
|
||||
|
||||
|
||||
lazy_static! {
|
||||
static ref AUTHENTICATED: Mutex<bool> = Mutex::new(false);
|
||||
}
|
||||
|
||||
fn connect() -> (Sender<OwnedMessage>, JoinHandle<()>) {
|
||||
println!("Read connection parameters");
|
||||
let mut json = String::new();
|
||||
|
|
@ -112,58 +119,70 @@ fn connect() -> (Sender<OwnedMessage>, JoinHandle<()>) {
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
return (tx, receive_loop);
|
||||
|
||||
return (tx, receive_loop);
|
||||
}
|
||||
|
||||
fn handle_message(nl_token: &String, tx: Sender<OwnedMessage>, message: String) {
|
||||
if message.contains("event\":\"request_authentication\"") {
|
||||
authenticate(tx, nl_token.clone());
|
||||
} else if message.contains("event\":\"clientDisconnect\"") {
|
||||
let authenticated = AUTHENTICATED.lock().unwrap();
|
||||
if *authenticated {
|
||||
println!("Authenticated, exiting extension ...");
|
||||
} else {
|
||||
println!("Unauthenticated, exiting extension ...");
|
||||
}
|
||||
process::exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
fn authenticate(tx: Sender<OwnedMessage>, nl_token: String) {
|
||||
match Client::init() {
|
||||
Ok((client, single)) => {
|
||||
match Client::init() {
|
||||
Ok((client, single)) => {
|
||||
let called = Arc::new(AtomicBool::new(false));
|
||||
let callback_called = called.clone();
|
||||
|
||||
let (_ticket_handle, session_ticket): (steamworks::AuthTicket, Vec<u8>) = client.user().authentication_session_ticket();
|
||||
let _callback =
|
||||
client.register_callback(move |session_ticket_response: AuthSessionTicketResponse| {
|
||||
//if session_ticket_response.ticket == ticket_handle {
|
||||
println!("Ticket Response Result: {:?}", session_ticket_response.result);
|
||||
callback_called.store(true, Ordering::Relaxed);
|
||||
// println!("Ticket : {:?}", session_ticket_response.ticket);
|
||||
// println!("Ticket Response: {:?}", session_ticket);
|
||||
let (_ticket_handle, session_ticket): (steamworks::AuthTicket, Vec<u8>) = client.user().authentication_session_ticket();
|
||||
let _callback =
|
||||
client.register_callback(move |session_ticket_response: AuthSessionTicketResponse| {
|
||||
//if session_ticket_response.ticket == ticket_handle {
|
||||
if session_ticket_response.result.is_ok() {
|
||||
let mut authenticated = AUTHENTICATED.lock().unwrap();
|
||||
*authenticated = true;
|
||||
}
|
||||
println!("Ticket Response Result: {:?}", session_ticket_response.result);
|
||||
callback_called.store(true, Ordering::Relaxed);
|
||||
// println!("Ticket : {:?}", session_ticket_response.ticket);
|
||||
// println!("Ticket Response: {:?}", session_ticket);
|
||||
|
||||
let message = OwnedMessage::Text(format!("\
|
||||
{{\
|
||||
\"id\": \"15fb0ffb-7b18-48d2-89a3-39b1ce4b2645\",\
|
||||
\"method\": \"app.broadcast\",\
|
||||
\"accessToken\": {:?},\
|
||||
\"data\": {{\
|
||||
\"event\": \"steamAuthToken\",\
|
||||
\"data\": {:?}\
|
||||
}}\
|
||||
}}", nl_token, &session_ticket));
|
||||
match tx.send(message) {
|
||||
Ok(()) => (),
|
||||
Err(e) => {
|
||||
println!("Websocket send error: {:?}", e);
|
||||
}
|
||||
}
|
||||
let message = OwnedMessage::Text(format!("\
|
||||
{{\
|
||||
\"id\": \"15fb0ffb-7b18-48d2-89a3-39b1ce4b2645\",\
|
||||
\"method\": \"app.broadcast\",\
|
||||
\"accessToken\": {:?},\
|
||||
\"data\": {{\
|
||||
\"event\": \"steamAuthToken\",\
|
||||
\"data\": {:?}\
|
||||
}}\
|
||||
}}", nl_token, &session_ticket));
|
||||
match tx.send(message) {
|
||||
Ok(()) => (),
|
||||
Err(e) => {
|
||||
println!("Websocket send error: {:?}", e);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
for _ in 0..100 {
|
||||
single.run_callbacks();
|
||||
if called.load(Ordering::Relaxed) {
|
||||
return;
|
||||
}
|
||||
::std::thread::sleep(::std::time::Duration::from_millis(50));
|
||||
}
|
||||
},
|
||||
Err(_) => {
|
||||
});
|
||||
for _ in 0..100 {
|
||||
single.run_callbacks();
|
||||
if called.load(Ordering::Relaxed) {
|
||||
return;
|
||||
}
|
||||
::std::thread::sleep(::std::time::Duration::from_millis(50));
|
||||
}
|
||||
},
|
||||
Err(_) => {
|
||||
println!("Steam not available");
|
||||
let message = OwnedMessage::Text(format!("\
|
||||
{{\
|
||||
|
|
@ -181,10 +200,10 @@ fn authenticate(tx: Sender<OwnedMessage>, nl_token: String) {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let (_tx, receive_loop) = connect();
|
||||
let (_tx, receive_loop) = connect();
|
||||
let _ = receive_loop.join();
|
||||
}
|
||||
|
|
|
|||
1
app/neutralinojs/.gitignore
vendored
|
|
@ -11,6 +11,7 @@ neutralino.js
|
|||
# Neutralinojs related files
|
||||
.storage
|
||||
*.log
|
||||
extensions/binary/steam_appid.txt
|
||||
extensions/binary/*.so
|
||||
extensions/binary/*.dll
|
||||
extensions/binary/nativehelper*
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
2267890
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"$schema": "https://raw.githubusercontent.com/neutralinojs/neutralinojs/main/schemas/neutralino.config.schema.json",
|
||||
"applicationId": "org.stendhalgame.client",
|
||||
"version": "1.46.5",
|
||||
"version": "1.49.5",
|
||||
"defaultMode": "window",
|
||||
"port": 0,
|
||||
"documentRoot": "/resources/",
|
||||
|
|
@ -11,9 +11,9 @@
|
|||
"enableExtensions": true,
|
||||
"extensions": [
|
||||
{
|
||||
"id": "nativehelper",
|
||||
"commandLinux": "${NL_PATH}/extensions/binary/nativehelper",
|
||||
"commandWindows": "${NL_PATH}/extensions/binary/nativehelper.exe"
|
||||
"id": "nativehelper",
|
||||
"commandLinux": "${NL_PATH}/extensions/binary/nativehelper",
|
||||
"commandWindows": "${NL_PATH}/extensions/binary/nativehelper.exe"
|
||||
}
|
||||
],
|
||||
"tokenSecurity": "one-time",
|
||||
|
|
@ -55,7 +55,7 @@
|
|||
"resourcesPath": "/resources/",
|
||||
"extensionsPath": "/extensions/",
|
||||
"clientLibrary": "/resources/js/neutralino.js",
|
||||
"binaryVersion": "5.0.0",
|
||||
"clientVersion": "5.0.1"
|
||||
"binaryVersion": "6.2.0",
|
||||
"clientVersion": "6.2.0"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
90
bin/check-file-size.py
Executable file
|
|
@ -0,0 +1,90 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
'''
|
||||
***************************************************************************
|
||||
* Copyright © 2025 - Faiumoni e. V. *
|
||||
***************************************************************************
|
||||
***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************
|
||||
'''
|
||||
|
||||
import errno
|
||||
import os
|
||||
import sys
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
dir_root = Path(__file__).parent
|
||||
if "bin" == dir_root.name:
|
||||
dir_root = Path(dir_root.parent)
|
||||
dir_music = Path(dir_root, "data/music")
|
||||
dir_sounds = Path(dir_root, "data/sounds")
|
||||
|
||||
|
||||
## Checks if a file is larger than 2MB.
|
||||
#
|
||||
# On systems with low resources, the Java client struggles to load large audio files.
|
||||
#
|
||||
# @param path
|
||||
# File path.
|
||||
# @return
|
||||
# `EFBIG` if file is larger than 2MB, 0 otherwise.
|
||||
def checkAudioFileSize(path):
|
||||
if not path.is_file():
|
||||
# ignore if audio file doesn't exist
|
||||
print("WARNING: Ignoring file not found: {}".format(path))
|
||||
return 0
|
||||
|
||||
if path.stat().st_size > 1048576 * 2:
|
||||
# warn if file size > 2MB
|
||||
return errno.EFBIG
|
||||
return 0
|
||||
|
||||
## Checks directory for large audio files.
|
||||
#
|
||||
# @param path
|
||||
# Directory path to be walked.
|
||||
# @return
|
||||
# `EFBIG` if any file larger than 2MB found, 0 otherwise.
|
||||
def checkAudioDir(path):
|
||||
if not path.is_dir():
|
||||
# ignore if audio directory doesn't exist
|
||||
print("WARNING: Ignoring directory not found: {}".format(path))
|
||||
return 0
|
||||
|
||||
res = 0
|
||||
for ROOT, DIRS, FILES in path.walk():
|
||||
for filename in FILES:
|
||||
filepath = Path(ROOT, filename)
|
||||
if filepath.suffix.lower().lstrip(".") not in ("ogg", "oga", "mid", "midi"):
|
||||
# only check supported file types
|
||||
continue
|
||||
|
||||
code = checkAudioFileSize(filepath)
|
||||
if code == errno.EFBIG:
|
||||
res = code
|
||||
sys.stderr.write("WARNING: Audio file size larger than 2MB: {}\n".format(str(filepath)[len(str(dir_root)):].lstrip("/\\")))
|
||||
|
||||
return res
|
||||
|
||||
def main():
|
||||
res = 0
|
||||
for audio_dir in dir_music, dir_sounds:
|
||||
code = checkAudioDir(audio_dir)
|
||||
if code != 0:
|
||||
res = code
|
||||
if res == 0:
|
||||
print("No large audio data files detected")
|
||||
return res
|
||||
|
||||
if __name__ == "__main__":
|
||||
# work from source tree root
|
||||
os.chdir(dir_root)
|
||||
sys.exit(main())
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
@echo off
|
||||
|
||||
set STENDHAL_VERSION=1.46.5
|
||||
set STENDHAL_VERSION=1.49.5
|
||||
set SERVER_JAR=stendhal-server-%STENDHAL_VERSION%.jar
|
||||
|
||||
:: change to server directory
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
STENDHAL_VERSION="1.46.5"
|
||||
STENDHAL_VERSION="1.49.5"
|
||||
SERVER_JAR="stendhal-server-${STENDHAL_VERSION}.jar"
|
||||
|
||||
# change to server directory
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
#!/usr/bin/env python3
|
||||
#Tue Sep 10 23:32:58 CEST 2019, slightly tweaked -- omero
|
||||
|
||||
"""
|
||||
This script is used to create the world map with labeled zone names.
|
||||
|
|
@ -10,20 +9,19 @@ To create the labeled world map:
|
|||
* Open a command line
|
||||
* Change to your stendhal directory
|
||||
* Run
|
||||
ant rendermaps
|
||||
ant rendermaps
|
||||
* Change to the tiled directory
|
||||
* Run
|
||||
python vampire_maplabel.py -world
|
||||
python vampire_maplabel.py -world
|
||||
* Open tiled/world/world.tmx in tiled
|
||||
* Set the floor layer to opaque (no transparency)
|
||||
* Set the zoom to 1:1 (CTRL-0)
|
||||
* From the file menu, select "Save as Image"
|
||||
* Crop the black border (e.g. use "Crop Automatically" in The GIMP)
|
||||
* Upload the image, e.g. at http://imageshack.us
|
||||
* Replace your labeled image files from the tiled/world directory with
|
||||
the clean (unlabeled) ones from CVS.
|
||||
* Edit http://stendhalgame.org/wiki/Template:SmallWorldMap
|
||||
and add a link to your uploaded image.
|
||||
* Replace your labeled image files from the tiled/world directory with the clean (unlabeled) ones
|
||||
from CVS.
|
||||
* Edit http://stendhalgame.org/wiki/Template:SmallWorldMap and add a link to your uploaded image.
|
||||
"""
|
||||
|
||||
import sys
|
||||
|
|
@ -33,29 +31,38 @@ import os
|
|||
|
||||
from PIL import Image, ImageFont, ImageDraw
|
||||
|
||||
# get absolute path where script is located
|
||||
dir_root = os.path.dirname(__file__)
|
||||
if dir_root:
|
||||
os.chdir(dir_root)
|
||||
dir_root = os.getcwd()
|
||||
dir_world = os.path.join(dir_root, 'world')
|
||||
|
||||
script_name = os.path.basename(__file__)
|
||||
|
||||
# directory from where script was executed
|
||||
dir_start = os.getcwd()
|
||||
# path to root directory
|
||||
os.chdir(os.path.join(os.path.dirname(__file__), '../'))
|
||||
dir_root = os.getcwd()
|
||||
# directory relative to root where images are located
|
||||
subdir_world = os.path.normpath('data/maps/world')
|
||||
# absolute path to directory where images are located
|
||||
dir_world = os.path.join(dir_root, subdir_world)
|
||||
|
||||
protected = ('world', 'logo', 'reserved', 'empty', 'empty-white')
|
||||
|
||||
def showUsage():
|
||||
print ('Usage: {} [image-filenames...]'.format(script_name))
|
||||
print (' This will label each PNG file passed as argument.')
|
||||
print (' E.g: ./world/int_*.png will label all interiors, etc. etc.')
|
||||
print
|
||||
print ('Alternatively, you can run: {} -world'.format(script_name))
|
||||
print (' This will label each PNG file in the world subdirectory.')
|
||||
print('Usage: {} [image-filenames...]'.format(script_name))
|
||||
print(' This will label each PNG file passed as argument.')
|
||||
print(' E.g: data/maps/world/int_*.png will label all\n interiors, etc.')
|
||||
print(' Note: If filename parameters aren\'t found they\n are assumed to be nested within the\n {} directory.'.format(subdir_world))
|
||||
print()
|
||||
print('Alternatively, you can run: {} -world'.format(script_name))
|
||||
print(' This will label each PNG file in the world subdirectory.')
|
||||
|
||||
processed = 0
|
||||
def do_label(fname):
|
||||
print ('Processing {}'.format(fname))
|
||||
global processed
|
||||
|
||||
print('Processing {}'.format(fname))
|
||||
# remove directory and file extension
|
||||
label = os.path.basename(fname).split('/')[-1].replace('.png', '')
|
||||
print ('Processing LABEL: {}'.format(label))
|
||||
print('Processing LABEL: {}'.format(label))
|
||||
|
||||
img = Image.open(fname)
|
||||
img = img.convert('RGBA')
|
||||
|
|
@ -75,12 +82,43 @@ def do_label(fname):
|
|||
img.paste(img2, img2)
|
||||
|
||||
img.save(fname)
|
||||
processed += 1
|
||||
|
||||
|
||||
## Checks file path & converts to absolute.
|
||||
#
|
||||
# @param imagepath
|
||||
# Path to image file.
|
||||
def checkAbsPath(imagepath):
|
||||
if not imagepath.lower().endswith('.png'):
|
||||
# only PNG images supported
|
||||
imagepath += '.png'
|
||||
imagepath = os.path.normpath(imagepath)
|
||||
|
||||
# check from root directory
|
||||
if os.path.isfile(imagepath):
|
||||
return os.path.abspath(imagepath)
|
||||
|
||||
# check from directory where script was executed
|
||||
os.chdir(dir_start)
|
||||
if os.path.isfile(imagepath):
|
||||
imagepath = os.path.abspath(imagepath)
|
||||
else:
|
||||
# assume file is nested in `subdir_world`
|
||||
imagepath = os.path.join(dir_world, imagepath)
|
||||
# change back to root dir remaining execution
|
||||
os.chdir(dir_root)
|
||||
|
||||
return imagepath
|
||||
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
print('\nERROR: Not enough arguments\n')
|
||||
showUsage()
|
||||
sys.exit(1)
|
||||
elif len(sys.argv) == 2 and sys.argv[1] == '-world':
|
||||
|
||||
|
||||
if len(sys.argv) == 2 and sys.argv[1] == '-world':
|
||||
for fname in os.listdir(dir_world):
|
||||
if fname.endswith('.png'):
|
||||
absolute_fname = os.path.join(dir_world, fname)
|
||||
|
|
@ -89,14 +127,8 @@ elif len(sys.argv) == 2 and sys.argv[1] == '-world':
|
|||
continue
|
||||
do_label(absolute_fname)
|
||||
else:
|
||||
# This doesn't work for me. --mort
|
||||
#for fname in reduce(operator.add, map(glob.glob, sys.argv[1:])):
|
||||
|
||||
# This works for me. --omero
|
||||
for fname in list(sys.argv[1:]):
|
||||
if not fname.endswith('.png'):
|
||||
fname = '{}.png'.format(fname)
|
||||
absolute_fname = os.path.join(dir_world, fname)
|
||||
absolute_fname = checkAbsPath(fname)
|
||||
if fname.rstrip('.png') in protected:
|
||||
print('NOTE: skipping protected file: {}'.format(absolute_fname))
|
||||
continue
|
||||
|
|
@ -104,7 +136,10 @@ else:
|
|||
if not os.path.isfile(absolute_fname):
|
||||
print('\nERROR: Cannot process {}\n File does not exist.'.format(absolute_fname))
|
||||
sys.exit(1)
|
||||
print ( 'Labeling {}...'.format(fname ))
|
||||
print('Labeling {}...'.format(fname ))
|
||||
do_label(absolute_fname)
|
||||
|
||||
print ('All Done.')
|
||||
if processed == 0:
|
||||
print('\nWARNING: no images were processed')
|
||||
else:
|
||||
print('\nprocessed {} {}'.format(processed, 'image' if processed == 1 else 'images'))
|
||||
|
|
@ -91,10 +91,10 @@ updates_server_fallback = http://arianne.sourceforge.net/stendhal/updates
|
|||
version_server = http://arianne.sourceforge.net/stendhal.version
|
||||
|
||||
# current version of stendhal
|
||||
version.old = 1.46
|
||||
version = 1.46.5
|
||||
version.old = 1.49
|
||||
version = 1.49.5
|
||||
# FIXME: dynamic method to set this property?
|
||||
version.android = 1046005
|
||||
version.android = 1049005
|
||||
|
||||
# javac options
|
||||
javac.deprecation = true
|
||||
|
|
@ -102,17 +102,17 @@ javac.debug = true
|
|||
javac.debuglevel = source,lines
|
||||
|
||||
# change these only if you know what you are doing
|
||||
buildroot = build
|
||||
build = build
|
||||
buildroot = ${build}
|
||||
build-archive = build-archive
|
||||
src = src
|
||||
testsrc = tests
|
||||
srcjs = ${src}/js
|
||||
docu = data/docu
|
||||
maps = data/maps
|
||||
data = data/gui
|
||||
sprites = data/sprites
|
||||
layers = data/layers
|
||||
build = build
|
||||
docs = doc
|
||||
data = data
|
||||
gui = ${data}/gui
|
||||
maps = ${data}/maps
|
||||
sprites = ${data}/sprites
|
||||
lib = ${buildroot}/lib
|
||||
marauroa_root = ../marauroa
|
||||
marauroa_src = ${marauroa_root}/src
|
||||
|
|
|
|||
102
build.xml
|
|
@ -1,103 +1,33 @@
|
|||
<?xml version='1.0'?>
|
||||
|
||||
<project name="stendhal" default="compile" basedir=".">
|
||||
<!--
|
||||
Sets a property (by name and value), or set of properties (from file or resource) in the project. Properties are case sensitive.
|
||||
Properties are immutable: whoever sets a property first freezes it for the rest of the build; they are most definitely not variables.
|
||||
-->
|
||||
<property environment="env"/>
|
||||
<project name="stendhal" default="help" basedir=".">
|
||||
<description>
|
||||
Project:
|
||||
Name: .......... ${game_name}
|
||||
Version: ....... ${version}
|
||||
Root: .......... ${basedir}
|
||||
|
||||
<condition property="os.win">
|
||||
<os family="windows"/>
|
||||
</condition>
|
||||
Build system:
|
||||
Ant version: ... ${ant.version.number}
|
||||
Ant home: ...... ${ant.location}
|
||||
Java version: .. ${java.version}
|
||||
Java home: ..... ${java.home}
|
||||
|
||||
<condition property="exe.ext" value=".exe" else="">
|
||||
<equals arg1="${os.win}" arg2="true"/>
|
||||
</condition>
|
||||
<condition property="executable.npm" value="npm.cmd" else="npm">
|
||||
<equals arg1="${os.win}" arg2="true"/>
|
||||
</condition>
|
||||
Execute `ant help` for more information.
|
||||
</description>
|
||||
|
||||
<!-- Windows fails to execute "ng" unless it is invoked as "ng.cmd" -->
|
||||
<condition property="executable.suffix" value=".cmd">
|
||||
<os family="windows"/>
|
||||
</condition>
|
||||
<property name="executable.suffix" value=""/>
|
||||
|
||||
<property file="build.ant-private.properties"/>
|
||||
<property file="build.ant.properties"/>
|
||||
|
||||
<property name="build_tests" value="${buildroot}/build_tests"/>
|
||||
<property name="build_tests_report" value="${buildroot}/build_test_report"/>
|
||||
|
||||
<property name="build_client" value="${buildroot}/build_client"/>
|
||||
<property name="build_client_data" value="${buildroot}/build_client_data"/>
|
||||
<property name="build_client_sound_data" value="${buildroot}/build_client_sound_data"/>
|
||||
<property name="build_client_music_data" value="${buildroot}/build_client_music_data"/>
|
||||
|
||||
<property name="build_webclient" value="${buildroot}/build_webclient"/>
|
||||
|
||||
<property name="build_docker" value="${buildroot}/build_docker"/>
|
||||
<property name="buildtools_docker" value="buildtools/docker"/>
|
||||
|
||||
<property name="build_postman" value="${buildroot}/buildbot/"/>
|
||||
|
||||
<property name="build_server" value="${buildroot}/build_server"/>
|
||||
<property name="build_server_maps" value="${buildroot}/build_server_maps"/>
|
||||
<property name="build_server_script" value="${buildroot}/build_server_script"/>
|
||||
<property name="build_server_mods" value="${buildroot}/build_server_mods"/>
|
||||
<property name="build_server_xmlconf" value="${buildroot}/build_server_xmlconf"/>
|
||||
|
||||
<property name="build_stendhaltools" value="${buildroot}/build_stendhaltools"/>
|
||||
<property name="build_stendhaltextclient" value="${buildroot}/build_stendhaltextclient"/>
|
||||
|
||||
<property name="client_data" value="stendhal-data-${version}.jar"/>
|
||||
<property name="client_jarname" value="stendhal-${version}.jar"/>
|
||||
<property name="client_sound_data" value="stendhal-sound-data-${version}.jar"/>
|
||||
<property name="client_music_data" value="stendhal-music-data-${version}.jar"/>
|
||||
<property name="client_starter_jarname" value="stendhal-starter-${version}.jar"/>
|
||||
|
||||
<property name="dist_server_binary" value="${buildroot}/stendhal-server-${version}.zip" />
|
||||
|
||||
<property name="maps_jarname" value="stendhal-maps-${version}.jar"/>
|
||||
|
||||
<property name="server_jarname" value="stendhal-server-${version}.jar"/>
|
||||
<property name="xmlconf_jarname" value="stendhal-xmlconf-${version}.jar"/>
|
||||
|
||||
<property name="config_dir" value="data/conf"/>
|
||||
|
||||
<property name="schema_location" value="${config_dir}"/>
|
||||
|
||||
<property name="cobertura.dir" value="${libdir}/cobertura"/>
|
||||
|
||||
<condition property="exclude.signing" value="true">
|
||||
<not>
|
||||
<available file="keystore.ks"/>
|
||||
</not>
|
||||
</condition>
|
||||
<condition property="exclude.jardiff" value="true">
|
||||
<not>
|
||||
<available file="${build-archive}/stendhal-${version.old}.zip"/>
|
||||
</not>
|
||||
</condition>
|
||||
|
||||
<!-- time & date -->
|
||||
<tstamp>
|
||||
<format property="year" pattern="yyyy"/>
|
||||
<format property="date" pattern="yyyy-MM-dd"/>
|
||||
<format property="time" pattern="HH:mm:ss"/>
|
||||
</tstamp>
|
||||
<property name="datetime" value="${date} ${time}"/>
|
||||
|
||||
<!-- check for some executables -->
|
||||
<available property="python.present" file="python${exe.ext}" filepath="${env.PATH}"/>
|
||||
<available property="python3.present" file="python3${exe.ext}" filepath="${env.PATH}"/>
|
||||
|
||||
|
||||
<!-- Ant sub-modules -->
|
||||
|
||||
<import file="build-private.xml" optional="true"/>
|
||||
|
||||
<import file="${ant_modules}/properties.xml"/>
|
||||
<import file="${ant_modules}/info.xml"/>
|
||||
<import file="${ant_modules}/system.xml"/>
|
||||
<import file="${ant_modules}/apps.xml"/>
|
||||
<import file="${ant_modules}/main.xml"/>
|
||||
<import file="${ant_modules}/clean.xml"/>
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
<arg value="--target" />
|
||||
<arg value="x86_64-pc-windows-gnu" />
|
||||
</exec>
|
||||
<mkdir dir="app/neutralinojs/extensions/binary" />
|
||||
<exec executable="cargo" dir="app/nativehelper" failonerror="true" output="app/neutralinojs/extensions/binary/LICENSE.txt">
|
||||
<arg value="license" />
|
||||
<arg value="-ad" />
|
||||
|
|
@ -62,12 +63,12 @@
|
|||
-->
|
||||
<available file="app/neutralinojs/bin/neutralino-linux_x64" property="neutralinojs.present" />
|
||||
<target name="prepare-neutralinojs" unless="neutralinojs.present">
|
||||
<exec executable="neu" dir="app/neutralinojs" failonerror="true">
|
||||
<exec executable="${executable.neu}" dir="app/neutralinojs" failonerror="true">
|
||||
<arg value="update" />
|
||||
</exec>
|
||||
</target>
|
||||
<target name="neutralinojs" depends="prepare-neutralinojs">
|
||||
<exec executable="neu" dir="app/neutralinojs" failonerror="true">
|
||||
<exec executable="${executable.neu}" dir="app/neutralinojs" failonerror="true">
|
||||
<arg value="build" />
|
||||
</exec>
|
||||
<delete failonerror="false">
|
||||
|
|
@ -77,23 +78,33 @@
|
|||
<include name="*.log" />
|
||||
</fileset>
|
||||
</delete>
|
||||
<move
|
||||
file="app/neutralinojs/dist/stendhal-client/stendhal-client-linux_x64"
|
||||
tofile="app/neutralinojs/dist/stendhal-client/stendhal-client-linux" />
|
||||
<move
|
||||
file="app/neutralinojs/dist/stendhal-client/stendhal-client-win_x64.exe"
|
||||
tofile="app/neutralinojs/dist/stendhal-client/stendhal-client-windows.exe" />
|
||||
<chmod dir="app/neutralinojs/dist/stendhal-client/" type="file" perm="ugo+rx">
|
||||
<include name="stendhal*" />
|
||||
<include name="stendhal-client-linux" />
|
||||
<include name="**/nativehelper*" />
|
||||
</chmod>
|
||||
<!--
|
||||
<copy todir="dist/stendhal-client" flatten="true">
|
||||
<fileset dir="app/neutralinoks">
|
||||
<include name="LICENSE.txt" />
|
||||
</fileset>
|
||||
</copy>
|
||||
-->
|
||||
<copy file="app/neutralinojs/LICENSE.txt" tofile="app/neutralinojs/dist/stendhal-client/LICENSE.txt">
|
||||
<filterchain>
|
||||
<concatfilter append="app/neutralinojs/extensions/binary/LICENSE.txt" />
|
||||
</filterchain>
|
||||
</copy>
|
||||
|
||||
<echo file="app/neutralinojs/dist/stendhal-client/extensions/binary/steam_appid.txt">${steam-appid}</echo>
|
||||
<delete file="${buildroot}/stendhal-client-${version}.zip"/>
|
||||
<zip destfile="${buildroot}/stendhal-client-${version}.zip">
|
||||
<zipfileset dir="app/neutralinojs/dist/stendhal-client" prefix="stendhal-client" filemode="755">
|
||||
<include name="stendhal-client-linux" />
|
||||
<include name="**/nativehelper*" />
|
||||
</zipfileset>
|
||||
<zipfileset dir="app/neutralinojs/dist/stendhal-client" prefix="stendhal-client">
|
||||
<exclude name="stendhal-client-linux" />
|
||||
<exclude name="**/nativehelper*" />
|
||||
</zipfileset>
|
||||
</zip>
|
||||
</target>
|
||||
|
||||
|
||||
|
|
@ -150,7 +161,8 @@
|
|||
</target> <!-- client_android_build -->
|
||||
|
||||
|
||||
<target name="android" description="Create Android client package for release and distribution.">
|
||||
<!-- Create Android client package for release and distribution. -->
|
||||
<target name="android">
|
||||
<echo
|
||||
if:set="exclude.webview"
|
||||
message="ANDROID_SDK_ROOT environment variable not set. Skipping Android WebView client build."/>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
<project xmlns:if="ant:if" xmlns:unless="ant:unless">
|
||||
|
||||
<target name="clean" description="Delete all build files and directories.">
|
||||
<!-- Delete all build files and directories. -->
|
||||
<target name="clean">
|
||||
<delete includeEmptyDirs="true" quiet="true">
|
||||
<fileset dir="${buildroot}" excludes="eclipse/" defaultExcludes="false"/>
|
||||
</delete>
|
||||
|
|
@ -18,14 +19,16 @@
|
|||
</target>
|
||||
|
||||
|
||||
<target name="clean_client_data" description="Delete client data build files and directories.">
|
||||
<!-- Delete client data build files and directories. -->
|
||||
<target name="clean_client_data">
|
||||
<delete dir="${build_client_data}"/>
|
||||
<delete dir="${build_client_music_data}"/>
|
||||
<delete dir="${build_client_sound_data}"/>
|
||||
</target>
|
||||
|
||||
|
||||
<target name="cleanjs" description="Delete web client build files and directories.">
|
||||
<!-- Delete web client build files and directories. -->
|
||||
<target name="cleanjs">
|
||||
<delete dir="${buildroot}/js"/>
|
||||
<delete dir="${buildroot}/ts"/>
|
||||
</target>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,15 @@
|
|||
</condition>
|
||||
|
||||
|
||||
<target name="jar" depends="client_build,server_build" description="Build server and clients.">
|
||||
<!-- Build server and clients. -->
|
||||
<target name="jar" depends="client_build,server_build">
|
||||
<!-- XXX: client & server builds are not exclusive to NetBeans, remove this output? -->
|
||||
<echo>Built client and server for NetBeans.</echo>
|
||||
</target>
|
||||
|
||||
|
||||
<target name="signjar" unless="exclude.signing" description="Sign client distribution.">
|
||||
<!-- Sign client distribution. -->
|
||||
<target name="signjar" unless="exclude.signing">
|
||||
<signjar
|
||||
alias="${keystore.alias}"
|
||||
keystore="keystore.ks"
|
||||
|
|
@ -34,20 +36,23 @@
|
|||
</target>
|
||||
|
||||
|
||||
<!-- Generate JAR files for both client and server. -->
|
||||
<!-- XXX: why does this depend on "server_build" twice? -->
|
||||
<target name="compile" depends="server_build,client_build,server_build" description="Generate JAR files for both client and server."/>
|
||||
<target name="compile" depends="server_build,client_build,server_build" />
|
||||
|
||||
|
||||
<target name="dist" depends="clean,dist_binary,dist_source,signupdates" description="Create all packages for Stendhal release."/>
|
||||
<!-- Create all packages for Stendhal release. -->
|
||||
<target name="dist" depends="clean,dist_binary,dist_source,signupdates" />
|
||||
|
||||
|
||||
<target name="dist_binary" depends="clean,dist_server_binary,dist_client_binary,dist_client_starter,dist_webclient_binary"
|
||||
description="Create all binary packages for Stendhal release."/>
|
||||
<!-- Create all binary packages for Stendhal release. -->
|
||||
<target name="dist_binary" depends="clean,dist_server_binary,dist_client_binary,dist_client_starter,dist_webclient_binary" />
|
||||
|
||||
|
||||
<!-- START: source -->
|
||||
|
||||
<target name="dist_source" description="Create all source packages for Stendhal release.">
|
||||
<!-- Create all source packages for Stendhal release. -->
|
||||
<target name="dist_source">
|
||||
<mkdir dir="${buildroot}/stendhal-${version}-src"/>
|
||||
|
||||
<copy todir="${buildroot}/stendhal-${version}-src/src">
|
||||
|
|
@ -85,8 +90,8 @@
|
|||
<include name="*.html"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="${buildroot}/stendhal-${version}-src/doc">
|
||||
<fileset dir="doc"/>
|
||||
<copy todir="${buildroot}/stendhal-${version}-src/${docs}">
|
||||
<fileset dir="${docs}"/>
|
||||
<fileset dir="." includes="LICENSE.txt"/>
|
||||
</copy>
|
||||
|
||||
|
|
@ -104,7 +109,8 @@
|
|||
|
||||
<!-- START: client data -->
|
||||
|
||||
<target name="build_client_data" description="Build client data files.">
|
||||
<!-- Build client data files. -->
|
||||
<target name="build_client_data">
|
||||
<!-- base data -->
|
||||
<mkdir dir="${build_client_data}"/>
|
||||
<copy todir="${build_client_data}/data/sprites">
|
||||
|
|
@ -132,11 +138,15 @@
|
|||
<exclude name="logic/layer/"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
<mkdir dir="${maps}/parallax"/> <!-- in case no parallax images available -->
|
||||
<copy todir="${build_client_data}/data/maps/parallax">
|
||||
<fileset dir="${maps}/parallax" includes="**/*.png"/>
|
||||
</copy>
|
||||
<copy todir="${build_client_data}/data/font">
|
||||
<fileset dir="data/font"/>
|
||||
</copy>
|
||||
<copy todir="${build_client_data}/data/gui">
|
||||
<fileset dir="${data}">
|
||||
<fileset dir="${gui}">
|
||||
<exclude name="paneldrock009.jpg"/>
|
||||
<exclude name="panelmetal003.gif"/>
|
||||
<exclude name="panelrock016.jpg"/>
|
||||
|
|
@ -175,7 +185,8 @@
|
|||
|
||||
<!-- START: server -->
|
||||
|
||||
<target name="server_build" depends="init,checkxml" description="Compile JAR file for Stendhal server.">
|
||||
<!-- Compile JAR file for Stendhal server. -->
|
||||
<target name="server_build" depends="init,checkxml">
|
||||
<mkdir dir="${build_server}"/>
|
||||
|
||||
<copy todir="${build_server}/data/conf" file="data/conf/stendhalcreateaccount.properties"/>
|
||||
|
|
@ -336,7 +347,8 @@
|
|||
</target> <!-- server_build -->
|
||||
|
||||
|
||||
<target name="dist_server_binary" depends="server_build" description="Create server package for release and distribution.">
|
||||
<!-- Create server package for release and distribution. -->
|
||||
<target name="dist_server_binary" depends="server_build">
|
||||
<mkdir dir="${buildroot}/stendhal-server-${version}"/>
|
||||
|
||||
<copy todir="${buildroot}/stendhal-server-${version}/data/script">
|
||||
|
|
@ -362,8 +374,8 @@
|
|||
<copy todir="${buildroot}/stendhal-server-${version}/libs">
|
||||
<fileset dir="libs"/>
|
||||
</copy>
|
||||
<copy todir="${buildroot}/stendhal-server-${version}/doc">
|
||||
<fileset dir="doc"/>
|
||||
<copy todir="${buildroot}/stendhal-server-${version}/${docs}">
|
||||
<fileset dir="${docs}"/>
|
||||
<fileset dir="." includes="LICENSE.txt"/>
|
||||
</copy>
|
||||
|
||||
|
|
@ -388,10 +400,12 @@
|
|||
</target> <!-- dist_server_binary -->
|
||||
|
||||
|
||||
<target name="dist_docker" depends="docker_build,docker_push" description="Build and push container image."/>
|
||||
<!-- Build and push container image. -->
|
||||
<target name="dist_docker" depends="docker_build,docker_push" />
|
||||
|
||||
|
||||
<target name="docker_build_prepare" depends="dist_server_binary" description="Prepare container image build.">
|
||||
<!-- Prepare container image build. -->
|
||||
<target name="docker_build_prepare" depends="dist_server_binary">
|
||||
<mkdir dir="${build_docker}" />
|
||||
<copy file="${buildtools_docker}/Dockerfile" todir="${build_docker}" />
|
||||
<copy file="${buildtools_docker}/.dockerignore" todir="${build_docker}" />
|
||||
|
|
@ -400,7 +414,8 @@
|
|||
</target> <!-- docker_build_prepare -->
|
||||
|
||||
|
||||
<target name="docker_build" depends="docker_build_prepare" description="Build container image.">
|
||||
<!-- Build container image. -->
|
||||
<target name="docker_build" depends="docker_build_prepare">
|
||||
<exec dir="${build_docker}" executable="docker">
|
||||
<arg value="build" />
|
||||
<arg value="-t" />
|
||||
|
|
@ -410,28 +425,57 @@
|
|||
</target> <!-- docker_build -->
|
||||
|
||||
|
||||
<target name="docker_push" description="Push container image."/>
|
||||
<!-- Push container image. -->
|
||||
<target name="docker_push" />
|
||||
|
||||
|
||||
<target name="server_run" depends="server_build,compilejs" description="Run server.">
|
||||
<mkdir dir="run_srvr"/>
|
||||
<!-- Run server. -->
|
||||
<target name="server_run" depends="server_build,compilejs">
|
||||
<mkdir dir="run_srvr/libs"/>
|
||||
<mkdir dir="run_srvr/js"/>
|
||||
|
||||
<copy todir="run_srvr">
|
||||
<fileset file="build/lib/${server_jarname}"/>
|
||||
<fileset file="build/lib/${xmlconf_jarname}"/>
|
||||
<fileset file="build/lib/${maps_jarname}"/>
|
||||
<fileset file="libs/marauroa.jar"/>
|
||||
<fileset file="libs/groovy.jar"/>
|
||||
<fileset file="libs/guava.jar"/>
|
||||
<fileset file="libs/log4j.jar"/>
|
||||
<fileset file="libs/${mysqldriver_jarname}"/>
|
||||
</copy>
|
||||
|
||||
<copy todir="run_srvr/libs">
|
||||
<fileset file="${marauroa_jar}" />
|
||||
<fileset file="${groovy_jar}" />
|
||||
<fileset file="${guava_jar}" />
|
||||
<fileset file="${log4j_jar}" />
|
||||
<fileset file="${mysqldriver_jar}" />
|
||||
<fileset file="${h2_jar}" />
|
||||
<fileset file="${hamcrest_jar}" />
|
||||
<fileset file="${tomcatcore_jar}" />
|
||||
<fileset file="${tomcatwebsocket_jar}" />
|
||||
<fileset file="${jakartaannotation_jar}" />
|
||||
<fileset file="${luaj_jar}" />
|
||||
<fileset file="${jsonsimple_jar}" />
|
||||
</copy>
|
||||
|
||||
<copy todir="run_srvr/js">
|
||||
<fileset dir="${srcjs}">
|
||||
<exclude name="stendhal/" />
|
||||
<exclude name="stendhal-compiled.js.map" />
|
||||
<exclude name=".gitignore" />
|
||||
</fileset>
|
||||
</copy>
|
||||
|
||||
<chmod file="run_srvr/${server_jarname}" perm="+x"/>
|
||||
|
||||
<exec dir="." executable="java">
|
||||
<arg line="-Xmx256m -cp run_srvr -jar run_srvr/${server_jarname} -c server.ini -l"/>
|
||||
</exec>
|
||||
<java jar="run_srvr/${server_jarname}"
|
||||
fork="true"
|
||||
failonerror="true"
|
||||
maxmemory="256m">
|
||||
<arg value="-c" />
|
||||
<arg value="server.ini" />
|
||||
<arg value="-l" />
|
||||
<classpath>
|
||||
<pathelement location="${basedir}" />
|
||||
</classpath>
|
||||
</java>
|
||||
|
||||
<!-- we've run the program, so delete the jars -->
|
||||
<delete dir="run_srvr"/>
|
||||
|
|
@ -442,7 +486,8 @@
|
|||
|
||||
<!-- START: java client -->
|
||||
|
||||
<target name="client_build" depends="init,build_client_data" description="Compile client JAR file.">
|
||||
<!-- Compile client JAR file. -->
|
||||
<target name="client_build" depends="init,build_client_data">
|
||||
<mkdir dir="${build_client}"/>
|
||||
|
||||
<copy todir="${build_client}/games/stendhal/client">
|
||||
|
|
@ -490,7 +535,7 @@
|
|||
|
||||
<!-- compile Starter.java for Java 1.7. So we will be able to
|
||||
display a dialogbox if running on an old Java Version -->
|
||||
<javac srcdir="${src}" destdir="${build_client}" debug="${javac.debug}" debuglevel="${javac.debuglevel}" source="1.7" target="1.7" deprecation="${javac.deprecation}" includeantruntime="false">
|
||||
<javac srcdir="${src}" destdir="${build_client}" debug="${javac.debug}" debuglevel="${javac.debuglevel}" source="1.8" target="1.8" deprecation="${javac.deprecation}" includeantruntime="false">
|
||||
<include name="games/stendhal/client/update/Starter.java"/>
|
||||
|
||||
<compilerarg value="-encoding"/>
|
||||
|
|
@ -535,7 +580,8 @@
|
|||
</target> <!-- client_build -->
|
||||
|
||||
|
||||
<target name="compile_stendhaltextclient" description="Compile text client.">
|
||||
<!-- Compile text client. -->
|
||||
<target name="compile_textclient">
|
||||
<mkdir dir="${build_stendhaltextclient}"/>
|
||||
|
||||
<javac srcdir="${src}" destdir="${build_stendhaltextclient}" source="1.8" target="1.8" debug="${javac.debug}" debuglevel="${javac.debuglevel}" deprecation="${javac.deprecation}" includeantruntime="false">
|
||||
|
|
@ -556,8 +602,12 @@
|
|||
</javac>
|
||||
</target> <!-- compile_stendhaltextclient -->
|
||||
|
||||
<!-- Alias of `compile_textclient`. -->
|
||||
<target name="compile_stendhaltextclient" depends="compile_textclient" />
|
||||
|
||||
<target name="dist_client_binary" depends="clean_client_data,client_build" description="Create Java client package for release and distribution.">
|
||||
|
||||
<!-- Create Java client package for release and distribution. -->
|
||||
<target name="dist_client_binary" depends="clean_client_data,client_build">
|
||||
<mkdir dir="${buildroot}/stendhal-${version}"/>
|
||||
<mkdir dir="${buildroot}/stendhal-${version}/lib"/>
|
||||
<mkdir dir="${buildroot}/stendhal-${version}/log"/>
|
||||
|
|
@ -577,8 +627,8 @@
|
|||
<include name="*.html"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="${buildroot}/stendhal-${version}/doc">
|
||||
<fileset dir="doc"/>
|
||||
<copy todir="${buildroot}/stendhal-${version}/${docs}">
|
||||
<fileset dir="${docs}"/>
|
||||
<fileset file="LICENSE.txt"/>
|
||||
</copy>
|
||||
<touch file="${buildroot}/stendhal-${version}/log/stendhal.txt"/>
|
||||
|
|
@ -593,8 +643,8 @@
|
|||
</target> <!-- dist_client_binary -->
|
||||
|
||||
|
||||
<!-- XXX: is this still used? -->
|
||||
<target name="dist_client_starter" depends="client_build" description="Create Java client starter package.">
|
||||
<!-- Create Java client starter package (obsolete). -->
|
||||
<target name="dist_client_starter" depends="client_build">
|
||||
<mkdir dir="${buildroot}/stendhal-${version}"/>
|
||||
<copy todir="${buildroot}/stendhal-${version}" file="${lib}/${client_starter_jarname}"/>
|
||||
<copy todir="${buildroot}/stendhal-${version}/lib">
|
||||
|
|
@ -603,10 +653,8 @@
|
|||
<include name="*.html"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="${buildroot}/stendhal-${version}/doc">
|
||||
<fileset dir="doc">
|
||||
<exclude name="mkdocs/"/>
|
||||
</fileset>
|
||||
<copy todir="${buildroot}/stendhal-${version}/${docs}">
|
||||
<fileset dir="${docs}"/>
|
||||
<fileset file="LICENSE.txt"/>
|
||||
</copy>
|
||||
<copy todir="${buildroot}/stendhal-${version}" file="README.md"/>
|
||||
|
|
@ -618,7 +666,8 @@
|
|||
</target> <!-- dist_client_starter -->
|
||||
|
||||
|
||||
<target name="client_run" depends="client_build" description="Run Java client.">
|
||||
<!-- Run Java client. -->
|
||||
<target name="client_run" depends="client_build">
|
||||
<mkdir dir="run_clnt"/>
|
||||
<mkdir dir="run_clnt/lib"/>
|
||||
|
||||
|
|
@ -654,8 +703,9 @@
|
|||
</target> <!-- client_run -->
|
||||
|
||||
|
||||
<!-- Run client for NetBeans trick. -->
|
||||
<!-- Netbeans won't let you choose ant options, so this does it for us-->
|
||||
<target name="run" depends="client_run" description="Run client for NetBeans trick."/>
|
||||
<target name="run" depends="client_run" />
|
||||
|
||||
<!-- END: java client -->
|
||||
|
||||
|
|
@ -663,34 +713,46 @@
|
|||
<!-- START: web client -->
|
||||
|
||||
<target name="js-prepare-marauroa">
|
||||
<mkdir dir="build/js"/>
|
||||
<unzip dest="build" src="libs/marauroa.jar">
|
||||
<mkdir dir="node_modules/marauroa"/>
|
||||
<unzip dest="node_modules/marauroa" src="libs/marauroa.jar">
|
||||
<mapper type="flatten"/>
|
||||
<patternset>
|
||||
<include name="js/**"/>
|
||||
</patternset>
|
||||
</unzip>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
<target name="js-prepare-build">
|
||||
<echo file="build/js/build.js">
|
||||
var stendhal = window.stendhal = window.stendhal || {};
|
||||
stendhal.data = stendhal.data || {};
|
||||
<mkdir dir="node_modules/marauroa"/>
|
||||
<echo file="node_modules/marauroa/build.js">
|
||||
export function version(marauroa, stendhal) {
|
||||
stendhal.data = stendhal.data || {};
|
||||
|
||||
stendhal.data.build = {
|
||||
version: "${version}",
|
||||
build: "${datetime}",
|
||||
dist: "webclient"
|
||||
}
|
||||
stendhal.data.build = {
|
||||
version: "${version}",
|
||||
build: "${datetime}",
|
||||
dist: "webclient"
|
||||
}
|
||||
|
||||
//CI
|
||||
}
|
||||
</echo>
|
||||
<antcall target="js-prepare-build-ci" />
|
||||
</target>
|
||||
|
||||
<target name="js-prepare-build-ci" if="ci.build.info">
|
||||
<loadfile property="cibuildinfo" srcFile="${ci.build.info}" failonerror="false" quiet="true"/>
|
||||
<replace file="node_modules/marauroa/build.js" token="//CI" value="${cibuildinfo}" />
|
||||
</target>
|
||||
|
||||
|
||||
<extension-point name="js-prepare" depends="js-prepare-marauroa,js-prepare-build,js-prepare-node,js-prepare-contribs"/>
|
||||
<extension-point name="js-prepare" depends="js-prepare-node,js-prepare-contribs,js-prepare-marauroa,js-prepare-build"/>
|
||||
|
||||
|
||||
<target name="js-prepare-node">
|
||||
<exec executable="npm${executable.suffix}" failonerror="true">
|
||||
<exec executable="${executable.npm}" failonerror="true">
|
||||
<arg value="install"/>
|
||||
<arg value="--no-save"/>
|
||||
</exec>
|
||||
|
|
@ -698,11 +760,11 @@
|
|||
|
||||
|
||||
<target name="js-prepare-contribs" depends="js-prepare-node">
|
||||
<exec executable="npx${executable.suffix}" failonerror="true">
|
||||
<exec executable="${executable.npx}" failonerror="true">
|
||||
<arg value="showdown"/>
|
||||
<arg value="makehtml"/>
|
||||
<arg value="--input"/>
|
||||
<arg value="doc/contributors.md"/>
|
||||
<arg value="${docs}/contributors.md"/>
|
||||
<arg value="--output"/>
|
||||
<arg value="${srcjs}/contributors.html"/>
|
||||
</exec>
|
||||
|
|
@ -711,72 +773,19 @@
|
|||
|
||||
<!-- TODO: Do not write stendhal-compiled.js to the source directory tree but directly to the compiled directory tree -->
|
||||
<target name="js-invoke-compiler">
|
||||
<exec executable="npx${executable.suffix}" dir="${srcjs}/stendhal" failonerror="true">
|
||||
|
||||
<exec executable="${executable.npx}" dir="${srcjs}/stendhal" failonerror="true">
|
||||
<arg value="tsc"/>
|
||||
</exec>
|
||||
|
||||
<property name="js-debug" value="--debug --formatting=PRETTY_PRINT --create_source_map ${srcjs}/stendhal-compiled.js.map --source_map_include_content"/>
|
||||
|
||||
<property name="js-files-license" value="${srcjs}/stendhal/license.js"/>
|
||||
<property name="js-files-marauroa" value="build/js/marauroa.js build/js/client-framework.js build/js/message-factory.js build/js/perception.js build/js/rpfactory.js build/js/inflate.js build/js/deserializer.js"/>
|
||||
<property name="js-files-config" value="build/js/build.js"/>
|
||||
<property name="js-files-lib1" value="${srcjs}/jsxgraph-util.js"/>
|
||||
<property name="js-files-lib2" value=""/>
|
||||
<property name="js-files-data1" value="${srcjs}/stendhal/data/sha3.js"/>
|
||||
<property name="js-files-data2" value=""/>
|
||||
<property name="js-files-entity5" value=""/>
|
||||
<property name="js-files-entity6" value=""/>
|
||||
<property name="js-files-ui1" value=""/>
|
||||
<property name="js-files-ui2" value=""/>
|
||||
<property name="js-files-ui3" value=""/>
|
||||
<property name="js-files-main1" value=""/>
|
||||
<property name="js-files-ui4" value=""/>
|
||||
<property name="js-files-main2" value="${srcjs}/stendhal/main.js"/>
|
||||
<property name="js-files-main3" value=""/>
|
||||
<property name="js-files-ts" value="build/ts/*.js build/ts/**/*.js"/>
|
||||
<property name="js-files-ts2" value=""/>
|
||||
|
||||
|
||||
<java jar="buildtools/closure-compiler/compiler.jar"
|
||||
fork="true"
|
||||
failonerror="true"
|
||||
maxmemory="128m">
|
||||
<arg value="--language_in=ECMASCRIPT_2020"/>
|
||||
<arg value="--language_out=STABLE"/>
|
||||
<arg value="--compilation_level"/>
|
||||
<arg value="ADVANCED"/>
|
||||
<arg line="${js-debug}"/>
|
||||
<arg value="--process_common_js_modules"/>
|
||||
<arg value="--module_resolution=node"/>
|
||||
<arg value="--jscomp_off=checkVars"/>
|
||||
<!-- DEBUG: -->
|
||||
<!--<arg value="-\-jscomp_off=globalThis"/>-->
|
||||
|
||||
<arg value="--js_output_file=${srcjs}/stendhal-compiled.js"/>
|
||||
|
||||
<arg line="${js-files-license}"/>
|
||||
<arg line="${js-files-marauroa}"/>
|
||||
<arg line="${js-files-config}"/>
|
||||
<arg line="${js-files-lib1}"/>
|
||||
<arg line="${js-files-lib2}"/>
|
||||
<arg line="${js-files-data1}"/>
|
||||
<arg line="${js-files-data2}"/>
|
||||
<arg line="${js-files-entity5}"/>
|
||||
<arg line="${js-files-entity6}"/>
|
||||
<arg line="${js-files-ui1}"/>
|
||||
<arg line="${js-files-ui2}"/>
|
||||
<arg line="${js-files-ui3}"/>
|
||||
<arg line="${js-files-main1}"/>
|
||||
<arg line="${js-files-ui4}"/>
|
||||
<arg line="${js-files-main2}"/>
|
||||
<arg line="${js-files-main3}"/>
|
||||
<arg line="${js-files-ts}"/>
|
||||
<arg line="${js-files-ts2}"/>
|
||||
</java>
|
||||
|
||||
<echo file="${srcjs}/stendhal-compiled.js" append="true">
|
||||
//# sourceMappingURL=stendhal-compiled.js.map
|
||||
</echo>
|
||||
<exec executable="${executable.npx}" dir="${srcjs}/stendhal" failonerror="true">
|
||||
<arg value="esbuild"/>
|
||||
<arg value="--bundle"/>
|
||||
<arg value="--outfile=../stendhal-compiled.js"/>
|
||||
<arg value="--platform=browser"/>
|
||||
<!-- <arg value="- -minify"/> -->
|
||||
<arg value="main.ts"/>
|
||||
</exec>
|
||||
|
||||
<antcall target="compilejs-hook" />
|
||||
|
||||
|
|
@ -793,7 +802,8 @@
|
|||
</target>
|
||||
|
||||
|
||||
<target name="compilejs" depends="cleanjs" description="Compile web client.">
|
||||
<!-- Compile web client. -->
|
||||
<target name="compilejs" depends="cleanjs">
|
||||
<antcall target="js-prepare" unless:set="exclude.webclient"/>
|
||||
<antcall target="js-invoke-compiler" unless:set="exclude.webclient"/>
|
||||
|
||||
|
|
@ -802,7 +812,8 @@
|
|||
</target> <!-- compilejs -->
|
||||
|
||||
|
||||
<target name="webclient_build" depends="compilejs,clean_client_data,build_client_data" description="Compile and stage web client files.">
|
||||
<!-- Compile and stage web client files. -->
|
||||
<target name="webclient_build" depends="compilejs,clean_client_data,build_client_data">
|
||||
<mkdir dir="${build_webclient}"/>
|
||||
|
||||
<copy todir="${build_webclient}">
|
||||
|
|
@ -824,17 +835,16 @@
|
|||
</target> <!-- webclient_build -->
|
||||
|
||||
|
||||
<target name="build_webclient" depends="webclient_build" description="Alias of webclient_build."/>
|
||||
|
||||
|
||||
<target name="dist_webclient_binary" depends="webclient_build" description="Create web client package for release and distribution.">
|
||||
<!-- Create web client package for release and distribution. -->
|
||||
<target name="dist_webclient_binary" depends="webclient_build">
|
||||
<zip destfile="${buildroot}/stendhal-webclient-${version}.zip">
|
||||
<zipfileset dir="${build_client_data}"/>
|
||||
<zipfileset dir="${build_client_music_data}"/>
|
||||
<zipfileset dir="${build_client_sound_data}"/>
|
||||
<zipfileset dir="${build_webclient}" prefix="js"/>
|
||||
<zipfileset dir="doc" prefix="doc">
|
||||
<zipfileset dir="${docs}" prefix="doc">
|
||||
<include name="contributors.md"/>
|
||||
<include name="ReleaseNotes.txt"/>
|
||||
<include name="Licenses/**"/>
|
||||
<include name="sources/**"/>
|
||||
</zipfileset>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@
|
|||
<delete dir="${buildroot}/build_docs"/>
|
||||
</target>
|
||||
|
||||
<target name="docs" description="Generate HTML documentation for Java, TypeScript, and Lua APIs." depends="luadocs,javadocs,tsdocs"/>
|
||||
<!-- Generate HTML documentation for Java, TypeScript, and Lua APIs. -->
|
||||
<target name="docs" depends="luadocs,javadocs,tsdocs"/>
|
||||
|
||||
|
||||
<!-- Java documentation -->
|
||||
|
|
@ -88,7 +89,7 @@
|
|||
|
||||
|
||||
<target name="tsdocs" depends="clean_tsdocs,js-prepare-node">
|
||||
<exec executable="npx${executable.suffix}" dir="${srcjs}/stendhal" failonerror="true">
|
||||
<exec executable="${executable.npx}" dir="${srcjs}/stendhal" failonerror="true">
|
||||
<arg value="typedoc"/>
|
||||
<arg value="--entryPointStrategy"/>
|
||||
<arg value="expand"/>
|
||||
|
|
@ -108,7 +109,7 @@
|
|||
message="Python unavailable, cannot run mkdocs"/>
|
||||
|
||||
<!-- NOTE: MkDocs create the top-level index.html -->
|
||||
<exec if:true="${python.present}" executable="python" failonerror="true"
|
||||
<exec executable="${executable.python}" if:true="${python.present}" failonerror="true"
|
||||
dir="./buildtools/mkdocs/">
|
||||
<arg value="-u"/>
|
||||
<arg value="build.py"/>
|
||||
|
|
|
|||
86
buildtools/ant_modules/info.xml
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
<?xml version='1.0'?>
|
||||
|
||||
<project>
|
||||
|
||||
<target name="info" description="Print project build information.">
|
||||
<echo level="info" message="Project:" />
|
||||
<echo level="info" message=" Name: .......... ${game_name}" />
|
||||
<echo level="info" message=" Version: ....... ${version}" />
|
||||
<echo level="info" message=" Root: .......... ${basedir}" />
|
||||
<echo level="info" />
|
||||
<echo level="info" message="Build system:" />
|
||||
<echo level="info" message=" Ant version: ... ${ant.version.number}" />
|
||||
<echo level="info" message=" Ant home: ...... ${ant.location}" />
|
||||
<echo level="info" message=" Java version: .. ${java.version}" />
|
||||
<echo level="info" message=" Java home: ..... ${java.home}" />
|
||||
</target>
|
||||
|
||||
<target name="help" description="Print project build and help information." depends="info">
|
||||
<echo level="info" message="Usage:" />
|
||||
<echo level="info" message=" ant <target> [<target>...]" />
|
||||
<echo level="info" />
|
||||
<echo level="info" />
|
||||
<echo level="info" message="=== TARGETS ===" />
|
||||
<echo level="info" />
|
||||
<echo level="info" message="General:" />
|
||||
<echo level="info" message=" info: ........................ Print project build information." />
|
||||
<echo level="info" message=" help: ........................ Print project build and help information." />
|
||||
<echo level="info" message=" init: ........................ Update version and resource info." />
|
||||
<echo level="info" message=" checkxml: .................... Verify XML files are well-formed." />
|
||||
<echo level="info" />
|
||||
<echo level="info" message="Build:" />
|
||||
<echo level="info" message=" server_build: ................ Compile JAR file for Stendhal server." />
|
||||
<echo level="info" message=" client_build: ................ Compile client JAR file." />
|
||||
<echo level="info" message=" webclient_build: ............. Compile and stage web client files." />
|
||||
<echo level="info" message=" compile_textclient: .......... Compile text client." />
|
||||
<echo level="info" message=" compile: ..................... Generate JAR files for both client and server." />
|
||||
<echo level="info" message=" compilejs: ................... Compile web client." />
|
||||
<echo level="info" message=" compile_tools: ............... Compile Stendhal build tools." />
|
||||
<echo level="info" message=" server_run: .................. Run server." />
|
||||
<echo level="info" message=" client_run: .................. Run Java client." />
|
||||
<echo level="info" message=" postman: ..................... Build postman bot." />
|
||||
<echo level="info" />
|
||||
<echo level="info" message="Testing:" />
|
||||
<echo level="info" message=" compile_tests: ............... Compile all tests." />
|
||||
<echo level="info" message=" run_tests: ................... Run all tests." />
|
||||
<echo level="info" message=" test: ........................ Compile and run all tests." />
|
||||
<echo level="info" />
|
||||
<echo level="info" message="Build cleaning:" />
|
||||
<echo level="info" message=" clean: ....................... Delete all build files and directories." />
|
||||
<echo level="info" message=" clean_client_data: ........... Delete client data build files and directories." />
|
||||
<echo level="info" message=" cleanjs: ..................... Delete web client build files and directories." />
|
||||
<echo level="info" />
|
||||
<echo level="info" message="Source maintanence:" />
|
||||
<echo level="info" message=" clean_whitespace: ............ Clean whitespace in source and other specified file types." />
|
||||
<echo level="info" />
|
||||
<echo level="info" message="Distribution:" />
|
||||
<echo level="info" message=" dist_source: ................. Create all source packages for Stendhal release." />
|
||||
<echo level="info" message=" dist_binary: ................. Create all binary packages for Stendhal release." />
|
||||
<echo level="info" message=" dist_server_binary: .......... Create server package for release and distribution." />
|
||||
<echo level="info" message=" dist_client_binary: .......... Create Java client package for release and distribution." />
|
||||
<echo level="info" message=" dist_webclient_binary: ....... Create web client package for release and distribution." />
|
||||
<echo level="info" message=" dist_client_starter: ......... Create Java client starter package (obsolete)." />
|
||||
<echo level="info" message=" dist: ........................ Create all packages for Stendhal release." />
|
||||
<echo level="info" message=" android: ..................... Create Android client package for release and distribution." />
|
||||
<echo level="info" />
|
||||
<echo level="info" message="Resources:" />
|
||||
<echo level="info" message=" rendermaps: .................. Convert TMX maps to PNG images scaled 1:16." />
|
||||
<echo level="info" message=" renderatlas: ................. Generate files for the Stendhal Atlas." />
|
||||
<echo level="info" message=" renderworldmap: .............. Export world.tmx map to PNG image." />
|
||||
<echo level="info" message=" updatemaps: .................. Load and save TMX maps to fix tilesets changes." />
|
||||
<echo level="info" />
|
||||
<echo level="info" message="Documentation:" />
|
||||
<echo level="info" message=" docs: ........................ Generate HTML documentation for Java, TypeScript, and Lua APIs." />
|
||||
<echo level="info" />
|
||||
<echo level="info" message="Localization:" />
|
||||
<echo level="info" message=" locale_template: ............. Creates a template for translating." />
|
||||
<echo level="info" message=" locale_update: ............... Update translation files from template." />
|
||||
<echo level="info" />
|
||||
<echo level="info" message="Aliases:" />
|
||||
<echo level="info" message=" compile_stendhaltextclient: .. Alias of `compile_textclient`." />
|
||||
<echo level="info" message=" compile_stendhaltools: ....... Alias of `compile_tools`." />
|
||||
<echo level="info" />
|
||||
<echo level="info" message="Execute `ant -p -v` for a full list of build targets." />
|
||||
</target>
|
||||
|
||||
</project>
|
||||
|
|
@ -2,21 +2,23 @@
|
|||
|
||||
<project xmlns:if="ant:if" xmlns:unless="ant:unless">
|
||||
|
||||
<target name="locale_build_template" description="Creates a template for translating.">
|
||||
<!-- Creates a template for translating. -->
|
||||
<target name="locale_template">
|
||||
<echo unless:true="${python.present}" message="Python unavailable, cannot build locale template"/>
|
||||
|
||||
<exec if:true="${python.present}" executable="python" failonerror="true" dir="${buildtools}">
|
||||
<exec executable="${executable.python}" if:true="${python.present}" failonerror="true">
|
||||
<arg value="-u"/>
|
||||
<arg value="locale_template.py"/>
|
||||
<arg value="./bin/locale-template.py"/>
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="locale_update" description="Update translation files from template.">
|
||||
<!-- Update translation files from template. -->
|
||||
<target name="locale_update">
|
||||
<echo unless:true="${python.present}" message="Python unavailable, cannot update translations"/>
|
||||
|
||||
<exec if:true="${python.present}" executable="python" failonerror="true" dir="${buildtools}">
|
||||
<exec executable="${executable.python}" if:true="${python.present}" failonerror="true">
|
||||
<arg value="-u"/>
|
||||
<arg value="locale_template.py"/>
|
||||
<arg value="./bin/locale-template.py"/>
|
||||
<arg value="--update"/>
|
||||
</exec>
|
||||
</target>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
<project xmlns:if="ant:if" xmlns:unless="ant:unless">
|
||||
|
||||
<target name="init" description="Update version and resource info.">
|
||||
<!-- Update version and resource info. -->
|
||||
<target name="init">
|
||||
<mkdir dir="${lib}"/>
|
||||
|
||||
<!-- update version -->
|
||||
|
|
@ -42,6 +43,10 @@
|
|||
match=""version": ".*""
|
||||
replace=""version": "${version}""
|
||||
byline="true"/>
|
||||
<replaceregexp file="${src}/games/stendhal/client/update/HttpClient.java"
|
||||
match="StendhalClient/.* \("
|
||||
replace="StendhalClient/${version} \("
|
||||
byline="true"/>
|
||||
|
||||
<!-- update location of resources -->
|
||||
<replaceregexp file="${src}/games/stendhal/client/update/game-default.properties"
|
||||
|
|
@ -85,7 +90,8 @@
|
|||
</target> <!-- init -->
|
||||
|
||||
|
||||
<target name="checkxml" description="Verify XML files are well-formed.">
|
||||
<!-- Verify XML files are well-formed. -->
|
||||
<target name="checkxml">
|
||||
<schemavalidate failonerror="yes" lenient="yes" warn="yes">
|
||||
<schema namespace="stendhal" file="${config_dir}/zones.xsd"/>
|
||||
<fileset dir="${config_dir}/zones">
|
||||
|
|
@ -163,7 +169,8 @@
|
|||
</target> <!-- checkxml -->
|
||||
|
||||
|
||||
<target name="internalUpdatePrereleaseVersion" if="PRE_RELEASE" description="Add date to pre-release test client.">
|
||||
<!-- Add date to pre-release test client. -->
|
||||
<target name="internalUpdatePrereleaseVersion" if="PRE_RELEASE">
|
||||
<tstamp prefix="date">
|
||||
<format property="iso" pattern="yyyy-MM-dd"/>
|
||||
</tstamp>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@
|
|||
|
||||
<import file="tools.xml" />
|
||||
|
||||
<target name="rendermaps" description="Convert TMX maps to PNG images scaled 1:16." depends="compile_stendhaltools">
|
||||
<!-- Convert TMX maps to PNG images scaled 1:16. -->
|
||||
<target name="rendermaps" depends="compile_stendhaltools">
|
||||
<taskdef name="maprenderer" classname="games.stendhal.tools.MapRenderer">
|
||||
<classpath>
|
||||
<pathelement path="${build_stendhaltools}"/>
|
||||
|
|
@ -12,9 +13,9 @@
|
|||
</classpath>
|
||||
</taskdef>
|
||||
|
||||
<mkdir dir="tiled/world"/>
|
||||
<mkdir dir="${maps}/world"/>
|
||||
<maprenderer imagePath="${maps}/world/">
|
||||
<fileset dir="tiled">
|
||||
<fileset dir="${maps}">
|
||||
<include name="Level */**/*.tmx"/>
|
||||
<include name="interiors/**/*.tmx"/>
|
||||
<exclude name="**/memory/**"/>
|
||||
|
|
@ -23,7 +24,8 @@
|
|||
</target> <!-- rendermaps -->
|
||||
|
||||
|
||||
<target name="renderatlas" description="Generate files for the Stendhal Atlas." depends="compile_stendhaltools">
|
||||
<!-- Generate files for the Stendhal Atlas. -->
|
||||
<target name="renderatlas" depends="compile_stendhaltools">
|
||||
<taskdef name="maprenderer" classname="games.stendhal.tools.MapRenderer">
|
||||
<classpath>
|
||||
<pathelement path="${build_stendhaltools}"/>
|
||||
|
|
@ -41,16 +43,16 @@
|
|||
0 128 0.0078125
|
||||
-->
|
||||
|
||||
<mkdir dir="tiled/world"/>
|
||||
<mkdir dir="${maps}/world"/>
|
||||
<maprenderer imagePath="${maps}/world/" zoom="0.0625">
|
||||
<fileset dir="tiled">
|
||||
<fileset dir="${maps}">
|
||||
<include name="Level 0/**/*.tmx"/>
|
||||
<exclude name="**/memory/**"/>
|
||||
</fileset>
|
||||
</maprenderer>
|
||||
<mkdir dir="tiled/world/large"/>
|
||||
<mkdir dir="${maps}/world/large"/>
|
||||
<maprenderer imagePath="${maps}/world/large" zoom="0.25">
|
||||
<fileset dir="tiled">
|
||||
<fileset dir="${maps}">
|
||||
<include name="Level 0/**/*.tmx"/>
|
||||
<exclude name="**/memory/**"/>
|
||||
</fileset>
|
||||
|
|
@ -58,15 +60,13 @@
|
|||
</target> <!-- renderatlas -->
|
||||
|
||||
|
||||
<target name="renderworldmap" description="Export world.tmx map to PNG image." depends="rendermaps">
|
||||
<property name="pycmd" value="python3" if:true="${python3.present}"/>
|
||||
<property name="pycmd" value="python" unless:true="${python3.present}" if:true="${python.present}"/>
|
||||
|
||||
<!-- Export world.tmx map to PNG image. -->
|
||||
<target name="renderworldmap" depends="rendermaps">
|
||||
<!-- embed area images with area name -->
|
||||
<!-- FIXME: need to detect the Python "PIL" module to ensure script can run or
|
||||
write Java class that can do this -->
|
||||
<exec executable="${pycmd}" if:set="pycmd">
|
||||
<arg value="./tiled/vampire_maplabel.py"/>
|
||||
<exec executable="${executable.python}" if:true="${python.present}">
|
||||
<arg value="./bin/vampire_maplabel.py"/>
|
||||
<arg value="-world"/>
|
||||
</exec>
|
||||
|
||||
|
|
@ -79,7 +79,7 @@
|
|||
</classpath>
|
||||
</taskdef>
|
||||
<maprenderer imagePath="${maps}/world/" zoom="1.0">
|
||||
<fileset dir="tiled/world">
|
||||
<fileset dir="${maps}/world">
|
||||
<include name="world.tmx"/>
|
||||
</fileset>
|
||||
</maprenderer>
|
||||
|
|
@ -88,7 +88,8 @@
|
|||
</target> <!-- renderworldmap -->
|
||||
|
||||
|
||||
<target name="updatemaps" description="Load and save TMX maps to fix tilesets changes." depends="compile_stendhaltools">
|
||||
<!-- Load and save TMX maps to fix tilesets changes. -->
|
||||
<target name="updatemaps" depends="compile_stendhaltools">
|
||||
<taskdef name="mapupdater" classname="games.stendhal.tools.MapUpdater">
|
||||
<classpath>
|
||||
<pathelement path="${build_stendhaltools}"/>
|
||||
|
|
@ -97,7 +98,7 @@
|
|||
</taskdef>
|
||||
|
||||
<mapupdater>
|
||||
<fileset dir="tiled">
|
||||
<fileset dir="${maps}">
|
||||
<include name="Level */**/*.tmx"/>
|
||||
<include name="interiors/**/*.tmx"/>
|
||||
</fileset>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,8 @@
|
|||
<delete file="${build}/package/client/stendhal-starter.exe"/>
|
||||
</target>
|
||||
|
||||
<target name="msiPackage" description="Creates MSI installer package from current build" depends="stagePackage">
|
||||
<!-- Creates MSI installer package from current build. -->
|
||||
<target name="msiPackage" depends="stagePackage">
|
||||
<delete dir="${build}/package/msi-app-image"/>
|
||||
<exec executable="jpackage" dir="." failonerror="true">
|
||||
<arg line="--type app-image"/>
|
||||
|
|
@ -46,7 +47,8 @@
|
|||
</exec>
|
||||
</target> <!-- msiPackage -->
|
||||
|
||||
<target name="dmgPackage" description="Creates DMG package from current build" depends="stagePackage">
|
||||
<!-- Creates DMG package from current build. -->
|
||||
<target name="dmgPackage" depends="stagePackage">
|
||||
<delete dir="${build}/package/dmg-app-image"/>
|
||||
<exec executable="jpackage" dir="." failonerror="true">
|
||||
<arg line="--type app-image"/>
|
||||
|
|
@ -74,7 +76,8 @@
|
|||
</exec>
|
||||
</target> <!-- dmgPackage -->
|
||||
|
||||
<target name="rpmPackage" description="Creates RPM package from current build" depends="stagePackage">
|
||||
<!-- Creates RPM package from current build. -->
|
||||
<target name="rpmPackage" depends="stagePackage">
|
||||
<delete dir="${build}/package/rpm-app-image"/>
|
||||
<exec executable="jpackage" dir="." failonerror="true">
|
||||
<arg line="--type app-image"/>
|
||||
|
|
@ -107,7 +110,8 @@
|
|||
</exec>
|
||||
</target> <!-- rpmPackage -->
|
||||
|
||||
<target name="debPackage" description="Creates DEB package from current build" depends="stagePackage">
|
||||
<!-- Creates DEB package from current build. -->
|
||||
<target name="debPackage" depends="stagePackage">
|
||||
<delete dir="${build}/package/deb-app-image"/>
|
||||
<exec executable="jpackage" dir="." failonerror="true">
|
||||
<arg line="--type app-image"/>
|
||||
|
|
|
|||
77
buildtools/ant_modules/properties.xml
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
<?xml version='1.0'?>
|
||||
|
||||
<project>
|
||||
|
||||
<!--
|
||||
Sets a property (by name and value), or set of properties (from file or resource) in the project. Properties are case sensitive.
|
||||
Properties are immutable: whoever sets a property first freezes it for the rest of the build; they are most definitely not variables.
|
||||
-->
|
||||
|
||||
<!-- store ant version number without extra details -->
|
||||
<antversion property="ant.version.number" />
|
||||
<!-- store ant home directory with system delimiter -->
|
||||
<property name="ant.location" location="${ant.home}" />
|
||||
|
||||
<property name="build_tests" value="${buildroot}/build_tests"/>
|
||||
<property name="build_tests_report" value="${buildroot}/build_test_report"/>
|
||||
|
||||
<property name="build_client" value="${buildroot}/build_client"/>
|
||||
<property name="build_client_data" value="${buildroot}/build_client_data"/>
|
||||
<property name="build_client_sound_data" value="${buildroot}/build_client_sound_data"/>
|
||||
<property name="build_client_music_data" value="${buildroot}/build_client_music_data"/>
|
||||
|
||||
<property name="build_webclient" value="${buildroot}/build_webclient"/>
|
||||
|
||||
<property name="build_docker" value="${buildroot}/build_docker"/>
|
||||
<property name="buildtools_docker" value="buildtools/docker"/>
|
||||
|
||||
<property name="build_postman" value="${buildroot}/buildbot/"/>
|
||||
|
||||
<property name="build_server" value="${buildroot}/build_server"/>
|
||||
<property name="build_server_maps" value="${buildroot}/build_server_maps"/>
|
||||
<property name="build_server_script" value="${buildroot}/build_server_script"/>
|
||||
<property name="build_server_mods" value="${buildroot}/build_server_mods"/>
|
||||
<property name="build_server_xmlconf" value="${buildroot}/build_server_xmlconf"/>
|
||||
|
||||
<property name="build_stendhaltools" value="${buildroot}/build_stendhaltools"/>
|
||||
<property name="build_stendhaltextclient" value="${buildroot}/build_stendhaltextclient"/>
|
||||
|
||||
<property name="client_data" value="stendhal-data-${version}.jar"/>
|
||||
<property name="client_jarname" value="stendhal-${version}.jar"/>
|
||||
<property name="client_sound_data" value="stendhal-sound-data-${version}.jar"/>
|
||||
<property name="client_music_data" value="stendhal-music-data-${version}.jar"/>
|
||||
<property name="client_starter_jarname" value="stendhal-starter-${version}.jar"/>
|
||||
|
||||
<property name="dist_server_binary" value="${buildroot}/stendhal-server-${version}.zip" />
|
||||
|
||||
<property name="maps_jarname" value="stendhal-maps-${version}.jar"/>
|
||||
|
||||
<property name="server_jarname" value="stendhal-server-${version}.jar"/>
|
||||
<property name="xmlconf_jarname" value="stendhal-xmlconf-${version}.jar"/>
|
||||
|
||||
<property name="config_dir" value="data/conf"/>
|
||||
|
||||
<property name="schema_location" value="${config_dir}"/>
|
||||
|
||||
<property name="cobertura.dir" value="${libdir}/cobertura"/>
|
||||
|
||||
<condition property="exclude.signing" value="true">
|
||||
<not>
|
||||
<available file="keystore.ks"/>
|
||||
</not>
|
||||
</condition>
|
||||
<condition property="exclude.jardiff" value="true">
|
||||
<not>
|
||||
<available file="${build-archive}/stendhal-${version.old}.zip"/>
|
||||
</not>
|
||||
</condition>
|
||||
|
||||
<!-- time & date -->
|
||||
<tstamp>
|
||||
<format property="year" pattern="yyyy"/>
|
||||
<format property="date" pattern="yyyy-MM-dd"/>
|
||||
<format property="time" pattern="HH:mm:ss"/>
|
||||
</tstamp>
|
||||
<property name="datetime" value="${date} ${time}"/>
|
||||
|
||||
</project>
|
||||
29
buildtools/ant_modules/system.xml
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<?xml version='1.0'?>
|
||||
|
||||
<project>
|
||||
<!-- system dependent properties -->
|
||||
|
||||
<property environment="env"/>
|
||||
|
||||
<condition property="exe.ext" value=".exe" else="">
|
||||
<os family="windows"/>
|
||||
</condition>
|
||||
|
||||
<!-- Node modules -->
|
||||
<condition property="executable.npm" value="npm.cmd" else="npm">
|
||||
<os family="windows"/>
|
||||
</condition>
|
||||
<condition property="executable.npx" value="npx.cmd" else="npx">
|
||||
<os family="windows"/>
|
||||
</condition>
|
||||
<condition property="executable.neu" value="neu.cmd" else="neu">
|
||||
<os family="windows"/>
|
||||
</condition>
|
||||
|
||||
<!-- Python executables -->
|
||||
<condition property="executable.python" value="python3${exe.ext}" else="python${exe.ext}">
|
||||
<available file="python3${exe.ext}" filepath="${env.PATH}"/>
|
||||
</condition>
|
||||
<available property="python.present" file="${executable.python}" filepath="${env.PATH}"/>
|
||||
|
||||
</project>
|
||||
|
|
@ -7,7 +7,8 @@
|
|||
<import file="dist.xml" />
|
||||
<import file="tools.xml" />
|
||||
|
||||
<target name="test" description="Compile and run all tests." depends="compile_tests,prepare_serverini_for_tests,run_tests,report_test">
|
||||
<!-- Compile and run all tests. -->
|
||||
<target name="test" depends="compile_tests,prepare_serverini_for_tests,run_tests,report_test">
|
||||
<exec executable="curl">
|
||||
<arg value="-q"/>
|
||||
<arg value="-F"/>
|
||||
|
|
@ -21,7 +22,8 @@
|
|||
</target> <!-- test -->
|
||||
|
||||
|
||||
<target name="compile_tests" description="Compile all tests." depends="server_build,client_build,compile_stendhaltools,compile_stendhaltextclient,postman">
|
||||
<!-- Compile all tests. -->
|
||||
<target name="compile_tests" depends="server_build,client_build,compile_stendhaltools,compile_stendhaltextclient,postman">
|
||||
<mkdir dir="${build_tests}"/>
|
||||
|
||||
<copy todir="${build_tests}">
|
||||
|
|
@ -63,7 +65,8 @@
|
|||
</target> <!-- compile_tests -->
|
||||
|
||||
|
||||
<target name="prepare_serverini_for_tests" unless="server.ini" description="Generate server.ini for testing.">
|
||||
<!-- Generate server.ini for testing. -->
|
||||
<target name="prepare_serverini_for_tests" unless="server.ini">
|
||||
<echo file="server.ini">
|
||||
database_implementation=games.stendhal.server.core.engine.StendhalPlayerDatabase
|
||||
factory_implementation=games.stendhal.server.core.engine.StendhalRPObjectFactory
|
||||
|
|
@ -85,7 +88,8 @@ d = 9017093486007323270605414717455737376618092805104733236083857811315606869372
|
|||
</target> <!-- prepare_serverini_for_tests -->
|
||||
|
||||
|
||||
<target name="run_tests" description="Run all tests.">
|
||||
<!-- Run all tests. -->
|
||||
<target name="run_tests">
|
||||
<mkdir dir="${build_tests_report}"/>
|
||||
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
|
||||
<classpath path="buildtools/jacoco/jacocoant.jar"/>
|
||||
|
|
@ -147,7 +151,8 @@ d = 9017093486007323270605414717455737376618092805104733236083857811315606869372
|
|||
</target> <!-- run_tests -->
|
||||
|
||||
|
||||
<target name="report_test" description="Aggregate test results.">
|
||||
<!-- Aggregate test results. -->
|
||||
<target name="report_test">
|
||||
<mkdir dir="${build_tests_report}"/>
|
||||
<junitreport todir="${build_tests_report}" tofile="testresults.xml">
|
||||
<fileset dir="${build_tests_report}">
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@
|
|||
|
||||
<import file="dist.xml" />
|
||||
|
||||
<target name="compile_stendhaltools" description="Compile Stendhal build tools.">
|
||||
<!-- Compile Stendhal build tools. -->
|
||||
<target name="compile_tools">
|
||||
<mkdir dir="${build_stendhaltools}"/>
|
||||
|
||||
<javac srcdir="${src}" destdir="${build_stendhaltools}" source="1.8" target="1.8" debug="${javac.debug}" debuglevel="${javac.debuglevel}" deprecation="${javac.deprecation}" includeantruntime="true">
|
||||
|
|
@ -28,7 +29,11 @@
|
|||
</javac>
|
||||
</target> <!-- compile_stendhaltools -->
|
||||
|
||||
<target name="clean_whitespace" description="Clean whitespace in source and other specified file types." depends="compile_stendhaltools">
|
||||
<!-- Alias of `compile_tools`. -->
|
||||
<target name="compile_stendhaltools" depends="compile_tools" />
|
||||
|
||||
<!-- Clean whitespace in source and other specified file types. -->
|
||||
<target name="clean_whitespace" depends="compile_stendhaltools">
|
||||
<!-- process main Java source, config, & scripting files -->
|
||||
<java classname="games.stendhal.tools.CleanWhitespace">
|
||||
<classpath>
|
||||
|
|
@ -36,7 +41,7 @@
|
|||
</classpath>
|
||||
<arg value="src/"/>
|
||||
<arg value="tests/"/>
|
||||
<arg value="android/app/src/"/>
|
||||
<arg value="app/android/client/src"/>
|
||||
<arg value="java,xml,lua"/>
|
||||
</java>
|
||||
|
||||
|
|
@ -55,16 +60,22 @@
|
|||
<pathelement path="${build_stendhaltools}"/>
|
||||
</classpath>
|
||||
<arg value="data/"/>
|
||||
<arg value="tiled/"/>
|
||||
<arg value="xml,xsd,lua,py"/>
|
||||
</java>
|
||||
|
||||
<!-- process Ant build configuration files -->
|
||||
<java classname="games.stendhal.tools.CleanWhitespace">
|
||||
<classpath>
|
||||
<pathelement path="${build_stendhaltools}"/>
|
||||
</classpath>
|
||||
<arg value="${ant_modules}" />
|
||||
<arg value="xml" />
|
||||
</java>
|
||||
</target> <!-- clean_whitespace -->
|
||||
|
||||
|
||||
<target name="cleanwhitespace" depends="clean_whitespace" description="Alias of clean_whitespace."/>
|
||||
|
||||
|
||||
<target name="postman" description="Build postman bot.">
|
||||
<!-- Build postman bot. -->
|
||||
<target name="postman">
|
||||
<mkdir dir="${buildroot}/buildbot"/>
|
||||
<javac srcdir="${src}" destdir="${buildroot}/buildbot" debug="${javac.debug}" debuglevel="${javac.debuglevel}" source="1.8" target="1.8" deprecation="${javac.deprecation}" includeantruntime="false">
|
||||
<include name="games/stendhal/bot/postman/*.java"/>
|
||||
|
|
@ -100,7 +111,8 @@
|
|||
</target> <!-- postman -->
|
||||
|
||||
|
||||
<target name="signupdates" description="Sign updates." depends="compile_stendhaltools,jardiff" unless="exclude.signing">
|
||||
<!-- Sign updates. -->
|
||||
<target name="signupdates" depends="compile_stendhaltools,jardiff" unless="exclude.signing">
|
||||
<taskdef name="updatesigner" classname="games.stendhal.tools.updateprop.UpdateSigner">
|
||||
<classpath>
|
||||
<pathelement path="."/>
|
||||
|
|
@ -116,7 +128,8 @@
|
|||
</target> <!-- signupdates -->
|
||||
|
||||
|
||||
<target name="jardiff" depends="client_build" unless="exclude.jardiff" description="Generate release changes info.">
|
||||
<!-- Generate release changes info. -->
|
||||
<target name="jardiff" depends="client_build" unless="exclude.jardiff">
|
||||
<echo>Creating update from ${version.old} to ${version}</echo>
|
||||
<delete>
|
||||
<fileset dir="${build-archive}">
|
||||
|
|
@ -160,8 +173,9 @@
|
|||
</target> <!-- jardiff -->
|
||||
|
||||
|
||||
<!-- Run enemy balancer. -->
|
||||
<!-- USAGE: ant balance -Dcreature="<creature_name>" -->
|
||||
<target name="balance" description="Run enemy balancer." depends="compile_stendhaltools,server_build">
|
||||
<target name="balance" depends="compile_stendhaltools,server_build">
|
||||
<java classname="games.stendhal.tools.BalanceRPGame">
|
||||
<classpath>
|
||||
<pathelement path="${build_stendhaltools}"/>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
site_name: Stendhal 1.46.5 Reference Documentation
|
||||
site_name: Stendhal 1.49.5 Reference Documentation
|
||||
site_description: A fun, friendly, & free multiplayer online adventure game.
|
||||
copyright: Copyright © 2003-2024 Stendhal
|
||||
copyright: Copyright © 2003-2026 Stendhal
|
||||
site_url: https://stendhalgame.org/
|
||||
nav:
|
||||
- Index: /reference/
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
<profile name="animal"/>
|
||||
<profile name="offensive"/>
|
||||
<profile name="patrolling"/>
|
||||
<profile name="wander"/>
|
||||
</ai>
|
||||
</creature>
|
||||
|
||||
|
|
@ -205,7 +206,7 @@
|
|||
|
||||
<creature name="giant killer bat">
|
||||
<type class="animal" subclass="bat_giant_red" tileid="animal.png:6"/>
|
||||
<description></description>
|
||||
<description>You see a giant killer bat. As if small wasn't pesky enough, these giant ones are capable of taking down anyone who dares come before them.</description>
|
||||
<attributes>
|
||||
<atk value="752"/>
|
||||
<def value="161"/>
|
||||
|
|
@ -982,7 +983,7 @@
|
|||
|
||||
<creature name="polar bear">
|
||||
<type class="animal" subclass="polar_bear" tileid="animal.png:3"/>
|
||||
<description></description>
|
||||
<description>You see a polar bear which lives in the icy desert. Beware! It can take you down with its powerful claws!</description>
|
||||
<attributes>
|
||||
<atk value="225"/>
|
||||
<def value="51"/>
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@
|
|||
|
||||
<creature name="elder cannibal">
|
||||
<type class="human" subclass="elder_cannibal" tileid="human_cannibal.png:2"/>
|
||||
<description/>
|
||||
<description>You see an elder cannibal. For years it has eaten humans. It will not stop until its hunger is satisfied.</description>
|
||||
<attributes>
|
||||
<atk value="315"/>
|
||||
<def value="111"/>
|
||||
|
|
|
|||
|
|
@ -234,6 +234,7 @@
|
|||
<item value="unicorn shield" quantity="[1,1]" probability="80.0"/>
|
||||
<item value="lucky charm" quantity="[1,1]" probability="80.0"/>
|
||||
<item value="diamond" quantity="[1,1]" probability="20.0"/>
|
||||
<item value="ring of clarity" quantity="1" probability="5.0"/>
|
||||
</drops>
|
||||
<equips/>
|
||||
<ai>
|
||||
|
|
|
|||
|
|
@ -357,6 +357,7 @@
|
|||
<corpse name="humanoid"/>
|
||||
<drops>
|
||||
<item value="golden orc sword" quantity="[1,1]" probability="25.0"/>
|
||||
<item value="ring of clarity" quantity="1" probability="8.5"/>
|
||||
</drops>
|
||||
<equips>
|
||||
</equips>
|
||||
|
|
|
|||
|
|
@ -236,7 +236,7 @@
|
|||
</equips>
|
||||
<ai>
|
||||
<profile name="animal"/>
|
||||
<profile name="patrolling"/>
|
||||
<profile name="wander"/>
|
||||
</ai>
|
||||
</creature>
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
<element name="damagetype" type="Q1:attribute" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<element name="statusattack" type="Q1:attribute" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<element name="statusresist" type="Q1:statusresist" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<element name="accuracy_bonus" type="Q1:attribute" minOccurs="0" maxOccurs="1"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
|
|
|
|||
|
|
@ -328,7 +328,7 @@
|
|||
|
||||
<item name="pelt">
|
||||
<type class="misc" subclass="pelt" tileid="-1"/>
|
||||
<description/>
|
||||
<description>You see a pelt of animal skin. It's used to make clothes and leather armor.</description>
|
||||
<implementation class-name="games.stendhal.server.entity.item.StackableItem"/>
|
||||
<attributes>
|
||||
<quantity value="1"/>
|
||||
|
|
|
|||
|
|
@ -230,4 +230,24 @@
|
|||
</equipable>
|
||||
</item>
|
||||
|
||||
<item name="ring of clarity">
|
||||
<type class="ring" subclass="clarity" tileid="-1"/>
|
||||
<description>You see a ring of clarity. You feel more aware while wearing it.</description>
|
||||
<implementation class-name="games.stendhal.server.entity.item.Item"/>
|
||||
<attributes>
|
||||
<min_level value="0"/>
|
||||
<accuracy_bonus value="25.0"/>
|
||||
</attributes>
|
||||
<weight value="0.1"/>
|
||||
<value value="1"/>
|
||||
<equipable>
|
||||
<slot name="ground"/>
|
||||
<slot name="content"/>
|
||||
<slot name="bag"/>
|
||||
<slot name="trade"/>
|
||||
<slot name="finger"/>
|
||||
<slot name="keyring"/>
|
||||
</equipable>
|
||||
</item>
|
||||
|
||||
</items>
|
||||
|
|
|
|||
|
|
@ -147,4 +147,25 @@
|
|||
</equipable>
|
||||
</item>
|
||||
|
||||
<item name="four-leaf clover">
|
||||
<type class="special" subclass="clover" tileid="-1"/>
|
||||
<description>You see a lucky four-leaf clover. What are the chances of finding one!?</description>
|
||||
<implementation class-name="games.stendhal.server.entity.item.StackableItem"/>
|
||||
<attributes>
|
||||
<quantity value="1"/>
|
||||
<max_quantity value="2147483647"/>
|
||||
</attributes>
|
||||
<weight value="0.01"/>
|
||||
<value value="250000"/>
|
||||
<equipable>
|
||||
<slot name="ground"/>
|
||||
<slot name="content"/>
|
||||
<slot name="lhand"/>
|
||||
<slot name="rhand"/>
|
||||
<slot name="keyring"/>
|
||||
<slot name="bag"/>
|
||||
<slot name="trade"/>
|
||||
</equipable>
|
||||
</item>
|
||||
|
||||
</items>
|
||||
|
|
|
|||
|
|
@ -16,18 +16,18 @@
|
|||
-->
|
||||
|
||||
<shop name="deniran_accessories" type="outfit">
|
||||
<outfit name="white balloon" layers="detail=2" price="50000"/>
|
||||
<outfit name="black balloon" layers="detail=3" price="50000"/>
|
||||
<outfit name="bone" layers="detail=4" price="100000"/>
|
||||
<outfit name="umbrella" layers="detail=7" price="50000"/>
|
||||
<outfit name="sword" layers="detail=8" price="250000"/>
|
||||
<outfit name="knife" layers="detail=9" price="125000"/>
|
||||
<outfit name="spear" layers="detail=10" price="150000"/>
|
||||
<outfit name="bow" layers="detail=11" price="175000"/>
|
||||
<outfit name="axe1" layers="detail=12" price="250000"/>
|
||||
<outfit name="axe2" layers="detail=13" price="250000"/>
|
||||
<outfit name="kite shield" layers="detail=14" price="225000"/>
|
||||
<outfit name="shield" layers="detail=15" price="225000"/>
|
||||
<outfit name="white balloon" layers="detail=2" price="25000"/>
|
||||
<outfit name="black balloon" layers="detail=3" price="25000"/>
|
||||
<outfit name="bone" layers="detail=4" price="50000"/>
|
||||
<outfit name="umbrella" layers="detail=7" price="25000"/>
|
||||
<outfit name="sword" layers="detail=8" price="125000"/>
|
||||
<outfit name="knife" layers="detail=9" price="62500"/>
|
||||
<outfit name="spear" layers="detail=10" price="75000"/>
|
||||
<outfit name="bow" layers="detail=11" price="87500"/>
|
||||
<outfit name="axe1" layers="detail=12" price="125000"/>
|
||||
<outfit name="axe2" layers="detail=13" price="125000"/>
|
||||
<outfit name="kite shield" layers="detail=14" price="112500"/>
|
||||
<outfit name="shield" layers="detail=15" price="112500"/>
|
||||
<merchant name="Gwen" flags="configure,noOffer,removeDetailColor,confirmTemp,confirmBalloon,resetBeforeChange"
|
||||
note="do not expire"/>
|
||||
</shop>
|
||||
|
|
|
|||
|
|
@ -89,6 +89,70 @@
|
|||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
|
||||
<portal x="13" y="56" ref="ent11n">
|
||||
<destination zone="0_ados_mountain_n2_w" ref="ent11s"/>
|
||||
<attribute name="move.continuous"/>
|
||||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
|
||||
<portal x="13" y="57" ref="ent11s">
|
||||
<destination zone="0_ados_mountain_n2_w" ref="ent11n"/>
|
||||
<implementation class-name="games.stendhal.server.entity.mapstuff.portal.LevelCheckingPortal">
|
||||
<parameter name="minimum-level">100</parameter>
|
||||
<parameter name="rejected">The entwives are NOT babysitters. Come back when you have some age on you.</parameter>
|
||||
</implementation>
|
||||
<attribute name="move.continuous"/>
|
||||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
|
||||
<portal x="14" y="56" ref="ent12n">
|
||||
<destination zone="0_ados_mountain_n2_w" ref="ent12s"/>
|
||||
<attribute name="move.continuous"/>
|
||||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
|
||||
<portal x="14" y="57" ref="ent12s">
|
||||
<destination zone="0_ados_mountain_n2_w" ref="ent12n"/>
|
||||
<implementation class-name="games.stendhal.server.entity.mapstuff.portal.LevelCheckingPortal">
|
||||
<parameter name="minimum-level">100</parameter>
|
||||
<parameter name="rejected">The entwives are NOT babysitters. Come back when you have some age on you.</parameter>
|
||||
</implementation>
|
||||
<attribute name="move.continuous"/>
|
||||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
|
||||
<portal x="15" y="56" ref="ent13n">
|
||||
<destination zone="0_ados_mountain_n2_w" ref="ent13s"/>
|
||||
<attribute name="move.continuous"/>
|
||||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
|
||||
<portal x="15" y="57" ref="ent13s">
|
||||
<destination zone="0_ados_mountain_n2_w" ref="ent13n"/>
|
||||
<implementation class-name="games.stendhal.server.entity.mapstuff.portal.LevelCheckingPortal">
|
||||
<parameter name="minimum-level">100</parameter>
|
||||
<parameter name="rejected">The entwives are NOT babysitters. Come back when you have some age on you.</parameter>
|
||||
</implementation>
|
||||
<attribute name="move.continuous"/>
|
||||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
|
||||
<portal x="16" y="56" ref="ent14n">
|
||||
<destination zone="0_ados_mountain_n2_w" ref="ent14s"/>
|
||||
<attribute name="move.continuous"/>
|
||||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
|
||||
<portal x="16" y="57" ref="ent14s">
|
||||
<destination zone="0_ados_mountain_n2_w" ref="ent14n"/>
|
||||
<implementation class-name="games.stendhal.server.entity.mapstuff.portal.LevelCheckingPortal">
|
||||
<parameter name="minimum-level">100</parameter>
|
||||
<parameter name="rejected">The entwives are NOT babysitters. Come back when you have some age on you.</parameter>
|
||||
</implementation>
|
||||
<attribute name="move.continuous"/>
|
||||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
|
||||
<!-- wishing well-->
|
||||
<entity x="86" y="21">
|
||||
<implementation class-name="games.stendhal.server.entity.mapstuff.useable.WellSource"/>
|
||||
|
|
|
|||
|
|
@ -115,6 +115,7 @@
|
|||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
<parameter name="weather">varying(rain=-2, temperature=+5)</parameter>
|
||||
<parameter name="music">jump_and_run_tropics</parameter>
|
||||
</attributes>
|
||||
|
||||
<entity x="90" y="45">
|
||||
|
|
@ -160,6 +161,7 @@
|
|||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
<parameter name="weather">varying(rain=-2, temperature=+5)</parameter>
|
||||
<parameter name="music">jump_and_run_tropics</parameter>
|
||||
</attributes>
|
||||
|
||||
<!-- NPCs -->
|
||||
|
|
@ -1082,6 +1084,7 @@
|
|||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
<parameter name="weather">varying(rain=-2, temperature=+5)</parameter>
|
||||
<!--<parameter name="music">island_mountain</parameter>-->
|
||||
</attributes>
|
||||
|
||||
<!-- Music/Ambiance -->
|
||||
|
|
|
|||
|
|
@ -277,14 +277,13 @@
|
|||
</zone>
|
||||
|
||||
|
||||
<zone name="0_deniran_city_se" level="0" x="499360" y="500128"
|
||||
file="Level 0/deniran/city_se.tmx">
|
||||
|
||||
<zone name="0_deniran_city_se" level="0" x="499360" y="500128" file="Level 0/deniran/city_se.tmx">
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
<parameter name="weather">varying</parameter>
|
||||
</attributes>
|
||||
|
||||
<configurator class-name="games.stendhal.server.maps.deniran.cityoutside.CloverHunterNPC"/>
|
||||
</zone>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,10 @@
|
|||
file="Level 7/kikareukin/clouds.tmx">
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
<parameter name="weather">clouds</parameter>
|
||||
<parameter name="parallax">semos_surrounds</parameter>
|
||||
<!-- prevent drawing specific tiles in web client while while keeping compatibility with Java client -->
|
||||
<parameter name="parallax_ignore_tiles">sky/cloud/clouds</parameter>
|
||||
</attributes>
|
||||
|
||||
<!--Don't allow teleporting in as we don't want marked scrolls made or
|
||||
|
|
@ -51,6 +55,7 @@
|
|||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
<parameter name="weather">varying(temperature=-2)</parameter>
|
||||
<parameter name="parallax">semos_surrounds</parameter>
|
||||
</attributes>
|
||||
|
||||
<configurator
|
||||
|
|
|
|||
|
|
@ -1027,7 +1027,7 @@ below average.
|
|||
class-name="games.stendhal.server.entity.mapstuff.area.MessagingArea">
|
||||
<parameter name="width">5</parameter>
|
||||
<parameter name="height">5</parameter>
|
||||
<parameter name="enterMessage">You hear faintly incantations of dark magic from below. The place reeks of danger.</parameter>
|
||||
<parameter name="enterMessage">You hear faint incantations of dark magic from below. The place reeks of danger.</parameter>
|
||||
<parameter name="warnPlayer">true</parameter>
|
||||
</implementation>
|
||||
</entity>
|
||||
|
|
|
|||
|
|
@ -648,6 +648,11 @@ Unfortunately I will not be able to visit Athor this year. I have run into a bit
|
|||
|
||||
<!-- Interiors of the wizards tower -->
|
||||
<zone name="int_semos_wizards_tower_basement" file="interiors/semos/wizards_tower_basement.tmx">
|
||||
<attributes>
|
||||
<parameter name="parallax">stars</parameter>
|
||||
<parameter name="parallax_ignore_tiles">sky/stars</parameter>
|
||||
</attributes>
|
||||
|
||||
<configurator
|
||||
class-name="games.stendhal.server.maps.semos.wizardstower.WizardsGuardStatueNPC"/>
|
||||
|
||||
|
|
@ -669,8 +674,14 @@ Unfortunately I will not be able to visit Athor this year. I have run into a bit
|
|||
class-name="games.stendhal.server.entity.mapstuff.portal.OneWayPortalDestination"/>
|
||||
</portal>
|
||||
</zone>
|
||||
|
||||
<!-- Interiors of the wizards tower -->
|
||||
<zone name="int_semos_wizards_tower_1" file="interiors/semos/wizards_tower_1.tmx">
|
||||
<attributes>
|
||||
<parameter name="parallax">stars</parameter>
|
||||
<parameter name="parallax_ignore_tiles">sky/stars</parameter>
|
||||
</attributes>
|
||||
|
||||
<configurator class-name="games.stendhal.server.core.config.zone.NoTeleportIn"/>
|
||||
<configurator
|
||||
class-name="games.stendhal.server.maps.semos.wizardstower.FirstFloorCreatures"/>
|
||||
|
|
@ -755,8 +766,14 @@ Unfortunately I will not be able to visit Athor this year. I have run into a bit
|
|||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
</zone>
|
||||
|
||||
<!-- Interiors of the wizards tower -->
|
||||
<zone name="int_semos_wizards_tower_2" file="interiors/semos/wizards_tower_2.tmx">
|
||||
<attributes>
|
||||
<parameter name="parallax">stars</parameter>
|
||||
<parameter name="parallax_ignore_tiles">sky/stars</parameter>
|
||||
</attributes>
|
||||
|
||||
<configurator class-name="games.stendhal.server.core.config.zone.NoTeleportIn"/>
|
||||
<configurator
|
||||
class-name="games.stendhal.server.maps.semos.wizardstower.SecondFloorCreatures"/>
|
||||
|
|
@ -828,8 +845,14 @@ Unfortunately I will not be able to visit Athor this year. I have run into a bit
|
|||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
</zone>
|
||||
|
||||
<!-- Interiors of the wizards tower -->
|
||||
<zone name="int_semos_wizards_tower_3" file="interiors/semos/wizards_tower_3.tmx">
|
||||
<attributes>
|
||||
<parameter name="parallax">stars</parameter>
|
||||
<parameter name="parallax_ignore_tiles">sky/stars</parameter>
|
||||
</attributes>
|
||||
|
||||
<configurator class-name="games.stendhal.server.core.config.zone.NoTeleportIn"/>
|
||||
<configurator
|
||||
class-name="games.stendhal.server.maps.semos.wizardstower.ThirdFloorCreatures"/>
|
||||
|
|
@ -901,8 +924,14 @@ Unfortunately I will not be able to visit Athor this year. I have run into a bit
|
|||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
</zone>
|
||||
|
||||
<!-- Interiors of the wizards tower -->
|
||||
<zone name="int_semos_wizards_tower_4" file="interiors/semos/wizards_tower_4.tmx">
|
||||
<attributes>
|
||||
<parameter name="parallax">stars</parameter>
|
||||
<parameter name="parallax_ignore_tiles">sky/stars</parameter>
|
||||
</attributes>
|
||||
|
||||
<configurator class-name="games.stendhal.server.core.config.zone.NoTeleportIn"/>
|
||||
<configurator
|
||||
class-name="games.stendhal.server.maps.semos.wizardstower.FourthFloorCreatures"/>
|
||||
|
|
@ -974,8 +1003,14 @@ Unfortunately I will not be able to visit Athor this year. I have run into a bit
|
|||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
</zone>
|
||||
|
||||
<!-- Interiors of the wizards tower -->
|
||||
<zone name="int_semos_wizards_tower_5" file="interiors/semos/wizards_tower_5.tmx">
|
||||
<attributes>
|
||||
<parameter name="parallax">stars</parameter>
|
||||
<parameter name="parallax_ignore_tiles">sky/stars</parameter>
|
||||
</attributes>
|
||||
|
||||
<configurator class-name="games.stendhal.server.core.config.zone.NoTeleportIn"/>
|
||||
<configurator
|
||||
class-name="games.stendhal.server.maps.semos.wizardstower.FifthFloorCreatures"/>
|
||||
|
|
@ -1047,8 +1082,14 @@ Unfortunately I will not be able to visit Athor this year. I have run into a bit
|
|||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
</zone>
|
||||
|
||||
<!-- Interiors of the wizards tower -->
|
||||
<zone name="int_semos_wizards_tower_6" file="interiors/semos/wizards_tower_6.tmx">
|
||||
<attributes>
|
||||
<parameter name="parallax">stars</parameter>
|
||||
<parameter name="parallax_ignore_tiles">sky/stars</parameter>
|
||||
</attributes>
|
||||
|
||||
<configurator class-name="games.stendhal.server.core.config.zone.NoTeleportIn"/>
|
||||
<configurator
|
||||
class-name="games.stendhal.server.maps.semos.wizardstower.SixthFloorCreatures"/>
|
||||
|
|
@ -1120,8 +1161,14 @@ Unfortunately I will not be able to visit Athor this year. I have run into a bit
|
|||
<attribute name="hidden"/>
|
||||
</portal>
|
||||
</zone>
|
||||
|
||||
<!-- Interiors of the wizards tower -->
|
||||
<zone name="int_semos_wizards_tower_7" file="interiors/semos/wizards_tower_7.tmx">
|
||||
<attributes>
|
||||
<parameter name="parallax">stars</parameter>
|
||||
<parameter name="parallax_ignore_tiles">sky/stars</parameter>
|
||||
</attributes>
|
||||
|
||||
<configurator
|
||||
class-name="games.stendhal.server.maps.semos.wizardstower.WizardsGuardStatueSpireNPC"/>
|
||||
|
||||
|
|
@ -1146,6 +1193,11 @@ Unfortunately I will not be able to visit Athor this year. I have run into a bit
|
|||
</zone>
|
||||
<!-- Interiors of the wizards tower -->
|
||||
<zone name="int_semos_wizards_tower_8" file="interiors/semos/wizards_tower_spire_1.tmx">
|
||||
<attributes>
|
||||
<parameter name="parallax">view_wizards_tower</parameter>
|
||||
<parameter name="parallax_ignore_tiles">sky/view_wizards_tower</parameter>
|
||||
</attributes>
|
||||
|
||||
<configurator
|
||||
class-name="games.stendhal.server.maps.semos.wizardstower.RedFireWizardNPC"/>
|
||||
<configurator
|
||||
|
|
@ -1220,6 +1272,11 @@ Unfortunately I will not be able to visit Athor this year. I have run into a bit
|
|||
|
||||
<!-- Interiors of the wizards tower -->
|
||||
<zone name="int_semos_wizards_tower_9" file="interiors/semos/wizards_tower_spire_2.tmx">
|
||||
<attributes>
|
||||
<parameter name="parallax">view_wizards_tower</parameter>
|
||||
<parameter name="parallax_ignore_tiles">sky/view_wizards_tower</parameter>
|
||||
</attributes>
|
||||
|
||||
<configurator
|
||||
class-name="games.stendhal.server.maps.semos.wizardstower.BlackDeathWizardNPC"/>
|
||||
<configurator
|
||||
|
|
@ -1341,6 +1398,9 @@ Unfortunately I will not be able to visit Athor this year. I have run into a bit
|
|||
<configurator
|
||||
class-name="games.stendhal.server.maps.semos.plains.ButterfliesNPC"/>
|
||||
|
||||
<!-- four-leaf clover: spawns in random zones but needs to be initialized with configurator -->
|
||||
<configurator class-name="games.stendhal.server.maps.global.FourLeafClover"/>
|
||||
|
||||
<configurator class-name="games.stendhal.server.maps.FertileGrounds">
|
||||
<parameter name="x">60</parameter>
|
||||
<parameter name="y">44</parameter>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<!-- Ground level -->
|
||||
|
||||
<zone name="0_sikhw_desert_n_w2" level="0" x="499104" y="500384"
|
||||
file="Level 0/sikhw/desert_n_w2.tmx">
|
||||
file="Level 0/sikhw/desert_n_w2.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
|
||||
<zone name="0_sikhw_desert_w2" level="0" x="499104" y="500512"
|
||||
file="Level 0/sikhw/desert_w2.tmx">
|
||||
file="Level 0/sikhw/desert_w2.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
|
||||
<zone name="0_sikhw_desert_s_w2" level="0" x="499104" y="500640"
|
||||
file="Level 0/sikhw/desert_s_w2.tmx">
|
||||
file="Level 0/sikhw/desert_s_w2.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
|
||||
|
||||
<zone name="0_sikhw_desert_s2_w2" level="0" x="499104" y="500768"
|
||||
file="Level 0/sikhw/desert_s2_w2.tmx">
|
||||
file="Level 0/sikhw/desert_s2_w2.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -55,7 +55,7 @@
|
|||
<!-- -->
|
||||
|
||||
<zone name="0_sikhw_desert_nw" level="0" x="499232" y="500384"
|
||||
file="Level 0/sikhw/desert_nw.tmx">
|
||||
file="Level 0/sikhw/desert_nw.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
|
||||
|
||||
<zone name="0_sikhw_desert_w" level="0" x="499232" y="500512"
|
||||
file="Level 0/sikhw/desert_w.tmx">
|
||||
file="Level 0/sikhw/desert_w.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -77,7 +77,7 @@
|
|||
|
||||
|
||||
<zone name="0_sikhw_desert_sw" level="0" x="499232" y="500640"
|
||||
file="Level 0/sikhw/desert_sw.tmx">
|
||||
file="Level 0/sikhw/desert_sw.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -88,7 +88,7 @@
|
|||
|
||||
|
||||
<zone name="0_sikhw_desert_s2_w" level="0" x="499232" y="500768"
|
||||
file="Level 0/sikhw/desert_s2_w.tmx">
|
||||
file="Level 0/sikhw/desert_s2_w.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -101,7 +101,7 @@
|
|||
<!-- -->
|
||||
|
||||
<zone name="0_sikhw_desert_n" level="0" x="499360" y="500384"
|
||||
file="Level 0/sikhw/desert_n.tmx">
|
||||
file="Level 0/sikhw/desert_n.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -113,7 +113,7 @@
|
|||
|
||||
|
||||
<zone name="0_sikhw_city" level="0" x="499360" y="500512"
|
||||
file="Level 0/sikhw/city.tmx">
|
||||
file="Level 0/sikhw/city.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -124,7 +124,7 @@
|
|||
|
||||
|
||||
<zone name="0_sikhw_desert_s" level="0" x="499360" y="500640"
|
||||
file="Level 0/sikhw/desert_s.tmx">
|
||||
file="Level 0/sikhw/desert_s.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -135,7 +135,7 @@
|
|||
|
||||
|
||||
<zone name="0_sikhw_desert_s2" level="0" x="499360" y="500768"
|
||||
file="Level 0/sikhw/desert_s2.tmx">
|
||||
file="Level 0/sikhw/desert_s2.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -148,7 +148,7 @@
|
|||
<!-- -->
|
||||
|
||||
<zone name="0_sikhw_desert_ne" level="0" x="499488" y="500384"
|
||||
file="Level 0/sikhw/desert_ne.tmx">
|
||||
file="Level 0/sikhw/desert_ne.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -159,7 +159,7 @@
|
|||
|
||||
|
||||
<zone name="0_sikhw_desert_e" level="0" x="499488" y="500512"
|
||||
file="Level 0/sikhw/desert_e.tmx">
|
||||
file="Level 0/sikhw/desert_e.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -170,7 +170,7 @@
|
|||
|
||||
|
||||
<zone name="0_sikhw_desert_se" level="0" x="499488" y="500640"
|
||||
file="Level 0/sikhw/desert_se.tmx">
|
||||
file="Level 0/sikhw/desert_se.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
@ -180,7 +180,7 @@
|
|||
</zone>
|
||||
|
||||
<zone name="0_sikhw_desert_s2_e" level="0" x="499488" y="500768"
|
||||
file="Level 0/sikhw/desert_s2_e.tmx">
|
||||
file="Level 0/sikhw/desert_s2_e.tmx" accessible="false">
|
||||
|
||||
<attributes>
|
||||
<parameter name="color_method">time</parameter>
|
||||
|
|
|
|||
BIN
data/gui/quickmenu/pathfinding-disabled.png
Normal file
|
After Width: | Height: | Size: 843 B |
127
data/gui/quickmenu/pathfinding-disabled.svg
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
height="48"
|
||||
version="1.1"
|
||||
width="48"
|
||||
id="svg131"
|
||||
sodipodi:docname="pathfinding-disabled.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<title
|
||||
id="title1">Path Finding Enabled</title>
|
||||
<sodipodi:namedview
|
||||
id="namedview131"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="true"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="4.8032754"
|
||||
inkscape:cx="32.686029"
|
||||
inkscape:cy="28.418108"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1025"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg131" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
id="g1">
|
||||
<circle
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.71045;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.999544"
|
||||
id="path1"
|
||||
cx="24"
|
||||
cy="24"
|
||||
r="16"
|
||||
inkscape:label="background" />
|
||||
<g
|
||||
id="g134"
|
||||
transform="matrix(-0.03571429,0,0,0.03571429,34.000001,15.42857)"
|
||||
inkscape:label="icon">
|
||||
<path
|
||||
id="path135"
|
||||
style="display:inline;fill:#ffffff"
|
||||
d="m 240,0 c 0,60 0,120 0,180 -20,20 -40,40 -60,60 -40,0 -80,0 -120,0 -20,20 -40,40 -60,60 0,60 0,120 0,180 106.66667,0 213.33333,0 320,0 0,-13.33333 0,-26.66667 0,-40 13.33333,0 26.66667,0 40,0 0,13.33333 0,26.66667 0,40 66.66667,0 133.33333,0 200,0 0,-160 0,-320 0,-480 C 453.33333,0 346.66667,0 240,0 Z"
|
||||
inkscape:label="boot_background" />
|
||||
<path
|
||||
id="rect103"
|
||||
style="fill:#000000"
|
||||
inkscape:label="boot_shadow"
|
||||
d="m 280,40 v 160 l -80,80 h 60 l 60,-60 V 40 Z m 200,0 V 360 H 40 v 40 H 520 V 40 Z"
|
||||
sodipodi:nodetypes="cccccccccccccc" />
|
||||
<path
|
||||
id="path134"
|
||||
d="m 240,0 v 180 l -60,60 H 60 C 46.666667,253.33333 13.333333,286.66667 0,300 v 180 h 320 v -40 h 40 v 40 H 560 V 0 Z m 40,40 H 520 V 400 H 40 v -80 c 13.333333,-13.33333 26.666667,-26.66667 40,-40 h 120 l 80,-80 z"
|
||||
sodipodi:nodetypes="cccccccccccccccccccccc"
|
||||
inkscape:label="boot_outline"
|
||||
style="display:inline;fill:#ffffff" />
|
||||
</g>
|
||||
<path
|
||||
id="path859"
|
||||
style="fill:#ffffff;fill-opacity:0.99858;stroke:#000000;stroke-width:1.92;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:label="disabled"
|
||||
d="M 36,8.96 8.96,36 v 3.04 H 12 L 39.04,12 V 8.96 Z"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
</g>
|
||||
<metadata
|
||||
id="metadata135">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:date>2024-06-23</dc:date>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jordan Irwin (AntumDeluge)</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:title>Path Finding Enabled</dc:title>
|
||||
<dc:publisher>
|
||||
<cc:Agent>
|
||||
<dc:title>Stendhal Game</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>icon</rdf:li>
|
||||
<rdf:li>menu</rdf:li>
|
||||
<rdf:li>button</rdf:li>
|
||||
<rdf:li>cursor</rdf:li>
|
||||
<rdf:li>boot</rdf:li>
|
||||
<rdf:li>shoe</rdf:li>
|
||||
<rdf:li>foot</rdf:li>
|
||||
<rdf:li>walk</rdf:li>
|
||||
<rdf:li>walking</rdf:li>
|
||||
<rdf:li>move</rdf:li>
|
||||
<rdf:li>moving</rdf:li>
|
||||
<rdf:li>path</rdf:li>
|
||||
<rdf:li>pathfinding</rdf:li>
|
||||
<rdf:li>path finding</rdf:li>
|
||||
<rdf:li>disable</rdf:li>
|
||||
<rdf:li>disabled</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.6 KiB |
BIN
data/gui/quickmenu/pathfinding.png
Normal file
|
After Width: | Height: | Size: 720 B |
121
data/gui/quickmenu/pathfinding.svg
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
height="48"
|
||||
version="1.1"
|
||||
width="48"
|
||||
id="svg131"
|
||||
sodipodi:docname="pathfinding.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<title
|
||||
id="title1">Path Finding Enabled</title>
|
||||
<sodipodi:namedview
|
||||
id="namedview131"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="true"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="3.3964286"
|
||||
inkscape:cx="56.235541"
|
||||
inkscape:cy="24.290221"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1025"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg131" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
id="g1">
|
||||
<circle
|
||||
style="display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.71045;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.999544"
|
||||
id="path1"
|
||||
cx="24"
|
||||
cy="24"
|
||||
r="16"
|
||||
inkscape:label="background" />
|
||||
<g
|
||||
id="g134"
|
||||
transform="matrix(-0.03571429,0,0,0.03571429,34.000001,15.42857)"
|
||||
inkscape:label="icon">
|
||||
<path
|
||||
id="path135"
|
||||
style="display:inline;fill:#ffffff"
|
||||
d="m 240,0 c 0,60 0,120 0,180 -20,20 -40,40 -60,60 -40,0 -80,0 -120,0 -20,20 -40,40 -60,60 0,60 0,120 0,180 106.66667,0 213.33333,0 320,0 0,-13.33333 0,-26.66667 0,-40 13.33333,0 26.66667,0 40,0 0,13.33333 0,26.66667 0,40 66.66667,0 133.33333,0 200,0 0,-160 0,-320 0,-480 C 453.33333,0 346.66667,0 240,0 Z"
|
||||
inkscape:label="boot_background" />
|
||||
<path
|
||||
id="rect103"
|
||||
style="fill:#000000"
|
||||
inkscape:label="boot_shadow"
|
||||
d="m 280,40 v 160 l -80,80 h 60 l 60,-60 V 40 Z m 200,0 V 360 H 40 v 40 H 520 V 40 Z"
|
||||
sodipodi:nodetypes="cccccccccccccc" />
|
||||
<path
|
||||
id="path134"
|
||||
d="m 240,0 v 180 l -60,60 H 60 C 46.666667,253.33333 13.333333,286.66667 0,300 v 180 h 320 v -40 h 40 v 40 H 560 V 0 Z m 40,40 H 520 V 400 H 40 v -80 c 13.333333,-13.33333 26.666667,-26.66667 40,-40 h 120 l 80,-80 z"
|
||||
sodipodi:nodetypes="cccccccccccccccccccccc"
|
||||
inkscape:label="boot_outline"
|
||||
style="display:inline;fill:#ffffff" />
|
||||
</g>
|
||||
</g>
|
||||
<metadata
|
||||
id="metadata135">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:date>2024-06-23</dc:date>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jordan Irwin (AntumDeluge)</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:title>Path Finding Enabled</dc:title>
|
||||
<dc:publisher>
|
||||
<cc:Agent>
|
||||
<dc:title>Stendhal Game</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>icon</rdf:li>
|
||||
<rdf:li>menu</rdf:li>
|
||||
<rdf:li>button</rdf:li>
|
||||
<rdf:li>cursor</rdf:li>
|
||||
<rdf:li>boot</rdf:li>
|
||||
<rdf:li>shoe</rdf:li>
|
||||
<rdf:li>foot</rdf:li>
|
||||
<rdf:li>walk</rdf:li>
|
||||
<rdf:li>walking</rdf:li>
|
||||
<rdf:li>move</rdf:li>
|
||||
<rdf:li>moving</rdf:li>
|
||||
<rdf:li>path</rdf:li>
|
||||
<rdf:li>pathfinding</rdf:li>
|
||||
<rdf:li>path finding</rdf:li>
|
||||
<rdf:li>enable</rdf:li>
|
||||
<rdf:li>enabled</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.3 KiB |
|
|
@ -1097,6 +1097,7 @@ venom gland=
|
|||
You see the venom gland of a giant king cobra. It is filled with deadly toxin.=
|
||||
|
||||
pelt=
|
||||
You see a pelt of animal skin. It's used to make clothes and leather armor.=
|
||||
|
||||
leather thread=
|
||||
You see a strand of sturdy leather thread.=
|
||||
|
|
@ -1265,6 +1266,9 @@ You see an imperial ring. It is imbued with the strength of a king.=
|
|||
enhanced imperial ring=
|
||||
You see an enhanced imperial ring. It eminates the auras of strength and defense.=
|
||||
|
||||
ring of clarity=
|
||||
You see a ring of clarity. You feel more aware while wearing it.=
|
||||
|
||||
|
||||
## scrolls
|
||||
|
||||
|
|
@ -1407,6 +1411,9 @@ You see a silvery gm token. Does it bring you pride?=
|
|||
bronze gm token=
|
||||
You see a bronze gm token. Does it bring you pride?=
|
||||
|
||||
four-leaf clover=
|
||||
You see a lucky four-leaf clover. What are the chances of finding one!?=
|
||||
|
||||
|
||||
## swords
|
||||
|
||||
|
|
@ -1635,6 +1642,7 @@ You see a killer bat which will suck your blood!=
|
|||
giant bat=
|
||||
|
||||
giant killer bat=
|
||||
You see a giant killer bat. As if small wasn't pesky enough, these giant ones are capable of taking down anyone who dares come before them.=
|
||||
|
||||
piglet=
|
||||
You see a piglet, a bit dirty.=
|
||||
|
|
@ -1702,6 +1710,7 @@ black bear=
|
|||
You see a strong black bear which hibernates in winter.=
|
||||
|
||||
polar bear=
|
||||
You see a polar bear which lives in the icy desert. Beware! It can take you down with its powerful claws!=
|
||||
|
||||
|
||||
## animal_aquatic
|
||||
|
|
@ -2268,6 +2277,7 @@ cannibal=
|
|||
You see a cannibal. He hunts you for cooking and eating your fresh meat! It's useless to tell him that your flesh is not good, better fight him or run away!=
|
||||
|
||||
elder cannibal=
|
||||
You see an elder cannibal. For years it has eaten humans. It will not stop until its hunger is satisfied.=
|
||||
|
||||
cannibal warrior=
|
||||
You see a cannibal warrior.=
|
||||
|
|
|
|||
|
|
@ -1,212 +1,112 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE map SYSTEM "http://mapeditor.org/dtd/1.0/map.dtd">
|
||||
<map version="1.0" orientation="orthogonal" width="128" height="128" tilewidth="32" tileheight="32">
|
||||
<tileset firstgid="1" name="ground/brown" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/brown.png" trans="ff00ff"/>
|
||||
<map version="1.8" tiledversion="1.8.4" orientation="orthogonal" renderorder="right-down" width="128" height="128" tilewidth="32" tileheight="32" infinite="0" nextlayerid="9" nextobjectid="1">
|
||||
<tileset firstgid="1" name="ground/brown" tilewidth="32" tileheight="32" tilecount="5" columns="5">
|
||||
<image source="../../tileset/ground/brown.png" trans="ff00ff" width="160" height="32"/>
|
||||
</tileset>
|
||||
<tileset firstgid="6" name="logic/collision" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/logic/collision.png"/>
|
||||
<tileset firstgid="6" name="logic/collision" tilewidth="32" tileheight="32" tilecount="1" columns="1">
|
||||
<image source="../../tileset/logic/collision.png" width="32" height="32"/>
|
||||
</tileset>
|
||||
<tileset firstgid="7" name="logic/creature/chaos" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/logic/creature/chaos.png"/>
|
||||
<tileset firstgid="7" name="logic/creature/chaos" tilewidth="32" tileheight="32" tilecount="7" columns="7">
|
||||
<image source="../../tileset/logic/creature/chaos.png" width="224" height="32"/>
|
||||
</tileset>
|
||||
<tileset firstgid="14" name="ground/ground" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/ground.png"/>
|
||||
<tileset firstgid="14" name="ground/ground" tilewidth="32" tileheight="32" tilecount="33" columns="3">
|
||||
<image source="../../tileset/ground/ground.png" width="96" height="352"/>
|
||||
</tileset>
|
||||
<tileset firstgid="47" name="ground/water/pool" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/water/pool.png"/>
|
||||
<tileset firstgid="47" name="ground/water/pool" tilewidth="32" tileheight="32" tilecount="72" columns="3">
|
||||
<image source="../../tileset/ground/water/pool.png" width="96" height="768"/>
|
||||
</tileset>
|
||||
<tileset firstgid="119" name="ground/brown_edges" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/brown_edges.png"/>
|
||||
<tileset firstgid="119" name="ground/brown_edges" tilewidth="32" tileheight="32" tilecount="18" columns="6">
|
||||
<image source="../../tileset/ground/brown_edges.png" width="192" height="96"/>
|
||||
</tileset>
|
||||
<tileset firstgid="137" name="ground/brown_corners" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/brown_corners.png"/>
|
||||
<tileset firstgid="137" name="ground/brown_corners" tilewidth="32" tileheight="32" tilecount="8" columns="4">
|
||||
<image source="../../tileset/ground/brown_corners.png" width="128" height="64"/>
|
||||
</tileset>
|
||||
<tileset firstgid="145" name="ground/earth_edges" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/earth_edges.png"/>
|
||||
<tileset firstgid="145" name="ground/earth_edges" tilewidth="32" tileheight="32" tilecount="18" columns="6">
|
||||
<image source="../../tileset/ground/earth_edges.png" width="192" height="96"/>
|
||||
</tileset>
|
||||
<tileset firstgid="163" name="ground/grass_corners" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/grass_corners.png"/>
|
||||
<tileset firstgid="163" name="ground/grass_corners" tilewidth="32" tileheight="32" tilecount="24" columns="6">
|
||||
<image source="../../tileset/ground/grass_corners.png" width="192" height="128"/>
|
||||
</tileset>
|
||||
<tileset firstgid="187" name="ground/rock/green_crystal2" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/rock/green_crystal2.png"/>
|
||||
<tileset firstgid="187" name="ground/rock/green_crystal2" tilewidth="32" tileheight="32" tilecount="20" columns="5">
|
||||
<image source="../../tileset/ground/rock/green_crystal2.png" width="160" height="128"/>
|
||||
</tileset>
|
||||
<tileset firstgid="207" name="ground/rock/pebbles" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/rock/pebbles.png"/>
|
||||
<tileset firstgid="207" name="ground/rock/pebbles" tilewidth="32" tileheight="32" tilecount="3" columns="1">
|
||||
<image source="../../tileset/ground/rock/pebbles.png" width="32" height="96"/>
|
||||
</tileset>
|
||||
<tileset firstgid="210" name="ground/rock/blue_crystal" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/rock/blue_crystal.png"/>
|
||||
<tileset firstgid="210" name="ground/rock/blue_crystal" tilewidth="32" tileheight="32" tilecount="20" columns="5">
|
||||
<image source="../../tileset/ground/rock/blue_crystal.png" width="160" height="128"/>
|
||||
</tileset>
|
||||
<tileset firstgid="230" name="ground/rock/rocks_3" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/rock/rocks_3.png"/>
|
||||
<tileset firstgid="230" name="ground/rock/rocks_3" tilewidth="32" tileheight="32" tilecount="16" columns="4">
|
||||
<image source="../../tileset/ground/rock/rocks_3.png" width="128" height="128"/>
|
||||
</tileset>
|
||||
<tileset firstgid="246" name="plant/bush/various_small" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/plant/bush/various_small.png"/>
|
||||
<tileset firstgid="246" name="plant/bush/various_small" tilewidth="32" tileheight="32" tilecount="9" columns="3">
|
||||
<image source="../../tileset/plant/bush/various_small.png" width="96" height="96"/>
|
||||
</tileset>
|
||||
<tileset firstgid="255" name="plant/mosses" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/plant/mosses.png"/>
|
||||
<tileset firstgid="255" name="plant/mosses" tilewidth="32" tileheight="32" tilecount="16" columns="4">
|
||||
<image source="../../tileset/plant/mosses.png" width="128" height="128"/>
|
||||
</tileset>
|
||||
<tileset firstgid="271" name="logic/creature/hybrid" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/logic/creature/hybrid.png" trans="ff00ff"/>
|
||||
<tileset firstgid="271" name="logic/creature/hybrid" tilewidth="32" tileheight="32" tilecount="16" columns="8">
|
||||
<image source="../../tileset/logic/creature/hybrid.png" trans="ff00ff" width="256" height="64"/>
|
||||
</tileset>
|
||||
<tileset firstgid="287" name="ground/grass_2" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/grass_2.png"/>
|
||||
<tileset firstgid="287" name="ground/grass_2" tilewidth="32" tileheight="32" tilecount="21" columns="3">
|
||||
<image source="../../tileset/ground/grass_2.png" width="96" height="224"/>
|
||||
</tileset>
|
||||
<tileset firstgid="308" name="ground/water/whirlpool" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/water/whirlpool.png"/>
|
||||
<tileset firstgid="308" name="ground/water/whirlpool" tilewidth="32" tileheight="32" tilecount="8" columns="1">
|
||||
<image source="../../tileset/ground/water/whirlpool.png" width="32" height="256"/>
|
||||
</tileset>
|
||||
<tileset firstgid="316" name="logic/creature/mythical_being" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/logic/creature/mythical_being.png"/>
|
||||
<tileset firstgid="316" name="logic/creature/mythical_being" tilewidth="32" tileheight="32" tilecount="24" columns="8">
|
||||
<image source="../../tileset/logic/creature/mythical_being.png" width="256" height="96"/>
|
||||
</tileset>
|
||||
<tileset firstgid="340" name="building/wall/int_sandstone" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/building/wall/int_sandstone.png"/>
|
||||
<tileset firstgid="340" name="building/wall/int_sandstone" tilewidth="32" tileheight="32" tilecount="15" columns="3">
|
||||
<image source="../../tileset/building/wall/int_sandstone.png" width="96" height="160"/>
|
||||
</tileset>
|
||||
<tileset firstgid="355" name="building/entrance/shadow" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/building/entrance/shadow.png"/>
|
||||
<tileset firstgid="355" name="building/entrance/shadow" tilewidth="32" tileheight="32" tilecount="3" columns="1">
|
||||
<image source="../../tileset/building/entrance/shadow.png" width="32" height="96"/>
|
||||
</tileset>
|
||||
<tileset firstgid="358" name="plant/flower/hothouse_flowers" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/plant/flower/hothouse_flowers.png"/>
|
||||
<tileset firstgid="358" name="plant/flower/hothouse_flowers" tilewidth="32" tileheight="32" tilecount="72" columns="6">
|
||||
<image source="../../tileset/plant/flower/hothouse_flowers.png" width="192" height="384"/>
|
||||
</tileset>
|
||||
<tileset firstgid="430" name="logic/creature/insect" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/logic/creature/insect.png"/>
|
||||
<tileset firstgid="430" name="logic/creature/insect" tilewidth="32" tileheight="32" tilecount="5" columns="5">
|
||||
<image source="../../tileset/logic/creature/insect.png" width="160" height="32"/>
|
||||
</tileset>
|
||||
<layer name="0_floor" width="128" height="128">
|
||||
<layer id="1" name="0_floor" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="1_terrain" width="128" height="128">
|
||||
<layer id="2" name="1_terrain" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
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
|
||||
Zyr+BYtELmkAAAEA
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="2_object" width="128" height="128">
|
||||
<layer id="3" name="2_object" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO3bzQpAQBQGUPNWngULnkeKN5YsbKYkynDPWVlN6s7P12WqCgAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAACCuJr39BrypV38A4IJOdgAA4ESb9tyo7xjP1msc0vEMAAAA
|
||||
AAAAAEAZZv9yQEh31/5o7yhK/UA9nhgDgH+4mhMmZwg3uF9QlkU9PkF2pzR6BOQ4U+D/ZBKIybdl
|
||||
cswLAAAAIEcfGQAAiGYFWjgd9QAAAQA=
|
||||
H4sIAAAAAAAACu3bMQrAIAwFUHOrnqU6tPe/RCkOHUUQrPjelDGQ5ROSlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2dcbsDpjpMn8AoEORHQAAaMhRc6O9437eXeMdXw0AAAAAAAAAAACMcbjLAwAW5b8A+sn/AAAAAAAAAAAAAPAvD8b9VLMAAAEA
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="3_roof" width="128" height="128">
|
||||
<layer id="4" name="3_roof" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO3c20rDQBAG4Lz/O1lBL6q3HloVD/sceuMUWppeGKOwmbL7ffBDSgM7sJDdzEKG
|
||||
AQAAAAAAAAAAAIBaPiNf2UUAAAAAAAAAAAAAQEdKdgEAAFRVRtebrCJY1F3kPrsI0mwjTxP/l4Xq
|
||||
IMdr5C3yuP/tud+f58hLdhGkeY98ZBcB/MvDcFy/6Y/1u2/Wb8b0dNq3e0//6Rtbv/V0aNuhpwMA
|
||||
QJt27wIluwigqpJdAGnKjHv0/fqm79e+qbNefb/2Oevtm7NeDuz3+ma/1zf7PQAAAAAAAAAAMlxE
|
||||
VtlFcGI8J7eVx7qKXFceg79Zck7WkZuFxmKeqTm5rDhu7WcNAHA+rPsA0Laa/QMAAAAAAAAAAAAA
|
||||
AADOxzeEbpmpAAABAA==
|
||||
H4sIAAAAAAAACu3c20rDQBAG4Lz/O1lBL6q3HloVD/sceuMUWppeGKOwmbL7ffBDSgM7sJDdzEKGAQAAAAAAAAAAAIBaPiNf2UUAAAAAAAAAAAAAQEdKdgEAAFRVRtebrCJY1F3kPrsI0mwjTxP/l4XqIMdr5C3yuP/tud+f58hLdhGkeY98ZBcB/MvDcFy/6Y/1u2/Wb8b0dNq3e0//6Rtbv/V0aNuhpwMAQJt27wIluwigqpJdAGnKjHv0/fqm79e+qbNefb/2Oevtm7NeDuz3+ma/1zf7PQAAAAAAAAAAMlxEVtlFcGI8J7eVx7qKXFceg79Zck7WkZuFxmKeqTm5rDhu7WcNAHA+rPsA0Laa/QMAAAAAAAAAAAAAAADOxzeEbpmpAAABAA==
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="4_roof_add" width="128" height="128">
|
||||
<layer id="5" name="4_roof_add" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO3OAQ0AAAgDoPfPZyBj3E1IQAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwy7QD
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPLYaZVTEAAAEA
|
||||
H4sIAAAAAAAACu3OAQ0AAAgDoPfPZyBj3E1IQAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwy7QDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPLYaZVTEAAAEA
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="objects" width="128" height="128">
|
||||
<layer id="6" name="objects" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO3cSw6CMBQF0DrC3xZcjTt2hcbEiaYxUmheP+dMmDC4CeTSPgIpAQAAAAAAAAAR
|
||||
ztEBAAAAAAAABnKJDgAAAAD8tLyP9vAwj2t0AAAAAEjmUbMqmUvcDrvH2KzFTD3TB+P7vsZL9iyA
|
||||
+jxzAKjN+3igVK4/aq1fzbbaZWYCvJhfAAAAsMYxOgAAAAAAAEzMNwQwN//zBQAAACDHvAgAAOhN
|
||||
j/+mu3eY2X6xXI/XG3K29IAOyfunH3TIJ/fSmE7RAYDm6HsAAEZjxsNa7hmAfelVAIB5WQsCAAA9
|
||||
e9jTAAATewI4cp9TAAABAA==
|
||||
H4sIAAAAAAAACu3cQQqDMBAF0Liytr1C73/NIrgqoVA1nZh5b+PGxQdlNF9MKQAAAAAAAABAhHt0AAAAAAAAgIE8ogMAAAAAX83b0Roe8nhGBwAAAICij8pqTy/xmk6PcViPma7MPBjf5zWeq2cBtOeZA0BrvscDe9XmR6v3V91Wv3QmwEp/AQAAwC9u0QEAAAAAACAx/xBAbvbzBQAAAKBGXwQAAFyNven+w3oRODIHzBDO4l4a0xIdAOiOeQ8AAAAAAAAAAAAAAJDXG8ZnpKUAAAEA
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="collision" width="128" height="128" visible="0" opacity="0.58">
|
||||
<layer id="7" name="collision" width="128" height="128" visible="0" opacity="0.58">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO2T22prQQxD91P//5NLHgIh5DIX20ueSCBaOGePZS3377quP9u2bdu2bdu2bdu2
|
||||
bVver0Rnshnud9HZbI77/ad9nr+JzmfXcH4nOrfNsb8Estsc+0sgv81wvwR2sDn+dH47h/PIN/RO
|
||||
dizzGdG72Qz3S2A/e4/57o3Qu9rz3Ee/e/63x/9P72rPa+cdeld7jX3UW/S+dh6rqHdshjudzTZ7
|
||||
u475o+icNsf+Eshqc+wvgbw2x/4SyGznMh+9C3oPO579XSPf0LvYMfx3b4beyV5nGPXOyls2x/1K
|
||||
ejNqhq3JfuUGIubZ+2yq51VmsBn2K/dAd3SiFbv+JrqzE6ze7zfR+Tq7S6cjojN2c6ceR0Xn7OCu
|
||||
3c2Izqrm7n2tiM5M+6SOVkXnVu6JzlrBn9y5Ko/i7qr8H9U1T9a7Kr4efj7/niUF/pGiGSr9XY2o
|
||||
S85R0Rwz2Gf2bv467rBDhXbm0P1EdErnofnviu5opVM6A71/puj97Phb2P3G1vcnrd7NpzeiMj/m
|
||||
oTvs7ndauZlPyspL99fd77Tz7TdF5Ft5y46/gZ17IDJG71CRqdMNrHY5+60a88x8nW9Atd8q0Uwj
|
||||
O6mY8Wn2ThZKNFPFG4hg0oH9XTTTSD7k7a3mUBDNMpoHNW9lvoJolh1uYEbmz99AxpxRXubP30Dl
|
||||
re3MVhDNL4sLwX52roJWstLMR3qsurGdeQqazUqznuWTPWNnloJO4F91A59mmb/5m//v3oD5847Y
|
||||
c3VmRuYKreSkO1vpk75NxRtYzZixW3afNONf41+Va2Y2zVntBnbyVe2S1SfNW+EGMvhnZZzN2/EG
|
||||
qhXNv0IZndLcCf672brw73YD2V1G5enEv+sNRPYanYFg/2l+ZI8076g7yJzdkf9MZpq1mr/1Qyrr
|
||||
74nuXMkj3VCK3Cv6/VM80gml6N2y5nT2SBcKyr4FmoMK/3dd0MraNXpGN4/2QCt756xZ6h7dn1Yl
|
||||
/4yZqh7dXUVV+0fMysxdzf/kGxjdLbPb3ezPM0/mfxPBf3VuVv6IjDNvqEn9Bkj9Av+bom9gZlc1
|
||||
/n9Pv/8C/5uybmB2Z5XOdvdTuedZqdwBpai9Ondw06/dQeQ+3XZ/pUz+EX1EdZmxwwn8b6q6AbKX
|
||||
av7dbuCmyjuo7Ccrr9KOUaq+gczuKvKY/+94pa+OontW9UpX3UV3ruTVjk4Q3b2CV/s5TTSHbvx9
|
||||
B2c4uotTRHNR4B/VQ3fRjEj+Uft3F82J5B/dQWfRvEj+0R10FM1LgX9VD9manU2zUuqYzn1KftqR
|
||||
oncZ2YvOpeYMmU0fv2KgJrqjk32i6E47WUVkFppBR/5KtxMlmgXt7orageag6l8U3bmqnzs6XXTf
|
||||
9vc7rBC9b7T/AUzTPD0AAAEA
|
||||
H4sIAAAAAAAACu2T22prQQxD91P//5NLHgohNMlcbC95tgSihXP2WNZyf67r+rFt27Zt27Zt27Zt27bl/Z/oTDbD/U90Npvj/vfTPs/fROezazi/E53b5thfAtltjv0lkN9muF8CO9gcfzq/ncN55Bt6JzuW+Yzo3WyG+yWwn73HfPdG6F3tee6j373+2/P/p3e157XzDr2rvcY+6i16XzuPVdQ7NsOdzmabvV3H/Fl0TptjfwlktTn2l0Bem2N/CWS2c5mP3gW9hx3P/k8j39C72DH8d2+G3sleZxj1zspbNsf9SnozaoatyX7lBiLm2ftsqudVZrAZ9iv3QHd0ohW7/ia6sxOs3u830fk6u0unI6IzdnOnHkdF5+zgrt3NiM6q5u59rYjOTPukjlZF51buic5awZ/cuSqP4u6q/J/VNU/Wuyq+nn6+/p4lBf6Rohkq/V2NqEvOUdEcM9hn9m7+Ou6wQ4V25tD9RHRK56H574ruaKVTOgO9f6bo/ez4W9j9xtb3J63ezac3ojI/56E77O53WrmZT8rKS/fX3e+08+03ReRbecuOv4GdeyAyRu9QkanTDax2OfutGvPMfJ1vQLXfKtFMIzupmPFp9k4WSjRTxRuIYNKB/Z9oppF8yNtbzaEgmmU0D2reynwF0Sw73MCMzJ+/gYw5o7zMn7+Bylvbma0gml8WF4L97FwFrWSlmY/0WHVjO/MUNJuVZj3LJ3vGziwFncC/6gY+zTJ/8zf/+96A+fOO2HN1ZkbmCq3kpDtb6ZO+TcUbWM2YsVt2nzTju/GvyjUzm+asdgM7+ap2yeqT5q1wAxn8szLO5u14A9WK5l+hjE5p7gT/3Wxd+He7gewuo/J04t/1BiJ7jc5AsP80P7JHmnfUHWTO7sh/JjPNWs3f+iGV9fdEd67kkW4oRe4V/f4pHumEUvRuWXM6e6QLBWXfAs1Bhf+7Lmhl7Ro9o5tHe6CVvXPWLHWP7k+rkn/GTFWP7q6iqv0jZmXmruZ/8g2M7pbZ7W7215kn83+I4L86Nyt/RMaZN9SkfgOk7sD/oegbmNlVjf/Py+934P9Q1g3M7qzS2e5+Kvc8K5U7oBS1V+cOHrrbHUTu0233/5TJP6KPqC4zdjiB/0NVN0D2Us2/2w08VHkHlf1k5VXaMUrVN5DZXUUe87+PV/rqKLpnVa901V1050pe7egE0d0reLWf00Rz6Mbfd3CGo7s4RTQXBf5RPXQXzYjkH7V/d9GcSP7RHXQXzYziH71/V9HMaP5VHaiKZqbQMZ2bvBF6Z9X+6F2q7oLeTb2n1Zl0F3f0fwzURHd0sk8U3Wknq4jMQjPoyF/pdqJEs6DdXVE70BxUfUfRnav6taPTRfdtf7/DCtH7RvsXoMjHOgAAAQA=
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="protection" width="128" height="128" visible="0">
|
||||
<layer id="8" name="protection" width="128" height="128" visible="0">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAauuOl9cAAAEA
|
||||
H4sIAAAAAAAACu3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAauuOl9cAAAEA
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="128" height="128" tilewidth="32" tileheight="32" infinite="0" nextlayerid="9" nextobjectid="1">
|
||||
<tileset firstgid="1" name="../../tileset/ground/ground.png" tilewidth="32" tileheight="32" tilecount="33" columns="3">
|
||||
<map version="1.10" tiledversion="1.10.2" orientation="orthogonal" renderorder="right-down" width="128" height="128" tilewidth="32" tileheight="32" infinite="0" nextlayerid="10" nextobjectid="1">
|
||||
<tileset firstgid="1" name="ground" tilewidth="32" tileheight="32" tilecount="33" columns="3">
|
||||
<image source="../../tileset/ground/ground.png" trans="ffffff" width="96" height="352"/>
|
||||
</tileset>
|
||||
<tileset firstgid="34" name="../../tileset/ground/ridge/earth_dark.png" tilewidth="32" tileheight="32" tilecount="96" columns="12">
|
||||
|
|
@ -36,101 +36,111 @@
|
|||
<tileset firstgid="268" name="palm_tree" tilewidth="32" tileheight="32" tilecount="6" columns="2">
|
||||
<image source="../../tileset/plant/tree/palm_tree.png" width="64" height="96"/>
|
||||
</tileset>
|
||||
<tileset firstgid="274" name="Untitled" tilewidth="32" tileheight="32" tilecount="25" columns="5">
|
||||
<tileset firstgid="274" name="tree_blue" tilewidth="32" tileheight="32" tilecount="25" columns="5">
|
||||
<image source="../../tileset/plant/tree/tree_blue.png" width="160" height="160"/>
|
||||
</tileset>
|
||||
<tileset firstgid="299" name="Untitled" tilewidth="32" tileheight="32" tilecount="24" columns="4">
|
||||
<tileset firstgid="299" name="tree_golden_large" tilewidth="32" tileheight="32" tilecount="24" columns="4">
|
||||
<image source="../../tileset/plant/tree/tree_golden_large.png" width="128" height="192"/>
|
||||
</tileset>
|
||||
<tileset firstgid="323" name="Untitled" tilewidth="32" tileheight="32" tilecount="6" columns="2">
|
||||
<tileset firstgid="323" name="tree_golden_small" tilewidth="32" tileheight="32" tilecount="6" columns="2">
|
||||
<image source="../../tileset/plant/tree/tree_golden_small.png" width="64" height="96"/>
|
||||
</tileset>
|
||||
<tileset firstgid="329" name="Untitled" tilewidth="32" tileheight="32" tilecount="6" columns="2">
|
||||
<tileset firstgid="329" name="green_stone_2" tilewidth="32" tileheight="32" tilecount="6" columns="2">
|
||||
<image source="../../tileset/item/statue/green_stone_2.png" width="64" height="96"/>
|
||||
</tileset>
|
||||
<tileset firstgid="335" name="Untitled" tilewidth="32" tileheight="32" tilecount="4" columns="2">
|
||||
<tileset firstgid="335" name="blue_circle" tilewidth="32" tileheight="32" tilecount="4" columns="2">
|
||||
<image source="../../tileset/building/decoration/blue_circle.png" width="64" height="64"/>
|
||||
</tileset>
|
||||
<tileset firstgid="339" name="logic/creature/naga" tilewidth="32" tileheight="32" tilecount="4" columns="4">
|
||||
<image source="../../tileset/logic/creature/naga.png" width="128" height="32"/>
|
||||
</tileset>
|
||||
<tileset firstgid="343" name="Untitled" tilewidth="32" tileheight="32" tilecount="8" columns="2">
|
||||
<tileset firstgid="343" name="daisy_white" tilewidth="32" tileheight="32" tilecount="8" columns="2">
|
||||
<image source="../../tileset/plant/flower/daisy_white.png" width="64" height="128"/>
|
||||
</tileset>
|
||||
<tileset firstgid="351" name="Untitled" tilewidth="32" tileheight="32" tilecount="8" columns="2">
|
||||
<tileset firstgid="351" name="daisy_yellow" tilewidth="32" tileheight="32" tilecount="8" columns="2">
|
||||
<image source="../../tileset/plant/flower/daisy_yellow.png" width="64" height="128"/>
|
||||
</tileset>
|
||||
<tileset firstgid="359" name="Untitled" tilewidth="32" tileheight="32" tilecount="4" columns="2">
|
||||
<tileset firstgid="359" name="stump_pale_brown" tilewidth="32" tileheight="32" tilecount="4" columns="2">
|
||||
<image source="../../tileset/plant/stump/stump_pale_brown.png" width="64" height="64"/>
|
||||
</tileset>
|
||||
<tileset firstgid="363" name="Untitled" tilewidth="32" tileheight="32" tilecount="4" columns="2">
|
||||
<tileset firstgid="363" name="stump_brown" tilewidth="32" tileheight="32" tilecount="4" columns="2">
|
||||
<image source="../../tileset/plant/stump/stump_brown.png" width="64" height="64"/>
|
||||
<tile id="0">
|
||||
<properties>
|
||||
<property name="foo" value="foo"/>
|
||||
</properties>
|
||||
</tile>
|
||||
</tileset>
|
||||
<tileset firstgid="367" name="Untitled" tilewidth="32" tileheight="32" tilecount="18" columns="3">
|
||||
<tileset firstgid="367" name="floor_sparkle" tilewidth="32" tileheight="32" tilecount="18" columns="3">
|
||||
<image source="../../tileset/building/decoration/floor_sparkle.png" width="96" height="192"/>
|
||||
</tileset>
|
||||
<tileset firstgid="385" name="Untitled" tilewidth="32" tileheight="32" tilecount="3" columns="1">
|
||||
<tileset firstgid="385" name="green_stone_3" tilewidth="32" tileheight="32" tilecount="3" columns="1">
|
||||
<image source="../../tileset/item/statue/green_stone_3.png" width="32" height="96"/>
|
||||
</tileset>
|
||||
<tileset firstgid="388" name="Untitled" tilewidth="32" tileheight="32" tilecount="3" columns="1">
|
||||
<tileset firstgid="388" name="vine" tilewidth="32" tileheight="32" tilecount="3" columns="1">
|
||||
<image source="../../tileset/plant/vine.png" width="32" height="96"/>
|
||||
</tileset>
|
||||
<tileset firstgid="391" name="clouds" tilewidth="32" tileheight="32" tilecount="16" columns="4">
|
||||
<image source="../../tileset/sky/cloud/clouds.png" width="128" height="128"/>
|
||||
<tileset firstgid="391" name="clouds" tilewidth="32" tileheight="32" tilecount="32" columns="4">
|
||||
<image source="../../tileset/sky/cloud/clouds.png" width="128" height="256"/>
|
||||
</tileset>
|
||||
<tileset firstgid="407" name="logic/creature/fairy" tilewidth="32" tileheight="32" tilecount="4" columns="4">
|
||||
<tileset firstgid="423" name="logic/creature/fairy" tilewidth="32" tileheight="32" tilecount="4" columns="4">
|
||||
<image source="../../tileset/logic/creature/fairy.png" width="128" height="32"/>
|
||||
</tileset>
|
||||
<tileset firstgid="411" name="logic/creature/demon" tilewidth="32" tileheight="32" tilecount="7" columns="7">
|
||||
<tileset firstgid="427" name="logic/creature/demon" tilewidth="32" tileheight="32" tilecount="7" columns="7">
|
||||
<image source="../../tileset/logic/creature/demon.png" width="224" height="32"/>
|
||||
</tileset>
|
||||
<tileset firstgid="418" name="logic/creature/elemental" tilewidth="32" tileheight="32" tilecount="16" columns="8">
|
||||
<tileset firstgid="434" name="logic/creature/elemental" tilewidth="32" tileheight="32" tilecount="16" columns="8">
|
||||
<image source="../../tileset/logic/creature/elemental.png" width="256" height="64"/>
|
||||
</tileset>
|
||||
<tileset firstgid="434" name="suspension bridge" tilewidth="32" tileheight="32" tilecount="24" columns="3">
|
||||
<tileset firstgid="450" name="suspension bridge" tilewidth="32" tileheight="32" tilecount="24" columns="3">
|
||||
<image source="../../tileset/object/suspension_bridge.png" width="96" height="256"/>
|
||||
</tileset>
|
||||
<tileset firstgid="458" name="logic/creature/angel" tilewidth="32" tileheight="32" tilecount="6" columns="6">
|
||||
<tileset firstgid="474" name="logic/creature/angel" tilewidth="32" tileheight="32" tilecount="6" columns="6">
|
||||
<image source="../../tileset/logic/creature/angel.png" width="192" height="32"/>
|
||||
</tileset>
|
||||
<layer id="9" name="0_floor_parallax" width="128" height="128" visible="0">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAACu1d2W4dKRBtz/L3Y8l5cjJOxk5m+c65Jd2SCWYpoBYKOFLp5iFJA+ecYmmgr+vg4ODg4ODg4Gc8P1zX53t8Ef7988G6tgchgPvvt/jl0om3iTXA6QP885eJ6wt4vZXtSZH/kgZa25+zbSV9MKvmtb2P8Xh75l9Re/SW5W1AB8+BlqTbYTYNWHEP8en23B9BW3CU5S3gstTOmpznykgppzQg7/9hyH/o/xfmspT6FyvN58ppNa54Mej3MR4j/3OPQTj7l5ljpE+xGPdhSPs/7l8knjFL9GrAqj0AX2/P/U/Z/5Z6n1EDVu0Rcw84/tfXwN+3v/tNuT0AMS+A439bDXy6h7Q/Ut4Py3ExPSceX0g8Y9bo0cA/97aR9Acg5X0Epz9T+R/rqp3zPGhAo21y3pd6fq4NjgbykFoTApS8j9DWwMVcz5kiNQaqQWJNCFDzflwGLg2W2mD1PJDrA0vgHiMDWriXKEMpD66sgR7/x+3xe2Mg8N+3cg+QmKeXNLDqukCP/wGogaf7nLD3t4d7gNQ8PaeBVdcFevyPwDnhvwO/PdwDJP2Y0sDx/1yQ9GPKE6vyT/V/uB/Cel+b9DvalCdWzf81/yPvI+3NuadJ6/18XOZV5wAl/2Nbc+S9t4e2/JHLJ1p7M3Z5N5Tz/4r7YEbbZcX1wJz/Vx3vjLZLqAGEdVlHIuf/FXMdR7sA4rWPa4Ly9gZF59ZlnKldwvbBNQzP7UTRude6SbXLSu1E0bnXukm2yyrtRNH5qnPf0XbJtdM1QfmpQdX5i7N6WfAP8OYVSj13WwsA9L6XBHjSAMX/O60FAEa4R3jRAMX/u6wFADi4R3jQAMX/HuoxyjuAk3tEar2QCo26U8c5cT2sOWvhNQdcvxvZh0RB716pFCw1n1r35C4XV1D2neH63cg+JCp69kqFZ65KGultmx7Nx+ueJa1Swc37V0LbSvPNAYpmQg5KPKR0zzHGTZVjJM+N8u6FWy6EHOR44OScUo6ePNeTR8L67cZ7DikeZm+XXB6h9t+z188zwn2fHHd71vYBxvnMc//tHbju+9vFF7Pdb1cDRf8z3NPGDQnuZ9RAjV9oA+q5NurdgrNDkvtQA619AzeeG/ltiZk03gp83yPJv3VekOTeswY0vJ+LkbOIPXXs5fXXKFbRgCX3EFpnEXEvCwf3FC140YAl95r+L/Ff45cS8f/p5YytRZ9v4f/XDP8c3Oc04CEHPG3g/1zfT+G09g7Cuwas+Zfyf3yXP5X7nvdQnjVgmf8BEnswamN9Tu5T/HvSgJX/AZzc1/xe439k/4Hn8YCm/0Nwc0+d23Py3poDtOY6LdDwP0Li/S2Ve27P94wDZpwTavgfMFOul+Cewv9u/rf0uzX3u/tfe1zPMZfnGPPl+L+E2mQUEv6XynN4B3Ur91p+L3l/Ru4BEv6XynN4B732uI7Ce64PAszKPcC7/2f0uhfuAav5X7pPp3A+es+1Jrz5X4r/Ud4hPJ5N8O5/Dg2M8h7mei+8I7z5nzL+lxzPhXyH8JDrU5DwvxT/Of+3amDE64inB1/9fA4S/pfK/6n+v3UeOMJ7fA5thXNJUut/Eu86XzP5n7r+N+L3Wc8e4ruQ1HkWyvkKyfc/3BoI7yPh4L/F7xqct35vA99/lepY4wDbcwUNULVQG9vheq2G3+N3mSN5rEcDYXuurgEK78i9lt+lOO/RgBT/VhqIdVAbz2vnei3ud9cAlXetsZ0F9zNo4FFgXhjfUUfh3uI+EY1+nhLUu9+95ICwzOF9QiXutddpLf0eB2VtRvIsuNTaYOlestjvmvP3mbin+B+A6ywS/GvsgYvvw7Jat5mNe6r/JeeEM+6B5UC8Dvd5Qu6p/gdIjQNm3AM7ihl9PuJ/hMQ4YBX/zzKel/I/QGIcsIL/Pfl9xP/c/AM8vysHeOa+1f/cYwDvud87963+B3BqwDP/K3Df6n8E1zjQa9+/Cvc9/gdwjAMAlL4/NY+m/I7eJVrae7EK973+H+UfQOV+5D663ncLK/lbwv8j37MCaHDfq4GduO/1P6D3e1aa3LdqYDfue/2P6Pneizb3LfMMHNdac6Ids9xDJXX3MFXjOK6x5kM7ZpiHS987XdP4jrkfw3oe3st9fJantw/YmXtr/3NxX9NASeO79vu9/u9dk0l9L6k353Pyv2u/T/V/zLf1NwJKZ3lb8//uub/mf+vvgdT4HvH/4b7sf2/ct/j/cP8eJW944p7q/8P9z5Hzxoz8jvr/cP8xUt6YmeNW7kP/7z7XS0Xof+q7XU1eOfjHOu4+10tF6H+K9615Hun/j/8/RvhOtuZ9a36P/+W498x/LWcd/3+M1Ly/tq9TkzPqcyn//vj/Y6Tm/dR9vdJ8cwfmueP/9+jxf68GrHiHOoZ93PH/e4z4v0UHlr6P6xjuXbVuf8sApPZiSt/5pB2pOqIGrDmwjNw+XI17vzTj7Pmgc4+w1gDuFZfwPmLXcQD1vLWmBlJ3MpXubRrlHrCj/1vP2ktroHZ3eu7epm93HeDdbj1nTHbjv/eeBSkNjNy5lzt30nKv1+r5H8B1h23urFdvrp/hzo+V54EA7rtMU56jnv+zvG+xhNQ5Vk2OYoz+H9p3VlPP/834nQxELrdR0Hr2leKRFqTGPbO288xoyW2peQrHLzWnlp5/eOcDxxiT87kecunBwYFv/A9wD36dAAABAA==
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="1" name="0_floor" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="2" name="1_terrain" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="3" name="2_object" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="4" name="3_roof" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAA+3cyW7UQBAGYOfOIrGFHR6AiBB2kLhkkVieitdK8m5UDpa4xLE9Xtpd3yfVZTQTefx3V7edmWkaAAAAxrq11zS399Y+CtZyJ7K/K3+gUsfR30569rghz61JzfuA03hfZz3f25DnbslN+doH1K3Nd5d53ve1NfeSOZ3HObsYUZcDzvUu87zva/USqMPPmMe/zOW0fkf2fzryHzs+7BHqcNP4uI49Qnn0+tzGzuUh2r6v/89vrXPc1Ufavq//z2+tc7xEH2E8vTc3vZe+XBPkZi2nD31iu6bYD+oT29Pm3nc/6LqhLkOvA8ZcNxgzubnWhHpN1d+tE+Xpk8lU/d06UZ4lMjHvczPvAQAAAAAAAAAgN989y813z6Bp7sUcuB/1IOph1CNzIpX9yPtx1JOop1HP5J/K88j7RdTLqFdRr+UPAABQJPdvcnP/Jjf3bwDm4XMCufmcAAAAAEA93OvLzb0+mJ/f78/N7/cD0MU+ITf7hPKYk7mZkwD1K2WtL+U4sillrW+PwzjIrZTxyG6OI8MTOaZ1GtmfyX9V1tLc7KnK9XehPK6yt6fKa+7s38TfPjC2qtW1j38bjx9GvYs6Mgaq1LWPfx+Pf4j6GPVJ/ul8jsy/RH2N+jZh/var2/D9v4x+TJiX/SrkoufntsS9qqXuuTCetR+mZ33Nzf+CuGJ9BZZgrcmpzd1ak5Pct0vPzs3cBQAAAKA0/wDK3sJsAAABAA==
|
||||
H4sIAAAAAAAACu3cyW7UQBAGYOfOIrGFHR6AiBB2kLhkkVieitdL8k5UDpa4xLE9Xtpd3yfVZTQTefx3V7edmWkaAAAAxrq11zS399Y+CtZyJ7K/K3+gUsfR30569rghz61JzfuA03hfZz3f25DnbslN+doH1K3Nd5d53ve1NfeSOZ3HObsYUZcDzvUu87zva/USqMPPmMe/zOW0fkf2fzryHzs+7BHqcNP4uI49Qnn0+tzGzuUh2r6v/89vrXPc1Ufavq//z2+tc7xEH2E8vTc3vZe+XBPkZi2nD31iu6bYD+oT29Pm3nc/6LqhLkOvA8ZcNxgzubnWhHpN1d+tE+Xpk8lU/d06UZ4lMjHvczPvAQAAAAAAAAAgN989y813z6Bp7sUcuB/1IOph1CNzIpX9yPtx1JOop1HP5J/K88j7RdTLqFdRr+UPAABQJPdvcnP/Jjf3bwDm4XMCufmcAAAAAEA93OvLzb0+mJ/f78/N7/cD0MU+ITf7hPKYk7mZkwD1K2WtL+U4sillrW+PwzjIrZTxyG6OI8MTOaZ1GtmfyX9V1tLc7KnK9XehPK6yt6fKa+7s38TfPjC2qtW1j38bjx9GvYs6Mgaq1LWPfx+Pf4j6GPVJ/ul8jsy/RH2N+jZh/var2/D9v4x+TJiX/SrkoufntsS9qqXuuTCetR+mZ33Nzf+CuGJ9BZZgrcmpzd1ak5Pct0vPzs3cBQAAAKA0/wD8LuvAAAABAA==
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="5" name="4_roof_add" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAA+3dSwqAMAwFwGTv59LeSr2b3kCR0hY7A9mHZhVIeREAAAAAAABATVNGzNm6C1pZ7tmv5g8AAFCdfXxs9nEAAAAAAAAAAAAAAAAAAOAP9ow4OqnTH24AAAAAAAAAAAAAAAAAAB7Ilh6bbGkAAAAAAAAAKMstxtjcYgAAAPTpTbaYzK9vNu8GAAAAAAAAAAAA3bgAGq/hpQAAAQA=
|
||||
H4sIAAAAAAAACu3dSwqAMAwFwGTv59LeTr2T3kCR0hY7A9mHZhVIeREAAAAAAABATVNGzNm6C1pZ7tmv5g8AAFCdfXxs9nEAAAAAAAAAAAAAAAAAAOAP9ow4OqnTH24AAAAAAAAAAAAAAAAAAB7Ilh6bbGkAAAAAAAAAKMstxtjcYgAAAPTpTbaYzK9vNu8GAAAAAAAAAAAA3bgAIDyWQQAAAQA=
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="6" name="objects" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAA+3cQRKCIBQGYDtjdbmmdYex7tO2VZvGETUQHn7f1g3jE/iBYhgAAAAgn9updgso4beu7zrNAIKJPCeMgdu+xZpaRa4rlHDXJ+hUrfH+qk+xs6PlvlxkQqBHsj0AWz3NIcBK9iMAgCOay0DOCAGAaFrf32m9fdCro/7uwJoOYtJ3WUKuBAAAAAAA2MfS87uz8xs64w4jAEiTAft2UV+CkuUpxbcFQDRHzfTu3wSAWKy3Kcn3BdAn4/u8qHtC6goAAOW42xHyeOhLADTMf7yAL+MBQB72AQAgNnM5ALTLPA1MMTYAAFu95IjVRu9skkwKQGT3xDyWeg7EIMvHlKpbD3W1nmpTD98WrGU8onXWZgAAkIf1X13/vn/1AwAAAGr6AHVYJfEAAAEA
|
||||
H4sIAAAAAAAACu3cQRKCIBQGYDtjdcmmdYex7tG2VZvGETUQHn7f1g3jE/iBYhgAAAAgn9updgso4beu7zrNAIKJPCeMgdu+xZpaRa4rlHDXJ+hUrfH+qk+xs6PlvlxkQqBHsj0AWz3NIcBK9iMAgCOay0DOCAGAaFrf32m9fdCro/7uwJoOYtJ3WUKuBAAAAAAA2MfS87uz8xs64w4jAEiTAft2UV+CkuUpxbcFQDRHzfTu3wSAWKy3Kcn3BdAn4/u8qHtC6goAAOW42xHyeOhLADTMf7yAL+MBQB72AQAgNnM5ALTLPA1MMTYAAFu95IjVRu9skkwKQGT3xDyWeg7EIMvHlKpbD3W1nmpTD98WrGU8onXWZgAAkIf1X13/vn/1AwAAAGr6AKp6a7EAAAEA
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="7" name="collision" width="128" height="128" visible="0" opacity="0.37">
|
||||
<data encoding="base64" compression="gzip">
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="8" name="protection" width="128" height="128" visible="0">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAA+3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAauuOl9cAAAEA
|
||||
H4sIAAAAAAAACu3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAauuOl9cAAAEA
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
||||
|
|
|
|||
|
|
@ -1,163 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE map SYSTEM "http://mapeditor.org/dtd/1.0/map.dtd">
|
||||
<map version="1.0" orientation="orthogonal" width="64" height="64" tilewidth="32" tileheight="32">
|
||||
<tileset firstgid="1" name="logic/collision" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/logic/collision.png"/>
|
||||
<map version="1.10" tiledversion="1.10.2" orientation="orthogonal" renderorder="right-down" width="64" height="64" tilewidth="32" tileheight="32" infinite="0" nextlayerid="9" nextobjectid="1">
|
||||
<tileset firstgid="1" name="logic/collision" tilewidth="32" tileheight="32" tilecount="1" columns="1">
|
||||
<image source="../../tileset/logic/collision.png" width="32" height="32"/>
|
||||
</tileset>
|
||||
<tileset firstgid="2" name="logic/portal" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/logic/portal.png"/>
|
||||
<tileset firstgid="2" name="logic/portal" tilewidth="32" tileheight="32" tilecount="24" columns="8">
|
||||
<image source="../../tileset/logic/portal.png" width="256" height="96"/>
|
||||
</tileset>
|
||||
<tileset firstgid="26" name="sparkles" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/building/decoration/floor_sparkle.png"/>
|
||||
<tileset firstgid="26" name="sparkles" tilewidth="32" tileheight="32" tilecount="18" columns="3">
|
||||
<image source="../../tileset/building/decoration/floor_sparkle.png" width="96" height="192"/>
|
||||
</tileset>
|
||||
<tileset firstgid="44" name="clouds" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/sky/cloud/clouds.png"/>
|
||||
<tileset firstgid="44" name="clouds" tilewidth="32" tileheight="32" tilecount="16" columns="4">
|
||||
<image source="../../tileset/sky/cloud/clouds.png" width="128" height="128"/>
|
||||
</tileset>
|
||||
<tileset firstgid="60" name="logic/creature/elemental" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/logic/creature/elemental.png"/>
|
||||
<tileset firstgid="60" name="logic/creature/elemental" tilewidth="32" tileheight="32" tilecount="16" columns="8">
|
||||
<image source="../../tileset/logic/creature/elemental.png" width="256" height="64"/>
|
||||
</tileset>
|
||||
<tileset firstgid="76" name="dark clouds" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/sky/cloud/cloudtile.png"/>
|
||||
<tileset firstgid="76" name="dark clouds" tilewidth="32" tileheight="32" tilecount="256" columns="16">
|
||||
<image source="../../tileset/sky/cloud/cloudtile.png" width="512" height="512"/>
|
||||
</tileset>
|
||||
<tileset firstgid="332" name="friendly cloud" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/sky/cloud/friendlycloud.png"/>
|
||||
<tileset firstgid="332" name="friendly cloud" tilewidth="32" tileheight="32" tilecount="270" columns="18">
|
||||
<image source="../../tileset/sky/cloud/friendlycloud.png" width="576" height="480"/>
|
||||
</tileset>
|
||||
<tileset firstgid="602" name="logic/creature/mythical_being" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/logic/creature/mythical_being.png"/>
|
||||
<tileset firstgid="602" name="logic/creature/mythical_being" tilewidth="32" tileheight="32" tilecount="24" columns="8">
|
||||
<image source="../../tileset/logic/creature/mythical_being.png" width="256" height="96"/>
|
||||
</tileset>
|
||||
<tileset firstgid="626" name="logic/creature/angel" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/logic/creature/angel.png"/>
|
||||
<tileset firstgid="626" name="logic/creature/angel" tilewidth="32" tileheight="32" tilecount="6" columns="6">
|
||||
<image source="../../tileset/logic/creature/angel.png" width="192" height="32"/>
|
||||
</tileset>
|
||||
<layer name="0_floor" width="64" height="64">
|
||||
<layer id="1" name="0_floor" width="64" height="64">
|
||||
<data encoding="base64" compression="gzip">
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="1_terrain" width="64" height="64">
|
||||
<layer id="2" name="1_terrain" width="64" height="64">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAANVba6xdQxReu0ppK6SJ8qdpPUqRqIZqNP2BoPrw7HUbpHq8SiWlLW21Uk7rupR4
|
||||
VqoRj9sUUUm9WkokUiL1SBBBhT9+6EPRiEQViTCfPctZZ901s2efe869fMnKPnv27L1nzaz3nkP0
|
||||
/8d5jm7r60H0IS53dIM4v9ZRh6d7WvhevOdScX5rE553sydr3IvE9SWR5ywQv68qOYbLxDg6/JF5
|
||||
vFf0m+5omaOKGJMe16LAOD929Iuj/hnRwCxvu8s/j1Gh+rkFJF9VsucIz7lCnJfln98zx9FUTxgL
|
||||
83e1Py4L3Iu+HaIP39vh723zvxl8Pk+0LQ2M/W5Hy8X5XEfXU85zmzGumY4W+9+DxDx3+PssTPdj
|
||||
mSqoUeylfJ2zrNa2O/FejN1auzvVecXRhYFn3KTOIY88P3cY/Vl2plLP+f/S0c+Ba8P88ROq1ykG
|
||||
eF/oaLZow9ixbhj/UuMeC3OpJmvgTcrYNEc/qP6wo/MdzaA03jc5etfRRkdPO3rEHzf69iJ8a7SB
|
||||
9xWqTet0WVSpu4xo2WBcR/kcFPH+nqOXI9f3RK594+hXR18Z16YZbQuMtp5gaeA9DNiZ+ZHrj1Kc
|
||||
9wFZvc4ztnraJZ4DOflQ9MG6QNbbqGYbta1NkX/WIdBy47plW6QuXhx4btG6A9baP0j1fG4Sz1kp
|
||||
2isU9i1lIPmz5Cck/wBigGuMdoz5baP9PnW+XfyGrP/uf3f5I9Z9jejTRc2H5E/zD9mYTXHoezDm
|
||||
hxLf/Z2jHZTL+gFKDzZTbQ7Xi3bYzueNcYbkl7FX/B4o3gXbz3GHtH03Unf7akH72eccPZxwX0+w
|
||||
1h+1/wvpItuZHykn4I+Cd1h+X0PGCRKrHb2TcH+j2OCPFaqPfS393enoU6rx/u8cZPE5KIqHEfvP
|
||||
i1x/xmh70dErjp4oeHYMDzj6QJzLceq4F+vOvEvsFm3fB94T459zmhBg/7QNAO/rHL0auS+GLZ7e
|
||||
8OeIvWQMNMXrtLbHUuY1YrpQpXBuGVt32D/L9kNnMS9rjGuNwvJNWgdCvPM1fV3OBWyjzksR+8bs
|
||||
LOR+vdG+mex5ieFA5RNkrKLjfoa2xxaPwwN9QDrWtvSA439ghrpm6X1vgPNVqZf7+/mL6YAE95H+
|
||||
8QKyaxOI/yEHOsZk/2fJQBk8rs6HGXEyA7Y4ZI84xgBS5uFPSpMBIJRvvE65/0NOv43q57MMYDNn
|
||||
Gu26jpmS92AetvrfsTlArr1LtYVi4NB72ecyXvO0Sh2fFb+3iCN4nu+Psl7J0HVMrfMhDBD6EMJn
|
||||
RlsoFrLyP5nTcQ3nhCznpd1RJ+W2q924F0A/zDfzeHyB7MAXWzn/zkB/Swcmunec7GhyZtcaYrEA
|
||||
xtnpCfx8oa5LW63rzNKOSlQi75OA3mvewffnlNeUdMxnrTvkHfahX2bbf4D5x/ukLYTNlTVL2KDt
|
||||
9bf+c62NavapSrW6J448f9qnhuoO06lWs0ccomtTmP8iO6f93Zgstw/7ZfV52Ew/thVUq4tVPK+6
|
||||
FguglgfZ/yjybg08DzG8zl0qVD9PXLeNxV7AHkrjHevO/E4QdLDXAwC+D7xCZtnGaH8PcP1W1zG1
|
||||
HQ2hQs2pZQCQP0vuJd87/Nig92M83wz8PlHZHMh/yNZzjsH4icI1u94A+zmsLdcW+JzX+xhv7w5X
|
||||
vAMsByeJdvBv1XkAWcMC76lrDtzv6K0S/ZuFMULeLWj+4Y9uodyOX6n6SnsHW8J1btRpHisYx5OO
|
||||
Xigxbth2fAsDQd8aiatGRvhmaP6lLYa9nuXoIn8ua1gaL5Fdr2oEMpeXtvvrks8Zm8g/43yy62Cp
|
||||
9gq1js1ULAvwNbG8kv0ax0OhfA0Y5/oc5XUcdKaj8YKnIQVzMEHEaxZC8WastoG6dkgO8C4dx0HW
|
||||
t3mCrFt1HK5j6RrOWa5tsKLTxFycnsA/cv/QngD4Ap33WTUfjQ2B9gp19+vsx2OxG/n2fRQvhxj8
|
||||
awoBvI92NCmzYzCr7heq+WjEZEACa8/12iJYOTsQ41H2Ge7oFEFHOzo2y/WsSvUxO3/z1gjVfCys
|
||||
LLiOWErXqhmDDJ5kPVfawlT+oRfHFfTl/C8UA5Wp+cAnWDIwwPu1EO8WJnp95v6pMs7gfkcW9IX/
|
||||
j9W7y9Z0u6h+DqwafQpGltBrDfQ9yMv7JH/flMD94D8U/6XqvkYX5T4R9l3yXgYjG+CbMVjFODHE
|
||||
4v8yui8BeYcupOTojDfVuWXnU6H5hz+DH0Zs1+6PHI9g/Zuh+xLav+k6RAzyPrbbbANTY2K2fTIu
|
||||
qlJ9fYN5juU/sXrv+MhYZJ0CvHPdoUz+rucKv7l+l2r/Rqj4UNY6Ud9DzoP4N1ZjfZ/yObD2W0wO
|
||||
jOM3ytcbOSl8Ivxe/8yO8ySYd+SZeq44Hj7MPWeooyMCOiH3b2i9CdX6kPfo3E8C33xjNfoQnqL8
|
||||
e+a+WbEN0DG/5N/KB0ZF5kCCr2P9Yvs9dO5XFsiFwK+sg/O3XNaHEJg/uU/EsiG6/gBZGFIwB3wN
|
||||
9u+SBD5Scj9LFvDtel2gv6xbWUD7X1TjD/Epvm/1y+y1B8aJfCfEP8cBKXtdgNi3hhEF98ZiX9iD
|
||||
fkoHNFm5LtdtYUtk7XaiwbeVB4328X5M7iWs3C8VRbE/1pN5wVHX8fQeoRjGGryP9nZxqI/7zhax
|
||||
Xwr/RXs+JGRcALnHd62Q7LcCkn+W8RhS93+nfGuUvLN9bwZk/DenoK+ugcRwO6XZvdT1l/yHah6t
|
||||
xigl5xY45k2xe0AoBtSQ/K8N9kqHtfe7LKzYHrXNxbGbFFj28axYLIR4cBXV+/e+RpW6x/Yp+xsl
|
||||
EP9g/lheYnufU1Ckw2VxbsF1Hds3A5Al5Ag9nYveQCP/8YkB9UDef46YEOsZig2s/Q/tRlsr5hF6
|
||||
PqsFzy2yh3K/mqVr+A6p80PElyG94O/xPF9sz/h3pz9fru4pq+epkPaQ9aBTkLV3h3Goj0/xrVnW
|
||||
X3k/BJ4HWZDyVKG8Hi33Pum9UPL/cdjDnerbGgHbwxifIcA/n+Fj0lMD/jm0P4b/r7SE6vdCYS44
|
||||
PkmNafoS50R4Z2CfIcuCRpXC++Baue59AcyDFXNIn8b1iYW9MqLeB9fjpP9olW37L0HXvfsCfwNC
|
||||
skCCAEAAAA==
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="2_object" width="64" height="64">
|
||||
<layer id="3" name="2_object" width="64" height="64">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO2avUrEQBDHExEOK7/AAys/D+0UP+4QCxXxTkFfwCcQH0HwASytBGtBe9Fe7JXj
|
||||
rC3UwkpFxVJnMasx3ibZ3dlskpsf/OGK7O5MdjOZzJzjEIQamxpjD9GsIEyjus87ngqu4zScb92D
|
||||
XPf3mldd4zLOnW0DLNPhRl8jYhvPjH/oxqcHFCuIvPCEONc64lxJwHx/tG0EIU1WcjSWUzRsG5EC
|
||||
rm0bEJMN0K5tIyxShZxnGjQC6tfIf0Q840+JRhn87fb5PAG/1yTvwU2Ma9L4LBTBz8kmvg5L+h83
|
||||
t2TngH93pYFRgZ8Lks/BO445iTMT4uOU5Blok7w+DTGhBjb3COzuVYyDdXVzlPjQHM/uQQm0FPBX
|
||||
NgYESfo+MGRrN2eeTkBj4O8sqA+0AlrV9N818B4N4yrZ5f7A8903ULsr9p3nGbLv1zhkoW7H3jfz
|
||||
rnpsCSOqbreHv6QUVS/XYP53IZ+BT42xJmt2fvjec2FxizeVFeYSjpNpw0QsSANlA36dgy5Bp/hT
|
||||
Z4Jj0L6FdU3m6rLn/wB0YcQSXGox/VLJs4/kh/ywpTHWBLrfGUSCBPZKVD/JM2XvG4ZpscX8X25B
|
||||
n/NAocX37MW2AYYoGqqlBKn41ih5NbIhy2eK1RMGvVqCDSqW7gGvofn7NgMx7dD5bxMWsn0FP8Fe
|
||||
nZ+s5JGq/ot6dRzZnpUtVPcpTq6pc7aSQrWvENar4+S1lsQQ9eo6vb4N03iO/Wc069WlMe7p9s6i
|
||||
8PfqTK8lSxZikA5R//XM+zNIEARBEARBEAQeXw8YFY8AQAAA
|
||||
H4sIAAAAAAAACu2avUrEQBDHExEOK7/AAys/D+0UP+4QCxXxTkFfwCcQH0HwASytBGtBe9Fe7JXjrC3UwkpFxVJnMasx3ibZ3dlskpsf/OGK7O5MdjOZzJzjEIQamxpjD9GsIEyjus87ngqu4zScb92DXPf3mldd4zLOnW0DLNPhRl8jYhvPjH/oxqcHFCuIvPCEONc64lxJwHx/tG0EIU1WcjSWUzRsG5ECrm0bEJMN0K5tIyxShZxnGjQC6tfIf0Q840+JRhn87fb5PAG/1yTvwU2Ma9L4LBTBz8kmvg5L+h83t2TngH93pYFRgZ8Lks/BO445iTMT4uOU5Blok7w+DTGhBjb3COzuVYyDdXVzlPjQHM/uQQm0FPBXNgYESfo+MGRrN2eeTkBj4O8sqA+0AlrV9N818B4N4yrZ5f7A8903ULsr9p3nGbLv1zhkoW7H3jfzrnpsCSOqbreHv6QUVS/XYP53IZ+BT42xJmt2fvjec2FxizeVFeYSjpNpw0QsSANlA36dgy5Bp/hTZ4Jj0L6FdU3m6rLn/wB0YcQSXGox/VLJs4/kh/ywpTHWBLrfGUSCBPZKVD/JM2XvG4ZpscX8X25Bn/NAocX37MW2AYYoGqqlBKn41ih5NbIhy2eK1RMGvVqCDSqW7gGvofn7NgMx7dD5bxMWsn0FP8FenZ+s5JGq/ot6dRzZnpUtVPcpTq6pc7aSQrWvENar4+S1lsQQ9eo6vb4N03iO/Wc069WlMe7p9s6i8PfqTK8lSxZikA5R//XM+zNIEARBEARBEAQeXw8YFY8AQAAA
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="3_roof" width="64" height="64">
|
||||
<layer id="4" name="3_roof" width="64" height="64" visible="0" locked="1">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO2aSU7DMBhG0zJK7AAxHICxrJkKrBnLjhm2DIWyBkRhj8QROAIXQOIiPQILZjbd
|
||||
8JBaVEWVmqZJnCbfk56sRJX6/7FjO7YtSwghhBBOGUpa1jCO4CiO4TimcCJpOjrvyFa5N0l+UziN
|
||||
MziLaZzDeVxwkf9dw5EGxyL5LeFyKc9VyjXM4HpI6r6ZnmeceTIdgEHURpuDIqYSpqMwx0qIc89g
|
||||
3nQQBjnAnOkgXJIOcbuKCq884zd8xw/8xC/8xh+Dz9/PPuV/XGUumsAktmArtmE7dmBnSOaqftFN
|
||||
fj3YW8qzj7IfB3DQp9w3qNdN3MJt3MFd3MP9iL/vh+R3hMd4glk8xTPM4XnE878gv0u8wgLX15R5
|
||||
vMHbiOcuoke1tZ+4EMd+vFAq/ezHXzyJ1F/UjwshvCYue0bV8GPPqJIgx2s33+5O9ozc7gWY/u4q
|
||||
t2tTBDleF23Xle3aKff47GVQBrG361r81c8DPjbwn/WueYd5/d4NQa95F2r/pG66IlYnQpjeI22m
|
||||
/XT7OCrChddzFKf1bfodKmOfo8SxvWqMFiK8ZwgCQWcIAj9DIIQQQgghhF/8AiHa9iYAQAAA
|
||||
H4sIAAAAAAAACu2aSU7DMBhG0zJK7AAxHICxrJkKrBnLjhm2DIWyBkRhj8QROAIXQOIiPQILZjbd8JBaVEWVmqZJnCbfk56sRJX6/7FjO7YtSwghhBBOGUpa1jCO4CiO4TimcCJpOjrvyFa5N0l+UziNMziLaZzDeVxwkf9dw5EGxyL5LeFyKc9VyjXM4HpI6r6ZnmeceTIdgEHURpuDIqYSpqMwx0qIc89g3nQQBjnAnOkgXJIOcbuKCq884zd8xw/8xC/8xh+Dz9/PPuV/XGUumsAktmArtmE7dmBnSOaqftFNfj3YW8qzj7IfB3DQp9w3qNdN3MJt3MFd3MP9iL/vh+R3hMd4glk8xTPM4XnE878gv0u8wgLX15R5vMHbiOcuoke1tZ+4EMd+vFAq/ezHXzyJ1F/UjwshvCYue0bV8GPPqJIgx2s33+5O9ozc7gWY/u4qt2tTBDleF23Xle3aKff47GVQBrG361r81c8DPjbwn/WueYd5/d4NQa95F2r/pG66IlYnQpjeI22m/XT7OCrChddzFKf1bfodKmOfo8SxvWqMFiK8ZwgCQWcIAj9DIIQQQgghhF/8AiHa9iYAQAAA
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="4_roof_add" width="64" height="64">
|
||||
<layer id="5" name="4_roof_add" width="64" height="64" visible="0" locked="1">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO3ToREAAAgDse6/MoYVMFxNMsGbTwAAgKtpBwCvPA4AAAAAAAAAAAAAADQtVS9Q
|
||||
swBAAAA=
|
||||
H4sIAAAAAAAACu3ToREAAAgDse6/MoYVMFxNMsGbTwAAgKtpBwCvPA4AAAAAAAAAAAAAADQtVS9QswBAAAA=
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="objects" width="64" height="64">
|
||||
<layer id="6" name="objects" width="64" height="64">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO3ZywnAIAwAUOmhU3WUbtHP/F1AKEqqFt87epAgmhhNCQDaWHsHAECVLTN2LOXz
|
||||
qAPMJHdugBjqSX+j5bjR4gGIcFX0XACzcQ8ERlaao+Q0WrHX4r2t6a6/AwY3S204g/Lxl+92t5oR
|
||||
zr8iAAAA8GcPfSksnQBAAAA=
|
||||
H4sIAAAAAAAACu3ZywnAIAwAUOmhU3WUbtHP/F1AKEqqFt87epAgmhhNCQDaWHsHAECVLTN2LOXzqAPMJHdugBjqSX+j5bjR4gGIcFX0XACzcQ8ERlaao+Q0WrHX4r2t6a6/AwY3S204g/Lxl+92t5oRzr8iAAAA8GcPfSksnQBAAAA=
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="collision" width="64" height="64" visible="0" opacity="0.37">
|
||||
<layer id="7" name="collision" width="64" height="64" visible="0" opacity="0.37">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO2VwQ6DMAxDu//d/593mjQh2rWJE6fUlnwCHL8UxKu19pJlWU7yrzJnVuC9in0W
|
||||
LO6n85/A7hG7O4Od3bka+457eRv5r5yja1UdKTYbm78Beu2+A1SfCOaMHSDPIvP8EXuZ3f3KrN3Z
|
||||
Ed9hND9K0V1O57fMqMzP+g4QusvK6BXBj9prNP/J7BH81XmfyL/Ki+x7l1+VH9l5lF+Nf+be3c4c
|
||||
vSdrDpsJ8X5Y+dlcbH5vjmVOBf6Z7NP5vTtYzR3dN6OIvUacUy/Xq8yuiP6e56O+Tessq1C7i+T/
|
||||
N4+hbP67mSxdO2SwX2ezhDh3Zn+vqvEzdlmFn/k+sXdgyendH/FPyuK3dB1dW8nNZPfm7MzvzRk9
|
||||
Y83Neve9ORG9vOxIfrSzO1Th7vVhza7Az5rNYmf7dH5ZlmW576/YPcQvy7Lc9wcfY9XjAEAAAA==
|
||||
H4sIAAAAAAAACu2VwQ6DMAxDu//d/593mjQh2rWJE6fUlnwCHL8UxKu19pJlWU7yrzJnVuC9in0WLO6n85/A7hG7O4Od3bka+457eRv5r5yja1UdKTYbm78Beu2+A1SfCOaMHSDPIvP8EXuZ3f3KrN3ZEd9hND9K0V1O57fMqMzP+g4QusvK6BXBj9prNP/J7BH81XmfyL/Ki+x7l1+VH9l5lF+Nf+be3c4cvSdrDpsJ8X5Y+dlcbH5vjmVOBf6Z7NP5vTtYzR3dN6OIvUacUy/Xq8yuiP6e56O+Tessq1C7i+T/N4+hbP67mSxdO2SwX2ezhDh3Zn+vqvEzdlmFn/k+sXdgyendH/FPyuK3dB1dW8nNZPfm7MzvzRk9Y83Neve9ORG9vOxIfrSzO1Th7vVhza7Az5rNYmf7dH5ZlmW576/YPcQvy7Lc9wcfY9XjAEAAAA==
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="protection" width="64" height="64" visible="0">
|
||||
<layer id="8" name="protection" width="64" height="64" visible="0">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAAAAAIC3AYbSVKsAQAAA
|
||||
H4sIAAAAAAAACu3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAAAAAIC3AYbSVKsAQAAA
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
||||
|
|
|
|||
BIN
data/maps/parallax/semos_surrounds.png
Normal file
|
After Width: | Height: | Size: 346 KiB |
BIN
data/maps/parallax/semos_surrounds.xcf.bz2
Normal file
BIN
data/maps/parallax/stars.png
Normal file
|
After Width: | Height: | Size: 332 B |
BIN
data/maps/parallax/view_wizards_tower.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 16 KiB |
BIN
data/music/jump_and_run_tropics.ogg
Normal file
|
|
@ -1,6 +1,6 @@
|
|||
--[[
|
||||
***************************************************************************
|
||||
* Copyright © 2022-2023 - Stendhal *
|
||||
* Copyright © 2022-2024 - Stendhal *
|
||||
***************************************************************************
|
||||
***************************************************************************
|
||||
* *
|
||||
|
|
@ -589,7 +589,20 @@ local prepareMetalDetectorLender = function()
|
|||
end
|
||||
|
||||
-- hint to players that they can borrow metal detector
|
||||
lender:addOffer("I also have some items that I don't mind #loaning out.")
|
||||
--~ lender:addOffer("I also have some items that I don't mind #loaning out.")
|
||||
-- must remove original response to "offer" else function to force "loan" chat option trigger
|
||||
-- doesn't work
|
||||
lender:removeTransition(ConversationStates.ATTENDING, ConversationPhrases.OFFER_MESSAGES, nil)
|
||||
lender:add(
|
||||
ConversationStates.ATTENDING,
|
||||
ConversationPhrases.OFFER_MESSAGES,
|
||||
nil,
|
||||
ConversationStates.ATTENDING,
|
||||
"Please check the blackboard for a list of items that I buy. I also have some items that I"
|
||||
.. " don't mind #loaning out.",
|
||||
function(player, sentence, raiser)
|
||||
lender:forceWordsInCurrentConversation({"loan"})
|
||||
end)
|
||||
|
||||
lender:add(
|
||||
ConversationStates.ATTENDING,
|
||||
|
|
@ -599,7 +612,9 @@ local prepareMetalDetectorLender = function()
|
|||
"So, you want to borrow my metal detector? Well, I don't lend things out"
|
||||
.. " without some form of collateral. What would you like to leave"
|
||||
.. " behind?",
|
||||
nil)
|
||||
function(player, sentence, raiser)
|
||||
lender:forceWordsInCurrentConversation({"nothing"})
|
||||
end)
|
||||
|
||||
lender:add(
|
||||
ConversationStates.ATTENDING,
|
||||
|
|
|
|||
BIN
data/sprites/entity/overlay/beams.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
data/sprites/entity/overlay/electricity.png
Normal file
|
After Width: | Height: | Size: 371 B |
BIN
data/sprites/entity/overlay/electricity_blue.png
Normal file
|
After Width: | Height: | Size: 371 B |
BIN
data/sprites/entity/overlay/electricity_red.png
Normal file
|
After Width: | Height: | Size: 371 B |
BIN
data/sprites/entity/overlay/electricity_violet.png
Normal file
|
After Width: | Height: | Size: 371 B |
BIN
data/sprites/entity/overlay/flame.png
Normal file
|
After Width: | Height: | Size: 2 KiB |
BIN
data/sprites/entity/overlay/flame.xcf.bz2
Normal file
BIN
data/sprites/entity/overlay/flame_blue.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
data/sprites/entity/overlay/flame_blue.xcf.bz2
Normal file
BIN
data/sprites/entity/overlay/ice_sparkles.png
Normal file
|
After Width: | Height: | Size: 307 B |
BIN
data/sprites/entity/overlay/ice_sparkles_2x.png
Normal file
|
After Width: | Height: | Size: 478 B |
BIN
data/sprites/entity/overlay/magic_sparkles.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
data/sprites/entity/overlay/necro_flames.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
data/sprites/entity/overlay/necro_flames.xcf.bz2
Normal file
BIN
data/sprites/entity/overlay/transform.png
Normal file
|
After Width: | Height: | Size: 380 B |
BIN
data/sprites/items/ring/clarity.png
Normal file
|
After Width: | Height: | Size: 409 B |