v2026-06-05-3Features#298
Nuevo hechizo: Llamado a Dragón Blanco (Paladín)
- [#298] Paladines tienen un hechizo nuevo: "Llamado a Dragón Blanco". Cuesta 620 de maná (vs los 1100 de Llamado a Uhkrul del Mago) e invoca un Dragón Blanco de 250 HP.
- [#298] El Dragón Blanco es una mascota pesada: ocupa los 3 slots completos del cap de mascotas. Si lo invocás, no podés tener otras pets; si tenés pets activas, no podés invocarlo.
- [#298] El sistema interno de mascotas ahora soporta "peso" por criatura — futuros pets pueden ser medianos (peso 2) o pesados (peso 3) según diseño.
v2026-06-05-2Features#297
Bardos pueden tocar instrumentos para recuperar maná
- [#297] Los Laúd / Flauta / Tambor (y sus tiers Mágico y Élfico) ahora son funcionales. Solo Bardos pueden tocarlos haciendo doble-click sobre el item.
- [#297] Cada toque recupera maná según el tier: 5 (común) · 10 (mágico) · 15 (élfico). Cooldown de 5 segundos para que no se transforme en farmeo de maná infinito.
- [#297] El sonido del instrumento se escucha en el viewport — todos los chars cerca saben que un Bardo está tocando (útil para identificar Bardos invisibles tocando para recuperar maná).
- [#297] Antes los 9 instrumentos eran items inertes y los 6 mágicos/élficos estaban mal categorizados internamente como anillos. Bardo ahora es una clase con identidad propia.
v2026-06-04-3Quality of Life#293
Chat: ahora podés seleccionar texto y mandar links clickeables
- [#293] El chat console ahora permite seleccionar texto con el mouse — copy/paste de nombres, drops, errores y links funciona normal.
- [#293] URLs (http/https), www, invitaciones de Discord (discord.gg/...) y aoweb.net se renderean automáticamente como links clickeables.
- [#293] Click en un link abre en nueva pestaña sin afectar el juego (target=_blank, noopener).
- [#293] Funciona también dentro de whispers: `/w Asuka mira esto https://discord.gg/YsKZjtVuz8` ahora le manda un link real.
v2026-06-04-2Bug fixes#292
Fix crítico: los keybindings y macros se perdían al deslogear
- [#292] Bug fix crítico: si cambiabas teclas o macros y deslogeabas, al volver a entrar las tenías perdidas. Causa: el server pisaba en cada save los valores con los del login original.
- [#292] A partir de ahora los 4 tipos de keybindings (acciones, hechizos, items, macros) persisten correctamente entre sesiones y entre browsers — como debería desde el ticket #281.
- [#292] Si tenías teclas o macros configurados antes de este patch y las habías 'perdido', ahora podés volver a configurarlas y van a quedar guardadas.
v2026-06-04Bug fixes + GM tools#291
Barcas + comando /tp: atajos para GMs y fix de equipar barca en tierra
- [#290] Fix: ya no se puede equipar la Barca parado en tierra firme — ahora exige tile de agua adyacente (norte/sur/este/oeste), como en el AO clásico.
- [#291] Comando GM `/telepme` ahora también responde como `/tp` (alias corto).
- [#291] `/tp` acepta aliases de ciudad: `/tp ulla`, `/tp nix`, `/tp lindos`, `/tp kamal`, `/tp arkhein`, `/tp arghal`, `/tp bander`. Los mismos que ya soportaba `/creartp`.
- [#291] Si te teleportás a un tile de agua sin barca equipada, ahora se te equipa automáticamente — evita quedar clavado sin poder moverte.
v2026-06-04Quality of Life#283
Chat con tabs: General / Combate / Chat — leer mensajes sin combat log de fondo
- El chat console ahora tiene 3 tabs minimalistas: General (todo, default), Combate (daños y status), Chat (whispers, chat público, GM, mensajes del servidor).
- Tab Chat muestra una burbuja con notificación cuando llega un whisper (lila), un mensaje de GM (verde) o un broadcast del servidor (ámbar) — el color del badge es el del último mensaje recibido.
- Tab Combate no muestra burbuja — el flujo de daños es continuo y no necesita aviso.
- Chatbox crecida para mostrar ~5 mensajes sin cortes (antes ~3).
- Mensajes "Te has escondido", "Tienes la mana al máximo", "Has recuperado X", "Ves a [char]" y similares ahora aparecen en Combate (no en Chat).
- Nombre del char y los iconitos del HUD reorganizados — iconos arriba a la derecha, nombre alineado a la izquierda.
v2026-06-03Performance#282
Performance: server más liviano en zonas pobladas (~16× speedup en broadcasts)
- Optimización interna del server: los broadcasts de movimiento, animaciones y acciones a otros jugadores cercanos ahora son ~16× más eficientes.
- Resultado: el ping debería sentirse más estable cuando hay muchas criaturas o jugadores en la misma zona, y el server tiene mucho más margen para escalar a más usuarios concurrentes.
- Cero cambio visible al gameplay — solo más fluido bajo carga.
v2026-06-03Quality of Life#281
Keybindings (acciones, hechizos, items) ahora persisten por personaje y entre browsers
- Antes los keybindings vivían solo en localStorage — si cambiabas de browser o hacías clear storage, los perdías.
- Ahora cada personaje guarda sus teclas en el server. Login desde otro browser → mismos bindings. Hacer clear storage → siguen ahí al re-loguear.
- Aplica a las 4 fuentes: macros, acciones del modal de Configuración (W/A/S/D/atacar/etc), teclas asignadas a hechizos, y teclas asignadas a items del inventario.
v2026-06-02Quality of Life#278
Mapa más simple: ahora M abre directo el mapamundi (sin paso intermedio)
- Antes apretar M te mostraba primero el mapa de la zona donde estás, y recién al apretar M de nuevo (o right-click) ibas al mapamundi. Ahora M abre directo el mapamundi.
- Desde el mapamundi: click en cualquier celda para ver ese mapa en detalle. M (o right-click) para cerrar/volver.
- Se eliminó la feature de mostrar enemigos en el mapa (los puntitos naranjas sobre el mapa) — incluyendo el setting en Configuración para activarla.
v2026-06-02Quality of Life#273
Teclas y macros: ahora podés reasignar libremente
- Antes si querías ponerle una tecla a una acción/macro/hechizo/item, pero esa tecla ya estaba asignada a otro slot, el juego te rechazaba (te tiraba un alert o un error y te pedía que probaras otra).
- Ahora simplemente la última asignación gana: ponés la tecla en el nuevo slot y el slot anterior queda libre automáticamente. No más andar buscando dónde estaba.
- En el modal de macros además ves un hint del estilo "Al guardar, esta tecla se liberará de: Macro 3" antes de confirmar, así sabés exactamente qué se va a desbindear.
- Funciona en las 4 fuentes: acciones (atacar/equipar/agarrar/etc), macros (slots 1-9), hechizos (right-click → asignar tecla) e inventario (right-click → asignar tecla).
v2026-05-31Quality of Life#252
Equipar / desequipar items arriba del barco
- Ahora podés equipar y desequipar armaduras, armas, escudos, cascos y flechas mientras navegás. Antes había que desembarcar para cualquier cambio de loadout.
- El sprite visible del barco no cambia mientras estás navegando — los testigos siguen viendo la Barca / Galera / Galeón / Fragata Fantasmal igual.
- Lo que equipaste se aplica visualmente al desembarcar: bajás del barco y el char aparece con el nuevo equipo automáticamente.
- Restricciones de clase y raza siguen aplicando navegando igual que en tierra (no podés equipar un item que tu clase no puede).
v2026-05-31Quality of Life#244
Mapa 272 más tranquilo + cleanup interno de Ullathorpe
- El mapa 272 tenía un lobo solitario rondando. Reemplazado por un NPC estático (estilo Fethresor) y se sumó un Sacerdote más como referencia visual. Mapa ahora 100% tranquilo: 1 NPC estático + 3 Sacerdotes.
- Limpieza interna preventiva del mapa 1 (Ullathorpe): aunque la ciudad ya estaba libre de hostiles desde el patch anterior, restaban 15 celdas con referencias antiguas a Ratas y Orcos. Removidas para evitar que vuelvan si en algún momento se regenera el JSON de NPCs.
v2026-05-31Quality of Life#242
Cazadores empiezan con 1000 flechas (era 50)
- Las 50 flechas newbie del starter kit del Cazador se agotaban en pocos minutos de grind temprano. Aumentado a 1000 — alineado con la cantidad de pociones newbie del kit universal (200 c/u).
- Sigue siendo Flecha Newbie (no dropeable ni tradeable). Aplica a cazadores nuevos — los existentes conservan el stock que tengan en el inv.
v2026-05-30Quality of Life
Ciudades sin hostiles: Ullathorpe y Lindos limpias
- Ullathorpe ahora no tiene Ratas Salvajes ni Serpientes patrullando. Los chars nuevos pueden caminar por la capital sin que les coma una serpiente al toque.
- Lindos también quedó limpio de Cuervos Salvajes y Tortugas Gigantes.
- Los animales que se quedan (Vaca, Gallo, Cerdo, Conejo, Pato, Gran Águila) no atacan — solo retalían si vos les pegás. Sirven para grind de cazadores y dan ambiente.
- Arkhein, Fuerte Pretoriano y Aldea Pretoriana se mantienen con sus hostiles — son territorio del Caos y zonas fronterizas, no ciudades 'seguras'.
- Total: 20 hostiles agresivos removidos de las ciudades amistosas.
v2026-05-26Bugfix crítico
Bugfixes varios (Bardo Laúd, racial armor, centering)
- Bardo invisible al crear: workaround removiendo Laúd Mágico del kit (objType=18 mal categorizado en data — TODO docu).
- Armadura de Cuero Newbie ahora racial: enanos/gnomos reciben 1047 (sprite bajos) en vez de 1046 (sprite altos).
- Char centrado en viewport: cliente.viewportRadius 13→12 (canvas 21×21 → center pixel 336 alineado).
- TileBufferSize 3→5: fuente de Ullathorpe y otros sprites grandes ya no desaparecen al borde mid-animation.
- Crash 'vars.areaNpc[idNpc] is not iterable' en muereNpc: guard contra Set undefined.
- Pre-warm de páginas al boot: estilos cargan al primer click (era 'Ctrl+Shift+R' para forzar recompile).
- Mixed Content fix de ws-ticket en prod: API base ahora detecta localhost vs hosted (no más HTTPS→HTTP blocked).
v2026-05-25Bugfix crítico
Viewport refactor server↔cliente
- Bug: chars al borde del viewport se evaporaban mid-step (cliente y server no acordaban en el rango).
- 4 constantes linkeadas: canvasSize, viewportRadius (cliente), TileBufferSize, viewportRadius (server).
- ~80 magic numbers refactoreados en game.js, protocol.js, npcs.js, socket.js.
- Click formula corregida: userCanvasTile = viewportRadius - 1.5 (antes 10.5 hardcoded → off-by-1 al subir radius).
- Documentación entera en CLAUDE.md con receta para escalar el viewport visible.
v2026-05-23Bugfix crítico
Spell cast bug fix (idSpell canónico)
- Lanzar Celeridad y casteaba Torpeza — slot/idPos drifteaba entre cliente y server.
- Wire protocol migrado a mandar idSpell canónico (nunca cambia).
- Server valida que el char conozca el hechizo escaneando user.spells.
- Inmune a: reordenamiento UI, learn/unlearn mid-action, desync de slots.