# Captura no OFICIAL as CURVAS DE PROGRESSAO: EXP, HP/MP por nivel, reputacao e Fleta.
#
# O que a gente tem hoje e quase tudo interpolacao: a EXP pra subir so foi medida ate o
# nivel 3, o ganho de HP por nivel foi medido numa Maga so (e a tabela usa esse numero
# pras SETE classes), e a penalidade por diferenca de nivel nao foi medida nunca.
#
# Cada monstro morto manda um 08 01 com EXP, HP/MP maximo, reputacao e FP. Subir de nivel
# revela o ganho daquela classe. Depois: tools/analisar_progressao.py em cima da captura.
$ErrorActionPreference = 'Stop'
$karos = 'C:\Games\Karos'

if (Get-Process AMo -ErrorAction SilentlyContinue) {
    Write-Host 'FECHE o jogo antes de rodar isto.' -ForegroundColor Yellow
    exit 1
}
Write-Host '[1/3] apontando o client pro servidor OFICIAL...'
Copy-Item "$karos\ServerList.ten" "$karos\ServerList.ten.emulador" -Force
Copy-Item "$karos\ServerList.ten.orig_backup" "$karos\ServerList.ten" -Force

Write-Host '[2/3] arquivando a captura anterior...'
if (Test-Path 'C:\RoshHook\traffic.log') {
    Move-Item 'C:\RoshHook\traffic.log' "C:\RoshHook\traffic_$(Get-Date -Format 'MMdd_HHmm').log" -Force
}

Write-Host '[3/3] ABRA O JOGO PELO LAUNCHER -- injeto sozinho.' -ForegroundColor Cyan
$limite = (Get-Date).AddMinutes(10)
$amo = $null
while ((Get-Date) -lt $limite) {
    $amo = Get-Process AMo -ErrorAction SilentlyContinue
    if ($amo) { break }
    Start-Sleep -Milliseconds 300
}
if (-not $amo) { Write-Host 'o jogo nao abriu em 10 min.'; exit 1 }
Start-Sleep -Milliseconds 1500
& 'D:\RoshEmulator\tools\hook\injector.exe' | Out-Null

$ate = (Get-Date).AddSeconds(180)
while ((Get-Date) -lt $ate) {
    if ((Test-Path 'C:\RoshHook\traffic.log') -and
        (Select-String -Path 'C:\RoshHook\traffic.log' -Pattern '\] RECV sock=' -CaseSensitive -Quiet)) {
        Write-Host ''
        Write-Host 'OK: RECV confirmado. No OFICIAL:' -ForegroundColor Green
        Write-Host ''
        Write-Host '  O QUE MAIS VALE, em ordem:' -ForegroundColor Yellow
        Write-Host '   1. SUBIR DE NIVEL com um personagem NOVO, ate onde aguentar.'
        Write-Host '      Cada subida revela o ganho de HP e MP daquela classe.'
        Write-Host '      Se der pra fazer com classes diferentes, melhor ainda.'
        Write-Host '   2. Matar mobs de ESPECIES e NIVEIS diferentes, nao so um tipo.'
        Write-Host '      E o que separa a EXP do mob da penalidade por nivel.'
        Write-Host '   3. Matar um mob MUITO abaixo do seu nivel, e um acima.'
        Write-Host '      E o unico jeito de medir a penalidade -- hoje ela e chute.'
        Write-Host '   4. Se souber como ganhar FLETA, faca uma vez com o hook ligado.'
        Write-Host ''
        Write-Host '  Nao precisa ser rapido. O que conta e a variedade.'
        Write-Host '  Depois: python tools/analisar_progressao.py' -ForegroundColor Cyan
        Write-Host ''
        Write-Host 'Depois: tools\restaurar_emulador.ps1' -ForegroundColor Cyan
        exit 0
    }
    Start-Sleep -Seconds 2
}
Write-Host 'ATENCAO: so SEND. Feche o jogo e rode de novo.' -ForegroundColor Yellow
exit 2
