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 = reward mayor
- Si tu PR incluye capturas de pantalla mostrando esto andando end to end, entra a reward de GrantFox en esta issue.
- Si además sumás un video demo corto, califica para reward mayor.
- No es obligatorio, pero pesa mucho en la evaluación.
Qué conviene mostrar en esta issue:
- Captura del CombatPreviewTooltip al hacer hover sobre un arquero enemigo en bosque, donde se lea el daño estimado ya con el modificador de terreno aplicado.
- Video corto del caso de aceptación completo: guerrero ataca al arquero en bosque, corre la animación de ataque y el HP del defensor baja según la fórmula.
- Captura o clip de una unidad cruzando un umbral de XP (50, 100 o 200) y recibiendo la promoción del PromotionTree correspondiente a su tipo.
Pegá las capturas directo en la descripción del PR, arrastrándolas al cuadro de texto de GitHub.
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 = reward mayor
Qué conviene mostrar en esta issue:
Pegá las capturas directo en la descripción del PR, arrastrándolas al cuadro de texto de GitHub.