esterot-otc-1.0
gerado em 2026-10-11 (Esterot 07, itens 013, 014 e 015) - o cliente do Esterot
base: OTClient Redemption release 4.1 (opentibiabr/otclient, tag 4.1 = dd5641492a71)
  exe: otclient_gl_x64.exe da release 4.1 sem alteracao (zip otclient-windows-solution-opengl SHA-256 7a6ae14c717e76b3ebcf51cdd29ac0a968cf7fcc9174c5275a96899bddaae69e)
  exe SHA-256: 0be63d4cbdc05097de1b9a2192c2a2e2746ad6d9a844ddb72f58322f3e4c8fdb
  Lua/dados: fork esterot-otc, branch esterot, commit 595117cc43f02c78326527d1d37bd5e5a988f079
servidor: https://esterot.com/login.php (protocolo 1511), unico
assets: entrega 2026-10-07-05-010 do Esterot 05 (C:\Pixels Esterot\assets-cliente), copiada sem edicao
  MANIFEST.sha256 da entrega: 1d899e772728536d65cf5333c6e7f6e7b6df558197e4119b80b5380d5f2ebf60 (6707 arquivos, 218678968 bytes)
  appearances.dat SHA-256: 8bfada5473970337e7448eaf6271ea285e98f8901c0c9a5001ebe7ee8151537e (4733429 bytes) = C:\canary\data\items (servidor)
  catalog-content.json SHA-256: d1a0acacf5203f0c5a5642e6df88549c25f42a4ca79a532c796551567b2e80d7
  data/things/1511 = assets/ + assets.json.sha256 da entrega; data/sounds/1511 = sounds/ (assets.json stock: fora)
novidades da 1.0 (sobre o beta1.3):
  - instalador (esterot-otc-setup.exe): instala para o seu usuario, sem administrador; o zip continua como plano B
  - o cliente se atualiza sozinho ao abrir (so o que mudou; o .exe nunca vem por atualizacao)
  - nome "Esterot OTC" (sem "beta"); titulo da janela com o bot ligado: "Esterot - <personagem>"
  - tela inicial sem links do GitHub, sem o painel Boosted e sem o topo de "players online"/Discord/YouTube;
    "Create New Account" abre a pagina de criar conta do site; Opcoes > Help abre o site e a Downloads
  - bot: a regra do servidor fica fixa na janela do bot e aparece numa janela na 1a vez que o bot liga em cada versao
  - configuracoes: a pasta %APPDATA%\Esterot OTC passa a funcionar de verdade (ate aqui o cliente instalado ou
    aberto do zip gravava na pasta padrao do OTClient, %APPDATA%\otcr\otclient\otclient); na 1a abertura o
    cliente copia de la o que voce ja tinha (a original nao e alterada)
  - bot: a janela do bot abre sempre numa config que funciona: config que nao carrega, ou que nao existe mais, volta
    para o vBot_4.8 (desligado, com o motivo na janela); config de cavebot (proibido no Esterot) vinda de outra
    instalacao sai da lista e vai para bot\_desativado (nada e apagado)
  - bot: magia recusada pelo servidor (ex.: "There are no ranged monsters.") entra em pausa de 3 a 30 s e volta
    sozinha, em vez de ser repetida a cada 100 ms
  - bot: sem a mensagem/Discord do autor na tela (credito no CREDITOS.txt), sem o Config Manager (site de terceiros);
    "Check Player" da lista de jogadores abre a pagina do personagem no site do Esterot
  - Market fecha sozinho quando o servidor sai dele (personagem mudou de posicao, ou opcode 0xF7)
  - Store / Market / lista de personagens: "Get coins" abre a pagina de coins do site
  - textos sem referencia a outros OTs (os icones de bebado, afogando e fome citavam outro servidor)
  - otclient.log: 1a linha com a versao e o SHA-256 do manifesto
  - logo do Esterot no icone da janela, no instalador, nos atalhos e no desinstalador
  - arquivo cifrado por outro OTClient (comeca com SET_YOUR_HEADER_HERE) nao e mais tratado como seu: do bot vai para
    bot\_desativado\<config>-cifrado-<data> e o do Esterot OTC entra no lugar; .json de settings e characterdata vai
    para _desativado e o cliente recria o padrao (acaba o "Error while reading containers settings file"); nada e
    apagado. config.otml e teclas (.otml) nunca sao mexidos
  - loot legivel no canal "vBot Loot" ("Loot of a rat: cheese, 4 gold coins" em vez de "{3607|cheese}")
  - login com codigo do autenticador: o codigo nao e reenviado no login seguinte; sessao recusada pelo servidor volta
    para a tela de login (em vez de repetir na lista de personagens)
mudancas sobre a 4.1 (so Lua e texto; nada de C++):
  - 9c1376ed6 esterot: init.lua com servidor unico https://esterot.com/login.php (1511), assets automaticos desligados, nome Esterot OTC (beta)
  - a39bed135 esterot: tela inicial sem o link do wiki do upstream, painel Boosted escondido, titulo Esterot OTC
  - 78e085c07 esterot: vBot 4.8 sem cavebot e sem BotServer
    - sai a config de cavebot separada do default_configs
    - sai do vBot_4.8: pasta cavebot/, vBot/cavebot.lua, cavebot_control_panel.lua,
    depositer_config.lua/.otui, depot_withdraw.lua, BotServer.lua/.otui e, por so
    funcionarem com o cavebot ligado, supplies.lua/.otui e exeta.lua
    - entra vBot/esterot_sem_cavebot.lua: stub do CaveBot (isOff() sempre verdadeiro,
    delay vazio, walkTo de um passo para o CaveBot.GoTo) e carga do TargetBot na aba Target
    - _Loader.lua: lista de scripts sem os arquivos acima
    - functions/server.lua: BotServer.url vazio e init() desligado (nenhuma conexao ao servidor externo do vBot)
    - main.lua: sai o botao do Discord do OTCv8 (credito ao Vithrax mantido)
    - xeno_menu.lua: sai a opcao CaveBot do menu do botao direito
    - edit.otui: botao Discord escondido
  - d2abbdb58 esterot: vBot/esterot_sem_cavebot.lua no git (o mods/.gitignore do upstream o deixou fora do beta1)
  - b8eec4f7b esterot: tela inicial - % da dica escrito como %% (tr() = string.format); client_bottommenu volta a carregar
  - b3ad04bcf esterot: bot completa a config do jogador com arquivos que faltam e arquivo ausente vira erro Lua (sem crash do PR #1758)
  - b9c4f0742 esterot: init.lua guarda o log anterior (otclient-anterior.log) e usa _userdata ao lado do exe quando ela existe
  - 8552d1f47 esterot: AttackBot do vBot - Small Wave volta a disparar (pattern >= 9) e spenders do Monk so com harmony 5
    - Small Wave: bug do upstream (opentibiabr/otclient, tag 4.1 e main, conferido em 06/10/2026):
    a ancora dos padroes Absolute era "pattern > 9" e deixava a Small Wave (9) com pos() em vez de
    player; getSpectatorsByPattern recebe direcao 8 e a contagem da 0, entao a entrada nunca dispara
    (exevo gran frigo hur e qualquer magia cadastrada como Small Wave). Corrigido para "pattern >= 9".
    - Monk: exori infir nia, exori nia, exori gran nia, exori mas nia e exori gran mas nia so saem com
    player:getHarmony() >= 5 (ignorado se o cliente nao expoe getHarmony).
    AttackBot.lua = a3c68fbc (itens 004 e 005 do Esterot 07).
  - 4dcf4353b esterot: presets do vBot das 5 vocacoes (Profile 1 Druid, 2 Sorcerer, 3 Paladin, 4 Knight, 5 Monk) e 2 configs do TargetBot
    - default_configs/vBot_4.8/vBot_configs/profile_1..5: HealBot.json (HealBot + Conditions) e AttackBot.json
    (5 perfis por elemento) de cada vocacao; targetbot_configs: "Esterot - todos (corpo a corpo)" e
    "Esterot - todos (distancia)" (git add -f: o mods/.gitignore do upstream e "*").
    - esterot/presets/gerar_presets.py + spells-servidor.txt geram tudo (fora do zip). Saida identica ao
    item 005 do Esterot 07 (profile_4 com o perfil 5 "Time (bloqueio) - exeta res").
    - Sao config do jogador: o bot.lua so os instala em profile ausente ou vazio (commit seguinte).
  - 8427880ad esterot: regra "arquivo do pacote x arquivo do jogador" na _userdata do bot (scripts do vBot atualizados por hash)
    - bot.lua (createDefaultConfigs numa _userdata que ja existe):
    * codigo do vBot (*.lua, *.otui fora das pastas de config) com hash de uma versao que distribuimos e
    diferente da atual -> substituido, backup <arquivo>.bak-<versao> e "[esterot] atualizado: <caminho>"
    no otclient.log; hash desconhecido (editado pelo jogador) -> nao sobrescreve, grava <arquivo>.esterot-novo
    e avisa no log; arquivo que falta -> copiado;
    * config do jogador nunca e tocada: preset de vBot_configs/profile_N so em pasta ausente ou vazia (o vBot
    cria profile_1..10 vazios), targetbot_configs/cavebot_configs so arquivo que falta, storage nada.
    * hash pelo g_resources.fileSha256 da 4.1 (g_crypt.sha256 como reserva); sem hash ou sem a lista, so completa.
    - mods/game_bot/esterot_hashes.lua: lista acumulada (AttackBot.lua: 1e33707c beta1/beta1.1/upstream 4.1,
    16ad5c8d hotfix 004, a3c68fbc beta1.2 = atual), gerada por build_pacote_otc.py <versao> --hashes; o build
    recusa o pacote se ela nao bater com os scripts do commit e confere os presets .json.
    - esterot/teste-userdata: harness.lua roda o createDefaultConfigs() real com texlua; rodar_cenarios.py
    monta e confere os cenarios do item 006 (todos passam).
  - a4db73503 esterot: Opcoes > Profile mostra "1 - Druid" ... "5 - Monk" e acompanha o profile do personagem
    - ComboBox do Profile (modules/client_options): opcoes 1-5 com o nome da vocacao dos presets do
    vBot (vBot_configs/profile_N); 6-10 so o numero; o data continua o numero (g_settings e pastas iguais)
    - bug do upstream (opentibiabr/otclient, tag 4.1): o mods/client_profiles troca o profile no login com
    setOption('profile', "N") (string), mas o setOption da 4.1 nao atualiza ComboBox, entao a caixa
    mostrava o ultimo escolhido ou "1". No main (conferido em 07/10/2026) o setOption ganhou um
    setCurrentOptionByData generico, mas compara o data numerico da opcao com o "N" string e continua
    sem acompanhar. Aqui: sincroniza na abertura e em todo setOption('profile') com tonumber(value)
    - arquivo = Retorno 07\005-presets-vbot\modules\client_options\options.lua (SHA-256 25bd6816...),
    decisao 6c do Esterot 00 (item 007)
  - 4e4d5eefc esterot: configuracoes em %APPDATA%\Esterot OTC para todas as versoes, migracao da _userdata anterior e PORTABLE.txt (item 009)
    esterot_dados.lua (chamado pelo init.lua antes do loadSettings): pasta fixa a partir do getUserDir (UTF-8,
    nao os.getenv); PORTABLE.txt ao lado do exe = _userdata desta pasta (copias de teste, nunca migra); falha =
    padrao do upstream + ERROR. Migracao na 1a abertura: _userdata ao lado com dados > versoes anteriores no
    pai/avo (sem PORTABLE.txt, config.otml mais recente) > vazia; origem so lida; ESTEROT-DADOS.txt por ultimo.
    Caminhos sem barra final: o PhysFS ignora mount repetido e o unmount seguinte tiraria o workDir.
    Teste fora do cliente: esterot/teste-dados/rodar_cenarios_dados.py (9 cenarios).
  - 08f8fc1cd esterot: Opcoes > Misc. > "Open settings folder" abre a pasta de configuracoes (item 009)
  - ee478a4e3 esterot: textos sem a convivencia com o cliente oficial; ESTEROT-OTC.cmd so abre o exe; LEIA-ME com "Vinha do cliente oficial?" e "SUAS CONFIGURACOES" (item 009)
    Tela inicial sem "alternative" nem "official 15.11 client"; CREDITOS com assets do Esterot 05; README.
  - e40b97751 esterot: build do beta1.3 (item 009) - mesmo .dat do beta1.2, zip sem _userdata, esterot_dados.lua no pacote, novidades sobre o beta1.1
  - 205e52baa esterot: build pela entrega de assets do Esterot 05 (item 010)
    - build_pacote_otc.py le C:\Pixels Esterot\assets-cliente\atual.txt (ou --entrega), confere o MANIFEST.sha256
    inteiro, o ENTREGA.txt e o appearances.dat contra C:\canary\data\items antes de montar; recusa (codigo 1,
    nada montado) se faltar/sobrar arquivo, hash divergir ou .dat != servidor; copia sem editar
    - saem V5, DAT_SHA, CAT_SHA, DAT_NOVO, DAT_FONTES; entrega e sha256 do MANIFEST no ESTEROT-VERSAO.txt
    - opcoes --conferir, --assets-cliente, --saida; init.lua: comentario 'entrega de assets do Esterot 05'
  - 580af867d esterot: atualizador esterot_update + publicacao por manifesto + handshake opcode 50 (item 011)
    - modules/esterot_update: canal teste/latest (ESTEROT-CANAL-TESTE.txt), timeout 5 s sem janela, .exe/.dll/.cmd
    nunca por atualizacao (janela 'needs the full package' / min_full), staging em _update/ com SHA-256 por arquivo,
    troca com ESTEROT-MANIFEST.sha256 por ultimo, troca pendente completada sem rede, remocao so do manifesto
    anterior, regras duras de caminho, restart quando muda codigo, trava de pasta; handshake opcode 50 ao entrar
    - init.lua chama o esterot_update no lugar do updater do upstream (erro = segue sem atualizar)
    - build_pacote_otc.py: versao.lua gerado (BASE_URL num lugar so), --publicar/--promover/--rollback/--canais/--delta
    - harness esterot/teste-atualizador (bloco real do init.lua + modulo real, site simulado)
  - 62282351e esterot: esterot_hashes.lua regerado como 0.11.1 (versao A de teste do atualizador, item 011)
  - 7cca83943 esterot: esterot_hashes.lua regerado como 0.11.2 (versao B de teste do atualizador, item 011)
  - f6b4644f5 esterot: atualizador mostra KB em atualizacao pequena; historico.txt com o total de files/ (item 011)
  - 31a425522 esterot: sem referencias a outros OTs nos textos e comentarios herdados - icones de estado, wheel, prey, vBot, house (item 013)
  - 4dc97c776 esterot: conteudo da 1.0 - nome sem beta, tela inicial, create account e coins no site, regras e protecao contra recusa de magia no bot, Market fecha sozinho, 1a linha do log (item 013)
  - d667c26ae esterot: build com trava de termos proibidos, BASE_URL do R2 (--base-local para teste), LEIA-ME/CREDITOS do instalador, hashes 0.13.1 (item 013)
  - a3568fc5e esterot: bot abre sempre numa config que carrega (vBot_4.8 se a escolhida falha ou nao existe; config de cavebot vai para bot/_desativado) e todo Get coins na pagina de coins do site (item 014)
  - 04e2a2ec6 esterot: esterot_hashes.lua regerado como 0.14.1 (versao de teste do item 014)
  - 59cd6783e esterot: pasta de configuracoes funciona no cliente de verdade (sem g_app.getOrganizationName, que o OTCR 4.1 nao tem) e migra da pasta padrao do OTClient; build confere as funcoes do cliente chamadas pelo codigo do Esterot (item 014)
  - 0feeee73c esterot: esterot_hashes.lua regerado como 0.14.2 e novidades da versao de teste do item 014
  - 5398f4d14 [07-015] logo do Esterot: icone da janela (clienticon 32 px do 05) e esterot.ico no instalador, desinstalador e atalhos
  - eeab1310f [07-015] arquivo cifrado por outro OTClient nao e do jogador: json de settings/characterdata e arquivos do bot vao para _desativado (nunca .otml); .lua do pacote que nao compila e trocado; cenarios P-R
  - 418954d1b [07-015] fix(loot): loot do protocolo novo legivel no canal vBot Loot e sem chaves cruas no console (B-004)
  - d775fae07 [07-015] login com codigo: o codigo nao e reenviado no login seguinte; sessao recusada pelo servidor volta para a tela de login
  - 595117cc4 [07-015] esterot_hashes.lua regerado como 1.0
configuracoes do jogador: %APPDATA%\Esterot OTC (esterot_dados.lua), iguais para todas as versoes;
  copia da _userdata de uma versao anterior ao lado na 1a abertura (ESTEROT-DADOS.txt = origem);
  PORTABLE.txt ao lado do exe = _userdata desta pasta (copias de teste); o zip nao traz _userdata
fora do pacote: logs, config.otml, minimap, nExBot, cavebot
perfis do bot: so os presets das 5 vocacoes (mods/game_bot/default_configs/vBot_4.8/vBot_configs), copiados
  para a pasta de configuracoes apenas em profile que nao existe ou esta vazio; scripts do vBot atualizados pela lista
  mods/game_bot/esterot_hashes.lua (copia editada pelo jogador nao e tocada)
