Objetivo
Implementar el sistema de combate con tipos de unidades, fórmula de daño, bonificaciones de terreno y flanqueo, y sistema de experiencia.
Alcance
- Tabla de tipos de unidad: guerrero, arquero, caballero, catapulta, colono, explorador
- Fórmula de daño:
dmg = (ataque / defensa) * 30 * terrain_mod * flank_mod
- Modificadores de terreno: +25% defensa en bosque/colinas, +50% en ciudad
- Flanqueo: −10% defensa por cada unidad enemiga adicional adyacente
- Sistema de experiencia: +10 XP por combate, promoción a 50/100/200 XP
- Tooltip de preview de combate antes de confirmar ataque
- Integración con EventBus: emitir
unit_attacked, unit_died
Skill de referencia
/godot-combat-system
Tareas
Aceptación
Un guerrero ataca a un arquero en bosque: el daño calculado incluye el modificador de terreno, la animación de ataque se reproduce y el XP se acredita al vencedor.
🎁 Evidencia visual = reward extra
- Si tu PR incluye video demo o capturas de pantalla mostrando la funcionalidad pedida funcionando end-to-end, va a ser considerado para rewards de GrantFox en esta issue. No es obligatorio, pero suma mucho para la evaluación.
Objetivo
Implementar el sistema de combate con tipos de unidades, fórmula de daño, bonificaciones de terreno y flanqueo, y sistema de experiencia.
Alcance
dmg = (ataque / defensa) * 30 * terrain_mod * flank_modunit_attacked,unit_diedSkill de referencia
/godot-combat-systemTareas
UnitData.gd(recurso):type,hp,max_hp,attack,defense,movement,xpCombatResolver.gd: función puraresolve(attacker, defender, terrain, flankers) -> CombatResultPromotionTree.gd: lista de promociones por tipo de unidad con efectosCombatPreviewTooltip.tscn: muestra daño estimado al hover sobre unidad enemiga en rangoCombatResultes serializable para incluir en la acción ZKAceptación
Un guerrero ataca a un arquero en bosque: el daño calculado incluye el modificador de terreno, la animación de ataque se reproduce y el XP se acredita al vencedor.
🎁 Evidencia visual = reward extra