diff --git a/tools/resbuild/README.md b/tools/resbuild/README.md new file mode 100644 index 0000000..78e1274 --- /dev/null +++ b/tools/resbuild/README.md @@ -0,0 +1,118 @@ +# Rebuilding RPL4.RES + +`RPL4.RES` is Red Planet's resource file — every vehicle, map, model, damage +zone, control mapping and audio stream the game loads. It is *compiled* from +authored sources by `RPL4TOOL -b`, the original 1996 resource tool, which +still builds in this tree as `Release\RPL4TOOL.exe` (see `BUILD.md`). + +Until now that pipeline did not work. `RPL4TOOL -b` aborted on the very first +model, so `assets/RP411/RPL4.RES` could only be consumed, never regenerated. +This folder makes it build again. + +```powershell +# rebuild exactly what RP411 ships (minus the maps, see below) +powershell -ExecutionPolicy Bypass -File tools\resbuild\build-res.ps1 + +# ...plus the three vehicles that were cut after 4.10 +powershell -ExecutionPolicy Bypass -File tools\resbuild\build-res.ps1 -RestoreCutVehicles +``` + +Output lands in `%TEMP%\rp412-resbuild\rpl4.res`. Inspect any resource file +with `Release\RPL4TOOL.exe -l `; that listing is the acceptance test for +anything built here. **The result is not yet a drop-in replacement for +`assets/RP411/RPL4.RES`** — see *What is still missing*. + +## Why it was broken + +`RPL4TOOL -b` died in `PlugStream_FindEntryAndWriteObjectID` while building +`player.mod`'s audio stream, resolving `resource=Translocation01` from +`AUDIO/PLYINT.SCP`. That name is defined in no file in `CONTENT/RP`. + +The first guess — that it needed the AWE32 soundbanks through +`AudioCard::LoadSBK`, which the Win32 port stubbed to `return 1` — was wrong. +Supplying the banks changes nothing, because nothing reads them at build time. + +The real answer is `L4AudioResourceManager::CreateStaticAudioStreamResource` +(`MUNGA_L4/L4AUDRES.cpp`), which opens **`audio\static.scp`**. That file +declares all 154 of RP's patch resources as plain text: + +``` +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=29 +name=Translocation01LOD1 +... +[PatchResource] +audio_level_of_detail=0.0, Translocation01LOD1 +name=Translocation01 +``` + +Every model's audio script resolves its `resource=` names against those, so +without `static.scp` the first model aborts and no `.res` is ever written. +`CONTENT/RP/AUDIO` does not have it — but the sda4 developer drive does. + +No engine change was needed. The pipeline was missing content, not code. + +## What the build tree is made of + +`build-res.ps1` assembles three sources, and never overwrites an authored file +with a shipped one — archival content stays authoritative where it exists. + +| source | provides | +|---|---| +| `TeslaRel410\CONTENT\RP` | models, solids, gauge art, audio scripts, `RPL4.BLD` | +| `recovered\` (this folder) | `STATIC.SCP`, `VTVINT.SCP`, `VTVEXT.SCP` | +| `assets\RP411\` | `AUDIO1/2.RES` soundbanks, ~547 `VIDEO` files | + +The three recovered scripts came from `TeslaRel410\sda4\RPDAVE\AUDIO` (identical +to `RPLIVE`) and are kept here because they are the keystone and are small. +`VTVINT.SCP` and `VTVEXT.SCP` are `[include]`d by 27 vehicle audio scripts and +are absent from `CONTENT/RP` as well. + +The `VIDEO` gap is mostly `.SKL` skeletons — `MAN.SKL`, `BAN.SKL`, `BUN.SKL`, +`DUN.SKL` and their `S` variants. A model missing one logs +`video\.skl is empty or missing!`, then ` has no Segments!`, and is +**silently dropped from the build** — the tool does not fail, it just produces +a resource file with fewer models. Always check the model count. + +## What is still missing + +**Eleven maps have no source in any tree.** The build reports each one and +carries on: + +| map | source | +|---|---| +| `wise`, `yip`, `pain`, `blade`, `lyzlane` | only in `sda4\RPDAVE\MAPS` (1996 dev state, older than retail) | +| `otto`, `frstrm`, `burnt`, `brewers`, `headoff`, `headmf` | **nowhere** | + +`CONTENT/RP/MAPS` has the `.CAM` camera files and `SOLIDS` has the `.XST` +existence boxes, but the `.MAP` files themselves are gone. So a build from +here produces 45 GameModels and **zero maps**, against RP411's 9. Until those +are recovered, this pipeline can rebuild vehicles but cannot replace the +shipped resource file. + +## The three cut vehicles + +`-RestoreCutVehicles` uncomments three lines in `RPL4.BLD` that were commented +out after 4.10 shipped, with their model IDs left in place: + +``` +//Armadillo Class +model=puck.mod /id:19 +//model=dark.mod /id:56 <- dark puck +//Experimental Vehicles +//model=blktrn.mod /id:47 <- black tornado +//model=blkspk.mod /id:48 <- black speck +``` + +All three build clean, taking the model count from 42 to 45 — exactly retail's +count. Each gets its full resource set: GameModel, Model List, VideoModel, +Subsystems, Segments, DamageZones, ControlsMappings and GaugeImage. + +Two caveats. `blktrn` has no audio script anywhere (`BLKTRN.SCP` is absent from +every tree) and no gauge block in `L4GAUGE.CFG`, so its cockpit panel has no +layout to select — `dark` and `blkspk` still have theirs. And nothing has been +verified in-game; building is not the same as playable. + +See `docs/CONTROL-PRESETS.md` for what these vehicles carry and the preset +tables they shipped with. diff --git a/tools/resbuild/build-res.ps1 b/tools/resbuild/build-res.ps1 new file mode 100644 index 0000000..2246bc0 --- /dev/null +++ b/tools/resbuild/build-res.ps1 @@ -0,0 +1,103 @@ +# ============================================================================ +# build-res.ps1 - rebuild RPL4.RES from the 4.10 content sources +# ============================================================================ +# +# Assembles a build tree from three places and runs the original resource +# compiler (Release\RPL4TOOL.exe -b). See README.md in this folder for what +# each piece is and why it is needed. +# +# 1. TeslaRel410\CONTENT\RP the authored content: models, solids, +# audio scripts, gauge art, the .bld script +# 2. recovered\ three audio scripts missing from (1), +# recovered from the sda4 developer drive. +# Without STATIC.SCP nothing builds at all. +# 3. assets\RP411\ the soundbanks and the .SKL skeletons that +# (1) is missing - RP412 ships complete sets +# +# Usage: powershell -ExecutionPolicy Bypass -File tools\resbuild\build-res.ps1 +# [-Content ] [-Out ] [-RestoreCutVehicles] +# +param( + [string]$Content = 'C:\VWE\TeslaRel410\CONTENT\RP', + [string]$Out = "$env:TEMP\rp412-resbuild", + # Uncomment dark / blkspk / blktrn in the .bld before building. They were + # commented out after 4.10 shipped; their sources are all still here. + [switch]$RestoreCutVehicles +) + +$ErrorActionPreference = 'Stop' +$root = Split-Path -Parent (Split-Path -Parent $PSScriptRoot) +$tool = Join-Path $root 'Release\RPL4TOOL.exe' +$assets = Join-Path $root 'assets\RP411' +$recovered = Join-Path $PSScriptRoot 'recovered' + +if (-not (Test-Path $tool)) { throw "$tool not found - build the solution first (BUILD.md 2)." } +if (-not (Test-Path $Content)) { throw "content tree not found: $Content" } + +# --- assemble --------------------------------------------------------------- +Write-Host "Assembling build tree in $Out" +if (Test-Path $Out) { Remove-Item -Recurse -Force $Out } +New-Item -ItemType Directory -Force $Out | Out-Null +Copy-Item "$Content\*" $Out -Recurse -Force + +# The soundbanks. AUDIO.INI names audio\audio1.res and audio2.res; the content +# tree carries only a 1-byte AUDIO.RES stub. RP412's copies are hash-identical +# to the 1996 originals in the pod image. +foreach ($bank in 'AUDIO1.RES', 'AUDIO2.RES') { + Copy-Item (Join-Path $assets "AUDIO\$bank") "$Out\AUDIO\" -Force +} + +# The keystone. CreateStaticAudioStreamResource opens audio\static.scp, which +# defines all 154 PatchResources by name (Translocation01 -> bank 2, patch 29 +# and so on). Every model's audio script resolves its resource= names against +# them, so without this file the very first model aborts the build. +Copy-Item "$recovered\*.SCP" "$Out\AUDIO\" -Force + +# Skeletons and geometry the content tree is missing (BAN/BUN/DUN/MAN.SKL and +# their S variants at least). Fill gaps only - never overwrite authored content +# with the shipped copy, so archival files stay authoritative where they exist. +$filled = 0 +foreach ($src in Get-ChildItem (Join-Path $assets 'VIDEO') -File) { + $dst = Join-Path "$Out\VIDEO" $src.Name + if (-not (Test-Path $dst) -or (Get-Item $dst).Length -eq 0) { + Copy-Item $src.FullName $dst -Force; $filled++ + } +} +Write-Host " filled $filled missing VIDEO file(s)" + +if ($RestoreCutVehicles) { + $bld = Join-Path $Out 'RPL4.BLD' + (Get-Content $bld -Raw) -replace '(?m)^//(model=(dark|blkspk|blktrn)\.mod)', '$1' | + Set-Content $bld -Encoding ascii + Write-Host " restored dark, blkspk, blktrn in RPL4.BLD" +} + +Copy-Item $tool $Out -Force + +# --- build ------------------------------------------------------------------ +# RPL4TOOL ends in _getch() (RPL4TOOL.cpp:76), so it never exits on its own +# when stdout is redirected. Run it detached and reap it once the file lands. +Write-Host "Building..." +$log = Join-Path $Out 'build.log' +$p = Start-Process -FilePath (Join-Path $Out 'RPL4TOOL.exe') ` + -ArgumentList '-b', 'rpl4.bld' -WorkingDirectory $Out ` + -RedirectStandardOutput $log -PassThru -WindowStyle Hidden +if (-not $p.WaitForExit(300000)) { Start-Sleep -Seconds 2 } +if (-not $p.HasExited) { Stop-Process -Id $p.Id -Force } + +$res = Join-Path $Out 'rpl4.res' +if (-not (Test-Path $res)) { + Get-Content $log -Tail 20 | ForEach-Object { Write-Host " $_" } + throw "build produced no rpl4.res - see $log" +} + +# --- report ----------------------------------------------------------------- +$missing = Select-String -Path $log -Pattern 'Does not exist!|is empty or missing!|has no Segments!' | + ForEach-Object { $_.Line.Trim() } | Sort-Object -Unique +Write-Host ("rpl4.res: {0:N0} bytes" -f (Get-Item $res).Length) +if ($missing) { + Write-Host "Unresolved inputs ($($missing.Count)) - see README.md 'What is still missing':" + $missing | ForEach-Object { Write-Host " $_" } +} +Write-Host "Output: $res" +Write-Host "List it with: Release\RPL4TOOL.exe -l `"$res`"" diff --git a/tools/resbuild/recovered/STATIC.SCP b/tools/resbuild/recovered/STATIC.SCP new file mode 100644 index 0000000..d0b1125 --- /dev/null +++ b/tools/resbuild/recovered/STATIC.SCP @@ -0,0 +1,2113 @@ +# +#------------------------------------------------------------------ +# Static audio resources +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Bank 1 +#------------------------------------------------------------------ +# + +# ENGINE + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=0 +name=EngineDroneInt01LOD1 +voice_count=2 +render_type=1 +max_filter_cutoff=54 + +[PatchResource] +audio_level_of_detail=0.0, EngineDroneInt01LOD1 +name=EngineDroneInt01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=1 +name=EngineThrustInt01LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=72 + +[PatchResource] +audio_level_of_detail=0.0, EngineThrustInt01LOD1 +name=EngineThrustInt01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=2 +name=EngineDroneInt02LOD1 +voice_count=2 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, EngineDroneInt02LOD1 +name=EngineDroneInt02 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=3 +name=EngineThrustInt02LOD1 +voice_count=3 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, EngineThrustInt02LOD1 +name=EngineThrustInt02 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=4 +name=EngineDroneExt01LOD1 +voice_count=2 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, EngineDroneExt01LOD1 +name=EngineDroneExt01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=5 +name=EngineThrustExt01LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, EngineThrustExt01LOD1 +name=EngineThrustExt01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=6 +name=EngineComboExt01LOD1 +voice_count=3 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, EngineComboExt01LOD1 +name=EngineComboExt01 + +# SPEED + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=7 +name=CockpitWindDrone01LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CockpitWindDrone01LOD1 +name=CockpitWindDrone01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=8 +name=CockpitWindRush01LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CockpitWindRush01LOD1 +name=CockpitWindRush01 + +# BOOSTER + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=9 +name=BoosterInt01LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, BoosterInt01LOD1 +name=BoosterInt01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=10 +name=BoosterInt02LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, BoosterInt02LOD1 +name=BoosterInt02 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=11 +name=BoosterInt03LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, BoosterInt03LOD1 +name=BoosterInt03 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=12 +name=BoosterInt04LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, BoosterInt04LOD1 +name=BoosterInt04 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=13 +name=BoosterExt01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, BoosterExt01LOD1 +name=BoosterExt01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=63 +name=BoosterLoopInt01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, BoosterLoopInt01LOD1 +name=BoosterLoopInt01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=64 +name=BoosterLoopExt01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, BoosterLoopExt01LOD1 +name=BoosterLoopExt01 + +# COLLISION + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=14 +name=CollisionInt01LOD1 +voice_count=3 +render_type=0 +collision_depth=5 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt01LOD1 +name=CollisionInt01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=15 +name=CollisionInt02LOD1 +voice_count=3 +render_type=0 +collision_depth=6 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt02LOD1 +name=CollisionInt02 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=16 +name=CollisionInt03LOD1 +voice_count=3 +render_type=0 +collision_depth=7 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt03LOD1 +name=CollisionInt03 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=17 +name=CollisionInt04LOD1 +voice_count=3 +render_type=0 +collision_depth=5 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt04LOD1 +name=CollisionInt04 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=18 +name=CollisionInt05LOD1 +voice_count=3 +render_type=0 +collision_depth=4 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt05LOD1 +name=CollisionInt05 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=19 +name=CollisionInt06LOD1 +voice_count=3 +render_type=0 +collision_depth=6 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt06LOD1 +name=CollisionInt06 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=20 +name=CollisionInt07LOD1 +voice_count=3 +render_type=0 +collision_depth=4 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt07LOD1 +name=CollisionInt07 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=21 +name=CollisionInt08LOD1 +voice_count=3 +render_type=0 +collision_depth=6 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt08LOD1 +name=CollisionInt08 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=22 +name=CollisionInt09LOD1 +voice_count=2 +render_type=0 +collision_depth=3 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt09LOD1 +name=CollisionInt09 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=23 +name=CollisionInt10LOD1 +voice_count=3 +render_type=0 +collision_depth=4 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt10LOD1 +name=CollisionInt10 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=24 +name=CollisionInt11LOD1 +voice_count=3 +render_type=0 +collision_depth=7 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt11LOD1 +name=CollisionInt11 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=25 +name=CollisionInt12LOD1 +voice_count=4 +render_type=0 +collision_depth=6 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt12LOD1 +name=CollisionInt12 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=26 +name=CollisionInt13LOD1 +voice_count=3 +render_type=0 +collision_depth=6 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt13LOD1 +name=CollisionInt13 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=27 +name=CollisionInt14LOD1 +voice_count=3 +render_type=0 +collision_depth=3 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt14LOD1 +name=CollisionInt14 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=28 +name=CollisionInt15LOD1 +voice_count=3 +render_type=0 +collision_depth=3 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt15LOD1 +name=CollisionInt15 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=29 +name=CollisionInt16LOD1 +voice_count=3 +render_type=0 +collision_depth=4 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt16LOD1 +name=CollisionInt16 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=30 +name=CollisionInt17LOD1 +voice_count=3 +render_type=0 +collision_depth=4 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt17LOD1 +name=CollisionInt17 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=31 +name=CollisionInt18LOD1 +voice_count=4 +render_type=0 +collision_depth=5 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt18LOD1 +name=CollisionInt18 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=32 +name=CollisionInt19LOD1 +voice_count=4 +render_type=0 +collision_depth=3 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt19LOD1 +name=CollisionInt19 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=33 +name=CollisionInt20LOD1 +voice_count=4 +render_type=0 +collision_depth=4 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionInt20LOD1 +name=CollisionInt20 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=34 +name=CollisionExt01LOD1 +voice_count=2 +render_type=0 +collision_depth=5 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionExt01LOD1 +name=CollisionExt01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=35 +name=CollisionExt02LOD1 +voice_count=2 +render_type=0 +collision_depth=5 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionExt02LOD1 +name=CollisionExt02 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=36 +name=CollisionExt03LOD1 +voice_count=2 +render_type=0 +collision_depth=5 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionExt03LOD1 +name=CollisionExt03 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=37 +name=CollisionExt04LOD1 +voice_count=2 +render_type=0 +collision_depth=4 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionExt04LOD1 +name=CollisionExt04 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=38 +name=CollisionExt05LOD1 +voice_count=2 +render_type=0 +collision_depth=4 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionExt05LOD1 +name=CollisionExt05 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=39 +name=CollisionExt06LOD1 +voice_count=2 +render_type=0 +collision_depth=4 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionExt06LOD1 +name=CollisionExt06 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=40 +name=CollisionExt07LOD1 +voice_count=2 +render_type=0 +collision_depth=6 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionExt07LOD1 +name=CollisionExt07 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=41 +name=CollisionExt08LOD1 +voice_count=1 +render_type=0 +collision_depth=5 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionExt08LOD1 +name=CollisionExt08 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=42 +name=CollisionExt09LOD1 +voice_count=2 +render_type=0 +collision_depth=5 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionExt09LOD1 +name=CollisionExt09 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=43 +name=CollisionExt10LOD1 +voice_count=2 +render_type=0 +collision_depth=5 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, CollisionExt10LOD1 +name=CollisionExt10 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=44 +name=ScrapeInt01LOD1 +voice_count=1 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, ScrapeInt01LOD1 +name=ScrapeInt01 + +# DEATH + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=45 +name=DeathInt01LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, DeathInt01LOD1 +name=DeathInt01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=46 +name=DeathInt02LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, DeathInt02LOD1 +name=DeathInt02 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=47 +name=DeathExt01LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, DeathExt01LOD1 +name=DeathExt01 + +# SCORE + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=66 +name=ScoreKill01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=100 + +[PatchResource] +audio_level_of_detail=0.0, ScoreKill01LOD1 +name=ScoreKill01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=67 +name=ScoreZone01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, ScoreZone01LOD1 +name=ScoreZone01 + +# BUTTONS + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=50 +name=Horn01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=110 + +[PatchResource] +audio_level_of_detail=0.0, Horn01LOD1 +name=Horn01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=51 +name=Chute01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, Chute01LOD1 +name=Chute01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=52 +name=ReverseThrust01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, ReverseThrust01LOD1 +name=ReverseThrust01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=53 +name=ReverseThrust02LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, ReverseThrust02LOD1 +name=ReverseThrust02 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=54 +name=LiftCut01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LiftCut01LOD1 +name=LiftCut01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=55 +name=ViewSwitchLeft01LOD1 +voice_count=1 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, ViewSwitchLeft01LOD1 +name=ViewSwitchLeft01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=56 +name=ViewSwitchRight01LOD1 +voice_count=1 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, ViewSwitchRight01LOD1 +name=ViewSwitchRight01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=57 +name=ViewSwitchCenter01LOD1 +voice_count=1 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, ViewSwitchCenter01LOD1 +name=ViewSwitchCenter01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=58 +name=ModeSwitch01LOD1 +voice_count=1 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, ModeSwitch01LOD1 +name=ModeSwitch01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=59 +name=ConfigSwitch01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, ConfigSwitch01LOD1 +name=ConfigSwitch01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=60 +name=PresetSwitch01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, PresetSwitch01LOD1 +name=PresetSwitch01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=68 +name=RadarButton01LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +# TRANSLOCATION + +[PatchResource] +audio_level_of_detail=0.0, RadarButton01LOD1 +name=RadarButton01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=29 +name=Translocation01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, Translocation01LOD1 +name=Translocation01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=30 +name=Translocation02LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, Translocation02LOD1 +name=Translocation02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=31 +name=TranslocationExt01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, TranslocationExt01LOD1 +name=TranslocationExt01 + +# DOOR + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=0 +name=DoorOpen01LOD1 +voice_count=1 +render_type=0 +max_filter_cutoff=115 + +[PatchResource] +audio_level_of_detail=0.0, DoorOpen01LOD1 +name=DoorOpen01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=1 +name=DoorOpen02LOD1 +voice_count=1 +render_type=0 +max_filter_cutoff=115 + +[PatchResource] +audio_level_of_detail=0.0, DoorOpen02LOD1 +name=DoorOpen02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=2 +name=DoorClose01LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=116 + +[PatchResource] +audio_level_of_detail=0.0, DoorClose01LOD1 +name=DoorClose01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=3 +name=DoorClose02LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=116 + +[PatchResource] +audio_level_of_detail=0.0, DoorClose02LOD1 +name=DoorClose02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=4 +name=DoorMove01LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=123 + +[PatchResource] +audio_level_of_detail=0.0, DoorMove01LOD1 +name=DoorMove01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=5 +name=DoorMove02LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=123 + +[PatchResource] +audio_level_of_detail=0.0, DoorMove02LOD1 +name=DoorMove02 + +# ENVIRONMENT + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=61 +name=HVAC01LOD1 +voice_count=2 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, HVAC01LOD1 +name=HVAC01 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=62 +name=HVAC02LOD1 +voice_count=2 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, HVAC02LOD1 +name=HVAC02 + +[PatchLevelOfDetail] +bank_ID=1 +patch_ID=65 +name=HVAC03LOD1 +voice_count=3 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, HVAC03LOD1 +name=HVAC03 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=6 +name=WellheadDrill01LOD1 +voice_count=4 +render_type=1 +max_filter_cutoff=110 + +[PatchResource] +audio_level_of_detail=0.0, WellheadDrill01LOD1 +name=WellheadDrill01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=7 +name=WellheadDrill02LOD1 +voice_count=3 +render_type=1 +max_filter_cutoff=110 + +[PatchResource] +audio_level_of_detail=0.0, WellheadDrill02LOD1 +name=WellheadDrill02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=8 +name=OreDrop01LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, OreDrop01LOD1 +name=OreDrop01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=9 +name=OreDrop02LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, OreDrop02LOD1 +name=OreDrop02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=10 +name=OreDrop03LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, OreDrop03LOD1 +name=OreDrop03 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=11 +name=MaintPulse01LOD1 +voice_count=2 +render_type=1 +max_filter_cutoff=100 + +[PatchResource] +audio_level_of_detail=0.0, MaintPulse01LOD1 +name=MaintPulse01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=12 +name=MaintDrone01LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, MaintDrone01LOD1 +name=MaintDrone01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=13 +name=GeneratorSpin01LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=90 + +[PatchResource] +audio_level_of_detail=0.0, GeneratorSpin01LOD1 +name=GeneratorSpin01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=14 +name=GeneratorDrone01LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=80 + +[PatchResource] +audio_level_of_detail=0.0, GeneratorDrone01LOD1 +name=GeneratorDrone01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=15 +name=Generator01LOD1 +voice_count=2 +render_type=1 +max_filter_cutoff=90 + +[PatchResource] +audio_level_of_detail=0.0, Generator01LOD1 +name=Generator01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=16 +name=Generator02LOD1 +voice_count=2 +render_type=1 +max_filter_cutoff=20 + +[PatchResource] +audio_level_of_detail=0.0, Generator02LOD1 +name=Generator02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=17 +name=FuelTank01LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=120 + +[PatchResource] +audio_level_of_detail=0.0, FuelTank01LOD1 +name=FuelTank01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=18 +name=FuelTank02LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=120 + +[PatchResource] +audio_level_of_detail=0.0, FuelTank02LOD1 +name=FuelTank02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=19 +name=PipeMachine01LOD1 +voice_count=2 +render_type=1 +max_filter_cutoff=100 + +[PatchResource] +audio_level_of_detail=0.0, PipeMachine01LOD1 +name=PipeMachine01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=20 +name=FlameMachine01LOD1 +voice_count=2 +render_type=1 +max_filter_cutoff=90 + +[PatchResource] +audio_level_of_detail=0.0, FlameMachine01LOD1 +name=FlameMachine01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=21 +name=Refinery01LOD1 +voice_count=3 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, Refinery01LOD1 +name=Refinery01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=22 +name=Refinery02LOD1 +voice_count=3 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, Refinery02LOD1 +name=Refinery02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=23 +name=Refinery03LOD1 +voice_count=3 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, Refinery03LOD1 +name=Refinery03 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=24 +name=Refinery04LOD1 +voice_count=2 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, Refinery04LOD1 +name=Refinery04 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=25 +name=Refinery05LOD1 +voice_count=2 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, Refinery05LOD1 +name=Refinery05 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=26 +name=Refinery06LOD1 +voice_count=3 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, Refinery06LOD1 +name=Refinery06 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=27 +name=Refinery07LOD1 +voice_count=3 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, Refinery07LOD1 +name=Refinery07 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=28 +name=PipeMachine02LOD1 +voice_count=4 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, PipeMachine02LOD1 +name=PipeMachine02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=32 +name=WellheadDevice01LOD1 +voice_count=3 +render_type=1 +max_filter_cutoff=100 + +[PatchResource] +audio_level_of_detail=0.0, WellheadDevice01LOD1 +name=WellheadDevice01 + +# LASER + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=64 +name=LaserFireInt01LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt01LOD1 +name=LaserFireInt01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=65 +name=LaserFireInt02LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt02LOD1 +name=LaserFireInt02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=66 +name=LaserFireInt03LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt03LOD1 +name=LaserFireInt03 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=67 +name=LaserFireInt04LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt04LOD1 +name=LaserFireInt04 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=68 +name=LaserFireInt05LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt05LOD1 +name=LaserFireInt05 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=69 +name=LaserFireInt06LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt06LOD1 +name=LaserFireInt06 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=70 +name=LaserFireInt07LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt07LOD1 +name=LaserFireInt07 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=71 +name=LaserFireInt08LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt08LOD1 +name=LaserFireInt08 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=72 +name=LaserFireInt09LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt09LOD1 +name=LaserFireInt09 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=73 +name=LaserFireInt10LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt10LOD1 +name=LaserFireInt10 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=74 +name=LaserFireInt11LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt11LOD1 +name=LaserFireInt11 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=75 +name=LaserFireInt12LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt12LOD1 +name=LaserFireInt12 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=76 +name=LaserFireInt13LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt13LOD1 +name=LaserFireInt13 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=77 +name=LaserFireInt14LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireInt14LOD1 +name=LaserFireInt14 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=78 +name=LaserFireIntEmptyLOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireIntEmptyLOD1 +name=LaserFireIntEmpty + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=79 +name=LaserFireExt01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireExt01LOD1 +name=LaserFireExt01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=80 +name=LaserFireExt02LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireExt02LOD1 +name=LaserFireExt02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=81 +name=LaserFireExt03LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireExt03LOD1 +name=LaserFireExt03 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=82 +name=LaserFireExt04LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireExt04LOD1 +name=LaserFireExt04 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=83 +name=LaserFireExt05LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireExt05LOD1 +name=LaserFireExt05 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=84 +name=LaserFireExt06LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireExt06LOD1 +name=LaserFireExt06 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=85 +name=LaserFireExt07LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireExt07LOD1 +name=LaserFireExt07 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=86 +name=LaserFireExt08LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireExt08LOD1 +name=LaserFireExt08 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=87 +name=LaserFireExt09LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireExt09LOD1 +name=LaserFireExt09 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=88 +name=LaserFireExt10LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserFireExt10LOD1 +name=LaserFireExt10 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=89 +name=LaserHitExt01LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserHitExt01LOD1 +name=LaserHitExt01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=90 +name=LaserHitExt02LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserHitExt02LOD1 +name=LaserHitExt02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=91 +name=LaserHitExt03LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserHitExt03LOD1 +name=LaserHitExt03 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=92 +name=LaserHitExt04LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserHitExt04LOD1 +name=LaserHitExt04 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=93 +name=LaserHitInt01LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserHitInt01LOD1 +name=LaserHitInt01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=94 +name=LaserHitInt02LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserHitInt02LOD1 +name=LaserHitInt02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=95 +name=LaserHitInt03LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserHitInt03LOD1 +name=LaserHitInt03 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=96 +name=LaserHitCraft01LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserHitCraft01LOD1 +name=LaserHitCraft01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=97 +name=LaserHitCraft02LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserHitCraft02LOD1 +name=LaserHitCraft02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=98 +name=LaserHitCraft03LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, LaserHitCraft03LOD1 +name=LaserHitCraft03 + +# RIVETS + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=48 +name=RivetEmpty01LOD1 +voice_count=1 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetEmpty01LOD1 +name=RivetEmpty01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=49 +name=RivetFireLeftLOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetFireLeftLOD1 +name=RivetFireLeft + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=50 +name=RivetFireRightLOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetFireRightLOD1 +name=RivetFireRight + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=51 +name=RivetFireCenterLOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetFireCenterLOD1 +name=RivetFireCenter + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=52 +name=RivetTravel01LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetTravel01LOD1 +name=RivetTravel01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=53 +name=RivetHitInt01LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetHitInt01LOD1 +name=RivetHitInt01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=54 +name=RivetHitInt02LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetHitInt02LOD1 +name=RivetHitInt02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=55 +name=RivetHitInt03LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetHitInt03LOD1 +name=RivetHitInt03 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=56 +name=RivetHitCraft01LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetHitCraft01LOD1 +name=RivetHitCraft01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=57 +name=RivetHitCraft02LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetHitCraft02LOD1 +name=RivetHitCraft02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=58 +name=RivetHitCraft03LOD1 +voice_count=3 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetHitCraft03LOD1 +name=RivetHitCraft03 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=59 +name=RivetHitExt01LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetHitExt01LOD1 +name=RivetHitExt01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=60 +name=RivetHitExt02LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetHitExt02LOD1 +name=RivetHitExt02 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=61 +name=RivetHitExt03LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetHitExt03LOD1 +name=RivetHitExt03 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=62 +name=RivetHitExt04LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetHitExt04LOD1 +name=RivetHitExt04 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=63 +name=RivetHitExt05LOD1 +voice_count=2 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, RivetHitExt05LOD1 +name=RivetHitExt05 + +# MINE + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=45 +name=MineRelease01LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, MineRelease01LOD1 +name=MineRelease01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=46 +name=MineCoast01LOD1 +voice_count=1 +render_type=1 +max_filter_cutoff=90 + +[PatchResource] +audio_level_of_detail=0.0, MineCoast01LOD1 +name=MineCoast01 + +[PatchLevelOfDetail] +bank_ID=2 +patch_ID=47 +name=MineExplode01LOD1 +voice_count=4 +render_type=0 +max_filter_cutoff=127 + +[PatchResource] +audio_level_of_detail=0.0, MineExplode01LOD1 +name=MineExplode01 + +# INDEXS + +[AudioResourceIndex] +audio_resource=CollisionInt15 +collision_depth=3 +audio_resource=CollisionInt09 +collision_depth=3 +audio_resource=CollisionInt14 +collision_depth=3 +audio_resource=CollisionInt19 +collision_depth=3 +audio_resource=CollisionInt05 +collision_depth=4 +audio_resource=CollisionInt07 +collision_depth=4 +audio_resource=CollisionInt10 +collision_depth=4 +audio_resource=CollisionInt16 +collision_depth=4 +audio_resource=CollisionInt17 +collision_depth=4 +audio_resource=CollisionInt20 +collision_depth=4 +audio_resource=CollisionInt01 +collision_depth=5 +audio_resource=CollisionInt04 +collision_depth=5 +audio_resource=CollisionInt18 +collision_depth=5 +audio_resource=CollisionInt02 +collision_depth=6 +audio_resource=CollisionInt06 +collision_depth=6 +audio_resource=CollisionInt08 +collision_depth=6 +audio_resource=CollisionInt12 +collision_depth=6 +audio_resource=CollisionInt13 +collision_depth=6 +audio_resource=CollisionInt03 +collision_depth=7 +audio_resource=CollisionInt11 +collision_depth=7 +name=CollisionIntIndex + +[AudioResourceIndex] +audio_resource=CollisionExt06 +collision_depth=4 +audio_resource=CollisionExt05 +collision_depth=4 +audio_resource=CollisionExt04 +collision_depth=4 +audio_resource=CollisionExt01 +collision_depth=5 +audio_resource=CollisionExt02 +collision_depth=5 +audio_resource=CollisionExt03 +collision_depth=5 +audio_resource=CollisionExt08 +collision_depth=5 +audio_resource=CollisionExt09 +collision_depth=5 +audio_resource=CollisionExt10 +collision_depth=5 +audio_resource=CollisionExt07 +collision_depth=6 +name=CollisionExtIndex + +[AudioResourceIndex] +audio_resource=BoosterInt01 +audio_resource=BoosterInt02 +audio_resource=BoosterInt03 +audio_resource=BoosterInt04 +name=BoosterIntIndex + +[AudioResourceIndex] +audio_resource=RivetHitInt01 +audio_resource=RivetHitInt02 +audio_resource=RivetHitInt03 +name=RivetHitIntIndex + +[AudioResourceIndex] +audio_resource=RivetHitCraft01 +audio_resource=RivetHitCraft02 +audio_resource=RivetHitCraft03 +name=RivetHitCraftIndex + +[AudioResourceIndex] +audio_resource=RivetHitExt01 +audio_resource=RivetHitExt02 +audio_resource=RivetHitExt03 +audio_resource=RivetHitExt04 +audio_resource=RivetHitExt05 +name=RivetHitExtIndex + +[AudioResourceIndex] +audio_resource=LaserFireInt01 +audio_resource=LaserFireInt02 +audio_resource=LaserFireInt03 +audio_resource=LaserFireInt04 +audio_resource=LaserFireInt05 +audio_resource=LaserFireInt06 +audio_resource=LaserFireInt07 +audio_resource=LaserFireInt08 +audio_resource=LaserFireInt09 +audio_resource=LaserFireInt10 +audio_resource=LaserFireInt11 +audio_resource=LaserFireInt12 +audio_resource=LaserFireInt13 +audio_resource=LaserFireInt14 +name=LaserFireIntIndex + +[AudioResourceIndex] +audio_resource=LaserFireExt01 +audio_resource=LaserFireExt02 +audio_resource=LaserFireExt03 +audio_resource=LaserFireExt04 +audio_resource=LaserFireExt05 +audio_resource=LaserFireExt06 +audio_resource=LaserFireExt07 +audio_resource=LaserFireExt08 +audio_resource=LaserFireExt09 +audio_resource=LaserFireExt10 +name=LaserFireExtIndex + +[AudioResourceIndex] +audio_resource=LaserHitExt01 +audio_resource=LaserHitExt02 +audio_resource=LaserHitExt03 +audio_resource=LaserHitExt04 +name=LaserHitExtIndex + +[AudioResourceIndex] +audio_resource=LaserHitInt01 +audio_resource=LaserHitInt02 +audio_resource=LaserHitInt03 +name=LaserHitIntIndex + +[AudioResourceIndex] +audio_resource=LaserHitCraft01 +audio_resource=LaserHitCraft02 +audio_resource=LaserHitCraft03 +name=LaserHitCraftIndex + + + + + + + + + + + + + + diff --git a/tools/resbuild/recovered/VTVEXT.SCP b/tools/resbuild/recovered/VTVEXT.SCP new file mode 100644 index 0000000..7f7341a --- /dev/null +++ b/tools/resbuild/recovered/VTVEXT.SCP @@ -0,0 +1,534 @@ +# +#------------------------------------------------------------------ +# External VTV Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Engine combo component +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=EngineComboExt01 +priority=1 +mix_presence=2 +volume_mix_level=0.95 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=EngineComboComponent + +# +# Collision component +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=CollisionExt01 +priority=1 +mix_presence=2 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=1.0 +name=CollisionComponent + +# +# Booster component +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=BoosterExt01 +priority=1 +mix_presence=2 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=1.0 +name=BoosterComponent + +# +# Booster loop component +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=BoosterLoopExt01 +priority=1 +mix_presence=2 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=1.0 +name=BoosterLoopComponent + +# +# Death component1 +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=DeathExt01 +priority=1 +mix_presence=2 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=2.0 +name=DeathComponent1 + +# +# Death component2 +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=DeathExt01 +priority=1 +mix_presence=2 +volume_mix_level=1.0 +pitch_mix_offset=-200 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=2.0 +name=DeathComponent2 + +# +# Horn component +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=Horn01 +position=0 +priority=1 +mix_presence=0 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=HornComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +#------------------------------------------------------------------ + +# +# Engine combo : amplitude smoother -> amplitude +# + +[AudioControlSmoother] +audio_component=EngineComboComponent +number_of_samples=4 +control_ID=3 +name=EngineComboAmplitudeSmoother + +# +# Engine combo : amplitude mixer -> amplitude smoother +# + +[AudioControlMixer] +audio_component=EngineComboAmplitudeSmoother +first_input_control_ID=100 +last_input_control_ID=103 +output_control_ID=3 +name=EngineComboAmplitudeMixer + +# +# Engine combo : linear acceleration -> amplitude mixer +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalAcceleration +motion_type=0 +motion_value=3 +audio_component=EngineComboAmplitudeMixer +attribute_value_boundary1=0.0 +attribute_value_boundary2=7.0 +control_ID=3 +control_value_boundary1=0.0 +control_value_boundary2=1.0 +exponent=0.2 +dump_value=0 + +# +# Engine combo : linear velocity -> amplitude mixer +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=EngineComboAmplitudeMixer +attribute_value_boundary1=0.0 +attribute_value_boundary2=250.0 +control_ID=3 +control_value_boundary1=0.0 +control_value_boundary2=1.0 +exponent=0.2 +dump_value=0 + +# +# Engine combo : linear velocity -> pitch +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=EngineComboComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=250.0 +control_ID=4 +control_value_boundary1=-700.0 +control_value_boundary2=1200.0 +exponent=0.5 +dump_value=0 + +# +# Engine combo : linear velocity -> filter +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=EngineComboComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=250.0 +control_ID=5 +control_value_boundary1=1.0 +control_value_boundary2=0.78 +exponent=2.0 +dump_value=0 + +#------------------------------------------------------------------ + +# +# Collision : resource select +# + +[AudioResourceSelector] +audio_source=CollisionComponent +audio_resource_index=CollisionExtIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=0 +name=CollisionResourceSelect + +# +# Collision : collision speed -> resource select +# + +[AudioScalarScale] +subsystem=Entity +attribute=CollisionSpeed +motion_type=0 +motion_value=3 +audio_component=CollisionResourceSelect +attribute_value_boundary1=2.0 +attribute_value_boundary2=30.0 +control_ID=100 +control_value_boundary1=0.0 +control_value_boundary2=1.0 +exponent=0.3 +dump_value=0 + +# +# Collision : collision speed -> attack time +# + +[!AudioScalarScale] +subsystem=Entity +attribute=CollisionSpeed +audio_component=CollisionComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=30.0 +control_ID=7 +control_value_boundary1=0.18 +control_value_boundary2=0.0 +exponent=0.2 +dump_value=0 + +# +# Collision : collision speed -> attack volume +# + +[AudioScalarScale] +subsystem=Entity +attribute=CollisionSpeed +audio_component=CollisionComponent +attribute_value_boundary1=2.0 +attribute_value_boundary2=30.0 +control_ID=6 +control_value_boundary1=0.9 +control_value_boundary2=1.0 +exponent=0.5 +dump_value=0 + +# +# Collision : linear velocity -> pitch +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=CollisionComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=200.0 +control_ID=4 +control_value_boundary1=0.0 +control_value_boundary2=-400.0 +exponent=0.3 +dump_value=0 + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Engine combo trigger +#------------------------------------------------------------------ +# + +# HACK - seem to require this for when the replicant first appears + +[AudioControlSend] +audio_component=EngineComboComponent +control_ID=1 +control_value=0.0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=EngineComboComponent +trigger_state=0 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=EngineComboComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Collision trigger +#------------------------------------------------------------------ +# + +[AudioStateTrigger] +subsystem=Entity +attribute=CollisionState +audio_component=CollisionComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=1.5 +dump_value=0 + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# + +[AudioLogicalTrigger] +subsystem=Entity +attribute=BoosterOn +audio_component=BoosterComponent +attribute_match_value=1 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioLogicalTrigger] +subsystem=Entity +attribute=BoosterOn +audio_component=BoosterComponent +attribute_match_value=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioLogicalTrigger] +subsystem=Entity +attribute=BoosterOn +audio_component=BoosterLoopComponent +attribute_match_value=1 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioLogicalTrigger] +subsystem=Entity +attribute=BoosterOn +audio_component=BoosterLoopComponent +attribute_match_value=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Death trigger +#------------------------------------------------------------------ +# + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=DeathComponent1 +trigger_state=2 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=DeathComponent1 +trigger_state=2 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=DeathComponent2 +trigger_state=2 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=DeathComponent2 +trigger_state=2 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Horn trigger +#------------------------------------------------------------------ +# + +[AudioIntegerTrigger] +subsystem=Entity +attribute=HornBlast +audio_component=HornComponent +attribute_value_threshold=0.0 +control_ID_on=1 +control_ID_off=2 +control_value_on=0.0 +control_value_off=0.0 +inverse_trigger=0 +dump_value=0 + diff --git a/tools/resbuild/recovered/VTVINT.SCP b/tools/resbuild/recovered/VTVINT.SCP new file mode 100644 index 0000000..08d09c5 --- /dev/null +++ b/tools/resbuild/recovered/VTVINT.SCP @@ -0,0 +1,901 @@ +# +#------------------------------------------------------------------ +# VTV Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# + +[include] +file=audio\colint.scp +file=audio\buttons.scp +file=audio\scoring.scp + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Cockpit wind component +# + +[DirectPatchSource] +location=OriginLocation +resource=CockpitWindDrone01 +position=0 +priority=1 +mix_presence=0 +volume_mix_level=0.9 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=1 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=CockpitWindComponent + +# +# Cockpit turbulence component +# + +[DirectPatchSource] +location=OriginLocation +resource=CockpitWindRush01 +position=0 +priority=1 +mix_presence=3 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=1 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=CockpitTurbComponent + +# +# Engine thrust component +# + +[DirectPatchSource] +location=OriginLocation +resource=EngineThrustInt02 +position=1 +priority=1 +mix_presence=3 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=1 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=EngineThrustComponent + +# +# Scrape component +# + +[Static3DPatchSource] +location=OriginLocation +resource=ScrapeInt01 +priority=1 +mix_presence=0 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=ScrapeComponent + +# +# Booster component +# + +[DirectPatchSource] +location=OriginLocation +resource=BoosterInt01 +position=1 +priority=3 +mix_presence=2 +volume_mix_level=0.95 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=6.0 +name=BoosterComponent + +# +# Booster loop component +# + +[DirectPatchSource] +location=OriginLocation +resource=BoosterLoopInt01 +position=1 +priority=3 +mix_presence=2 +volume_mix_level=0.95 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=6.0 +name=BoosterLoopComponent + +# +# Death components +# + +[DirectPatchSource] +location=OriginLocation +resource=DeathInt01 +position=0 +priority=4 +mix_presence=1 +volume_mix_level=0.95 +pitch_mix_offset=0.0 +brightness_mix_level=0.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=DeathComponent01 + +[DirectPatchSource] +location=OriginLocation +resource=DeathInt02 +position=1 +priority=4 +mix_presence=1 +volume_mix_level=1.0 +pitch_mix_offset=-200 +brightness_mix_level=0.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=DeathComponent02 + +# +# Horn component +# + +[DirectPatchSource] +location=OriginLocation +resource=Horn01 +position=0 +priority=3 +mix_presence=0 +volume_mix_level=0.95 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=HornComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +#------------------------------------------------------------------ + +# +# Cockpit wind : linear velocity -> amplitude +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=CockpitWindComponent +attribute_value_boundary1=5.0 +attribute_value_boundary2=200.0 +control_ID=3 +control_value_boundary1=0.0 +control_value_boundary2=1.0 +exponent=0.3 +dump_value=0 + +# +# Cockpit wind : linear velocity -> pitch +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=CockpitWindComponent +attribute_value_boundary1=5.0 +attribute_value_boundary2=300.0 +control_ID=4 +control_value_boundary1=-1800.0 +control_value_boundary2=2800.0 +exponent=0.3 +dump_value=0 + +# +# Cockpit wind : linear velocity -> filter +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=CockpitWindComponent +attribute_value_boundary1=5.0 +attribute_value_boundary2=300.0 +control_ID=5 +control_value_boundary1=1.0 +control_value_boundary2=0.4 +exponent=2.0 +dump_value=0 + +#------------------------------------------------------------------ + +# +# Cockpit turb : linear velocity -> amplitude +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=CockpitTurbComponent +attribute_value_boundary1=70.0 +attribute_value_boundary2=200.0 +control_ID=3 +control_value_boundary1=0.0 +control_value_boundary2=1.0 +exponent=0.2 +dump_value=0 + +# +# Pitch Mixer : pitch mixer -> pitch +# + +[AudioControlMixer] +audio_component=CockpitTurbComponent +first_input_control_ID=100 +last_input_control_ID=102 +output_control_ID=4 +name=CockpitTurbPitchMixer + +# +# Cockpit turb : linear velocity -> pitch mixer +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=CockpitTurbPitchMixer +attribute_value_boundary1=70.0 +attribute_value_boundary2=250.0 +control_ID=100 +control_value_boundary1=-100.0 +control_value_boundary2=0.0 +exponent=1.0 +dump_value=0 + +# +# Cockpit turb : angular velocity -> pitch mixer +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=1 +motion_value=3 +audio_component=CockpitTurbPitchMixer +attribute_value_boundary1=0.0 +attribute_value_boundary2=0.3 +control_ID=101 +control_value_boundary1=-200.0 +control_value_boundary2=0.0 +exponent=1.0 +dump_value=0 + +# +# Cockpit turb : filter smoother -> filter +# + +[AudioControlSmoother] +audio_component=CockpitTurbComponent +number_of_samples=7 +control_ID=5 +name=CockpitTurbFilterSmoother + +# +# Cockpit turb : angular velocity -> filter smoother +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=1 +motion_value=3 +audio_component=CockpitTurbFilterSmoother +attribute_value_boundary1=0.0 +attribute_value_boundary2=0.3 +control_ID=5 +control_value_boundary1=0.1 +control_value_boundary2=0.8 +exponent=0.4 +dump_value=0 + +#------------------------------------------------------------------ + +# +# Engine thrust : amplitude smoother -> amplitude +# + +[AudioControlSmoother] +audio_component=EngineThrustComponent +number_of_samples=20 +control_ID=3 +name=EngineThrustVolumeSmoother + +# +# Engine thrust : amplitude mixer -> amplitude smoother +# + +[AudioControlMixer] +audio_component=EngineThrustVolumeSmoother +first_input_control_ID=100 +last_input_control_ID=103 +output_control_ID=3 +name=EngineThrustAmplitudeMixer + +# +# Engine thrust : linear acceleration -> amplitude mixer +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalAcceleration +motion_type=0 +motion_value=3 +audio_component=EngineThrustAmplitudeMixer +attribute_value_boundary1=0.1 +attribute_value_boundary2=7.0 +control_ID=100 +control_value_boundary1=0.0 +control_value_boundary2=1.0 +exponent=0.4 +dump_value=0 + +# +# Engine thrust : angular velocity -> amplitude mixer +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=1 +motion_value=3 +audio_component=EngineThrustAmplitudeMixer +attribute_value_boundary1=0.0 +attribute_value_boundary2=2.0 +control_ID=101 +control_value_boundary1=0.0 +control_value_boundary2=1.0 +exponent=1.0 +dump_value=0 + +# +# Engine thrust : linear velocity -> amplitude mixer +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=EngineThrustAmplitudeMixer +attribute_value_boundary1=10.0 +attribute_value_boundary2=250.0 +control_ID=102 +control_value_boundary1=0.0 +control_value_boundary2=-2.0 +exponent=1.5 +dump_value=0 + +# +# Engine thrust : height above terrain -> amplitude mixer +# + +[AudioScalarScale] +subsystem=Entity +attribute=HeightAboveTerrain +audio_component=EngineThrustAmplitudeMixer +attribute_value_boundary1=0.0 +attribute_value_boundary2=40.0 +control_ID=103 +control_value_boundary1=0.25 +control_value_boundary2=-0.75 +exponent=1.0 +dump_value=0 + +# +# Engine thrust : pitch smoother -> pitch +# + +[AudioControlSmoother] +audio_component=EngineThrustComponent +number_of_samples=30 +control_ID=4 +name=EngineThrustPitchSmoother + +# +# Engine thrust : pitch mixer -> pitch smoother +# + +[AudioControlMixer] +audio_component=EngineThrustPitchSmoother +first_input_control_ID=100 +last_input_control_ID=102 +output_control_ID=4 +name=EngineThrustPitchMixer + +# +# Engine thrust : linear acceleration -> pitch mixer +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalAcceleration +motion_type=0 +motion_value=3 +audio_component=EngineThrustPitchMixer +attribute_value_boundary1=0.1 +attribute_value_boundary2=7.0 +control_ID=100 +control_value_boundary1=-600.0 +control_value_boundary2=200.0 +exponent=1.0 +dump_value=0 + +# +# Engine thrust : angular velocity -> pitch mixer +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=1 +motion_value=3 +audio_component=EngineThrustPitchMixer +attribute_value_boundary1=0.0 +attribute_value_boundary2=2.0 +control_ID=101 +control_value_boundary1=0.0 +control_value_boundary2=200.0 +exponent=1.0 +dump_value=0 + +# +# Engine thrust : height above terrain -> pitch mixer +# + +[AudioScalarScale] +subsystem=Entity +attribute=HeightAboveTerrain +audio_component=EngineThrustPitchMixer +attribute_value_boundary1=0.0 +attribute_value_boundary2=40.0 +control_ID=102 +control_value_boundary1=-100.0 +control_value_boundary2=100.0 +exponent=1.0 +dump_value=0 + +# +# Engine thrust : filter multiplier -> filter +# + +[AudioControlMultiplier] +audio_component=EngineThrustComponent +first_input_control_ID=100 +last_input_control_ID=101 +output_control_ID=5 +name=EngineThrustFilterMultiplier + +# +# Engine thrust : hinge -> filter multiplier +# + +[AudioHingeScale] +subsystem=Entity +attribute=ThrusterPitch +audio_component=EngineThrustFilterMultiplier +attribute_value_boundary1=-1.321 +attribute_value_boundary2=1.321 +control_ID=100 +control_value_boundary1=1.0 +control_value_boundary2=0.7 +exponent=1.0 +dump_value=0 + +# +# Engine thrust : filter smoother -> filter multiplier +# + +[AudioControlSmoother] +audio_component=EngineThrustFilterMultiplier +number_of_samples=15 +control_ID=101 +name=EngineThrustFilterSmoother + +# +# Engine thrust : linear acceleration -> filter smoother +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalAcceleration +motion_type=0 +motion_value=3 +audio_component=EngineThrustFilterSmoother +attribute_value_boundary1=0.1 +attribute_value_boundary2=7.0 +control_ID=101 +control_value_boundary1=0.5 +control_value_boundary2=1.0 +exponent=0.3 +dump_value=0 + +#------------------------------------------------------------------ + +# +# Scrape : collision speed -> attack time +# + +[!AudioScalarScale] +subsystem=Entity +attribute=CollisionSpeed +audio_component=ScrapeComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=70.0 +control_ID=7 +control_value_boundary1=0.2 +control_value_boundary2=0.1 +exponent=1.0 +dump_value=0 + +# +# Scrape : linear velocity -> amplitude +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=ScrapeComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=100.0 +control_ID=3 +control_value_boundary1=0.8 +control_value_boundary2=1.0 +exponent=0.2 +dump_value=0 + +# +# Scrape : linear velocity -> pitch +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=ScrapeComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=200.0 +control_ID=4 +control_value_boundary1=-400.0 +control_value_boundary2=400.0 +exponent=0.5 +dump_value=0 + +#------------------------------------------------------------------ + +# +# Booster : resource select +# + +[AudioResourceSelector] +audio_source=BoosterComponent +audio_resource_index=BoosterIntIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=0 +name=BoosterResourceSelect + +# +# Booster : Linear velocity -> resource select +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=BoosterResourceSelect +attribute_value_boundary1=30.0 +attribute_value_boundary2=150.0 +control_ID=100 +control_value_boundary1=0.0 +control_value_boundary2=1.0 +exponent=1.0 +dump_value=0 + +# +# Boost Loop : filter smoother -> filter +# + +[AudioControlSmoother] +audio_component=BoosterLoopComponent +number_of_samples=7 +control_ID=5 +name=BoosterLoopFilterSmoother + +# +# Boost Loop : angular velocity -> filter smoother +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=1 +motion_value=3 +audio_component=BoosterLoopFilterSmoother +attribute_value_boundary1=0.0 +attribute_value_boundary2=0.3 +control_ID=5 +control_value_boundary1=0.1 +control_value_boundary2=0.8 +exponent=0.4 +dump_value=0 + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Wind trigger +#------------------------------------------------------------------ +# + +[AudioMotionTrigger] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=CockpitWindComponent +attribute_value_threshold=5.0 +control_ID_on=1 +control_ID_off=2 +control_value_on=0.0 +control_value_off=0.0 +inverse_trigger=0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Turbulence trigger +#------------------------------------------------------------------ +# + +[AudioMotionTrigger] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=CockpitTurbComponent +attribute_value_threshold=70.0 +control_ID_on=1 +control_ID_off=2 +control_value_on=0.0 +control_value_off=0.0 +inverse_trigger=0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Engine thrust trigger +#------------------------------------------------------------------ +# + +# HACK - seems to require this for when the entity first appears + +[AudioControlSend] +audio_component=EngineThrustComponent +control_ID=1 +control_value=0.0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=EngineThrustComponent +trigger_state=0 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=EngineThrustComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Scrape trigger +#------------------------------------------------------------------ +# + +[L4AudioCollisionTrigger] +subsystem=Entity +attribute=CollisionState +normal_attribute=CollisionNormal +audio_component=ScrapeComponent +trigger_state=2 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=CollisionState +audio_component=ScrapeComponent +trigger_state=2 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Death trigger +#------------------------------------------------------------------ +# + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=DeathComponent01 +trigger_state=2 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=DeathComponent02 +trigger_state=2 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=DeathComponent01 +trigger_state=2 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=DeathComponent02 +trigger_state=2 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Horn trigger +#------------------------------------------------------------------ +# + +[AudioIntegerTrigger] +subsystem=ControlsMapper +attribute=HornBlast +audio_component=HornComponent +attribute_value_threshold=0.0 +control_ID_on=1 +control_ID_off=2 +control_value_on=0.0 +control_value_off=0.0 +inverse_trigger=0 +dump_value=0 +