diff --git a/Gameleap/mw4/Content/ShellScripts/Multiplayer/ConLobbyMission.script b/Gameleap/mw4/Content/ShellScripts/Multiplayer/ConLobbyMission.script index 2a8cc897..17696d69 100644 --- a/Gameleap/mw4/Content/ShellScripts/Multiplayer/ConLobbyMission.script +++ b/Gameleap/mw4/Content/ShellScripts/Multiplayer/ConLobbyMission.script @@ -39,7 +39,7 @@ #define TIME_LIST_DEFAULT $$g_nTimeList_Index$$ // 5 // 7 minutes #define TIME_VALUE_DEFAULT $$g_nTimeList_Value$$ // 7 // 7 minutes #else // !DEMO_CODE -#define TIME_LIST_COUNT 9 // MSL +#define TIME_LIST_COUNT 18 // MSL // expanded 1-15, 20, 25, 30 min #define TIME_LIST_DEFAULT $$g_nTimeList_Index$$ // 3 // 7 minutes #define TIME_VALUE_DEFAULT $$g_nTimeList_Value$$ // 7 // 7 minutes #endif // DEMO_CODE @@ -283,13 +283,20 @@ main o_game_options[i].offsetLabel = drop_name_loc[i] o_game_options[i].arrowHeight = 15 - if i == 6 + if i == 5 { - o_game_options[i].max_displayed = 4 + o_game_options[i].max_displayed = 10 } else { - o_game_options[i].max_displayed = 16 + if i == 6 + { + o_game_options[i].max_displayed = 4 + } + else + { + o_game_options[i].max_displayed = 16 + } } } else @@ -460,13 +467,22 @@ main o_game_options[i].nselected = TIME_LIST_DEFAULT #else // !DEMO_CODE - o_game_options[i].list_item[2] = "5" - o_game_options[i].list_item[3] = "7" - o_game_options[i].list_item[4] = "9" - o_game_options[i].list_item[5] = "10" - o_game_options[i].list_item[6] = "12" - o_game_options[i].list_item[7] = "15" - o_game_options[i].list_item[8] = "30" + o_game_options[i].list_item[2] = "3" + o_game_options[i].list_item[3] = "4" + o_game_options[i].list_item[4] = "5" + o_game_options[i].list_item[5] = "6" + o_game_options[i].list_item[6] = "7" + o_game_options[i].list_item[7] = "8" + o_game_options[i].list_item[8] = "9" + o_game_options[i].list_item[9] = "10" + o_game_options[i].list_item[10] = "11" + o_game_options[i].list_item[11] = "12" + o_game_options[i].list_item[12] = "13" + o_game_options[i].list_item[13] = "14" + o_game_options[i].list_item[14] = "15" + o_game_options[i].list_item[15] = "20" + o_game_options[i].list_item[16] = "25" + o_game_options[i].list_item[17] = "30" if callback($$GetLocalNetworkMissionParamater$$, time_limit) == 0 o_game_options[i].nselected = TIME_LIST_DEFAULT diff --git a/build-env/build-resources.ps1 b/build-env/build-resources.ps1 index ceb04e36..cc76edb5 100644 --- a/build-env/build-resources.ps1 +++ b/build-env/build-resources.ps1 @@ -72,18 +72,38 @@ $startUtc = (Get-Date).ToUniversalTime() # - /gosnodialogs: makes graphics warnings auto-continue and turns a fatal content STOP into # a clean process EXIT (caught via exit code below) instead of an unattended modal hang. # (CheckOption strips the token, so it does NOT trip the LAB_ONLY "/gos" help-and-exit trap.) -Write-Host "[pack 2/3] running resource compiler fullscreen (this can take a while) ..." -ForegroundColor Yellow -# DDrawCompat (ddraw.dll) is dropped into this same data tree by deploy-editor.ps1 for the editor's -# windowed viewport, but it is FATAL to MW4pro.exe's fullscreen build init ([DDrawCompat] Fatal -# Error -> the builder hangs on a modal dialog). Move it aside so the builder uses native DirectDraw; -# the finally restores it for the editor regardless of how the build ends. -$ddraw = Join-Path $Runtime "ddraw.dll"; $ddrawBak = "$ddraw.buildaside"; $ddrawMoved = $false -$isDDrawCompat = (Test-Path $ddraw) -and -not (Test-Path (Join-Path $Runtime "dgVoodoo.conf")) -if ($isDDrawCompat) { Move-Item $ddraw $ddrawBak -Force; $ddrawMoved = $true; Write-Host " (moved DDrawCompat ddraw.dll aside for the build)" } -elseif (Test-Path $ddraw) { Write-Host " (dgVoodoo2 ddraw.dll detected - keeping in place for build)" } +Write-Host "[pack 2/3] running resource compiler (this can take a while) ..." -ForegroundColor Yellow +# DDrawCompat's ddraw.dll is fatal to MW4pro.exe in FULLSCREEN (it tries to set an +# exclusive display mode that DDrawCompat rejects with a Fatal Error dialog). In WINDOWED +# mode DDrawCompat works fine, and the builder only needs DDraw to init -- it never renders +# a frame with -norun. So: keep ddraw.dll in place and use -window. This also works on VMs +# with generic display adapters that have no hardware DirectDraw at all. +$ddrawPresent = Test-Path (Join-Path $Runtime "ddraw.dll") +if ($ddrawPresent) { + Write-Host " (ddraw.dll present -- running windowed so DDrawCompat/dgVoodoo2 init succeeds)" +} else { + Write-Host " (no ddraw.dll -- running fullscreen with native DirectDraw)" +} +# Native DirectDraw on Win10/11 cannot create a 16-bit fullscreen surface without the +# DWM8And16BitMitigation shim, which is unreliable on some machine configs. +# Temporarily force 32-bit colour in options.ini so native DDraw always succeeds; +# restored in the finally block regardless of how the build ends. +$optionsIni = Join-Path $Runtime "options.ini" +$bitdepthOrig = $null +if (-not $ddrawPresent -and (Test-Path $optionsIni)) { + $content = Get-Content $optionsIni -Raw + if ($content -match '(?m)^bitdepth=(\d+)') { + $bitdepthOrig = $Matches[1] + if ($bitdepthOrig -ne '32') { + ($content -replace '(?m)^bitdepth=\d+', 'bitdepth=32') | Set-Content $optionsIni -NoNewline + Write-Host " (temporarily set options.ini bitdepth=32 for build, was $bitdepthOrig)" + } else { $bitdepthOrig = $null } + } +} $code = $null try { - $argList = "/gosnodialogs -armorlevel 3 -build -norun -nosound -nocd -noeula" + $windowFlag = if ($ddrawPresent) { "-window" } else { "" } + $argList = "/gosnodialogs -armorlevel 3 -build -norun -nosound -nocd -noeula $windowFlag".Trim() $p = Start-Process -FilePath $builder -ArgumentList $argList -WorkingDirectory $Runtime -PassThru $timedOut = $false try { Wait-Process -Id $p.Id -Timeout $TimeoutSec -ErrorAction Stop } @@ -106,7 +126,11 @@ try { "$tail`n`nFix the asset and re-run, or run deploy-mw4.ps1 -SkipResourceBuild to ship existing packages.") } } finally { - if ($ddrawMoved -and (Test-Path $ddrawBak)) { Move-Item $ddrawBak $ddraw -Force; Write-Host " (restored DDrawCompat ddraw.dll)" } + if ($bitdepthOrig -and (Test-Path $optionsIni)) { + $content = Get-Content $optionsIni -Raw + ($content -replace '(?m)^bitdepth=\d+', "bitdepth=$bitdepthOrig") | Set-Content $optionsIni -NoNewline + Write-Host " (restored options.ini bitdepth=$bitdepthOrig)" + } } # 4) Report what changed.