mirror of
https://github.com/fallout2-ce/fallout2-ce.git
synced 2026-07-27 16:47:11 -07:00
Compare commits
36
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4bb81a919 | ||
|
|
7ea5265a01 | ||
|
|
649d255ca2 | ||
|
|
64af575bdf | ||
|
|
03d703b734 | ||
|
|
19dfece38e | ||
|
|
7c361af576 | ||
|
|
0dc93bab88 | ||
|
|
64bb2af1fd | ||
|
|
cf56c0ecef | ||
|
|
161d114306 | ||
|
|
4823bd328f | ||
|
|
62f4dae07e | ||
|
|
f05831648b | ||
|
|
692cef5c98 | ||
|
|
d68790a096 | ||
|
|
97cd20d21e | ||
|
|
f4bb72b9e8 | ||
|
|
f56a96ec9c | ||
|
|
2504c64735 | ||
|
|
8a14b2b3ed | ||
|
|
bdf5d253ba | ||
|
|
9d2462ef44 | ||
|
|
be9169b234 | ||
|
|
aa54707d60 | ||
|
|
61947f5fb9 | ||
|
|
cead52bbd1 | ||
|
|
f80a61d359 | ||
|
|
34b3232422 | ||
|
|
a323a1292c | ||
|
|
cf6b3e75f3 | ||
|
|
a1dafba37a | ||
|
|
f264827cd6 | ||
|
|
544eb92d8e | ||
|
|
1e9b81dd17 | ||
|
|
b5c420274f |
@@ -6,15 +6,10 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches: [main]
|
branches: [main]
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
format:
|
format:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: github.actor != 'github-actions[bot]' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)
|
if: github.actor != 'github-actions[bot]' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -44,4 +39,4 @@ jobs:
|
|||||||
echo "No formatting changes"
|
echo "No formatting changes"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@@ -8,16 +8,11 @@ on:
|
|||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_webassembly_version:
|
build_webassembly_version:
|
||||||
name: Build webassembly version
|
name: Build webassembly version
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions: write-all
|
||||||
contents: write
|
|
||||||
deployments: write
|
|
||||||
steps:
|
steps:
|
||||||
- name: start deployment
|
- name: start deployment
|
||||||
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
|
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
|
||||||
@@ -143,3 +138,4 @@ jobs:
|
|||||||
deployment_id: ${{ steps.deployment.outputs.deployment_id }}
|
deployment_id: ${{ steps.deployment.outputs.deployment_id }}
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
env_url: https://${{ github.repository_owner }}.github.io/fallout2-ce/PR-${{ github.event.pull_request.number }}/
|
env_url: https://${{ github.repository_owner }}.github.io/fallout2-ce/PR-${{ github.event.pull_request.number }}/
|
||||||
|
|
||||||
|
|||||||
+25
-106
@@ -9,9 +9,6 @@ on:
|
|||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -38,9 +35,6 @@ jobs:
|
|||||||
name: Code format check
|
name: Code format check
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pull-requests: read
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
@@ -77,7 +71,6 @@ jobs:
|
|||||||
name: Android
|
name: Android
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [ce-dat]
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
@@ -111,38 +104,21 @@ jobs:
|
|||||||
cd os/android
|
cd os/android
|
||||||
./gradlew assembleDebug
|
./gradlew assembleDebug
|
||||||
|
|
||||||
- name: Download ce.dat
|
- name: Change apk file name
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: ce-dat
|
|
||||||
path: out/dist
|
|
||||||
|
|
||||||
- name: Package
|
|
||||||
run: |
|
run: |
|
||||||
mkdir -p out/dist/fallout2-ce-android-debug
|
mv os/android/app/build/outputs/apk/debug/app-debug.apk os/android/app/build/outputs/apk/debug/fallout2-ce.apk
|
||||||
cp os/android/app/build/outputs/apk/debug/app-debug.apk out/dist/fallout2-ce-android-debug/fallout2-ce.apk
|
|
||||||
cp out/dist/ce.dat out/dist/fallout2-ce-android-debug/ce.dat
|
|
||||||
cd out/dist
|
|
||||||
zip -r fallout2-ce-android-debug.zip fallout2-ce-android-debug
|
|
||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: fallout2-ce-android-debug
|
name: fallout2-ce-debug.apk
|
||||||
path: out/dist/fallout2-ce-android-debug.zip
|
path: os/android/app/build/outputs/apk/debug/fallout2-ce.apk
|
||||||
retention-days: 7
|
retention-days: 7
|
||||||
|
|
||||||
ce-dat:
|
|
||||||
name: Build ce.dat
|
|
||||||
uses: ./.github/workflows/reusable-build-ce-dat.yml
|
|
||||||
with:
|
|
||||||
preset: linux-x64-debug
|
|
||||||
|
|
||||||
ios:
|
ios:
|
||||||
name: iOS
|
name: iOS
|
||||||
|
|
||||||
runs-on: macos-14
|
runs-on: macos-14
|
||||||
needs: [ce-dat]
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
@@ -167,32 +143,17 @@ jobs:
|
|||||||
cd out/build/ios
|
cd out/build/ios
|
||||||
cpack -C Debug
|
cpack -C Debug
|
||||||
|
|
||||||
- name: Download ce.dat
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: ce-dat
|
|
||||||
path: out/dist
|
|
||||||
|
|
||||||
- name: Package
|
|
||||||
run: |
|
|
||||||
mkdir -p out/dist/fallout2-ce-ios
|
|
||||||
cp out/build/ios/fallout2-ce.ipa out/dist/fallout2-ce-ios/fallout2-ce-ios.ipa
|
|
||||||
cp out/dist/ce.dat out/dist/fallout2-ce-ios/ce.dat
|
|
||||||
cd out/dist
|
|
||||||
zip -r fallout2-ce-ios.zip fallout2-ce-ios
|
|
||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: fallout2-ce-ios
|
name: fallout2-ce.ipa
|
||||||
path: out/dist/fallout2-ce-ios.zip
|
path: out/build/ios/fallout2-ce.ipa
|
||||||
retention-days: 7
|
retention-days: 7
|
||||||
|
|
||||||
linux:
|
linux:
|
||||||
name: Linux (${{ matrix.arch }})
|
name: Linux (${{ matrix.arch }})
|
||||||
|
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
needs: [ce-dat]
|
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@@ -232,31 +193,21 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cmake --build --preset linux-${{ matrix.arch }}-debug
|
cmake --build --preset linux-${{ matrix.arch }}-debug
|
||||||
|
|
||||||
- name: Download ce.dat
|
- name: Change executable file name
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: ce-dat
|
|
||||||
path: out/dist
|
|
||||||
|
|
||||||
- name: Package
|
|
||||||
run: |
|
run: |
|
||||||
mkdir -p out/dist/fallout2-ce-linux-${{ matrix.arch }}
|
mv out/build/linux-${{ matrix.arch }}-debug/fallout2-ce out/build/linux-${{ matrix.arch }}-debug/fallout2-ce-linux-${{ matrix.arch }}
|
||||||
cp out/build/linux-${{ matrix.arch }}-debug/fallout2-ce out/dist/fallout2-ce-linux-${{ matrix.arch }}/fallout2-ce
|
|
||||||
cp out/dist/ce.dat out/dist/fallout2-ce-linux-${{ matrix.arch }}/ce.dat
|
|
||||||
tar -czvf out/dist/fallout2-ce-linux-${{ matrix.arch }}.tar.gz -C out/dist fallout2-ce-linux-${{ matrix.arch }}
|
|
||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: fallout2-ce-linux-${{ matrix.arch }}
|
name: fallout2-ce-linux-${{ matrix.arch }}
|
||||||
path: out/dist/fallout2-ce-linux-${{ matrix.arch }}.tar.gz
|
path: out/build/linux-${{ matrix.arch }}-debug/fallout2-ce-linux-${{ matrix.arch }}
|
||||||
retention-days: 7
|
retention-days: 7
|
||||||
|
|
||||||
linux-armhf:
|
linux-armhf:
|
||||||
name: Linux (armhf)
|
name: Linux (armhf)
|
||||||
|
|
||||||
runs-on: ubuntu-22.04-arm
|
runs-on: ubuntu-22.04-arm
|
||||||
needs: [ce-dat]
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
@@ -282,31 +233,21 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
run: cmake --build build
|
run: cmake --build build
|
||||||
|
|
||||||
- name: Download ce.dat
|
- name: Change executable file name
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: ce-dat
|
|
||||||
path: out/dist
|
|
||||||
|
|
||||||
- name: Package
|
|
||||||
run: |
|
run: |
|
||||||
mkdir -p out/dist/fallout2-ce-linux-armhf
|
mv build/fallout2-ce build/fallout2-ce-linux-armhf
|
||||||
cp build/fallout2-ce out/dist/fallout2-ce-linux-armhf/fallout2-ce
|
|
||||||
cp out/dist/ce.dat out/dist/fallout2-ce-linux-armhf/ce.dat
|
|
||||||
tar -czvf out/dist/fallout2-ce-linux-armhf.tar.gz -C out/dist fallout2-ce-linux-armhf
|
|
||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: fallout2-ce-linux-armhf
|
name: fallout2-ce-linux-armhf
|
||||||
path: out/dist/fallout2-ce-linux-armhf.tar.gz
|
path: build/fallout2-ce-linux-armhf
|
||||||
retention-days: 7
|
retention-days: 7
|
||||||
|
|
||||||
linux-arm64:
|
linux-arm64:
|
||||||
name: Linux (arm64)
|
name: Linux (arm64)
|
||||||
|
|
||||||
runs-on: ubuntu-22.04-arm
|
runs-on: ubuntu-22.04-arm
|
||||||
needs: [ce-dat]
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
@@ -323,24 +264,15 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
run: cmake --build build
|
run: cmake --build build
|
||||||
|
|
||||||
- name: Download ce.dat
|
- name: Change executable file name
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: ce-dat
|
|
||||||
path: out/dist
|
|
||||||
|
|
||||||
- name: Package
|
|
||||||
run: |
|
run: |
|
||||||
mkdir -p out/dist/fallout2-ce-linux-arm64
|
mv build/fallout2-ce build/fallout2-ce-linux-arm64
|
||||||
cp build/fallout2-ce out/dist/fallout2-ce-linux-arm64/fallout2-ce
|
|
||||||
cp out/dist/ce.dat out/dist/fallout2-ce-linux-arm64/ce.dat
|
|
||||||
tar -czvf out/dist/fallout2-ce-linux-arm64.tar.gz -C out/dist fallout2-ce-linux-arm64
|
|
||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: fallout2-ce-linux-arm64
|
name: fallout2-ce-linux-arm64
|
||||||
path: out/dist/fallout2-ce-linux-arm64.tar.gz
|
path: build/fallout2-ce-linux-arm64
|
||||||
retention-days: 7
|
retention-days: 7
|
||||||
|
|
||||||
macos:
|
macos:
|
||||||
@@ -374,7 +306,7 @@ jobs:
|
|||||||
- name: Upload
|
- name: Upload
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: fallout2-ce-macos
|
name: fallout2-ce-macos.dmg
|
||||||
path: out/build/macos/Fallout II Community Edition.dmg
|
path: out/build/macos/Fallout II Community Edition.dmg
|
||||||
retention-days: 7
|
retention-days: 7
|
||||||
|
|
||||||
@@ -382,14 +314,15 @@ jobs:
|
|||||||
name: Windows (${{ matrix.arch }})
|
name: Windows (${{ matrix.arch }})
|
||||||
|
|
||||||
runs-on: windows-2025
|
runs-on: windows-2025
|
||||||
needs: [ce-dat]
|
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- arch: x86
|
- arch: x86
|
||||||
|
generator-platform: Win32
|
||||||
- arch: x64
|
- arch: x64
|
||||||
|
generator-platform: x64
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
@@ -404,41 +337,29 @@ jobs:
|
|||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: out
|
path: out
|
||||||
key: windows-${{ matrix.arch }}-cmake-v103
|
key: windows-${{ matrix.arch }}-cmake-v102
|
||||||
|
|
||||||
- name: Configure
|
- name: Configure
|
||||||
shell: cmd
|
shell: cmd
|
||||||
run: |
|
run: |
|
||||||
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products Microsoft.VisualStudio.Product.BuildTools -requires Microsoft.VisualStudio.Component.VC.v141.x86.x64 Microsoft.VisualStudio.Component.VC.v141.xp -property installationPath`) do set "VS_PATH=%%i"
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat" ^
|
||||||
call "%VS_PATH%\Common7\Tools\VsDevCmd.bat" ^
|
|
||||||
&& cmake --preset windows-${{ matrix.arch }}
|
&& cmake --preset windows-${{ matrix.arch }}
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
shell: cmd
|
shell: cmd
|
||||||
run: |
|
run: |
|
||||||
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products Microsoft.VisualStudio.Product.BuildTools -requires Microsoft.VisualStudio.Component.VC.v141.x86.x64 Microsoft.VisualStudio.Component.VC.v141.xp -property installationPath`) do set "VS_PATH=%%i"
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat" ^
|
||||||
call "%VS_PATH%\Common7\Tools\VsDevCmd.bat" ^
|
|
||||||
&& cmake --build --preset windows-${{ matrix.arch }}-release
|
&& cmake --build --preset windows-${{ matrix.arch }}-release
|
||||||
|
|
||||||
- name: Download ce.dat
|
- name: Change executable file name
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: ce-dat
|
|
||||||
path: out/dist
|
|
||||||
|
|
||||||
- name: Package
|
|
||||||
run: |
|
run: |
|
||||||
mkdir -p out/dist/fallout2-ce-windows-${{ matrix.arch }}
|
mv out/build/windows-${{ matrix.arch }}/RelWithDebInfo/fallout2-ce.exe out/build/windows-${{ matrix.arch }}/RelWithDebInfo/fallout2-ce-${{ matrix.arch }}.exe
|
||||||
cp out/build/windows-${{ matrix.arch }}/RelWithDebInfo/fallout2-ce.exe out/dist/fallout2-ce-windows-${{ matrix.arch }}/fallout2-ce.exe
|
|
||||||
cp out/dist/ce.dat out/dist/fallout2-ce-windows-${{ matrix.arch }}/ce.dat
|
|
||||||
cd out/dist
|
|
||||||
7z a fallout2-ce-windows-${{ matrix.arch }}.zip fallout2-ce-windows-${{ matrix.arch }}
|
|
||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: fallout2-ce-windows-${{ matrix.arch }}
|
name: fallout2-ce-windows-${{ matrix.arch }}
|
||||||
path: out/dist/fallout2-ce-windows-${{ matrix.arch }}.zip
|
path: out/build/windows-${{ matrix.arch }}/RelWithDebInfo/fallout2-ce-${{ matrix.arch }}.exe
|
||||||
retention-days: 7
|
retention-days: 7
|
||||||
|
|
||||||
|
|
||||||
@@ -446,8 +367,7 @@ jobs:
|
|||||||
name: Release Continuous build
|
name: Release Continuous build
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [android, ios, linux, linux-armhf, linux-arm64, macos, windows]
|
needs: [android, ios, linux, linux-armhf, linux-arm64, macos, windows]
|
||||||
permissions:
|
permissions: write-all
|
||||||
contents: write
|
|
||||||
steps:
|
steps:
|
||||||
- name: Fetch artifacts
|
- name: Fetch artifacts
|
||||||
if: ${{ always() && github.ref == 'refs/heads/main' && github.event_name == 'push' }}
|
if: ${{ always() && github.ref == 'refs/heads/main' && github.event_name == 'push' }}
|
||||||
@@ -467,7 +387,6 @@ jobs:
|
|||||||
- name: Move unpacked artifacts to root folder
|
- name: Move unpacked artifacts to root folder
|
||||||
if: ${{ always() && github.ref == 'refs/heads/main' && github.event_name == 'push' }}
|
if: ${{ always() && github.ref == 'refs/heads/main' && github.event_name == 'push' }}
|
||||||
run: |
|
run: |
|
||||||
rm -rf artifacts/ce-dat
|
|
||||||
ls -Rlah .
|
ls -Rlah .
|
||||||
find .
|
find .
|
||||||
cd artifacts/
|
cd artifacts/
|
||||||
|
|||||||
@@ -5,9 +5,6 @@ on:
|
|||||||
types:
|
types:
|
||||||
- closed
|
- closed
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
delete_pr_preview:
|
delete_pr_preview:
|
||||||
name: Delete PR preview from gh-pages
|
name: Delete PR preview from gh-pages
|
||||||
|
|||||||
@@ -5,27 +5,15 @@ on:
|
|||||||
types:
|
types:
|
||||||
- published
|
- published
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
ce-dat:
|
|
||||||
name: Build ce.dat
|
|
||||||
uses: ./.github/workflows/reusable-build-ce-dat.yml
|
|
||||||
with:
|
|
||||||
preset: linux-x64-release
|
|
||||||
|
|
||||||
android:
|
android:
|
||||||
name: Android
|
name: Android
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [ce-dat]
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
@@ -59,21 +47,12 @@ jobs:
|
|||||||
cd os/android
|
cd os/android
|
||||||
./gradlew assembleRelease
|
./gradlew assembleRelease
|
||||||
|
|
||||||
- name: Download ce.dat
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: ce-dat
|
|
||||||
path: out/dist
|
|
||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
run: |
|
run: |
|
||||||
mkdir -p out/dist/fallout2-ce-android
|
cd os/android/app/build/outputs/apk/release
|
||||||
cp os/android/app/build/outputs/apk/release/app-release.apk out/dist/fallout2-ce-android/fallout2-ce-android.apk
|
cp app-release.apk fallout2-ce-android.apk
|
||||||
cp out/dist/ce.dat out/dist/fallout2-ce-android/ce.dat
|
gh release upload ${{ github.event.release.tag_name }} fallout2-ce-android.apk
|
||||||
cd out/dist
|
rm fallout2-ce-android.apk
|
||||||
zip -r fallout2-ce-android.zip fallout2-ce-android
|
|
||||||
gh release upload ${{ github.event.release.tag_name }} fallout2-ce-android.zip
|
|
||||||
rm fallout2-ce-android.zip
|
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
@@ -81,9 +60,6 @@ jobs:
|
|||||||
name: iOS
|
name: iOS
|
||||||
|
|
||||||
runs-on: macos-14
|
runs-on: macos-14
|
||||||
needs: [ce-dat]
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
@@ -119,21 +95,12 @@ jobs:
|
|||||||
cd build
|
cd build
|
||||||
cpack -C RelWithDebInfo
|
cpack -C RelWithDebInfo
|
||||||
|
|
||||||
- name: Download ce.dat
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: ce-dat
|
|
||||||
path: out/dist
|
|
||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
run: |
|
run: |
|
||||||
mkdir -p out/dist/fallout2-ce-ios
|
cd build
|
||||||
cp build/fallout2-ce.ipa out/dist/fallout2-ce-ios/fallout2-ce-ios.ipa
|
cp fallout2-ce.ipa fallout2-ce-ios.ipa
|
||||||
cp out/dist/ce.dat out/dist/fallout2-ce-ios/ce.dat
|
gh release upload ${{ github.event.release.tag_name }} fallout2-ce-ios.ipa
|
||||||
cd out/dist
|
rm fallout2-ce-ios.ipa
|
||||||
zip -r fallout2-ce-ios.zip fallout2-ce-ios
|
|
||||||
gh release upload ${{ github.event.release.tag_name }} fallout2-ce-ios.zip
|
|
||||||
rm fallout2-ce-ios.zip
|
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
@@ -141,9 +108,6 @@ jobs:
|
|||||||
name: Linux (${{ matrix.arch }})
|
name: Linux (${{ matrix.arch }})
|
||||||
|
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
needs: [ce-dat]
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@@ -200,18 +164,10 @@ jobs:
|
|||||||
-j $(nproc) \
|
-j $(nproc) \
|
||||||
# EOL
|
# EOL
|
||||||
|
|
||||||
- name: Download ce.dat
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: ce-dat
|
|
||||||
path: out/dist
|
|
||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
run: |
|
run: |
|
||||||
mkdir -p out/dist/fallout2-ce-linux-${{ matrix.arch }}
|
cd build
|
||||||
cp build/fallout2-ce out/dist/fallout2-ce-linux-${{ matrix.arch }}/fallout2-ce
|
tar -czvf fallout2-ce-linux-${{ matrix.arch }}.tar.gz fallout2-ce
|
||||||
cp out/dist/ce.dat out/dist/fallout2-ce-linux-${{ matrix.arch }}/ce.dat
|
|
||||||
tar -czvf fallout2-ce-linux-${{ matrix.arch }}.tar.gz -C out/dist fallout2-ce-linux-${{ matrix.arch }}
|
|
||||||
gh release upload ${{ github.event.release.tag_name }} fallout2-ce-linux-${{ matrix.arch }}.tar.gz
|
gh release upload ${{ github.event.release.tag_name }} fallout2-ce-linux-${{ matrix.arch }}.tar.gz
|
||||||
rm fallout2-ce-linux-${{ matrix.arch }}.tar.gz
|
rm fallout2-ce-linux-${{ matrix.arch }}.tar.gz
|
||||||
env:
|
env:
|
||||||
@@ -221,8 +177,6 @@ jobs:
|
|||||||
name: macOS
|
name: macOS
|
||||||
|
|
||||||
runs-on: macos-11
|
runs-on: macos-11
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
@@ -290,59 +244,47 @@ jobs:
|
|||||||
name: Windows (${{ matrix.arch }})
|
name: Windows (${{ matrix.arch }})
|
||||||
|
|
||||||
runs-on: windows-2025
|
runs-on: windows-2025
|
||||||
needs: [ce-dat]
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- arch: x86
|
- arch: x86
|
||||||
|
generator-platform: Win32
|
||||||
- arch: x64
|
- arch: x64
|
||||||
|
generator-platform: x64
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Install Visual Studio 2022 Build Tools with v141_xp
|
- name: Install Visual Studio 2019 Build Tools with v141_xp
|
||||||
shell: cmd
|
shell: cmd
|
||||||
run: |
|
run: |
|
||||||
choco install visualstudio2022buildtools -y --package-parameters="'--add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.v141.x86.x64 --add Microsoft.VisualStudio.Component.VC.v141.xp --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Windows10SDK.10240 --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.WinXP --add Microsoft.VisualStudio.Component.WinXP'"
|
choco install visualstudio2019buildtools -y --package-parameters="'--add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.v141.x86.x64 --add Microsoft.VisualStudio.Component.VC.v141.xp --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Windows10SDK.10240 --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.WinXP --add Microsoft.VisualStudio.Component.WinXP'"
|
||||||
|
|
||||||
- name: Cache cmake build
|
- name: Cache cmake build
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: out
|
path: build
|
||||||
key: windows-${{ matrix.arch }}-cmake-v2
|
key: windows-${{ matrix.arch }}-cmake-v1
|
||||||
|
|
||||||
- name: Configure
|
- name: Configure
|
||||||
shell: cmd
|
shell: cmd
|
||||||
run: |
|
run: |
|
||||||
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products Microsoft.VisualStudio.Product.BuildTools -requires Microsoft.VisualStudio.Component.VC.v141.x86.x64 Microsoft.VisualStudio.Component.VC.v141.xp -property installationPath`) do set "VS_PATH=%%i"
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat" ^
|
||||||
call "%VS_PATH%\Common7\Tools\VsDevCmd.bat" ^
|
&& cmake -B build -G "Visual Studio 16 2019" -A ${{ matrix.generator-platform }}
|
||||||
&& cmake --preset windows-${{ matrix.arch }}
|
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
shell: cmd
|
shell: cmd
|
||||||
run: |
|
run: |
|
||||||
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products Microsoft.VisualStudio.Product.BuildTools -requires Microsoft.VisualStudio.Component.VC.v141.x86.x64 Microsoft.VisualStudio.Component.VC.v141.xp -property installationPath`) do set "VS_PATH=%%i"
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat" ^
|
||||||
call "%VS_PATH%\Common7\Tools\VsDevCmd.bat" ^
|
&& cmake --build build --config RelWithDebInfo
|
||||||
&& cmake --build --preset windows-${{ matrix.arch }}-release
|
|
||||||
|
|
||||||
- name: Download ce.dat
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: ce-dat
|
|
||||||
path: out/dist
|
|
||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
run: |
|
run: |
|
||||||
mkdir -p out/dist/fallout2-ce-windows-${{ matrix.arch }}
|
cd build/RelWithDebInfo
|
||||||
cp out/build/windows-${{ matrix.arch }}/RelWithDebInfo/fallout2-ce.exe out/dist/fallout2-ce-windows-${{ matrix.arch }}/fallout2-ce.exe
|
7z a fallout2-ce-windows-${{ matrix.arch }}.zip fallout2-ce.exe
|
||||||
cp out/dist/ce.dat out/dist/fallout2-ce-windows-${{ matrix.arch }}/ce.dat
|
|
||||||
cd out/dist
|
|
||||||
7z a fallout2-ce-windows-${{ matrix.arch }}.zip fallout2-ce-windows-${{ matrix.arch }}
|
|
||||||
gh release upload ${{ github.event.release.tag_name }} fallout2-ce-windows-${{ matrix.arch }}.zip
|
gh release upload ${{ github.event.release.tag_name }} fallout2-ce-windows-${{ matrix.arch }}.zip
|
||||||
rm fallout2-ce-windows-${{ matrix.arch }}.zip
|
rm fallout2-ce-windows-${{ matrix.arch }}.zip
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
name: Reusable Build ce.dat
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
preset:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-ce-dat:
|
|
||||||
name: Build ce.dat
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Clone
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install libsdl2-dev zlib1g-dev
|
|
||||||
|
|
||||||
- name: Configure
|
|
||||||
run: |
|
|
||||||
cmake --preset ${{ inputs.preset }}
|
|
||||||
|
|
||||||
- name: Build ce-dat-tool
|
|
||||||
run: |
|
|
||||||
cmake --build --preset ${{ inputs.preset }} --target ce-dat-tool
|
|
||||||
|
|
||||||
- name: Create ce.dat
|
|
||||||
run: |
|
|
||||||
mkdir -p out/dist
|
|
||||||
out/build/${{ inputs.preset }}/ce-dat-tool create files/ce.dat out/dist/ce.dat
|
|
||||||
|
|
||||||
- name: Upload ce.dat artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: ce-dat
|
|
||||||
path: out/dist/ce.dat
|
|
||||||
retention-days: 7
|
|
||||||
-13
@@ -10,7 +10,6 @@
|
|||||||
*.userosscache
|
*.userosscache
|
||||||
*.sln.docstates
|
*.sln.docstates
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.local-tools/
|
|
||||||
|
|
||||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
*.userprefs
|
*.userprefs
|
||||||
@@ -400,15 +399,3 @@ FodyWeavers.xsd
|
|||||||
# versioning header
|
# versioning header
|
||||||
src/platform/git_version.h
|
src/platform/git_version.h
|
||||||
CMakeUserPresets.json
|
CMakeUserPresets.json
|
||||||
|
|
||||||
# Local configs for AI agents
|
|
||||||
.opencode
|
|
||||||
.agents
|
|
||||||
.aider*
|
|
||||||
.gemini
|
|
||||||
.claude
|
|
||||||
.mcp.json
|
|
||||||
AGENTS.md
|
|
||||||
CLAUDE.md
|
|
||||||
GEMINI.md
|
|
||||||
opencode.json
|
|
||||||
+16
-253
@@ -20,14 +20,7 @@ set(CMAKE_CXX_STANDARD 17)
|
|||||||
set(CMAKE_CXX_STANDARD_REQUIRED YES)
|
set(CMAKE_CXX_STANDARD_REQUIRED YES)
|
||||||
set(CMAKE_CXX_EXTENSIONS NO)
|
set(CMAKE_CXX_EXTENSIONS NO)
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/EHsc>)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
option(FALLOUT_VENDORED "Use vendored third-party libraries" ON)
|
option(FALLOUT_VENDORED "Use vendored third-party libraries" ON)
|
||||||
option(FALLOUT_AUDIO_OGG "Enable OGG decoding with stb_vorbis when available" ON)
|
|
||||||
|
|
||||||
set(FALLOUT_STB_VORBIS_DIR "" CACHE PATH "Directory containing stb_vorbis.c")
|
|
||||||
|
|
||||||
if(ANDROID)
|
if(ANDROID)
|
||||||
add_library(${EXECUTABLE_NAME} SHARED)
|
add_library(${EXECUTABLE_NAME} SHARED)
|
||||||
@@ -38,15 +31,15 @@ endif()
|
|||||||
# Git Info
|
# Git Info
|
||||||
include("cmake/gitver.cmake")
|
include("cmake/gitver.cmake")
|
||||||
|
|
||||||
# Shared engine sources — used by both game and mapper targets.
|
target_sources(${EXECUTABLE_NAME} PUBLIC
|
||||||
# Excludes main.cc/main.h (game-only entry logic).
|
|
||||||
set(FALLOUT_ENGINE_SOURCES
|
|
||||||
"src/actions.cc"
|
"src/actions.cc"
|
||||||
"src/actions.h"
|
"src/actions.h"
|
||||||
"src/animation.cc"
|
"src/animation.cc"
|
||||||
"src/animation.h"
|
"src/animation.h"
|
||||||
"src/art.cc"
|
"src/art.cc"
|
||||||
"src/art.h"
|
"src/art.h"
|
||||||
|
"src/audio_file.cc"
|
||||||
|
"src/audio_file.h"
|
||||||
"src/audio.cc"
|
"src/audio.cc"
|
||||||
"src/audio.h"
|
"src/audio.h"
|
||||||
"src/automap.cc"
|
"src/automap.cc"
|
||||||
@@ -69,8 +62,6 @@ set(FALLOUT_ENGINE_SOURCES
|
|||||||
"src/combat.h"
|
"src/combat.h"
|
||||||
"src/config.cc"
|
"src/config.cc"
|
||||||
"src/config.h"
|
"src/config.h"
|
||||||
"src/content_config.cc"
|
|
||||||
"src/content_config.h"
|
|
||||||
"src/credits.cc"
|
"src/credits.cc"
|
||||||
"src/credits.h"
|
"src/credits.h"
|
||||||
"src/critter.cc"
|
"src/critter.cc"
|
||||||
@@ -107,6 +98,12 @@ set(FALLOUT_ENGINE_SOURCES
|
|||||||
"src/file_find.h"
|
"src/file_find.h"
|
||||||
"src/file_utils.cc"
|
"src/file_utils.cc"
|
||||||
"src/file_utils.h"
|
"src/file_utils.h"
|
||||||
|
"src/fo1db/fo1_assoc.cc"
|
||||||
|
"src/fo1db/fo1_assoc.h"
|
||||||
|
"src/fo1db/fo1_db.cc"
|
||||||
|
"src/fo1db/fo1_db.h"
|
||||||
|
"src/fo1db/fo1_lzss.cc"
|
||||||
|
"src/fo1db/fo1_lzss.h"
|
||||||
"src/font_manager.cc"
|
"src/font_manager.cc"
|
||||||
"src/font_manager.h"
|
"src/font_manager.h"
|
||||||
"src/game_config.cc"
|
"src/game_config.cc"
|
||||||
@@ -123,6 +120,8 @@ set(FALLOUT_ENGINE_SOURCES
|
|||||||
"src/game_movie.h"
|
"src/game_movie.h"
|
||||||
"src/game_sound.cc"
|
"src/game_sound.cc"
|
||||||
"src/game_sound.h"
|
"src/game_sound.h"
|
||||||
|
"src/game_variant.cc"
|
||||||
|
"src/game_variant.h"
|
||||||
"src/game_vars.h"
|
"src/game_vars.h"
|
||||||
"src/game.cc"
|
"src/game.cc"
|
||||||
"src/game.h"
|
"src/game.h"
|
||||||
@@ -154,13 +153,13 @@ set(FALLOUT_ENGINE_SOURCES
|
|||||||
"src/lips.h"
|
"src/lips.h"
|
||||||
"src/loadsave.cc"
|
"src/loadsave.cc"
|
||||||
"src/loadsave.h"
|
"src/loadsave.h"
|
||||||
|
"src/main.cc"
|
||||||
|
"src/main.h"
|
||||||
"src/mainmenu.cc"
|
"src/mainmenu.cc"
|
||||||
"src/mainmenu.h"
|
"src/mainmenu.h"
|
||||||
"src/map_defs.h"
|
"src/map_defs.h"
|
||||||
"src/map.cc"
|
"src/map.cc"
|
||||||
"src/map.h"
|
"src/map.h"
|
||||||
"src/map_edge.cc"
|
|
||||||
"src/map_edge.h"
|
|
||||||
"src/memory_defs.h"
|
"src/memory_defs.h"
|
||||||
"src/memory_manager.cc"
|
"src/memory_manager.cc"
|
||||||
"src/memory_manager.h"
|
"src/memory_manager.h"
|
||||||
@@ -183,8 +182,6 @@ set(FALLOUT_ENGINE_SOURCES
|
|||||||
"src/obj_types.h"
|
"src/obj_types.h"
|
||||||
"src/object.cc"
|
"src/object.cc"
|
||||||
"src/object.h"
|
"src/object.h"
|
||||||
"src/ogg_decoder.cc"
|
|
||||||
"src/ogg_decoder.h"
|
|
||||||
"src/opcode_context.cc"
|
"src/opcode_context.cc"
|
||||||
"src/opcode_context.h"
|
"src/opcode_context.h"
|
||||||
"src/options.cc"
|
"src/options.cc"
|
||||||
@@ -268,7 +265,7 @@ set(FALLOUT_ENGINE_SOURCES
|
|||||||
"src/xfile.h"
|
"src/xfile.h"
|
||||||
)
|
)
|
||||||
|
|
||||||
set(FALLOUT_PLATFORM_SOURCES
|
target_sources(${EXECUTABLE_NAME} PUBLIC
|
||||||
"src/audio_engine.cc"
|
"src/audio_engine.cc"
|
||||||
"src/audio_engine.h"
|
"src/audio_engine.h"
|
||||||
"src/delay.cc"
|
"src/delay.cc"
|
||||||
@@ -302,8 +299,6 @@ set(FALLOUT_PLATFORM_SOURCES
|
|||||||
"src/sfall_opcodes.cc"
|
"src/sfall_opcodes.cc"
|
||||||
"src/sfall_opcodes.h"
|
"src/sfall_opcodes.h"
|
||||||
"src/sfall_script_hooks.cc"
|
"src/sfall_script_hooks.cc"
|
||||||
"src/script_sound.cc"
|
|
||||||
"src/script_sound.h"
|
|
||||||
"src/sfall_arrays.cc"
|
"src/sfall_arrays.cc"
|
||||||
"src/sfall_arrays.h"
|
"src/sfall_arrays.h"
|
||||||
"src/sfall_animation.cc"
|
"src/sfall_animation.cc"
|
||||||
@@ -316,49 +311,12 @@ set(FALLOUT_PLATFORM_SOURCES
|
|||||||
"third_party/lodepng/lodepng.cpp"
|
"third_party/lodepng/lodepng.cpp"
|
||||||
)
|
)
|
||||||
|
|
||||||
target_sources(${EXECUTABLE_NAME} PUBLIC
|
|
||||||
${FALLOUT_ENGINE_SOURCES}
|
|
||||||
"src/main.cc"
|
|
||||||
"src/main.h"
|
|
||||||
)
|
|
||||||
|
|
||||||
target_sources(${EXECUTABLE_NAME} PUBLIC ${FALLOUT_PLATFORM_SOURCES})
|
|
||||||
|
|
||||||
target_include_directories(${EXECUTABLE_NAME} PUBLIC "third_party/lodepng")
|
target_include_directories(${EXECUTABLE_NAME} PUBLIC "third_party/lodepng")
|
||||||
|
|
||||||
set(FALLOUT_HAVE_STB_VORBIS OFF)
|
|
||||||
if(FALLOUT_AUDIO_OGG)
|
|
||||||
if(EXISTS "${CMAKE_SOURCE_DIR}/third_party/stb_vorbis/stb_vorbis.c")
|
|
||||||
set(_fallout_stb_vorbis_dir "${CMAKE_SOURCE_DIR}/third_party/stb_vorbis")
|
|
||||||
else()
|
|
||||||
set(_fallout_stb_vorbis_dir "${FALLOUT_STB_VORBIS_DIR}")
|
|
||||||
if(NOT _fallout_stb_vorbis_dir)
|
|
||||||
find_path(_fallout_stb_vorbis_dir
|
|
||||||
NAMES "stb_vorbis.c"
|
|
||||||
DOC "Directory containing stb_vorbis.c")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(_fallout_stb_vorbis_dir AND EXISTS "${_fallout_stb_vorbis_dir}/stb_vorbis.c")
|
|
||||||
set(FALLOUT_HAVE_STB_VORBIS ON)
|
|
||||||
target_include_directories(${EXECUTABLE_NAME} PRIVATE "${_fallout_stb_vorbis_dir}")
|
|
||||||
else()
|
|
||||||
message(STATUS "OGG support disabled: stb_vorbis.c not found")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(FALLOUT_HAVE_STB_VORBIS)
|
|
||||||
target_compile_definitions(${EXECUTABLE_NAME} PRIVATE HAVE_STB_VORBIS=1)
|
|
||||||
else()
|
|
||||||
target_compile_definitions(${EXECUTABLE_NAME} PRIVATE HAVE_STB_VORBIS=0)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(IOS)
|
if(IOS)
|
||||||
target_sources(${EXECUTABLE_NAME} PUBLIC
|
target_sources(${EXECUTABLE_NAME} PUBLIC
|
||||||
"src/platform/ios/paths.h"
|
"src/platform/ios/paths.h"
|
||||||
"src/platform/ios/paths.mm"
|
"src/platform/ios/paths.mm"
|
||||||
"src/platform/ios/quick_toolbar.h"
|
|
||||||
"src/platform/ios/quick_toolbar.cc"
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -372,33 +330,18 @@ if(WIN32)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MINGW)
|
if(MSVC)
|
||||||
target_compile_definitions(${EXECUTABLE_NAME} PUBLIC
|
target_compile_options(${EXECUTABLE_NAME} PRIVATE /EHsc)
|
||||||
_USE_MATH_DEFINES
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
target_link_libraries(${EXECUTABLE_NAME}
|
target_link_libraries(${EXECUTABLE_NAME}
|
||||||
winmm
|
winmm
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
target_link_libraries(${EXECUTABLE_NAME}
|
|
||||||
debug libcpmtd
|
debug libcpmtd
|
||||||
optimized libcpmt
|
optimized libcpmt
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MINGW)
|
|
||||||
target_link_options(${EXECUTABLE_NAME} PRIVATE
|
|
||||||
-static
|
|
||||||
-static-libgcc
|
|
||||||
-static-libstdc++
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
target_sources(${EXECUTABLE_NAME} PUBLIC
|
target_sources(${EXECUTABLE_NAME} PUBLIC
|
||||||
"os/windows/fallout2-ce.ico"
|
"os/windows/fallout2-ce.ico"
|
||||||
@@ -430,8 +373,6 @@ if(APPLE)
|
|||||||
"os/macos/fallout2-ce.icns"
|
"os/macos/fallout2-ce.icns"
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(${EXECUTABLE_NAME} "-framework CoreFoundation")
|
|
||||||
|
|
||||||
target_sources(${EXECUTABLE_NAME} PUBLIC ${RESOURCES})
|
target_sources(${EXECUTABLE_NAME} PUBLIC ${RESOURCES})
|
||||||
set_source_files_properties(${RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
|
set_source_files_properties(${RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
|
||||||
|
|
||||||
@@ -515,186 +456,8 @@ target_link_libraries(${EXECUTABLE_NAME} ${ZLIB_LIBRARIES})
|
|||||||
target_include_directories(${EXECUTABLE_NAME} PRIVATE ${ZLIB_INCLUDE_DIRS})
|
target_include_directories(${EXECUTABLE_NAME} PRIVATE ${ZLIB_INCLUDE_DIRS})
|
||||||
|
|
||||||
target_link_libraries(${EXECUTABLE_NAME} ${SDL2_LIBRARIES})
|
target_link_libraries(${EXECUTABLE_NAME} ${SDL2_LIBRARIES})
|
||||||
target_link_libraries(${EXECUTABLE_NAME} ${SDL2_MAIN_LIBRARIES})
|
|
||||||
target_include_directories(${EXECUTABLE_NAME} PRIVATE ${SDL2_INCLUDE_DIRS})
|
target_include_directories(${EXECUTABLE_NAME} PRIVATE ${SDL2_INCLUDE_DIRS})
|
||||||
|
|
||||||
if((NOT ANDROID) AND (NOT IOS) AND (NOT CMAKE_SYSTEM_NAME MATCHES "Emscripten"))
|
|
||||||
add_executable(ce-dat-tool
|
|
||||||
"tools/dat_tool.cc"
|
|
||||||
"tools/dat_archive.cc"
|
|
||||||
"tools/fo1_dat_lzss.cc"
|
|
||||||
"src/dfile.cc"
|
|
||||||
"src/platform_compat.cc"
|
|
||||||
)
|
|
||||||
|
|
||||||
if(APPLE)
|
|
||||||
set_target_properties(ce-dat-tool PROPERTIES
|
|
||||||
XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO"
|
|
||||||
XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_link_libraries(ce-dat-tool
|
|
||||||
fpattern_windows::fpattern_windows
|
|
||||||
${ZLIB_LIBRARIES}
|
|
||||||
${SDL2_LIBRARIES}
|
|
||||||
)
|
|
||||||
if(WIN32)
|
|
||||||
target_link_libraries(ce-dat-tool winmm)
|
|
||||||
endif()
|
|
||||||
if(MINGW)
|
|
||||||
target_link_options(ce-dat-tool PRIVATE
|
|
||||||
-static
|
|
||||||
-static-libgcc
|
|
||||||
-static-libstdc++
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
target_include_directories(ce-dat-tool PRIVATE "src")
|
|
||||||
target_include_directories(ce-dat-tool PRIVATE ${ZLIB_INCLUDE_DIRS})
|
|
||||||
target_include_directories(ce-dat-tool PRIVATE ${SDL2_INCLUDE_DIRS})
|
|
||||||
|
|
||||||
add_executable(ce-frm2png
|
|
||||||
"tools/ce_frm2png.cc"
|
|
||||||
"src/platform_compat.cc"
|
|
||||||
"third_party/lodepng/lodepng.cpp"
|
|
||||||
)
|
|
||||||
|
|
||||||
if(APPLE)
|
|
||||||
set_target_properties(ce-frm2png PROPERTIES
|
|
||||||
XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO"
|
|
||||||
XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_include_directories(ce-frm2png PRIVATE "src")
|
|
||||||
target_include_directories(ce-frm2png PRIVATE "third_party/lodepng")
|
|
||||||
target_include_directories(ce-frm2png PRIVATE ${SDL2_INCLUDE_DIRS})
|
|
||||||
target_include_directories(ce-frm2png PRIVATE ${ZLIB_INCLUDE_DIRS})
|
|
||||||
target_link_libraries(ce-frm2png ${SDL2_LIBRARIES})
|
|
||||||
target_link_libraries(ce-frm2png ${ZLIB_LIBRARIES})
|
|
||||||
|
|
||||||
if(MINGW)
|
|
||||||
target_link_options(ce-frm2png PRIVATE
|
|
||||||
-static
|
|
||||||
-static-libgcc
|
|
||||||
-static-libstdc++
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(APPLE)
|
|
||||||
file(GLOB_RECURSE CE_DAT_INPUTS CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/files/ce.dat/*")
|
|
||||||
set(CE_DAT_RESOURCE_PATH "${CMAKE_CURRENT_BINARY_DIR}/ce.dat")
|
|
||||||
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT "${CE_DAT_RESOURCE_PATH}"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}"
|
|
||||||
COMMAND $<TARGET_FILE:ce-dat-tool> create "${CMAKE_SOURCE_DIR}/files/ce.dat" "${CE_DAT_RESOURCE_PATH}"
|
|
||||||
DEPENDS ce-dat-tool ${CE_DAT_INPUTS}
|
|
||||||
COMMENT "Generating ce.dat for app bundle"
|
|
||||||
VERBATIM
|
|
||||||
)
|
|
||||||
|
|
||||||
add_custom_target(ce-dat-resource DEPENDS "${CE_DAT_RESOURCE_PATH}")
|
|
||||||
add_dependencies(${EXECUTABLE_NAME} ce-dat-resource)
|
|
||||||
|
|
||||||
target_sources(${EXECUTABLE_NAME} PRIVATE "${CE_DAT_RESOURCE_PATH}")
|
|
||||||
set_source_files_properties("${CE_DAT_RESOURCE_PATH}" PROPERTIES
|
|
||||||
GENERATED TRUE
|
|
||||||
MACOSX_PACKAGE_LOCATION "Resources")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if((NOT ANDROID) AND (NOT IOS) AND (NOT CMAKE_SYSTEM_NAME MATCHES "Emscripten"))
|
|
||||||
if(WIN32)
|
|
||||||
add_executable(mapper-ce WIN32)
|
|
||||||
else()
|
|
||||||
add_executable(mapper-ce)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_sources(mapper-ce PUBLIC
|
|
||||||
${FALLOUT_ENGINE_SOURCES}
|
|
||||||
${FALLOUT_PLATFORM_SOURCES}
|
|
||||||
"src/mapper/map_edge_setup.cc"
|
|
||||||
"src/mapper/map_edge_setup.h"
|
|
||||||
"src/mapper/map_func.cc"
|
|
||||||
"src/mapper/map_func.h"
|
|
||||||
"src/mapper/mapper.cc"
|
|
||||||
"src/mapper/mapper.h"
|
|
||||||
"src/mapper/mp_instance.cc"
|
|
||||||
"src/mapper/mp_instance.h"
|
|
||||||
"src/mapper/mp_proto.cc"
|
|
||||||
"src/mapper/mp_proto.h"
|
|
||||||
"src/mapper/mp_scrpt.cc"
|
|
||||||
"src/mapper/mp_scrpt.h"
|
|
||||||
"src/mapper/mp_targt.cc"
|
|
||||||
"src/mapper/mp_targt.h"
|
|
||||||
"src/mapper/mp_utils.cc"
|
|
||||||
"src/mapper/mp_utils.h"
|
|
||||||
"src/mapper/mp_text.cc"
|
|
||||||
"src/mapper/mp_text.h"
|
|
||||||
)
|
|
||||||
|
|
||||||
target_compile_definitions(mapper-ce PUBLIC FALLOUT_MAPPER)
|
|
||||||
|
|
||||||
if(WIN32)
|
|
||||||
target_compile_definitions(mapper-ce PUBLIC
|
|
||||||
_CRT_SECURE_NO_WARNINGS
|
|
||||||
_CRT_NONSTDC_NO_WARNINGS
|
|
||||||
NOMINMAX
|
|
||||||
WIN32_LEAN_AND_MEAN
|
|
||||||
_STATIC_CPPLIB
|
|
||||||
)
|
|
||||||
|
|
||||||
if(MINGW)
|
|
||||||
target_compile_definitions(mapper-ce PUBLIC
|
|
||||||
_USE_MATH_DEFINES
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_options(mapper-ce PRIVATE
|
|
||||||
-static
|
|
||||||
-static-libgcc
|
|
||||||
-static-libstdc++
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_link_libraries(mapper-ce
|
|
||||||
winmm
|
|
||||||
)
|
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
target_link_libraries(mapper-ce
|
|
||||||
debug libcpmtd
|
|
||||||
optimized libcpmt
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_sources(mapper-ce PUBLIC
|
|
||||||
"os/windows/fallout2-ce.rc"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(APPLE)
|
|
||||||
target_link_libraries(mapper-ce "-framework CoreFoundation")
|
|
||||||
set_target_properties(mapper-ce PROPERTIES
|
|
||||||
XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO"
|
|
||||||
XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_include_directories(mapper-ce PUBLIC "third_party/lodepng")
|
|
||||||
target_include_directories(mapper-ce PRIVATE "src")
|
|
||||||
target_include_directories(mapper-ce PRIVATE ${ZLIB_INCLUDE_DIRS})
|
|
||||||
target_include_directories(mapper-ce PRIVATE ${SDL2_INCLUDE_DIRS})
|
|
||||||
|
|
||||||
target_link_libraries(mapper-ce
|
|
||||||
fpattern::fpattern
|
|
||||||
fpattern_windows::fpattern_windows
|
|
||||||
${ZLIB_LIBRARIES}
|
|
||||||
${SDL2_LIBRARIES}
|
|
||||||
${SDL2_MAIN_LIBRARIES}
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
if(IOS)
|
if(IOS)
|
||||||
install(TARGETS ${EXECUTABLE_NAME} DESTINATION "Payload")
|
install(TARGETS ${EXECUTABLE_NAME} DESTINATION "Payload")
|
||||||
|
|||||||
+3
-91
@@ -119,6 +119,9 @@
|
|||||||
"base"
|
"base"
|
||||||
],
|
],
|
||||||
"generator": "Xcode",
|
"generator": "Xcode",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY": ""
|
||||||
|
},
|
||||||
"condition": {
|
"condition": {
|
||||||
"type": "equals",
|
"type": "equals",
|
||||||
"lhs": "${hostSystemName}",
|
"lhs": "${hostSystemName}",
|
||||||
@@ -139,77 +142,6 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_SYSTEM_NAME": "iOS"
|
"CMAKE_SYSTEM_NAME": "iOS"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Mingw-base",
|
|
||||||
"hidden": true,
|
|
||||||
"description": "Base preset for all MinGW builds.",
|
|
||||||
"inherits":[
|
|
||||||
"base"
|
|
||||||
],
|
|
||||||
"generator": "Ninja",
|
|
||||||
"toolchainFile": "${sourceDir}/cmake/toolchain/mingw.cmake",
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_SYSTEM_NAME": "Windows"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Mingw-x86-base",
|
|
||||||
"hidden": true,
|
|
||||||
"description": "Base preset for all MinGW x86 builds.",
|
|
||||||
"inherits": [
|
|
||||||
"Mingw-base"
|
|
||||||
],
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_C_FLAGS": "-m32",
|
|
||||||
"CMAKE_CXX_FLAGS": "-m32",
|
|
||||||
"CMAKE_SYSTEM_PROCESSOR": "i686"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Mingw-x86-debug",
|
|
||||||
"displayName": "MinGW x86 Debug",
|
|
||||||
"description": "Cross-compile a Debug Windows x86 build with MinGW-w64 and Ninja.",
|
|
||||||
"inherits": [
|
|
||||||
"Mingw-x86-base"
|
|
||||||
],
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_BUILD_TYPE": "Debug"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Mingw-x86-release",
|
|
||||||
"displayName": "MinGW x86 Release",
|
|
||||||
"description": "Cross-compile a RelWithDebInfo Windows x86 build with MinGW-w64 and Ninja.",
|
|
||||||
"inherits": [
|
|
||||||
"Mingw-x86-debug"
|
|
||||||
],
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Mingw-x64-debug",
|
|
||||||
"displayName": "MinGW x64 Debug",
|
|
||||||
"description": "Cross-compile a Debug Windows x64 build with MinGW-w64 and Ninja.",
|
|
||||||
"inherits": [
|
|
||||||
"Mingw-base"
|
|
||||||
],
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_SYSTEM_PROCESSOR": "x86_64",
|
|
||||||
"CMAKE_BUILD_TYPE": "Debug"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Mingw-x64-release",
|
|
||||||
"displayName": "MinGW x64 Release",
|
|
||||||
"description": "Cross-compile a RelWithDebInfo Windows x64 build with MinGW-w64 and Ninja.",
|
|
||||||
"inherits": [
|
|
||||||
"Mingw-x64-debug"
|
|
||||||
],
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"buildPresets": [
|
"buildPresets": [
|
||||||
@@ -268,26 +200,6 @@
|
|||||||
"name": "ios-release",
|
"name": "ios-release",
|
||||||
"configurePreset": "ios",
|
"configurePreset": "ios",
|
||||||
"configuration": "RelWithDebInfo"
|
"configuration": "RelWithDebInfo"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Mingw-x86-Debug",
|
|
||||||
"displayName": "MinGW x86 Debug",
|
|
||||||
"configurePreset": "Mingw-x86-debug"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Mingw-x86-Release",
|
|
||||||
"displayName": "MinGW x86 Release",
|
|
||||||
"configurePreset": "Mingw-x86-release"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Mingw-x64-Debug",
|
|
||||||
"displayName": "MinGW x64 Debug",
|
|
||||||
"configurePreset": "Mingw-x64-debug"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Mingw-x64-Release",
|
|
||||||
"displayName": "MinGW x64 Release",
|
|
||||||
"configurePreset": "Mingw-x64-release"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
-108
@@ -2,114 +2,6 @@
|
|||||||
|
|
||||||
This file is currently a shell to be filled in over time. For now, it only captures project-specific maintenance notes that are easy to miss.
|
This file is currently a shell to be filled in over time. For now, it only captures project-specific maintenance notes that are easy to miss.
|
||||||
|
|
||||||
For current sfall compatibility status and the remaining work needed to close gaps, see [SFALL_COMPATIBILITY.md](SFALL_COMPATIBILITY.md).
|
|
||||||
|
|
||||||
## Building
|
|
||||||
|
|
||||||
The project uses CMake, so building mostly comes down to picking the right preset.
|
|
||||||
|
|
||||||
## Commandline arguments
|
|
||||||
|
|
||||||
- `--scan-unimplemented` - do an analysis of opcodes and hooks used by loaded mods
|
|
||||||
- `--dev-load-game=1` - load the given save game automatically (useful for LLM automation)
|
|
||||||
|
|
||||||
### macOS
|
|
||||||
|
|
||||||
- Install the Command Line Tools if needed: `xcode-select --install`
|
|
||||||
- Install the common build dependencies: `brew install cmake ninja`
|
|
||||||
- Configure and build:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cmake -S . -B out/build/macos -G Ninja -DCMAKE_BUILD_TYPE=Debug
|
|
||||||
cmake --build out/build/macos --target fallout2-ce
|
|
||||||
```
|
|
||||||
|
|
||||||
### Linux
|
|
||||||
|
|
||||||
Install SDL and a toolchain:
|
|
||||||
|
|
||||||
- Debian / Ubuntu:
|
|
||||||
```sh
|
|
||||||
sudo apt install build-essential cmake ninja-build libsdl2-dev zlib1g-dev
|
|
||||||
```
|
|
||||||
- Fedora:
|
|
||||||
```sh
|
|
||||||
sudo dnf install gcc-c++ cmake ninja-build SDL2-devel zlib-devel
|
|
||||||
```
|
|
||||||
- Arch Linux:
|
|
||||||
```sh
|
|
||||||
sudo pacman -S base-devel cmake ninja sdl2 zlib
|
|
||||||
```
|
|
||||||
|
|
||||||
Then build:
|
|
||||||
```
|
|
||||||
cmake -S . -B out/build/linux-x64-debug -G Ninja -DCMAKE_BUILD_TYPE=Debug
|
|
||||||
cmake --build out/build/linux-x64-debug --target fallout2-ce
|
|
||||||
```
|
|
||||||
|
|
||||||
### Windows
|
|
||||||
|
|
||||||
TODO: add Visual Studio build instructions. This will likely need a Visual Studio generator or preset plus the MSVC toolchain and Windows SDK.
|
|
||||||
|
|
||||||
## `.dat` CLI Tool
|
|
||||||
|
|
||||||
There is a small command-line archive tool in this repo for inspecting Fallout `.dat` files. It supports both Fallout 2 and Fallout 1 archives.
|
|
||||||
|
|
||||||
From the repo root, build it with your normal CMake workflow, targeting `ce-dat-tool`:
|
|
||||||
|
|
||||||
`cmake --build out/build/<preset-name> --target ce-dat-tool`
|
|
||||||
|
|
||||||
The executable is written to your selected build directory, so the exact path will vary by preset and configuration.
|
|
||||||
|
|
||||||
Available commands:
|
|
||||||
|
|
||||||
1. `./<BUILD_DIR>/ce-dat-tool <archive.dat> list [pattern]`
|
|
||||||
2. `ce-dat-tool <archive.dat> info [pattern]`
|
|
||||||
3. `ce-dat-tool <archive.dat> extract [--lower] <output-dir> [pattern]`
|
|
||||||
4. `ce-dat-tool <archive.dat> cat <entry>`
|
|
||||||
5. `ce-dat-tool create <input-dir> <archive.dat>`
|
|
||||||
|
|
||||||
Use `--lower` with `extract` when you want every extracted file and directory name forced to lowercase.
|
|
||||||
For example:
|
|
||||||
|
|
||||||
`ce-dat-tool master.dat extract --lower /tmp/ce-dat-tool-lower data\\*`
|
|
||||||
|
|
||||||
## `ce-frm2png` CLI Tool
|
|
||||||
|
|
||||||
There is also a small FRM conversion tool in this repo for converting Fallout art between `.frm` and `.png`.
|
|
||||||
|
|
||||||
From the repo root, build it with your normal CMake workflow, targeting `ce-frm2png`:
|
|
||||||
|
|
||||||
`cmake --build out/build/<preset-name> --target ce-frm2png`
|
|
||||||
|
|
||||||
The executable is written to your selected build directory, so the exact path will vary by preset and configuration.
|
|
||||||
|
|
||||||
Basic usage:
|
|
||||||
|
|
||||||
1. `./<BUILD_DIR>/ce-frm2png <input.frm> [output.png]`
|
|
||||||
2. `./<BUILD_DIR>/ce-frm2png <input.frm> [output.png] --palette <path-to-color.pal>`
|
|
||||||
3. `./<BUILD_DIR>/ce-frm2png <input.frm> [output.png] --frame <index> --direction <index>`
|
|
||||||
4. `./<BUILD_DIR>/ce-frm2png <input.png> [output.frm] --palette <path-to-color.pal>`
|
|
||||||
5. `./<BUILD_DIR>/ce-frm2png <input.png> [output.frm] --fps 10 --action-frame 0 --x-offset 0 --y-offset 0`
|
|
||||||
6. `./<BUILD_DIR>/ce-frm2png <input.png> <output.png> --palette <path-to-color.pal>`
|
|
||||||
7. `./<BUILD_DIR>/ce-frm2png - [output.png|-] --from-frm --palette <path-to-color.pal>`
|
|
||||||
8. `./<BUILD_DIR>/ce-frm2png - [output.frm|-] --from-png --palette <path-to-color.pal>`
|
|
||||||
|
|
||||||
`-` can be used to take input from stdin (e.g. from `ce-dat-tool cat`) or write to stdout. When reading from stdin, pass `--from-frm` or `--from-png`. Output defaults to PNG for FRM input and FRM for PNG input when output is omitted or `-`; use `--to-png` for PNG output to stdout from PNG input.
|
|
||||||
|
|
||||||
Output file extensions are validated against the selected conversion. For example, PNG-to-FRM output must use `.frm`, and PNG output must use `.png`.
|
|
||||||
|
|
||||||
If `--palette` isn't specified, it will pick up `color.pal` in the input file's directory or cwd.
|
|
||||||
|
|
||||||
Notes:
|
|
||||||
|
|
||||||
- The tool expects a raw `color.pal` file. It does not read palettes directly from `master.dat`, so extract `color.pal` first if needed.
|
|
||||||
- A typical extraction flow is: `ce-dat-tool master.dat extract --lower . 'color.pal'`
|
|
||||||
- By default palette index `0` becomes transparent in the output PNG. Pass `--opaque` to keep it opaque.
|
|
||||||
- PNG output is always palette-indexed and preserves Fallout palette indices when possible.
|
|
||||||
- For `png -> frm`, transparent pixels (alpha below 128) map to palette index `0` by default. Pass `--opaque` to quantize every pixel instead.
|
|
||||||
- The current `png -> frm` implementation writes a single-frame FRM and points all six direction slots at the same frame payload.
|
|
||||||
|
|
||||||
## Updating SDL
|
## Updating SDL
|
||||||
|
|
||||||
SDL is pinned for native builds in `third_party/sdl2/CMakeLists.txt`. Right now, Android also relies on checked-in Java bindings in `os/android/app/src/main/java/org/libsdl/app`, and those bindings must match the SDL version fetched by CMake.
|
SDL is pinned for native builds in `third_party/sdl2/CMakeLists.txt`. Right now, Android also relies on checked-in Java bindings in `os/android/app/src/main/java/org/libsdl/app`, and those bindings must match the SDL version fetched by CMake.
|
||||||
|
|||||||
@@ -1,22 +1,18 @@
|
|||||||
# Fallout 2 Community Engine
|
# Fallout 2 Community Edition
|
||||||
|
|
||||||
Fallout 2 Community Engine is a fully working re-implementation of the Fallout 2 engine, optimized for a hassle-free experience on multiple platforms. It provides high resolution support, quality-of-life improvements, and dozens of bug fixes.
|
Fallout 2 Community Edition is a fully working re-implementation of Fallout 2, with the same original gameplay, engine bugfixes, and some quality of life improvements, that works (mostly) hassle-free on multiple platforms. This is a fork of the original project, which isn't getting regular updates.
|
||||||
|
|
||||||
This is a fork of the original Fallout2: CE project, which is no longer getting regular updates.
|
Popular Fallout 2 total conversion mods are partially supported. Original versions of Nevada and Sonora (that do not rely on extended features provided by Sfall) work. [Fallout 2 Restoration Project](https://github.com/BGforgeNet/Fallout2_Restoration_Project), [Fallout Et Tu](https://github.com/rotators/Fo1in2) and [Olympus 2207](https://olympus2207.com) are not yet supported. Other mods (particularly Resurrection and Yesterday) are not tested.
|
||||||
|
|
||||||
Popular Fallout 2 total conversion mods are partially supported. Original versions of Nevada and Sonora (that do not rely on extended features provided by Sfall) work. [Fallout 2 Restoration Project](https://github.com/BGforgeNet/Fallout2_Restoration_Project) is supported (in Beta). [Fallout Et Tu](https://github.com/rotators/Fo1in2) and [Olympus 2207](https://olympus2207.com) are not yet supported. Other mods (particularly Resurrection and Yesterday) are not tested.
|
There is also [Fallout Community Edition](https://github.com/alexbatalov/fallout1-ce) (not affiliated with this fork).
|
||||||
|
|
||||||
Fallout2: CE has broad (though not total) compatibility with [Sfall](https://github.com/sfall-team/sfall) scripting extensions. Many traditional Fallout mods work out of the box.
|
|
||||||
|
|
||||||
There is also [Fallout 1 Community Edition](https://github.com/alexbatalov/fallout1-ce) (not affiliated with this fork).
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
You *must* own the game to play. Purchase your copy on [GOG](https://www.gog.com/game/fallout_2), [Epic Games](https://store.epicgames.com/p/fallout-2) or [Steam](https://store.steampowered.com/app/38410). Download latest [release](https://github.com/fallout2-ce/fallout2-ce/releases) or build from source.
|
You must own the game to play. Purchase your copy on [GOG](https://www.gog.com/game/fallout_2), [Epic Games](https://store.epicgames.com/p/fallout-2) or [Steam](https://store.steampowered.com/app/38410). Download latest [release](https://github.com/fallout2-ce/fallout2-ce/releases) or build from source.
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
|
||||||
[Download](https://github.com/fallout2-ce/fallout2-ce/releases) and unzip into your `Fallout2` folder. Launch the game using `fallout2-ce.exe`.
|
Download and copy `fallout2-ce.exe` to your `Fallout2` folder. It serves as a drop-in replacement for `fallout2.exe`.
|
||||||
|
|
||||||
### Linux
|
### Linux
|
||||||
|
|
||||||
@@ -26,10 +22,17 @@ You *must* own the game to play. Purchase your copy on [GOG](https://www.gog.com
|
|||||||
|
|
||||||
```console
|
```console
|
||||||
$ sudo apt install innoextract
|
$ sudo apt install innoextract
|
||||||
$ innoextract ~/Downloads/setup_fallout_2_1.02_gog_v1_\(77792\).exe -d Fallout2
|
$ innoextract ~/Downloads/setup_fallout2_2.1.0.18.exe -I app
|
||||||
|
$ mv app Fallout2
|
||||||
```
|
```
|
||||||
|
|
||||||
- Download the Linux release archive, extract `fallout2-ce` and `ce.dat`, and copy them into this folder.
|
- Download and copy `fallout2-ce` to this folder.
|
||||||
|
|
||||||
|
- Install [SDL2](https://libsdl.org/download-2.0.php):
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ sudo apt install libsdl2-2.0-0
|
||||||
|
```
|
||||||
|
|
||||||
- Run `./fallout2-ce`.
|
- Run `./fallout2-ce`.
|
||||||
|
|
||||||
@@ -45,13 +48,13 @@ $ innoextract ~/Downloads/setup_fallout_2_1.02_gog_v1_\(77792\).exe -d Fallout2
|
|||||||
|
|
||||||
```console
|
```console
|
||||||
$ brew install innoextract
|
$ brew install innoextract
|
||||||
$ innoextract ~/Downloads/setup_fallout_2_1.02_gog_v1_\(77792\).exe -d fallout2
|
$ innoextract ~/Downloads/setup_fallout2_2.1.0.18.exe -I app
|
||||||
$ mv fallout2 /Applications/Fallout2
|
$ mv app /Applications/Fallout2
|
||||||
```
|
```
|
||||||
|
|
||||||
- [Download](https://github.com/fallout2-ce/fallout2-ce/releases) and copy `Fallout II Community Edition.app` to this folder.
|
- Download and copy `fallout2-ce.app` to this folder.
|
||||||
|
|
||||||
- Run `Fallout II Community Edition.app`.
|
- Run `fallout2-ce.app`.
|
||||||
|
|
||||||
### Android
|
### Android
|
||||||
|
|
||||||
@@ -63,11 +66,9 @@ $ mv fallout2 /Applications/Fallout2
|
|||||||
|
|
||||||
> **NOTE**: From Android standpoint release and debug builds are different apps. Both apps require their own copy of game assets and have their own savegames. This is intentional. As a gamer just stick with release version and check for updates.
|
> **NOTE**: From Android standpoint release and debug builds are different apps. Both apps require their own copy of game assets and have their own savegames. This is intentional. As a gamer just stick with release version and check for updates.
|
||||||
|
|
||||||
- Download the Android [release](https://github.com/fallout2-ce/fallout2-ce/releases), which contains an .apk file and `ce.dat`.
|
- Use Windows installation as a base - it contains data assets needed to play. Copy `Fallout2` folder to your device, for example to `Downloads`. You need `master.dat`, `critter.dat`, `patch000.dat`, and `data` folder. Watch for file names - keep (or make) them lowercased (see [Configuration](#configuration)).
|
||||||
|
|
||||||
- Use Windows installation as a base - it contains data assets needed to play. Copy `Fallout2` folder to your device, for example to `Downloads`. You need `master.dat`, `critter.dat`, `patch000.dat`, and `data` folder. Watch for file names - keep (or make) them lowercased (see [Configuration](#configuration)). Copy `ce.dat` into this folder.
|
- Download `fallout2-ce.apk` and copy it to your device. Open it with file explorer, follow instructions (install from unknown source).
|
||||||
|
|
||||||
- Copy `fallout2-ce.apk` from the release to your device. Open it with file explorer, follow instructions (install from unknown source).
|
|
||||||
|
|
||||||
- When you run the game for the first time it will immediately present file picker. Select the folder from the first step. Wait until this data is copied. A loading dialog will appear, just wait for about 30 seconds. If you're installing total conversion mod or localized version with a large number of unpacked resources in `data` folder it can take up to 20 minutes. Once copied, the game will start automatically.
|
- When you run the game for the first time it will immediately present file picker. Select the folder from the first step. Wait until this data is copied. A loading dialog will appear, just wait for about 30 seconds. If you're installing total conversion mod or localized version with a large number of unpacked resources in `data` folder it can take up to 20 minutes. Once copied, the game will start automatically.
|
||||||
|
|
||||||
@@ -79,21 +80,7 @@ $ mv fallout2 /Applications/Fallout2
|
|||||||
|
|
||||||
- Run the game once. You'll see error message saying "Couldn't find/load text fonts". This step is needed for iOS to expose the game via File Sharing feature.
|
- Run the game once. You'll see error message saying "Couldn't find/load text fonts". This step is needed for iOS to expose the game via File Sharing feature.
|
||||||
|
|
||||||
- Use Finder (macOS Catalina and later) or iTunes (Windows and macOS Mojave or earlier) to copy `master.dat`, `critter.dat`, `patch000.dat`, `ce.dat`, and `data` folder to "Fallout 2" app ([how-to](https://support.apple.com/HT210598)). Watch for file names - keep (or make) them lowercased (see [Configuration](#configuration)).
|
- Use Finder (macOS Catalina and later) or iTunes (Windows and macOS Mojave or earlier) to copy `master.dat`, `critter.dat`, `patch000.dat`, and `data` folder to "Fallout 2" app ([how-to](https://support.apple.com/HT210598)). Watch for file names - keep (or make) them lowercased (see [Configuration](#configuration)).
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
**Controls on iPad:**
|
|
||||||
|
|
||||||
- One-finger tap → left click; hold → left button held.
|
|
||||||
- Two-finger tap → right click (cycles cursor mode between walk and attack).
|
|
||||||
- One-finger drag → scroll map / windows.
|
|
||||||
- Two-finger drag → mouse wheel.
|
|
||||||
- **Three-finger swipe down → ESC** (opens options / main menu).
|
|
||||||
- **Four-finger long press → F6** (quicksave). Hold four fingers on the screen for about half a second.
|
|
||||||
- **Three-finger long press → hold Shift** (highlights interactable objects — containers, doors, items — while held).
|
|
||||||
- Taps on the HUD (interface bar / end-turn / end-combat buttons) act as direct touches so small buttons are easy to hit without aiming.
|
|
||||||
- A Bluetooth keyboard works for everything else (numbered dialog choices, load game, etc.).
|
|
||||||
|
|
||||||
### Browser
|
### Browser
|
||||||
|
|
||||||
@@ -111,7 +98,7 @@ The `sound` folder (with `music` folder inside) might be located either in `data
|
|||||||
|
|
||||||
Additional settings for screen resolution, UI customization, and map options are now integrated into the main `fallout2.cfg` file (previously part of `f2_res.ini` from Mash's HRP). When Fallout 2 CE starts, if it detects an existing `f2_res.ini` file, it automatically migrates these settings into `fallout2.cfg`. After migration, `fallout2.cfg` becomes the single source of truth for this configuration.
|
Additional settings for screen resolution, UI customization, and map options are now integrated into the main `fallout2.cfg` file (previously part of `f2_res.ini` from Mash's HRP). When Fallout 2 CE starts, if it detects an existing `f2_res.ini` file, it automatically migrates these settings into `fallout2.cfg`. After migration, `fallout2.cfg` becomes the single source of truth for this configuration.
|
||||||
|
|
||||||
Here are some important settings in `fallout2.cfg` under the `[screen]` and `[ui]` sections. See [the example config](https://github.com/fallout2-ce/fallout2-ce/tree/refs/heads/main/files/fallout2.cfg) for a full list of settings.
|
The following settings can be configured in `fallout2.cfg` under the `[screen]` and `[ui]` sections:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
[screen]
|
[screen]
|
||||||
@@ -121,12 +108,12 @@ windowed=1 ; 0 = fullscreen
|
|||||||
scale=2 ; 1 = original scale, 2 = 2x scale, etc. (e.g. at scale 2 and screen resolution 1920x1080, in-game resolution will be 960x540, thus every pixel is twice as wide and tall)
|
scale=2 ; 1 = original scale, 2 = 2x scale, etc. (e.g. at scale 2 and screen resolution 1920x1080, in-game resolution will be 960x540, thus every pixel is twice as wide and tall)
|
||||||
|
|
||||||
[ui]
|
[ui]
|
||||||
;Set to 1 to expand the barter/trade window vertically, adding a 4th item slot per side (requires ce.dat)
|
iface_bar_mode=0 ; 0 = interface bar below game window, 1 = interface bar overlaps game window
|
||||||
expand_barter_window=1
|
iface_bar_width=800 ; Width of interface bar (640 = original, 800 = extended)
|
||||||
;Maximum number of columns shown in the main inventory and loot/steal windows (valid range: 1..2)
|
iface_bar_side_art=2 ; Interface bar side art style (0=black, 1=metal grey, 2=leather, 3-8=alternative styles)
|
||||||
inventory_columns=2
|
iface_bar_sides_ori=0 ; Side graphics orientation (0=extend from bar to edges, 1=extend from edges to bar)
|
||||||
splash_screen_size=1 ; Splash screen scaling (0=original size, 1=fit preserving aspect, 2=stretch to fill)
|
splash_screen_size=1 ; Splash screen scaling (0=original size, 1=fit preserving aspect, 2=stretch to fill)
|
||||||
quick_toolbar_visible=0 ; Skills quick access toolbar visibility (iOS only) (0=hidden, 1=visible)
|
ignore_map_edges=0 ; Hi-res map scroll edges (0=enabled, 1=ignored)
|
||||||
```
|
```
|
||||||
|
|
||||||
**Recommendations:**
|
**Recommendations:**
|
||||||
@@ -137,39 +124,28 @@ quick_toolbar_visible=0 ; Skills quick access toolbar visibility (iOS only) (0=h
|
|||||||
In time this stuff will receive in-game interface, right now you have to do it manually. To see all currently working fallout2.cfg settings, just run the game once and quit. It will be automatically updated with defaults for every supported setting.
|
In time this stuff will receive in-game interface, right now you have to do it manually. To see all currently working fallout2.cfg settings, just run the game once and quit. It will be automatically updated with defaults for every supported setting.
|
||||||
*Note*: Use of the IFACE_BAR settings requires the `f2_res.dat` file, which contains graphical assets. Various versions are available, but one compatible with the above settings can be found here: [f2_res.dat](https://github.com/fallout2-ce/fallout2-ce/raw/refs/heads/main/files/f2_res.dat)
|
*Note*: Use of the IFACE_BAR settings requires the `f2_res.dat` file, which contains graphical assets. Various versions are available, but one compatible with the above settings can be found here: [f2_res.dat](https://github.com/fallout2-ce/fallout2-ce/raw/refs/heads/main/files/f2_res.dat)
|
||||||
|
|
||||||
|
The second configuration file is `ddraw.ini` (part of Sfall). There are dozens of options that adjust or override engine behaviour and gameplay mechanics. This file is intended for modders and advanced users.
|
||||||
|
|
||||||
|
For a sample ddraw.ini configuration file, containing all currently working settings use this link: [ddraw.ini](https://raw.githubusercontent.com/fallout2-ce/fallout2-ce/refs/heads/main/files/ddraw.ini)
|
||||||
|
|
||||||
## Quality of life benefits over vanilla Fallout
|
## Quality of life benefits over vanilla Fallout
|
||||||
|
|
||||||
* High resolution support
|
* High resolution support
|
||||||
* Expanded 2-column inventory
|
|
||||||
* Expanded 4-row barter screen
|
|
||||||
* Expanded AP bar
|
|
||||||
* Party members can loot and barter in place of PC
|
|
||||||
* Increased pathfinding nodes 5x for more accurate pathfinding
|
* Increased pathfinding nodes 5x for more accurate pathfinding
|
||||||
* Ctrl-click to quickly move items when bartering, looting, or stealing
|
* Ctrl-click to quickly move items when bartering, looting, or stealing
|
||||||
* _a_ to select "all" when selecting item quantity
|
* _a_ to select "all" when selecting item quantity
|
||||||
* _a_ to `Take All` when looting
|
* _a_ to `Take All` when looting
|
||||||
* When bartering, caps default to the right amount to balance the trade (if possible)
|
* When bartering, caps default to the right amount to balance the trade (if possible)
|
||||||
* Music continues playing between maps
|
* Music continues playing between maps (requires config)
|
||||||
* Auto open doors
|
* Auto open doors (requires config)
|
||||||
* 44.1 kHz stereo sound/music supported, in .ogg and .wav format as well as legacy .acm
|
|
||||||
* Last used save slot is remembered
|
|
||||||
* Item/Corpse/Container/Critter highlighting (configure using [mods/sfall-mods.ini](https://github.com/sfall-team/sfall/blob/master/artifacts/config_files/sfall-mods.ini))
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
For build instructions and contributor notes, see [CONTRIBUTING.md](CONTRIBUTING.md).
|
Integrating Sfall goodies is the top priority. Quality of life updates are OK too. Please no large scale refactorings at this time as we need to reconcile changes from Reference Edition, which will make this process slow and error-prone. In any case open up an issue with your suggestion or to notify other people that something is being worked on.
|
||||||
|
|
||||||
Integrating Sfall goodies is the top priority. Quality of life updates are OK too. In any case open up an issue with your suggestion or to notify other people that something is being worked on.
|
### Integrating Sfall
|
||||||
|
|
||||||
For current sfall compatibility status and the remaining work needed to close gaps, see [SFALL_COMPATIBILITY.md](SFALL_COMPATIBILITY.md).
|
There are literally hundreds if not thousands of fixes and features in sfall. I guess not all of them are needed in Community Edition, but for the sake of compatibility with big mods out there, let's integrate them all.
|
||||||
|
|
||||||
## For modders
|
|
||||||
|
|
||||||
* Robust (though not 100%) Sfall opcode and hook support
|
|
||||||
* .ogg/.wav support for map music
|
|
||||||
* .png support for static assets (must be 8bit indexed)
|
|
||||||
* .zip support for .dat archives
|
|
||||||
* Working BIS mapper
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
+29
-47
@@ -4,25 +4,9 @@ This document tracks Fallout 2 CE compatibility with sfall. This is for modders
|
|||||||
|
|
||||||
For now, this covers opcodes/metarules, and hooks. In the future, it will include other ways of modifying the engine (like ini files), and other Sfall-specific behaviour.
|
For now, this covers opcodes/metarules, and hooks. In the future, it will include other ways of modifying the engine (like ini files), and other Sfall-specific behaviour.
|
||||||
|
|
||||||
## HRP EDG Scroll-Blocker Support
|
## Settings (ddraw.ini → fallout2.cfg)
|
||||||
|
|
||||||
CE supports the `.edg` file format from the HRP (High Resolution Patch), which defines per-map scroll boundaries and square-level render clipping.
|
Some settings previously read from `ddraw.ini` have been moved into `fallout2.cfg`. The table below maps each setting to its new location. `HiResMode` had no effect in CE and has been removed.
|
||||||
|
|
||||||
**How it works in CE:**
|
|
||||||
|
|
||||||
- On map load, `maps/<mapname>.edg` is read if present. Missing file = silent fallback to the scroll-blocker object system.
|
|
||||||
- The `.edg` file defines per-elevation rectangle boundary zones. Multiple chained zones per elevation are supported.
|
|
||||||
- When loaded, these zones are used for both scroll blocking and visible area clipping (black bars), replacing both vanilla scroll blocking and CE hi-res stencil system.
|
|
||||||
- v2 EDG files also contain a `SquareRect` that defines "Angled edges", or square-grid stencil. This is also supported.
|
|
||||||
|
|
||||||
|
|
||||||
## Settings (ddraw.ini → fallout2.cfg / game.cfg)
|
|
||||||
|
|
||||||
Settings previously read from `ddraw.ini` have been moved into standard CE config files.
|
|
||||||
|
|
||||||
Most settings that control game behavior (premade characters, extra message files, combat tweaks, worldmap, etc.) have been moved into [`<DAT>/config/game.cfg`](files/ce.dat/config/game.cfg), which is a content-mod config file intended to be overridden by mods. See that file for the full list with descriptions.
|
|
||||||
|
|
||||||
The following settings were moved into [`fallout2.cfg`](files/fallout2.cfg) instead:
|
|
||||||
|
|
||||||
| ddraw.ini section | ddraw.ini key | fallout2.cfg section | fallout2.cfg key |
|
| ddraw.ini section | ddraw.ini key | fallout2.cfg section | fallout2.cfg key |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
@@ -55,7 +39,7 @@ See [`https://sfall-team.github.io/sfall/`](https://sfall-team.github.io/sfall/)
|
|||||||
| Combat / Knockback | set_weapon_knockback<br>set_target_knockback<br>set_attacker_knockback<br>remove_weapon_knockback<br>remove_target_knockback<br>remove_attacker_knockback | not implemented | - |
|
| Combat / Knockback | set_weapon_knockback<br>set_target_knockback<br>set_attacker_knockback<br>remove_weapon_knockback<br>remove_target_knockback<br>remove_attacker_knockback | not implemented | - |
|
||||||
| Maps and encounters | in_world_map<br>force_encounter<br>force_encounter_with_flags<br>set_map_time_multi<br>get/set_map_enter_position<br>exec_map_update_scripts<br>get/set_terrain_name<br>set_town_title<br>get/set_can_rest_on_map<br>set_rest_heal_time<br>set_rest_mode<br>set_worldmap_heal_time | implemented: in_world_map, force_encounter, force_encounter_with_flags, set_map_time_multi | - |
|
| Maps and encounters | in_world_map<br>force_encounter<br>force_encounter_with_flags<br>set_map_time_multi<br>get/set_map_enter_position<br>exec_map_update_scripts<br>get/set_terrain_name<br>set_town_title<br>get/set_can_rest_on_map<br>set_rest_heal_time<br>set_rest_mode<br>set_worldmap_heal_time | implemented: in_world_map, force_encounter, force_encounter_with_flags, set_map_time_multi | - |
|
||||||
| Maps and encounters / Worldmap | get_world_map_x/y_pos<br>set_world_map_pos | âś… | - |
|
| Maps and encounters / Worldmap | get_world_map_x/y_pos<br>set_world_map_pos | âś… | - |
|
||||||
| Audio | play_sfall_sound<br>stop_sfall_sound | âś… | `play_sfall_sound` currently supports `.acm`, `.wav`, `.ogg` formats, and can load from `.dat` archives. `.mp3` is not yet supported. |
|
| Audio | eax_available<br>set_eax_environment<br>play_sfall_sound<br>stop_sfall_sound | not implemented | *eax* opcodes will not be implemented |
|
||||||
| Combat / Weapons and ammo | get/set_weapon_ammo_pid<br>get/set_weapon_ammo_count | âś… | - |
|
| Combat / Weapons and ammo | get/set_weapon_ammo_pid<br>get/set_weapon_ammo_count | âś… | - |
|
||||||
| Sfall / Version | sfall_ver_major<br>sfall_ver_minor<br>sfall_ver_build | âś… | CE currently reports `4.3.4` |
|
| Sfall / Version | sfall_ver_major<br>sfall_ver_minor<br>sfall_ver_build | âś… | CE currently reports `4.3.4` |
|
||||||
| Utility / Math | log, exponent, round, sqrt, abs, sin, cos, tan, arctan, ceil, ^, floor2, div | âś… | - |
|
| Utility / Math | log, exponent, round, sqrt, abs, sin, cos, tan, arctan, ceil, ^, floor2, div | âś… | - |
|
||||||
@@ -64,79 +48,77 @@ See [`https://sfall-team.github.io/sfall/`](https://sfall-team.github.io/sfall/)
|
|||||||
| Explosions | set_attack_explosion_pattern<br>set_attack_explosion_art<br>set_attack_explosion_radius<br>set_attack_is_explosion_fire<br>set_explosion_radius<br>set_dynamite_damage<br>set_plastic_damage<br>get_explosion_damage<br>set_explosion_max_targets<br>item_make_explosive | âś… except item_make_explosive | - |
|
| Explosions | set_attack_explosion_pattern<br>set_attack_explosion_art<br>set_attack_explosion_radius<br>set_attack_is_explosion_fire<br>set_explosion_radius<br>set_dynamite_damage<br>set_plastic_damage<br>get_explosion_damage<br>set_explosion_max_targets<br>item_make_explosive | âś… except item_make_explosive | - |
|
||||||
| Animations | reg_anim_combat_check<br>reg_anim_destroy<br>reg_anim_animate_and_hide<br>reg_anim_light<br>reg_anim_change_fid<br>reg_anim_take_out<br>reg_anim_turn_towards<br>reg_anim_callback<br>reg_anim_animate_and_move | âś… except reg_anim_callback | - |
|
| Animations | reg_anim_combat_check<br>reg_anim_destroy<br>reg_anim_animate_and_hide<br>reg_anim_light<br>reg_anim_change_fid<br>reg_anim_take_out<br>reg_anim_turn_towards<br>reg_anim_callback<br>reg_anim_animate_and_move | âś… except reg_anim_callback | - |
|
||||||
| Art and appearance | art_exists<br>refresh_pc_art<br>art_cache_clear<br>set_hero_race<br>set_hero_style | implemented: art_exists, refresh_pc_art, art_cache_clear | - |
|
| Art and appearance | art_exists<br>refresh_pc_art<br>art_cache_clear<br>set_hero_race<br>set_hero_style | implemented: art_exists, refresh_pc_art, art_cache_clear | - |
|
||||||
| Tiles and paths | get_tile_fid<br>tile_under_cursor<br>tile_light<br>tile_get_objs<br>tile_refresh_display<br>obj_blocking_tile<br>tile_by_position<br>get_tile_ground_fid<br>get_tile_roof_fid<br>obj_blocking_line<br>path_find_to<br>objects_in_radius | âś… | - |
|
| Tiles and paths | get_tile_fid<br>tile_under_cursor<br>tile_light<br>tile_get_objs<br>tile_refresh_display<br>obj_blocking_tile<br>tile_by_position<br>get_tile_ground_fid<br>get_tile_roof_fid<br>obj_blocking_line<br>path_find_to<br>objects_in_radius | âś… except objects_in_radius | - |
|
||||||
| Utility | sprintf<br>typeof<br>atoi<br>atof | âś… | - |
|
| Utility | sprintf<br>typeof<br>atoi<br>atof | âś… | - |
|
||||||
| Utility / Strings | string_split<br>substr<br>strlen<br>charcode<br>get_string_pointer<br>string_find<br>string_find_from<br>string_format<br>string_format_array<br>string_replace<br>string_to_case<br>string_compare | âś… | `get_string_pointer` is deprecated and intentionally omitted. |
|
| Utility / Strings | string_split<br>substr<br>strlen<br>charcode<br>get_string_pointer<br>string_find<br>string_find_from<br>string_format<br>string_format_array<br>string_replace<br>string_to_case<br>string_compare | âś… | `get_string_pointer` is deprecated and intentionally omitted. |
|
||||||
| Interface / Tags | show_iface_tag<br>hide_iface_tag<br>is_iface_tag_active<br>set_iface_tag_text<br>add_iface_tag | âś… | Legacy `BoxBarCount`, `BoxBarColors` ddraw.ini settings not supported. |
|
| Interface / Tags | show_iface_tag<br>hide_iface_tag<br>is_iface_tag_active<br>set_iface_tag_text<br>add_iface_tag | âś… except set_iface_tag_text, add_iface_tag | CE only handles built-in interface tags here; custom tag creation/text is not supported yet. |
|
||||||
| Global variables | set_sfall_global<br>get_sfall_global_int<br>get_sfall_global_float | âś… except get_sfall_global_float | Current CE storage is int-backed; `set_sfall_global` stores integer values |
|
| Global variables | set_sfall_global<br>get_sfall_global_int<br>get_sfall_global_float | âś… except get_sfall_global_float | Current CE storage is int-backed; `set_sfall_global` stores integer values |
|
||||||
| Hooks / Hook functions | init_hook<br>get_sfall_arg<br>get_sfall_args<br>get_sfall_arg_at<br>set_sfall_return<br>set_sfall_arg<br>register_hook<br>register_hook_proc<br>register_hook_proc_spec | âś… | See below for implemented hooks. `init_hook` is deprecated and will not be implemented. register_hook_proc and register_hook_proc_spec both add hooks to the *end* of the hook list, instead of beginning and end, respectively. |
|
| Hooks / Hook functions | init_hook<br>get_sfall_arg<br>get_sfall_args<br>get_sfall_arg_at<br>set_sfall_return<br>set_sfall_arg<br>register_hook<br>register_hook_proc<br>register_hook_proc_spec | âś… | See below for implemented hooks. `init_hook` is deprecated and will not be implemented. register_hook_proc and register_hook_proc_spec both add hooks to the *end* of the hook list, instead of beginning and end, respectively. |
|
||||||
| Arrays / Array functions | create_array<br>temp_array<br>fix_array<br>get/set_array<br>resize_array<br>free_array<br>scan_array<br>len_array<br>save/load_array<br>array_key<br>arrayexpr | âś… | - |
|
| Arrays / Array functions | create_array<br>temp_array<br>fix_array<br>get/set_array<br>resize_array<br>free_array<br>scan_array<br>len_array<br>save/load_array<br>array_key<br>arrayexpr | âś… except save_array, load_array | - |
|
||||||
| Perks and traits / NPC perks | set_fake_perk_npc<br>set_fake_trait_npc<br>set_selectable_perk_npc<br>has_fake_perk_npc<br>has_fake_trait_npc | not implemented | - |
|
| Perks and traits / NPC perks | set_fake_perk_npc<br>set_fake_trait_npc<br>set_selectable_perk_npc<br>has_fake_perk_npc<br>has_fake_trait_npc | not implemented | - |
|
||||||
| Global scripts / Global script functions | set_global_script_repeat<br>set_global_script_type<br>available_global_script_types | âś… except available_global_script_types | - |
|
| Global scripts / Global script functions | set_global_script_repeat<br>set_global_script_type<br>available_global_script_types | âś… except available_global_script_types | - |
|
||||||
| Combat | attack_is_aimed<br>block_combat<br>force_aimed_shots<br>disable_aimed_shots<br>get_attack_type<br>get/set_bodypart_hit_modifier<br>combat_data<br>get/set/reset_critical_table<br>get_last_target<br>get_last_attacker<br>set_critter_burst_disable<br>get/set_critter_current_ap<br>set_spray_settings<br>get/set_combat_free_move | âś… except block_combat, force_aimed_shots, disable_aimed_shots, get_last_target, get_last_attacker, set_spray_settings | - |
|
| Combat | attack_is_aimed<br>block_combat<br>force_aimed_shots<br>disable_aimed_shots<br>get_attack_type<br>get/set_bodypart_hit_modifier<br>combat_data<br>get/set/reset_critical_table<br>get_last_target<br>get_last_attacker<br>set_critter_burst_disable<br>get/set_critter_current_ap<br>set_spray_settings<br>get/set_combat_free_move | implemented: get_attack_type, get_bodypart_hit_modifier, combat_data, set_bodypart_hit_modifier, get_critter_current_ap, set_critter_current_ap, get_combat_free_move, set_combat_free_move | - |
|
||||||
| Car | set_car_current_town<br>car_gas_amount<br>set_car_intface_art | implemented: all except set_car_intface_art | - |
|
| Car | set_car_current_town<br>car_gas_amount<br>set_car_intface_art | implemented: all except set_car_intface_art | - |
|
||||||
| Interface / Windows and images | art_frame_data<br>interface_art_draw<br>interface_print<br>draw_image<br>draw_image_scaled<br>get_window_under_mouse<br>create_win<br>get_window_attribute<br>message_box<br>set_window_flag<br>win_fill_color<br>interface_overlay<br>dialog_message<br>get_text_width<br>hide_window<br>show_window<br>create_message_window | âś… except interface_print, draw_image, draw_image_scaled, interface_overlay | - |
|
| Interface / Windows and images | art_frame_data<br>interface_art_draw<br>interface_print<br>draw_image<br>draw_image_scaled<br>get_window_under_mouse<br>create_win<br>get_window_attribute<br>message_box<br>set_window_flag<br>win_fill_color<br>interface_overlay<br>dialog_message<br>get_text_width<br>hide_window<br>show_window<br>create_message_window | implemented: only message_box, get_text_width, show_window, create_message_window | - |
|
||||||
| Interface / Outline | outlined_object<br>get_outline<br>set_outline | âś… | - |
|
| Interface / Outline | outlined_object<br>get_outline<br>set_outline | âś… | - |
|
||||||
| Interface / Main interface | intface_is_hidden<br>intface_redraw<br>intface_hide<br>intface_show<br>set_quest_failure_value | implemented: only intface_redraw | `intface_redraw` only supports the zero-argument form; the optional-argument path is explicitly unimplemented. |
|
| Interface / Main interface | intface_is_hidden<br>intface_redraw<br>intface_hide<br>intface_show<br>set_quest_failure_value | implemented: only intface_redraw | `intface_redraw` only supports the zero-argument form; the optional-argument path is explicitly unimplemented. |
|
||||||
| Interface / Inventory | display_stats<br>inventory_redraw<br>critter_inven_obj2<br>get_current_inven_size<br>item_weight | âś… except get_current_inven_size | - |
|
| Interface / Inventory | display_stats<br>inventory_redraw<br>critter_inven_obj2<br>get_current_inven_size<br>item_weight | implemented: critter_inven_obj2, item_weight | - |
|
||||||
| Interface / Cursor | get/set_cursor_mode | âś… | - |
|
| Interface / Cursor | get/set_cursor_mode | âś… | - |
|
||||||
| Locks | lock_is_jammed<br>unjam_lock<br>set_unjam_locks_time | not implemented | - |
|
| Locks | lock_is_jammed<br>unjam_lock<br>set_unjam_locks_time | not implemented | - |
|
||||||
| INI settings | get_ini_setting<br>get_ini_string<br>get_ini_section<br>get_ini_sections<br>get_ini_config<br>get_ini_config_db<br>set_ini_setting | âś… | `modified_ini` is intentionally omitted as deprecated. |
|
| INI settings | get_ini_setting<br>get_ini_string<br>get_ini_section<br>get_ini_sections<br>get_ini_config<br>get_ini_config_db<br>set_ini_setting | âś… except get_ini_config, get_ini_config_db | `modified_ini` is intentionally omitted as deprecated. |
|
||||||
| Objects and scripts | set_self<br>set_dude_obj<br>real_dude_obj<br>remove_script<br>get/set_script<br>obj_is_carrying_obj<br>loot_obj<br>dialog_obj<br>obj_under_cursor<br>get/set_object_data<br>get/set_flags<br>set_unique_id<br>set_scr_name<br>obj_is_openable<br>get/set_proto_data<br>get_object_ai_data | implemented: set_self, get/set/remove_script, obj_is_carrying_obj, loot_obj, dialog_obj, obj_under_cursor, get_object_data, get_flags, set_flags, set_unique_id, obj_is_openable, get_proto_data, set_proto_data | - |
|
| Objects and scripts | set_self<br>set_dude_obj<br>real_dude_obj<br>remove_script<br>get/set_script<br>obj_is_carrying_obj<br>loot_obj<br>dialog_obj<br>obj_under_cursor<br>get/set_object_data<br>get/set_flags<br>set_unique_id<br>set_scr_name<br>obj_is_openable<br>get/set_proto_data<br>get_object_ai_data | implemented: set_self, get_script, obj_is_carrying_obj, loot_obj, dialog_obj, obj_under_cursor, get_object_data, get_flags, set_flags, obj_is_openable, get_proto_data, set_proto_data | - |
|
||||||
| Other / Game management | set_movie_path<br>stop/resume_game<br>mark_movie_played<br>game_loaded<br>get_game_mode<br>get_uptime<br>signal_close_game | implemented: game_loaded, get_game_mode, get_uptime, signal_close_game | - |
|
| Other / Game management | set_movie_path<br>stop/resume_game<br>mark_movie_played<br>game_loaded<br>get_game_mode<br>get_uptime<br>signal_close_game | implemented: game_loaded, get_game_mode, get_uptime, signal_close_game | - |
|
||||||
| Gameplay tweaks | set_pickpocket_max<br>set_hit_chance_max<br>set_xp_mod<br>set_critter_hit_chance_mod<br>set_base_hit_chance_mod<br>set_hp_per_level_mod<br>gdialog_get_barter_mod<br>get/set_unspent_ap_bonus<br>get/set_unspent_ap_perk_bonus<br>set_base_pickpocket_mod<br>set_critter_pickpocket_mod<br>get/set_inven_ap_cost<br>set_drugs_data<br>get_kill_counter<br>mod_kill_counter<br>set_pipboy_available | implemented: gdialog_get_barter_mod, get/set_unspent_ap{_perk}_bonus, get/set_inven_ap_cost | - |
|
| Gameplay tweaks | set_pickpocket_max<br>set_hit_chance_max<br>set_xp_mod<br>set_critter_hit_chance_mod<br>set_base_hit_chance_mod<br>set_hp_per_level_mod<br>get_unspent_ap_bonus<br>gdialog_get_barter_mod<br>set_unspent_ap_bonus<br>get/set_unspent_ap_perk_bonus<br>set_inven_ap_cost<br>set_base_pickpocket_mod<br>set_critter_pickpocket_mod<br>get_inven_ap_cost<br>set_drugs_data<br>get_kill_counter<br>mod_kill_counter<br>set_pipboy_available | implemented: gdialog_get_barter_mod | - |
|
||||||
| NPCs | inc_npc_level<br>get_npc_level<br>npc_engine_level_up | not implemented | - |
|
| NPCs | inc_npc_level<br>get_npc_level<br>npc_engine_level_up | not implemented | - |
|
||||||
| Hero Appearange | set_dm/df_model<br>hero_select_win | not implemented | - |
|
| Other | get_year<br>set_dm/df_model<br>active_hand<br>toggle_active_hand<br>get/set_viewport_x/y<br>hero_select_win<br>get_light_level<br>message_str_game<br>sneak_success<br>create_spatial<br>unwield_slot<br>add_g_timer_event<br>add_extra_msg_file<br>get_metarule_table<br>metarule_exist<br>remove_timer_event<br>spatial_radius | implemented: get_year, active_hand, toggle_active_hand, get_light_level, message_str_game, add_extra_msg_file, metarule_exist | `input_funcs_available`, `nb_create_char` are deprecated in sfall and intentionally absent in CE. `add_extra_msg_file` does not support the explicit `fileNumber` form in CE. |
|
||||||
| Events | add_g_timer_event<br>remove_timer_event<br>create_spatial<br>spatial_radius | not implemented | - |
|
|
||||||
| Other | get_year<br>active_hand<br>toggle_active_hand<br>get/set_viewport_x/y<br>get_light_level<br>message_str_game<br>sneak_success<br>unwield_slot<br>add_extra_msg_file<br>get_metarule_table<br>metarule_exist<br> | âś… except get/set_viewport_x/y, sneak_success | `input_funcs_available`, `nb_create_char` are deprecated in sfall and intentionally absent in CE. `add_extra_msg_file` does not support the explicit `fileNumber` form in CE. |
|
|
||||||
|
|
||||||
## Hooks
|
## Hooks
|
||||||
|
|
||||||
| Hook | ID | Compatibility | Notes |
|
| Hook | ID | Compatibility | Notes |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| ToHit | `HOOK_TOHIT` | âś… | - |
|
| ToHit | `HOOK_TOHIT` | âś… | - |
|
||||||
| AfterHitRoll | `HOOK_AFTERHITROLL` | âś… | Overriding `defender` leaves a lot of attack variables in previous state (e.g. distance, ->oops, roundsHitMainTarget) |
|
| AfterHitRoll | `HOOK_AFTERHITROLL` | đźš« | Et tu |
|
||||||
| CalcAPCost | `HOOK_CALCAPCOST` | âś… | - |
|
| CalcAPCost | `HOOK_CALCAPCOST` | âś… | - |
|
||||||
| DeathAnim1 | `HOOK_DEATHANIM1` | đźš« | Use DEATHANIM2 instead |
|
| DeathAnim1 | `HOOK_DEATHANIM1` | đźš« | Use DEATHANIM2 instead |
|
||||||
| DeathAnim2 | `HOOK_DEATHANIM2` | âś… | - |
|
| DeathAnim2 | `HOOK_DEATHANIM2` | âś… | - |
|
||||||
| CombatDamage | `HOOK_COMBATDAMAGE` | âś… | - |
|
| CombatDamage | `HOOK_COMBATDAMAGE` | âś… | - |
|
||||||
| OnDeath | `HOOK_ONDEATH` | âś… | - |
|
| OnDeath | `HOOK_ONDEATH` | đźš« | - |
|
||||||
| FindTarget | `HOOK_FINDTARGET` | đźš« | (maybe) |
|
| FindTarget | `HOOK_FINDTARGET` | đźš« | (maybe) |
|
||||||
| UseObjOn | `HOOK_USEOBJON` | âś… | - |
|
| UseObjOn | `HOOK_USEOBJON` | âś… | - |
|
||||||
| UseObj | `HOOK_USEOBJ` | âś… | CE notes an sfall-matching inconsistency around return code `2` behavior between interface contexts. |
|
| UseObj | `HOOK_USEOBJ` | âś… | CE notes an sfall-matching inconsistency around return code `2` behavior between interface contexts. |
|
||||||
| RemoveInvenObj | `HOOK_REMOVEINVENOBJ` | đźš« | - |
|
| RemoveInvenObj | `HOOK_REMOVEINVENOBJ` | đźš« | - |
|
||||||
| BarterPrice | `HOOK_BARTERPRICE` | âś… | - |
|
| BarterPrice | `HOOK_BARTERPRICE` | âś… | - |
|
||||||
| ItemDamage | `HOOK_ITEMDAMAGE` | âś… | - |
|
| MoveCost | `HOOK_MOVECOST` | đźš« | - |
|
||||||
| MoveCost | `HOOK_MOVECOST` | âś… | - |
|
| ItemDamage | `HOOK_ITEMDAMAGE` | đźš« | - |
|
||||||
| AmmoCost | `HOOK_AMMOCOST` | âś… | Requires `check_weapon_ammo_cost=1` if you want pre-attack ammo validation to respect per-shot/per-round overrides. |
|
| AmmoCost | `HOOK_AMMOCOST` | đźš« | Et tu |
|
||||||
| KeyPress | `HOOK_KEYPRESS` | âś… | Third hook arg is currently `0`; CE doesn't use VK codes. |
|
| KeyPress | `HOOK_KEYPRESS` | âś… | Third hook arg is currently `0`; CE doesn't use VK codes. |
|
||||||
| MouseClick | `HOOK_MOUSECLICK` | âś… | - |
|
| MouseClick | `HOOK_MOUSECLICK` | âś… | - |
|
||||||
| UseSkill | `HOOK_USESKILL` | âś… | - |
|
| UseSkill | `HOOK_USESKILL` | đźš« | - |
|
||||||
| Steal | `HOOK_STEAL` | âś… | - |
|
| Steal | `HOOK_STEAL` | đźš« | Et tu |
|
||||||
| WithinPerception | `HOOK_WITHINPERCEPTION` | âś… | - |
|
| WithinPerception | `HOOK_WITHINPERCEPTION` | âś… | - |
|
||||||
| InventoryMove | `HOOK_INVENTORYMOVE` | âś… | - |
|
| InventoryMove | `HOOK_INVENTORYMOVE` | âś… | - |
|
||||||
| InvenWield | `HOOK_INVENWIELD` | âś… | - |
|
| InvenWield | `HOOK_INVENWIELD` | đźš« | - |
|
||||||
| AdjustFID | `HOOK_ADJUSTFID` | âś… | Second hook arg currently matches the first because CE has no internal FID modifiers like Hero Appearance. |
|
| AdjustFID | `HOOK_ADJUSTFID` | đźš« | - |
|
||||||
| CombatTurn | `HOOK_COMBATTURN` | âś… | - |
|
| CombatTurn | `HOOK_COMBATTURN` | âś… | - |
|
||||||
| StdProcedure | `HOOK_STDPROCEDURE` | âś… | - |
|
| StdProcedure | `HOOK_STDPROCEDURE` | đźš« | Et tu |
|
||||||
| StdProcedureEnd | `HOOK_STDPROCEDURE_END` | âś… | - |
|
| StdProcedureEnd | `HOOK_STDPROCEDURE_END` | đźš« | - |
|
||||||
| CarTravel | `HOOK_CARTRAVEL` | đźš« | - |
|
| CarTravel | `HOOK_CARTRAVEL` | đźš« | - |
|
||||||
| SetGlobalVar | `HOOK_SETGLOBALVAR` | đźš« | - |
|
| SetGlobalVar | `HOOK_SETGLOBALVAR` | đźš« | - |
|
||||||
| RestTimer | `HOOK_RESTTIMER` | âś… | CE is slightly more strict: only `ret0 == 1` interrupts. Ticks wrap every 6.8y; do not rely on them for absolute game time. |
|
| RestTimer | `HOOK_RESTTIMER` | đźš« | Et tu |
|
||||||
| GameModeChange | `HOOK_GAMEMODECHANGE` | âś… | - |
|
| GameModeChange | `HOOK_GAMEMODECHANGE` | âś… | - |
|
||||||
| UseAnimObj | `HOOK_USEANIMOBJ` | đźš« | Et tu; (maybe) |
|
| UseAnimObj | `HOOK_USEANIMOBJ` | đźš« | Et tu; (maybe) |
|
||||||
| ExplosiveTimer | `HOOK_EXPLOSIVETIMER` | âś… | - |
|
| ExplosiveTimer | `HOOK_EXPLOSIVETIMER` | đźš« | - |
|
||||||
| DescriptionObj | `HOOK_DESCRIPTIONOBJ` | đźš« | Et tu |
|
| DescriptionObj | `HOOK_DESCRIPTIONOBJ` | đźš« | Et tu |
|
||||||
| UseSkillOn | `HOOK_USESKILLON` | âś… | - |
|
| UseSkillOn | `HOOK_USESKILLON` | đźš« | Et tu |
|
||||||
| OnExplosion | `HOOK_ONEXPLOSION` | đźš« | (maybe) |
|
| OnExplosion | `HOOK_ONEXPLOSION` | đźš« | (maybe) |
|
||||||
| SubCombatDamage | `HOOK_SUBCOMBATDAMAGE` | đźš« | (maybe) |
|
| SubCombatDamage | `HOOK_SUBCOMBATDAMAGE` | đźš« | (maybe) |
|
||||||
| SetLighting | `HOOK_SETLIGHTING` | đźš« | Et tu; (maybe) |
|
| SetLighting | `HOOK_SETLIGHTING` | đźš« | Et tu; (maybe) |
|
||||||
| Sneak | `HOOK_SNEAK` | đźš« | - |
|
| Sneak | `HOOK_SNEAK` | đźš« | - |
|
||||||
| TargetObject | `HOOK_TARGETOBJECT` | đźš« | (maybe) |
|
| TargetObject | `HOOK_TARGETOBJECT` | đźš« | (maybe) |
|
||||||
| Encounter | `HOOK_ENCOUNTER` | âś… | - |
|
| Encounter | `HOOK_ENCOUNTER` | đźš« | Et tu |
|
||||||
| AdjustPoison | `HOOK_ADJUSTPOISON` | đźš« | (maybe) |
|
| AdjustPoison | `HOOK_ADJUSTPOISON` | đźš« | (maybe) |
|
||||||
| AdjustRads | `HOOK_ADJUSTRADS` | đźš« | (maybe) |
|
| AdjustRads | `HOOK_ADJUSTRADS` | đźš« | (maybe) |
|
||||||
| RollCheck | `HOOK_ROLLCHECK` | đźš« | - |
|
| RollCheck | `HOOK_ROLLCHECK` | đźš« | - |
|
||||||
| BestWeapon | `HOOK_BESTWEAPON` | đźš« | - |
|
| BestWeapon | `HOOK_BESTWEAPON` | đźš« | - |
|
||||||
| CanUseWeapon | `HOOK_CANUSEWEAPON` | âś… | - |
|
| CanUseWeapon | `HOOK_CANUSEWEAPON` | đźš« | - |
|
||||||
| BuildSfxWeapon | `HOOK_BUILDSFXWEAPON` | đźš« | - |
|
| BuildSfxWeapon | `HOOK_BUILDSFXWEAPON` | đźš« | - |
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
# specify the cross compiler
|
|
||||||
set(CMAKE_C_COMPILER ${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-gcc)
|
|
||||||
set(CMAKE_CXX_COMPILER ${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-g++)
|
|
||||||
set(CMAKE_RC_COMPILER ${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-windres)
|
|
||||||
|
|
||||||
# where is the target environment
|
|
||||||
set(CMAKE_FIND_ROOT_PATH /usr/${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32)
|
|
||||||
|
|
||||||
# search for programs in the build host directories
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
# for libraries and headers in the target directories
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
|
||||||
|
|
||||||
# CMake determines how to examine dependencies based on the *host* system, leading to
|
|
||||||
# a `file unknown error` unless the target platform is explicitly specified.
|
|
||||||
set(CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORM "windows+pe")
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 63 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 70 KiB |
Binary file not shown.
@@ -1,131 +0,0 @@
|
|||||||
;
|
|
||||||
; Game general config
|
|
||||||
;
|
|
||||||
; Fallout 2
|
|
||||||
;
|
|
||||||
|
|
||||||
[start]
|
|
||||||
; Starting year, month, day. Month and day are 0-indexed (0 = January, 0 = first day of month).
|
|
||||||
year=2241
|
|
||||||
month=6
|
|
||||||
day=24
|
|
||||||
; To start a new game somewhere other than artemple.map, set this to the map file name.
|
|
||||||
map=
|
|
||||||
; Starting (tribal) and default (jumpsuit) player models. Can also be changed in-game via script.
|
|
||||||
model_male=hmwarr
|
|
||||||
model_male_default=hmjmps
|
|
||||||
model_female=hfprim
|
|
||||||
model_female_default=hfjmps
|
|
||||||
; Set to 1 if you want the pipboy to be available at the start of the game.
|
|
||||||
; Set to 2 to make the pipboy available by only skipping the vault suit movie check.
|
|
||||||
pipboy=0
|
|
||||||
|
|
||||||
[karma]
|
|
||||||
; FRM numbers for karma icons on the character screen. Number of points entries should be 1 less than number of frms entries.
|
|
||||||
; Example: frms=47,48,49 points=-100,100
|
|
||||||
frms=
|
|
||||||
points=
|
|
||||||
|
|
||||||
[items]
|
|
||||||
; Proto IDs for healing items.
|
|
||||||
stimpak=40
|
|
||||||
super_stimpak=144
|
|
||||||
healing_powder=273
|
|
||||||
|
|
||||||
[dialog]
|
|
||||||
; Set to 1 to prevent using 0 to escape from dialogue at any time.
|
|
||||||
no_exit_hotkey=1
|
|
||||||
; Set to 1 to allow using '^' in dialog msg files to specify gender-based alternative text.
|
|
||||||
; Text must be enclosed in angle brackets, e.g. <MaleText^FemaleText>.
|
|
||||||
gender_words=0
|
|
||||||
|
|
||||||
[main_menu]
|
|
||||||
; Custom version string shown on the main menu. Supports up to two %d placeholders for the game version numbers.
|
|
||||||
; Example: FALLOUT II v1.02d
|
|
||||||
version_string=
|
|
||||||
; Font color for the version string and copyright text. Last byte picks the color (default 0x3C).
|
|
||||||
; First byte flags: 1 - version string only, 2 - underline, 4 - monospace font.
|
|
||||||
; Example: 0x000055
|
|
||||||
font_color=0
|
|
||||||
; Font color for the main menu button text.
|
|
||||||
big_font_color=0
|
|
||||||
; Pixel offset for main menu buttons.
|
|
||||||
offset_x=0
|
|
||||||
offset_y=0
|
|
||||||
; Pixel offset for the copyright text line.
|
|
||||||
credits_offset_x=0
|
|
||||||
credits_offset_y=0
|
|
||||||
|
|
||||||
[movies]
|
|
||||||
; Number of days after game start when each Hakunin dream sequence becomes available.
|
|
||||||
artimer1=90
|
|
||||||
artimer2=180
|
|
||||||
artimer3=270
|
|
||||||
artimer4=360
|
|
||||||
|
|
||||||
[combat]
|
|
||||||
; Damage formula used to calculate combat damage.
|
|
||||||
; 0 - Fallout default, 1 - Glovz's Damage Fix, 2 - Glovz's Damage Fix with Damage Multiplier tweak, 5 - Haenlomal's Yet Another Ammo Mod
|
|
||||||
; Don't change this unless another mod explicitly requires it.
|
|
||||||
damage_formula=0
|
|
||||||
; Set to 1 to fix the bug that caused bonus HtH damage to not be applied correctly.
|
|
||||||
bonus_hth_damage_fix=1
|
|
||||||
; Set to 1 to remove the time limits that prevent critical hits/misses in the first few days of the game.
|
|
||||||
remove_critical_time_limits=0
|
|
||||||
; Set to 1 to allow science and repair to be used on the player, or 2 for all critters (rather than only brahmin/robots).
|
|
||||||
science_on_critters=0
|
|
||||||
; Set to 1 to make pre-attack ammo checks respect weapon ammo cost and HOOK_AMMOCOST type 1 overrides.
|
|
||||||
; Set to 0 to preserve vanilla behavior where one loaded round is enough to attempt the attack.
|
|
||||||
check_weapon_ammo_cost=1
|
|
||||||
; Set to 1 to enable modified burst bullet distribution (spray mod).
|
|
||||||
burst_enabled=0
|
|
||||||
; Ratio of bullets going to the center group vs. left/right in burst attacks. Multiplier is capped at divisor.
|
|
||||||
burst_center_mult=1
|
|
||||||
burst_center_div=3
|
|
||||||
; Ratio of center-group bullets that target the primary target directly. Multiplier is capped at divisor.
|
|
||||||
burst_target_mult=1
|
|
||||||
burst_target_div=2
|
|
||||||
|
|
||||||
[explosions]
|
|
||||||
; Set to 1 to make explosions and projectiles emit light.
|
|
||||||
emit_light=0
|
|
||||||
; Dynamite damage range. Max is capped at 9999; min is capped at max.
|
|
||||||
dynamite_max=50
|
|
||||||
dynamite_min=30
|
|
||||||
; Plastic explosive damage range. Max is capped at 9999; min is capped at max.
|
|
||||||
plastic_explosive_max=80
|
|
||||||
plastic_explosive_min=40
|
|
||||||
|
|
||||||
[skilldex]
|
|
||||||
; FRM numbers for Skilldex skill cursors. Default is 293 for all skills.
|
|
||||||
lockpick=293
|
|
||||||
steal=293
|
|
||||||
traps=293
|
|
||||||
first_aid=293
|
|
||||||
doctor=293
|
|
||||||
science=293
|
|
||||||
repair=293
|
|
||||||
|
|
||||||
[worldmap]
|
|
||||||
; Set to 1 to prevent using number keys to enter unvisited areas on a town map.
|
|
||||||
town_map_hotkeys_fix=1
|
|
||||||
; Set to 1 to show travel markers on the world map, or 2 to show only when sneaking.
|
|
||||||
trail_markers=0
|
|
||||||
; Set to 1 to skip the encounter with Frank Horrigan.
|
|
||||||
disable_horrigan=0
|
|
||||||
; City reputation overrides. Syntax: city_id:global_id pairs separated by commas.
|
|
||||||
; Example: 0:5001,2:5003,3:5004
|
|
||||||
city_reputation_list=
|
|
||||||
|
|
||||||
[characters]
|
|
||||||
; Custom premade characters for the character selection screen.
|
|
||||||
; premade_paths is a comma-separated list of file names (max 11 chars each) in the premade\ folder, without extension.
|
|
||||||
; premade_fids is a comma-separated list of FRM numbers for the character portrait, matching the order of premade_paths.
|
|
||||||
; Example: premade_paths=combat,diplomat,stealth premade_fids=201,203,202
|
|
||||||
premade_paths=
|
|
||||||
premade_fids=
|
|
||||||
|
|
||||||
[text]
|
|
||||||
; Comma-separated list of extra game message file names (without .msg extension) to load from the game\ folder.
|
|
||||||
; Use 'filename:number' syntax to assign explicit IDs. Access via message_str_game script function.
|
|
||||||
extra_msg_file_list=
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user