├── .gitignore
├── .github
├── dependabot.yml
└── workflows
│ └── generate.yml
├── .gitattributes
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | *.zip
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: "github-actions"
4 | directory: "/"
5 | schedule:
6 | interval: "daily"
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text eol=lf
2 |
3 | *.dds binary
4 | *.dlg binary
5 | *.gff binary
6 | *.gui binary
7 | *.itp binary
8 | *.mdl binary
9 | *.plt binary
10 | *.png binary
11 | *.ptt binary
12 | *.ssf binary
13 | *.tga binary
14 | *.ute binary
15 | *.uti binary
16 | *.utm binary
17 | *.utp binary
18 | *.uts binary
19 | *.utt binary
20 | *.utw binary
21 |
22 | *.2da text eol=crlf working-tree-encoding=windows-1252
23 | *.dwk text eol=crlf working-tree-encoding=windows-1252
24 | *.ids text eol=crlf working-tree-encoding=windows-1252
25 | *.ini text eol=crlf working-tree-encoding=windows-1252
26 | *.ilr text eol=crlf working-tree-encoding=windows-1252
27 | *.nss text eol=crlf working-tree-encoding=windows-1252
28 | *.pwk text eol=crlf working-tree-encoding=windows-1252
29 | *.set text eol=crlf working-tree-encoding=windows-1252
30 | *.wok text eol=crlf working-tree-encoding=windows-1252
31 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | nwnee-assets
5 |
6 |
7 |
62 |
--------------------------------------------------------------------------------
/.github/workflows/generate.yml:
--------------------------------------------------------------------------------
1 | name: Generate
2 | on:
3 | workflow_dispatch:
4 | inputs:
5 | release:
6 | type: choice
7 | description: What version to generate
8 | options:
9 | - build8193.37
10 | - build8193.36
11 | - build8193.35
12 | - build8193.34
13 | - build8193.32
14 | - build8193.31
15 | - build8193.30
16 | - build8193.29
17 | - build8193.28
18 | - build8193.27
19 | - build8193.26
20 | - build8193.25
21 | required: true
22 | permissions:
23 | contents: write
24 | jobs:
25 | generate:
26 | name: Generate ${{ github.event.inputs.release }} nwn files
27 | runs-on: ubuntu-latest
28 | env:
29 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30 | steps:
31 | - name: "Checkout source code"
32 | uses: "actions/checkout@v4"
33 | with:
34 | fetch-depth: 0
35 | token: ${{ github.token }}
36 | - name: Setup .NET Core
37 | uses: actions/setup-dotnet@v4
38 | with:
39 | dotnet-version: "9.0.x"
40 | - name: Install Neverwinter.nim
41 | run: |
42 | wget -O nwn-nim.zip https://github.com/niv/neverwinter.nim/releases/download/2.0.2/neverwinter.linux.amd64.zip
43 | unzip -j nwn-nim.zip nwn_key_unpack -d /usr/local/bin/
44 | chmod +x /usr/local/bin/nwn_key_unpack
45 | echo /usr/local/bin/ >> $GITHUB_PATH
46 | - name: Install Imagemagick
47 | run: |
48 | sudo apt-get install -y imagemagick
49 | - name: Clone SteamRE/DepotDownloader
50 | run: |
51 | gh repo clone SteamRE/DepotDownloader
52 | - name: Download nwn:ee files
53 | run: |
54 | mkdir unpacked 2da bic dds dlg dwk git gff gui ids ini itp ltr jrl mdl mod mtr nss png plt ptt pwk set shd ssf tga tlk utc utd ute uti utm utp uts utt utw wok
55 | cd DepotDownloader/DepotDownloader
56 | if [ "${{ github.event.inputs.release }}" = "build8193.37" ]; then
57 | dotnet run -app 704450 -depot 704451 -username ${{ secrets.STEAM_USER }} -password ${{ secrets.STEAM_PASS }}
58 | else
59 | dotnet run -app 704450 -depot 704451 -beta ${{ github.event.inputs.release }} -username ${{ secrets.STEAM_USER }} -password ${{ secrets.STEAM_PASS }}
60 | fi
61 | dir_name=""
62 | for dir in depots/704451/*; do
63 | if [ -d "$dir" ]; then
64 | dir_name=$(basename "$dir")
65 | echo "$dir_name"
66 | fi
67 | done
68 | nwn_key_unpack "depots/704451/$dir_name/data/nwn_base.key" ../../unpacked/
69 | cp -r "depots/704451/$dir_name/lang/en/docs/" ../../docs/
70 | cp -r "depots/704451/$dir_name/ovr/" ../../ovr/
71 | - name: Gather 2da files
72 | run: |
73 | find ./ -name '*.2da' -exec cp -prv '{}' '2da/' ';'
74 | cd 2da && zip -r ../2da.zip .
75 | - uses: actions/upload-artifact@v4
76 | with:
77 | name: 2da
78 | path: 2da.zip
79 | - name: Gather dds files
80 | run: |
81 | find ./ -name '*.dds' -exec cp -prv '{}' 'dds/' ';'
82 | cd dds && zip -r ../dds.zip .
83 | - uses: actions/upload-artifact@v4
84 | with:
85 | name: dds
86 | path: dds.zip
87 | - name: Gather bic files
88 | run: |
89 | find ./ -name '*.bic' -exec cp -prv '{}' 'bic/' ';'
90 | cd bic && zip -r ../bic.zip .
91 | - uses: actions/upload-artifact@v4
92 | with:
93 | name: bic
94 | path: bic.zip
95 | - name: Gather dlg files
96 | run: |
97 | find ./ -name '*.dlg' -exec cp -prv '{}' 'dlg/' ';'
98 | cd dlg && zip -r ../dlg.zip .
99 | - uses: actions/upload-artifact@v4
100 | with:
101 | name: dlg
102 | path: dlg.zip
103 | - name: Gather docs
104 | run: |
105 | cd docs && zip -r ../docs.zip .
106 | - uses: actions/upload-artifact@v4
107 | with:
108 | name: docs
109 | path: docs.zip
110 | - name: Gather dwk files
111 | run: |
112 | find ./ -name '*.dwk' -exec cp -prv '{}' 'dwk/' ';'
113 | cd dwk && zip -r ../dwk.zip .
114 | - uses: actions/upload-artifact@v4
115 | with:
116 | name: dwk
117 | path: dwk.zip
118 | - name: Gather gff files
119 | run: |
120 | find ./ -name '*.gff' -exec cp -prv '{}' 'gff/' ';'
121 | cd gff && zip -r ../gff.zip .
122 | - uses: actions/upload-artifact@v4
123 | with:
124 | name: gff
125 | path: gff.zip
126 | - name: Gather gui files
127 | run: |
128 | find ./ -name '*.gui' -exec cp -prv '{}' 'gui/' ';'
129 | cd gui && zip -r ../gui.zip .
130 | - uses: actions/upload-artifact@v4
131 | with:
132 | name: gui
133 | path: gui.zip
134 | - name: Gather ids files
135 | run: |
136 | find ./ -name '*.ids' -exec cp -prv '{}' 'ids/' ';'
137 | cd ids && zip -r ../ids.zip .
138 | - uses: actions/upload-artifact@v4
139 | with:
140 | name: ids
141 | path: ids.zip
142 | - name: Gather ini files
143 | run: |
144 | find ./ -name '*.ini' -exec cp -prv '{}' 'ini/' ';'
145 | cd ini && zip -r ../ini.zip .
146 | - uses: actions/upload-artifact@v4
147 | with:
148 | name: ini
149 | path: ini.zip
150 | - name: Gather itp files
151 | run: |
152 | find ./ -name '*.itp' -exec cp -prv '{}' 'itp/' ';'
153 | cd itp && zip -r ../itp.zip .
154 | - uses: actions/upload-artifact@v4
155 | with:
156 | name: itp
157 | path: itp.zip
158 | - name: Gather ltr files
159 | run: |
160 | find ./ -name '*.ltr' -exec cp -prv '{}' 'ltr/' ';'
161 | cd ltr && zip -r ../ltr.zip .
162 | - uses: actions/upload-artifact@v4
163 | with:
164 | name: ltr
165 | path: ltr.zip
166 | - name: Gather mdl files
167 | run: |
168 | find ./ -name '*.mdl' -exec cp -prv '{}' 'mdl/' ';'
169 | cd mdl && zip -r ../mdl.zip .
170 | - uses: actions/upload-artifact@v4
171 | with:
172 | name: mdl
173 | path: mdl.zip
174 | - name: Gather mod files
175 | run: |
176 | find ./ -name '*.mod' -exec cp -prv '{}' 'mod/' ';'
177 | cd mod && zip -r ../mod.zip .
178 | - uses: actions/upload-artifact@v4
179 | with:
180 | name: mod
181 | path: mod.zip
182 | - name: Gather mtr files
183 | run: |
184 | find ./ -name '*.mtr' -exec cp -prv '{}' 'mtr/' ';'
185 | cd mtr && zip -r ../mtr.zip .
186 | - uses: actions/upload-artifact@v4
187 | with:
188 | name: mtr
189 | path: mtr.zip
190 | - name: Gather nss files
191 | run: |
192 | find ./ -name '*.nss' -exec cp -prv '{}' 'nss/' ';'
193 | cd nss && zip -r ../nss.zip .
194 | - uses: actions/upload-artifact@v4
195 | with:
196 | name: nss
197 | path: nss.zip
198 | - name: Gather plt files
199 | run: |
200 | find ./ -name '*.plt' -exec cp -prv '{}' 'plt/' ';'
201 | cd plt && zip -r ../plt.zip .
202 | - uses: actions/upload-artifact@v4
203 | with:
204 | name: plt
205 | path: plt.zip
206 | - name: Gather ovr files
207 | run: |
208 | cd ovr && zip -r ../ovr.zip .
209 | - uses: actions/upload-artifact@v4
210 | with:
211 | name: ovr
212 | path: ovr.zip
213 | - name: Gather ptt files
214 | run: |
215 | find ./ -name '*.ptt' -exec cp -prv '{}' 'ptt/' ';'
216 | cd ptt && zip -r ../ptt.zip .
217 | - uses: actions/upload-artifact@v4
218 | with:
219 | name: ptt
220 | path: ptt.zip
221 | - name: Gather pwk files
222 | run: |
223 | find ./ -name '*.pwk' -exec cp -prv '{}' 'pwk/' ';'
224 | cd pwk && zip -r ../pwk.zip .
225 | - uses: actions/upload-artifact@v4
226 | with:
227 | name: pwk
228 | path: pwk.zip
229 | - name: Gather dwk files
230 | run: |
231 | find ./ -name '*.set' -exec cp -prv '{}' 'set/' ';'
232 | cd set && zip -r ../set.zip .
233 | - uses: actions/upload-artifact@v4
234 | with:
235 | name: set
236 | path: set.zip
237 | - name: Gather shd files
238 | run: |
239 | find ./ -name '*.shd' -exec cp -prv '{}' 'shd/' ';'
240 | cd shd && zip -r ../shd.zip .
241 | - uses: actions/upload-artifact@v4
242 | with:
243 | name: shd
244 | path: shd.zip
245 | - name: Gather ssf files
246 | run: |
247 | find ./ -name '*.ssf' -exec cp -prv '{}' 'ssf/' ';'
248 | cd ssf && zip -r ../ssf.zip .
249 | - uses: actions/upload-artifact@v4
250 | with:
251 | name: ssf
252 | path: ssf.zip
253 | - name: Gather tga files
254 | run: |
255 | find unpacked/ -name '*.tga' -exec bash -c '
256 | filename="${0##*/}";
257 | if [[ "${filename}" == po* ]];
258 | then
259 | convert "$0" -gravity North -chop 0x22% -rotate 180 "png/${filename%.*}.png";
260 | else
261 | convert "$0" -rotate 180 "png/${filename%.*}.png";
262 | fi;
263 | cp -prv "$0" "tga/${filename}"
264 | ' {} \;
265 | cd tga && zip -r ../tga.zip . && cd ../png && zip -r ../png.zip .
266 | - uses: actions/upload-artifact@v4
267 | with:
268 | name: tga
269 | path: tga.zip
270 | - uses: actions/upload-artifact@v4
271 | with:
272 | name: png
273 | path: png.zip
274 | - name: Gather tlk files
275 | run: |
276 | find ./ -name '*.tlk' -exec cp -prv '{}' 'tlk/' ';'
277 | cd tlk && zip -r ../tlk.zip .
278 | - uses: actions/upload-artifact@v4
279 | with:
280 | name: tlk
281 | path: tlk.zip
282 | - name: Gather ute files
283 | run: |
284 | find ./ -name '*.ute' -exec cp -prv '{}' 'ute/' ';'
285 | cd ute && zip -r ../ute.zip .
286 | - uses: actions/upload-artifact@v4
287 | with:
288 | name: ute
289 | path: ute.zip
290 | - name: Gather utc files
291 | run: |
292 | find ./ -name '*.utc' -exec cp -prv '{}' 'utc/' ';'
293 | cd utc && zip -r ../utc.zip .
294 | - uses: actions/upload-artifact@v4
295 | with:
296 | name: utc
297 | path: utc.zip
298 | - name: Gather utd files
299 | run: |
300 | find ./ -name '*.utd' -exec cp -prv '{}' 'utd/' ';'
301 | cd utd && zip -r ../utd.zip .
302 | - uses: actions/upload-artifact@v4
303 | with:
304 | name: utd
305 | path: utd.zip
306 | - name: Gather uti files
307 | run: |
308 | find ./ -name '*.uti' -exec cp -prv '{}' 'uti/' ';'
309 | cd uti && zip -r ../uti.zip .
310 | - uses: actions/upload-artifact@v4
311 | with:
312 | name: uti
313 | path: uti.zip
314 | - name: Gather utm files
315 | run: |
316 | find ./ -name '*.utm' -exec cp -prv '{}' 'utm/' ';'
317 | cd utm && zip -r ../utm.zip .
318 | - uses: actions/upload-artifact@v4
319 | with:
320 | name: utm
321 | path: utm.zip
322 | - name: Gather utp files
323 | run: |
324 | find ./ -name '*.utp' -exec cp -prv '{}' 'utp/' ';'
325 | cd utp && zip -r ../utp.zip .
326 | - uses: actions/upload-artifact@v4
327 | with:
328 | name: utp
329 | path: utp.zip
330 | - name: Gather uts files
331 | run: |
332 | find ./ -name '*.uts' -exec cp -prv '{}' 'uts/' ';'
333 | cd uts && zip -r ../uts.zip .
334 | - uses: actions/upload-artifact@v4
335 | with:
336 | name: uts
337 | path: uts.zip
338 | - name: Gather utt files
339 | run: |
340 | find ./ -name '*.utt' -exec cp -prv '{}' 'utt/' ';'
341 | cd utt && zip -r ../utt.zip .
342 | - uses: actions/upload-artifact@v4
343 | with:
344 | name: utt
345 | path: utt.zip
346 | - name: Gather utw files
347 | run: |
348 | find ./ -name '*.utw' -exec cp -prv '{}' 'utw/' ';'
349 | cd utw && zip -r ../utw.zip .
350 | - uses: actions/upload-artifact@v4
351 | with:
352 | name: utw
353 | path: utw.zip
354 | - name: Gather wok files
355 | run: |
356 | find ./ -name '*.wok' -exec cp -prv '{}' 'wok/' ';'
357 | cd wok && zip -r ../wok.zip .
358 | - uses: actions/upload-artifact@v4
359 | with:
360 | name: wok
361 | path: wok.zip
362 | - name: Release
363 | uses: softprops/action-gh-release@v1
364 | with:
365 | token: ${{ github.token }}
366 | name: ${{ github.event.inputs.release }}
367 | tag_name: release/${{ github.event.inputs.release }}
368 | prerelease: ${{ github.event.inputs.release == 'build8193.38' }}
369 | files: |
370 | 2da.zip
371 | bic.zip
372 | dds.zip
373 | dlg.zip
374 | docs.zip
375 | dwk.zip
376 | gff.zip
377 | gui.zip
378 | ids.zip
379 | ini.zip
380 | itp.zip
381 | ltr.zip
382 | mdl.zip
383 | mod.zip
384 | mtr.zip
385 | nss.zip
386 | png.zip
387 | ovr.zip
388 | plt.zip
389 | ptt.zip
390 | pwk.zip
391 | set.zip
392 | shd.zip
393 | ssf.zip
394 | tga.zip
395 | tlk.zip
396 | utc.zip
397 | utd.zip
398 | ute.zip
399 | uti.zip
400 | utm.zip
401 | utp.zip
402 | uts.zip
403 | utt.zip
404 | utw.zip
405 | wok.zip
406 | git:
407 | name: ${{ matrix.type }} ${{ github.event.inputs.release }} git
408 | runs-on: ubuntu-latest
409 | needs: generate
410 | strategy:
411 | matrix:
412 | type: [2da, bic, dds, dlg, docs, dwk, gff, gui, ids, ini, itp, ltr, mdl, mod, mtr, nss, ovr, png, plt, ptt, pwk, set, shd, ssf, tga, tlk, utc, utd, ute, uti, utm, utp, uts, utt, utw, wok]
413 | env:
414 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
415 | steps:
416 | - name: "Checkout source code"
417 | uses: "actions/checkout@v3"
418 | with:
419 | fetch-depth: 0
420 | token: ${{ github.token }}
421 | - uses: actions/download-artifact@v4
422 | with:
423 | name: ${{ matrix.type }}
424 | - name: Extract some files
425 | run: |
426 | 7z x ${{ matrix.type }}.zip
427 | - uses: EndBug/add-and-commit@v9
428 | with:
429 | message: 'CI: ${{ github.event.inputs.release }}'
430 | new_branch: '${{ github.event.inputs.release }}/${{ matrix.type }}'
431 | committer_name: GitHub Actions
432 | committer_email: 41898282+github-actions[bot]@users.noreply.github.com
433 |
--------------------------------------------------------------------------------