909b8da77f
fix: multi-combat single transaction — élimine lock contention
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
2026-03-24 20:51:31 +01:00
efe4b4e372
feat: multi-combat ×5/×10 + cooldown anti-spam
...
CI/CD — Build & Deploy / Build & Deploy (push) Failing after 30s
- Backend: startMultiCombat boucle séquentielle, arrêt sur défaite
- Frontend: cooldown 1.5s entre combats, boutons ×1/×5/×10
- Frontend: résumé multi-combat (wins/losses, XP/Or/loot totaux)
- Fix: lock contention par spam de clics résolu
2026-03-24 20:21:44 +01:00
47c90e4d55
feat: craft/drops — 10 matériaux, 12 recettes, drop rate variable
...
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 32s
- 10 matériaux Égouts/Désert (Poil de Rat → Œil du Sphinx)
- 12 items craftables dont 1 legendary (Sceptre Prophétique)
- 12 recettes cross-zone avec ingrédients cohérents
- 15 monstres mappés à leur drop (tous les Égouts/Désert)
- Drop rate variable par difficulté relative (25-80%)
- Quantité drop variable (1-3 selon boss/difficulté)
2026-03-24 20:07:18 +01:00
287774ecd0
fix: kill_any quests respect zone — égouts ne complète plus les quêtes désert
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
2026-03-24 19:02:43 +01:00
8cb5fcd5ba
fix: endurance regen 6min→3min dans combat/forge/craft + potions d'énergie
...
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 32s
Bug: combat/forge/craft calculaient la regen à 1pt/6min (ancien) alors que
character.service utilisait 1pt/3min (nouveau). Le joueur voyait 8 endurance
dans le HUD mais le backend refusait le combat avec 4.
Potions d'énergie: Potion (30 endurance, 20 or) + Grande (60 endurance, 45 or).
Consommable instantané via la boutique — le joueur peut acheter du temps de jeu.
2026-03-24 17:51:30 +01:00
af247a1c6b
fix: quest progression (events after tx), abandon quest, endurance display
...
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 34s
- Events (achievement/community/quest) émis APRÈS la transaction combat
au lieu de dedans — corrige les quêtes qui ne progressaient pas
- POST /api/quests/abandon/:id — abandonner une quête active
- Frontend: bouton "Abandonner" sur les quêtes actives non complétées
- Fix endurance display (enduranceCurrent field mapping)
- Types Character mis à jour (xpToNextLevel, activeTitle, enduranceCurrent)
2026-03-24 16:52:48 +01:00
7651f3d8aa
feat(sprint5): quest system + arcs + rebalance endurance/damage/xp
...
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
Quest system:
4 entities (quest_arcs, quests, player_quests, player_quest_arcs)
Arc "Les Marais du Têtard" (4 quêtes narratives)
3 quêtes standalone répétables (chasse/forge/craft)
5 achievements liés (quests_completed + quest_arc_completed)
Event-driven: combat/forge/craft/loot émettent quest.progress
API: available, active, completed, accept, claim, arcs
Rebalance:
Endurance coût combat 10→5, regen 6min→3min (20/h), repos 20→10
Dégâts joueur +3 base (plus de combats de 13 tours au level 1)
Défaite endurance penalty 50→25
XP monstres réduite (25→8 Têtard, 130→50 Golem) — quêtes = source principale
2026-03-24 16:34:37 +01:00
214045c7ce
fix: level-up formula uses current level, add xpToNextLevel to API
...
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
XP threshold was computed on level+1 (target), making early levels too
steep (283 XP for level 2 instead of 100). Now uses current level:
level 1→2 = 100 XP, level 2→3 = 283 XP, level 10→11 = 3162 XP.
Added xpToNextLevel field to character and combat responses so the
frontend can display accurate progress bars.
2026-03-24 16:02:51 +01:00
6df11f2860
feat(sprint5): audit fixes — transactions, indexes, stat distribution, rest, forge cost
...
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 35s
P0 — Race conditions fixées avec pessimistic_write transactions :
combat (double-spend endurance), forge (double upgrade),
craft (consumeMaterials atomique), equip (item swap).
Forge : coût or (50-1000) + endurance (15) ajouté.
Combat : item stat bonuses (force/agilite/intelligence/chance) appliqués.
P1 — Features manquantes :
POST /api/characters/stats — distribution stat points (avec lock).
POST /api/characters/rest — repos auberge (+50% HP, -20 endurance).
Vitalité : +10 HP max par point distribué.
P2 — Indexes DB ajoutés :
character_id sur character_items, character_materials, combat_logs,
craft_jobs, player_achievements, community_contributions.
Composite (characterId, materialId) sur character_materials.
period sur hall_of_fame. achievement_id sur player_achievements.
P3 — Cleanup : @nestjs/jwt et pg retirés de package.json.
2026-03-24 15:55:50 +01:00
8ee50805ea
feat(sprint4): achievements, community goals, hall of fame, profile
...
CI/CD — Build & Deploy / Build & Deploy (push) Failing after 37s
4 modules: achievement (15 succès, 5 catégories, 3 paliers), community
(objectifs collectifs + boosts globaux), halloffame (classement mensuel),
profile (titre actif + badges + % progression).
Event-driven: combat/forge/craft émettent des events via @nestjs/event-emitter.
Character entity: +activeTitle, +totalGoldEarned.
Seeds: 15 achievements + 3 community goals.
2026-03-24 14:51:53 +01:00
23f7dd0f3c
feat(sprint3): items + forge + craft + loot — équipement, artisanat lazy-calc, forge risque GDD
2026-03-15 08:22:20 +01:00
6d1230d16a
feat: Sprint 2 — moteur de combat PvE TetaRdPG
...
Moteur combat stateless (POST /api/combat/start résout le combat complet).
Formules GDD : Mêlée/Distance/Magie × 1.5, critique (5% + Chance×0.2%), esquive (5% + Chance×0.1%).
5 monstres seedés (Têtard Vase → Golem de Boue, level 1–9).
Level up : XP → seuil atteint → level++, +5 statPoints.
Persiste combat_logs (jsonb rounds). Validé : victoire, défaite, 401, 400, 404.
2026-03-15 06:10:06 +01:00