├── .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 |
8 | 9 | 10 | chat 12 | 13 |
14 | 15 | 8193.36 16 | 17 |
18 | 19 | 8193.36 20 | 21 |
22 | 23 | 8193.35 24 | 25 |
26 | 27 | 8193.34 28 | 29 |
30 | 31 | 8193.32 32 | 33 |
34 | 35 | 8193.31 36 | 37 |
38 | 39 | 8193.30 40 | 41 |
42 | 43 | 8193.29 44 | 45 |
46 | 47 | 8193.28 48 | 49 |
50 | 51 | 8193.27 52 | 53 |
54 | 55 | 8193.26 56 | 57 |
58 | 59 | 8193.25 60 | 61 |
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 | --------------------------------------------------------------------------------