feat: recrutement et retrait d'un compagnon (#51) #61
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: jeux/beaulieu-sur-brume#61
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/51-companion-recruitment"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #51.
Ajoute le flux de jeu minimal permettant à un personnage stable de rejoindre ou quitter le groupe sans perdre son état. Troisième pierre du jalon 0.16.0, à la suite de #49 (modèle) et #50 (sauvegarde). Le protagoniste est désormais le premier membre du groupe sur une nouvelle partie, et un compagnon de démonstration peut être recruté, sortir du groupe actif, puis le réintégrer — son état survit à tout, y compris au save/load. Cette base débloque l'exploration leader/suiveurs (#52) et les participants alliés en combat (#53).
Changements
CompanionFactory(scripts/companion_factory.gd) : construit le compagnon de démonstration Bran, Prêtre niveau 3, sur le même modèle queHeroFactory. Son identifiantcompanion_branvient du contenu, jamais du nom ni de la position — il reste stable à travers recrutement, départs et sauvegardes.GameState:recruit(member)inscrit au roster puis fait rejoindre le groupe actif s'il reste de la place (deux opérations vérifiées) ; idempotent : un id déjà au roster n'est jamais recruté deux fois ; refuse aussi un membre invalide ou uneCreaturedéjà inscrite ;recruit_demo_companion(): point d'entrée du compagnon de démo (interaction / point de test en monde) ;leave_active_group(id)/rejoin_active_group(id): sortir du groupe actif sans destruction (laCreatureet ses PV restent au roster) puis réintégrer ;MAX_ACTIVE_PARTY = 4+active_group_is_full(): règle de composition minimale et explicite.Critères d'acceptation
Tests
Suite GUT complète verte : 230 tests / 758 assertions (depuis 223 / 724).
tests/unit/test_party_recruitment.gd: protagoniste premier membre sur une nouvelle partie, recrutement unique (idempotent), refus des recrues invalides /Creaturedupliquée, quitter/réintégrer le groupe actif en conservant l'état, limite de compositionMAX_ACTIVE_PARTY, et round-trip sauvegarde complet d'un compagnon recruté hors groupe actif.Note de périmètre
Conformément au plan validé (garde-fous #51, centrés sur le modèle/flux) et au libellé du ticket (« interaction simple ou un point de test en monde »), #51 livre le flux de recrutement, le compagnon de contenu et son état persistant, exercés par un test de bout en bout. Le point de recrutement spatial (jeton/PNJ neutre au contact) est délivré avec #52, où les compagnons gagnent une présence et des positions en monde — éviter d'introduire ici du code de monde que #52 refondrait.