- Skill bar: no art selection; slot 0 is the right-click art, keys 0-6 cast slots directly; cooldown labels in exact seconds; slot 0 set apart. - Arts regenerate on their own (casting no longer refills the group). - Auto-attack after targeting or casting at a hostile creature, at the speed of a held button. - Auras can be recast while active (renew, no second visual). - Blicke wie Klingen hits every enemy in range, physical, with life leech. - Blitzschlag steers the game's own chain: 3 + level/5 hits, 1 + level/10 chains, re-hits a lone enemy. - Weapon sets: click selects, drag only from the selected set; the leftmost set is clickable (signed hit tests). - Esc closes open windows before opening the game menu. - HUD: standalone buttons and texts are centred. - Record cache sized for widened views (town lag while walking). - Shared game code: orders, fx events, text drawing, cooldowns, effects. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
46 lines
1.9 KiB
PowerShell
46 lines
1.9 KiB
PowerShell
# Automated smoke test: start the game, load a save game (-Save: its row in
|
|
# the list, 1 = the first, selected by default), take
|
|
# screenshots in-game and with the ESC menu open, then stop the game.
|
|
#
|
|
# .\tools\autotest-load.ps1 -Name ws_on # current sacred_re.ini
|
|
# .\tools\autotest-load.ps1 -Name ws_off -Ini "[widescreen]`r`nEnabled=0"
|
|
#
|
|
# -Ini temporarily appends settings to build\x86-debug\sacred_re.ini.
|
|
# Click positions are for the classic (menu) layout scaled onto a 3440x1440
|
|
# monitor; adjust for other monitors. Don't touch mouse/keyboard while it runs.
|
|
param(
|
|
[string]$Name = "autotest",
|
|
[string]$Ini = "",
|
|
[int]$LoadSeconds = 30,
|
|
# Row of the save game in the load screen's list (1-3 visible rows).
|
|
[int]$Save = 1,
|
|
# Runs in-game after loading, before the screenshots (e.g. clicks).
|
|
[scriptblock]$InGame = $null
|
|
)
|
|
$ErrorActionPreference = "Stop"
|
|
. (Join-Path $PSScriptRoot "game-input.ps1")
|
|
|
|
$root = Split-Path $PSScriptRoot
|
|
$iniPath = Join-Path $root "build\x86-debug\sacred_re.ini"
|
|
$iniBackup = if (Test-Path $iniPath) { Get-Content $iniPath -Raw } else { "" }
|
|
if ($Ini) { Set-Content $iniPath ($iniBackup + "`r`n" + $Ini + "`r`n") -Encoding ASCII }
|
|
|
|
$game = $null
|
|
try {
|
|
$game = Start-Sacred
|
|
Click-At 1720 779 -AfterMs 4000 # main menu: "Spiel laden"
|
|
if ($Save -gt 1) {
|
|
Click-At 1342 (609 + ($Save - 1) * 254) -AfterMs 800 # load screen: the save's name (rows 254 px apart)
|
|
}
|
|
Click-At 2382 568 -AfterMs 2000 # load screen: "Laden"
|
|
Click-At 1551 826 -AfterMs ($LoadSeconds * 1000) # confirm: "Ok"
|
|
if ($InGame) { & $InGame }
|
|
Save-Screen "screenshots\${Name}_ingame.png" | Out-Null
|
|
Press-Key 0x1B -AfterMs 2500 # ESC menu
|
|
Save-Screen "screenshots\${Name}_esc.png" | Out-Null
|
|
"game alive at end: $(-not $game.HasExited)"
|
|
} finally {
|
|
Stop-Sacred $game
|
|
if ($Ini) { Set-Content $iniPath $iniBackup -Encoding ASCII -NoNewline }
|
|
}
|