You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Épique : Suddenly abandonne le catalogue FoundryVTT comme source de systèmes de jeu au profit d'un méta-modèle narratif interne unique (traits nommés à valeur + listes d'actions en texte). Cible : les MJ jouant déjà avec des systèmes narratifs à traits (PbtA, FATE, Mist), transposables quasi complètement. Les systèmes carac + compétence + dé vs difficulté basculent sur sheet_url externe.
Frontière d'architecture non négociable : Suddenly n'évalue rien. Les traits et conditions d'action sont affichés, jamais résolus. La fonction jeu reste côté CN. Suddenly est une membrane de consultation/partage, pas une surface de jeu.
Introduire trois modèles éditoriaux attachés au Character existant, permettant à un MJ de transposer une fiche narrative (livret PbtA, aspects FATE, tags Mist) sans dépendre d'un catalogue de systèmes.
TraitSet — lot nommé de traits (label libre : « Traits », « Aspects », « Thèmes »).
Trait — trait unique : name libre, value IntegerField nullable, note optionnel.
Action — action référençant un ou plusieurs traits : condition et outcome en texte affiché, jamais parsés.
Contraintes structurelles (pas seulement intention)
condition / outcome sont des TextField. Aucune expression parsable nulle part : cette absence est la garantie qu'aucun évaluateur ne peut être branché sans réécrire le modèle. Ne pas ajouter de champ « formule », « expression » ou « règle exécutable ».
Modèle autonome : aucune couture avec CN. CN et Suddenly ne partagent aujourd'hui que la consommation de Muses via le Hub. Pas de projection de traits, pas de champ withhold à surveiller.
Definition of Done
Trois modèles ajoutés dans suddenly/characters/models.py, héritant de BaseModel.
Type : feature · App :
characters· Priorité : haute · Bloque : #114, #115, #117Description
Introduire trois modèles éditoriaux attachés au
Characterexistant, permettant à un MJ de transposer une fiche narrative (livret PbtA, aspects FATE, tags Mist) sans dépendre d'un catalogue de systèmes.TraitSet— lot nommé de traits (labellibre : « Traits », « Aspects », « Thèmes »).Trait— trait unique :namelibre,valueIntegerField nullable,noteoptionnel.Action— action référençant un ou plusieurs traits :conditionetoutcomeen texte affiché, jamais parsés.Contraintes structurelles (pas seulement intention)
valueest nullable (tags Mist sans valeur numérique) et non borné en base (le sélecteur −5/+5 vit dans l'UI, Meta #B — Formulaire de saisie traits/actions (UI + sélecteur −5/+5) #114). AucunMinValueValidator/MaxValueValidator.condition/outcomesont desTextField. Aucune expression parsable nulle part : cette absence est la garantie qu'aucun évaluateur ne peut être branché sans réécrire le modèle. Ne pas ajouter de champ « formule », « expression » ou « règle exécutable ».withholdà surveiller.Definition of Done
suddenly/characters/models.py, héritant deBaseModel.makemigrations charactersgénérée (non destructive : trois tables neuves, aucun modèle existant modifié).related_name:character.trait_sets,trait_set.traits,trait_set.actions,trait.actions.__str__:Traitaffichename (+3)si valeur,nameseul si null.character,trait_set).Code de référence