Trabajá sobre este repositorio de Windows:
C:\Users\usuario\Grantfox\runa
origin: https://github.com/Bitcoindefi/runa.git
Antes de modificar nada, actualizá desde origin/main y revisá el estado real
del árbol. No uses /root/runa-bd: esa copia WSL quedó con objetos Git
corruptos después de llenar el disco y no contiene la versión canónica del
trabajo visual ya publicado en main.
Codex mantiene el arte ASCII, los mapas y la integración visual. Claude debe concentrarse en la infraestructura de red, las reglas verificables y los contratos. No redibujes la ciudad, el Coliseo, el jefe ni los actores sin una petición explícita del usuario.
No busques un lote libre ni incrustes otro edificio en MAPS.city. Los duelos
ocurren en el mapa separado MAPS.coliseum, definido en:
lib/coliseum.js: arte 128x52 y coordenadas estables.lib/map.js: registro del mapa y salidaQhacia la ciudad.docs/coliseum.md: contrato de integración.
La adaptación de duelos debe:
- Guardar el mapa y la posición previa de ambos participantes.
- Asignar de forma determinista los lados
westyeast. - Colocar cada jugador con las coordenadas de
MAPS.coliseum.duelSpawns, sin copiar números a otro módulo. - Mantener a los combatientes dentro de
arenaBoundsy bloquear la salidaQmientras el duelo esté activo. - Usar
refereeSpawnsi el protocolo necesita árbitro o autoridad visible. - Replicar al rival en el mapa
coliseummediante la capa de presencia, sin abrir el combate rígido contra monstruos ni crear una segunda arena visual. - Al terminar, desconectarse o rendirse, devolver a cada jugador a su ubicación previa y restaurar la última revisión del jefe mundial.
Los duelos, los encuentros PvE y el jefe mundial son sesiones distintas. No mezcles sus estados, daño, temporizadores ni condiciones de salida.
El diseño y la ejecución local ya están en lib/world-boss.js,
lib/world-boss-event.js, lib/field.js, lib/game.js y lib/render.js. El
contrato multijugador esperado está descrito en docs/world-boss.md mediante
{ spawnId, hp, phase, revision }.
Si recuperás el contrato Soroban de tu scratchpad, hacelo en una rama nueva
creada desde el origin/main de este repositorio. No reemplaces la simulación
JavaScript ni declares equivalencia de daño hasta agregar un test cruzado que
ejecute la misma semilla y los mismos ticks en JavaScript y Rust. No agregues
contracts/target, cachés, snapshots generados ni dependencias compiladas al
repositorio.
Antes de entregar cambios:
npm.cmd test
npm.cmd run lint
git diff --checkEl estado publicado por Codex parte de 103 pruebas y 745 aserciones verdes. Si una integración cambia ese número, documentá por qué y probá el recorrido completo: aceptar desafío, entrar al Coliseo, combatir, finalizar y regresar.
lib/duel.jsya contieneDuelyDuelCombat: lados deterministas, retorno, límites, vida, equipo, alcance, defensa, enfriamiento, rendición y resultado.Runa.startDuel()entra al mapa yRuna.duelInput()es el borde para inputs locales o remotos ordenados. No dupliques estas reglas ennet.js.- La interfaz dibuja ambos stickmans, vida, dirección, alcance y recarga;
Rrinde y la salidaQqueda bloqueada mientras la sesión vive. - El guardado conserva la ubicación anterior al duelo y el daño PvP no modifica la vida persistente de PvE.
lib/net.jsya transporta desafío/aceptación, inputs ordenados, resultado y desconexión. El peer con id menor es la autoridad de orden; no agregues un segundo reloj ni apliques predicción de daño del lado invitado.Vabre la interfaz de wallet.lib/wallet.jsguarda solo la dirección pública y acepta un firmante externo inyectado; nunca agregues una seed secreta al guardado. Detalles endocs/wallet.md.- Pendiente: desplegar/configurar el id de
contracts/duel-arena, construir el XDR de sus llamadas y conectar Wallets Kit/WalletConnect o SEP-7 para firmar. contracts/duel-arenaliquida commit-reveal y consenso; no ejecuta ni debe fingir que ejecuta cada cuadro del combate visual.