diff --git a/.gitignore b/.gitignore
index a1790bf..89a3f10 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,9 +45,9 @@ Plugins/McpAutomationBridge/
# des mods (comme Content/Heavy : livres par l'archive des sources).
/Releases/
/Mods/
-/ModSources/*/Saved/
-/ModSources/*/Intermediate/
-/ModSources/*/Content/
+# Lot DC3 : sources de mods et atelier de mods dans le depot addon LifePlay-Sandbox
+/ModSources/
+/AnimSources/
# Journaux et dumps de debug des lots (restent en local ; .md et .csv restent suivis)
/Docs/Migration/etat/**/*.txt
diff --git a/AnimSources/freeanims/pack.json b/AnimSources/freeanims/pack.json
deleted file mode 100644
index f861701..0000000
--- a/AnimSources/freeanims/pack.json
+++ /dev/null
@@ -1,187 +0,0 @@
-{
- "pack": "freeanims",
- "prefixe": "fap",
- "source": "Free Animations Pack (SoerGame, Fab ; mannequin UE5)",
- "auteur": "SoerGame",
- "licence": "CC BY 4.0",
- "url": "https://www.fab.com/listings/9e93d929-36e8-45f9-b925-325db1b9385d",
- "url_auteur": "https://www.fab.com/sellers/SoerGame",
- "fichiers": [
- "Content/FreeAnimationsPack (assets Unreal)"
- ],
- "credit": "Animations : Free Animations Pack par SoerGame (Fab), licence Creative Commons Attribution (CC BY 4.0), converties pour LifePlay",
- "exclus": [],
- "chaine": {
- "methode": "auto",
- "profil_attendu": "ue5_mannequin",
- "source": {
- "type": "uasset",
- "clips": "/Game/FreeAnimationsPack/Animations",
- "maillage": "/Game/FreeAnimationsPack/Demo/Characters/Mannequins/Meshes/SKM_Manny.SKM_Manny",
- "clip_reference": "AS_Rest"
- },
- "sortie": {
- "clips": "/Game/AnimPacks/FreeAnimationsPack",
- "rigs": "/Game/Retarget_ue5"
- },
- "corps": [
- {
- "nom": "Bridget",
- "maillage": "/Game/Heavy/Daz/Bridget/bridget_gp.bridget_gp",
- "prefixe": "B_",
- "gabarit": "/Game/Heavy/Daz/Anims/Idle_F_Daz"
- },
- {
- "nom": "Michael",
- "maillage": "/Game/Heavy/Daz/Michael/michael.michael",
- "prefixe": "M_",
- "gabarit": "/Game/Heavy/Daz/Anims/idle_Daz"
- }
- ],
- "mod": "lpr_anim_freeanims",
- "travail": "Saved/AnimPipeline/freeanims",
- "sandbox": "AnimPipeline/freeanims/sandbox"
- },
- "animations": {
- "fap_as_airkiss": {
- "clip": "AS_AirKiss",
- "nom": {
- "fr": "Baiser envoyé",
- "en": "Blow a kiss"
- },
- "categorie": "interaction",
- "accessoire": "",
- "style": "détendu",
- "usage": {
- "fr": "Geste ponctuel (probablement joué une fois) d'envoi de baiser, joué sur place ; utile pour une scène de flirt ou d'adieu.",
- "en": "One-shot gesture (probably played once) of blowing a kiss, played in place; useful for a flirting or farewell scene."
- }
- },
- "fap_as_attackinlevitation2": {
- "clip": "AS_AttackInLevitation2",
- "nom": {
- "fr": "Attaque en lévitation",
- "en": "Levitation attack"
- },
- "categorie": "magie",
- "accessoire": "",
- "style": "agressif",
- "usage": {
- "fr": "Attaque lancée en lévitation, probablement jouée une fois, sur place ; pour un sort ou une attaque surnaturelle.",
- "en": "Attack performed while levitating, probably played once, in place; for a spell or supernatural attack."
- }
- },
- "fap_as_chilldriving": {
- "clip": "AS_ChillDriving",
- "nom": {
- "fr": "Conduite détendue",
- "en": "Relaxed driving"
- },
- "categorie": "conduite",
- "accessoire": "volant",
- "style": "détendu",
- "usage": {
- "fr": "Pose de conduite détendue, probablement en boucle, jouée sur place ; à utiliser avec un véhicule ou un volant.",
- "en": "Relaxed driving pose, probably looping, played in place; to use with a vehicle or steering wheel."
- }
- },
- "fap_as_combohands": {
- "clip": "AS_ComboHands",
- "nom": {
- "fr": "Enchaînement de poings",
- "en": "Punch combo"
- },
- "categorie": "combat",
- "accessoire": "",
- "style": "agressif",
- "usage": {
- "fr": "Enchaînement de coups de poing, probablement joué une fois, sur place ; pour une bagarre ou un entraînement.",
- "en": "Sequence of punches, probably played once, in place; for a fight or training scene."
- }
- },
- "fap_as_eatingonparty": {
- "clip": "AS_EatingOnParty",
- "nom": {
- "fr": "Manger en soirée",
- "en": "Eating at party"
- },
- "categorie": "interaction",
- "accessoire": "",
- "style": "détendu",
- "usage": {
- "fr": "Personnage mangeant debout lors d'une soirée, probablement en boucle, joué sur place ; pour un buffet ou une fête.",
- "en": "Character eating while standing at a party, probably looping, played in place; for a buffet or party scene."
- }
- },
- "fap_as_flyingup": {
- "clip": "AS_FlyingUp",
- "nom": {
- "fr": "Envol",
- "en": "Take off"
- },
- "categorie": "magie",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Décollage vers le haut, probablement joué une fois, sur place ; pour un envol ou une lévitation.",
- "en": "Upward take-off, probably played once, in place; for flying off or levitating."
- }
- },
- "fap_as_goforward": {
- "clip": "AS_GoForward",
- "nom": {
- "fr": "Marche avant",
- "en": "Walk forward"
- },
- "categorie": "locomotion",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Cycle de marche vers l'avant, probablement en boucle, joué sur place ; à combiner avec un déplacement du personnage.",
- "en": "Forward walk cycle, probably looping, played in place; combine with a character movement."
- }
- },
- "fap_as_rest": {
- "clip": "AS_Rest",
- "nom": {
- "fr": "Repos",
- "en": "Rest"
- },
- "categorie": "attente",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Posture de repos debout, probablement en boucle, jouée sur place ; pose d'attente par défaut.",
- "en": "Standing rest posture, probably looping, played in place; default waiting pose."
- }
- },
- "fap_as_rightlegkick2": {
- "clip": "AS_RightLegKick2",
- "nom": {
- "fr": "Coup de pied droit",
- "en": "Right leg kick"
- },
- "categorie": "combat",
- "accessoire": "",
- "style": "agressif",
- "usage": {
- "fr": "Coup de pied de la jambe droite, probablement joué une fois, sur place ; pour un combat ou un entraînement.",
- "en": "Right leg kick, probably played once, in place; for a fight or training scene."
- }
- },
- "fap_as_talk": {
- "clip": "AS_Talk",
- "nom": {
- "fr": "Parler",
- "en": "Talk"
- },
- "categorie": "conversation",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Personnage qui parle debout, probablement en boucle, joué sur place ; pour un dialogue ou une conversation.",
- "en": "Character talking while standing, probably looping, played in place; for a dialogue or conversation."
- }
- }
- }
-}
diff --git a/AnimSources/quaternius/pack.json b/AnimSources/quaternius/pack.json
deleted file mode 100644
index de652ff..0000000
--- a/AnimSources/quaternius/pack.json
+++ /dev/null
@@ -1,640 +0,0 @@
-{
- "pack": "quaternius",
- "prefixe": "qua",
- "source": "Quaternius Universal Animation Library (Standard)",
- "auteur": "Quaternius",
- "licence": "CC0 1.0",
- "url": "https://quaternius.com",
- "fichiers": [
- "D:/Game/Universal Animation Library[Standard]/Unreal-Godot/UAL1_Standard.glb"
- ],
- "credit": "Animations : Universal Animation Library (Standard) par Quaternius, licence CC0 1.0, https://quaternius.com",
- "exclus": [
- "A_TPose"
- ],
- "chaine": {
- "methode": "auto",
- "profil_attendu": "ue4_mannequin",
- "source": {
- "type": "glb",
- "fichier": "D:/Game/Universal Animation Library[Standard]/Unreal-Godot/UAL1_Standard.glb",
- "import": "Tools/ImportQuaternius.py",
- "clips": "/Game/Quaternius/UAL",
- "maillage": "/Game/Quaternius/UAL/UAL1_Standard.UAL1_Standard",
- "clip_reference": "A_TPose"
- },
- "sortie": {
- "clips": "/Game/Quaternius/UAL",
- "rigs": "/Game/Quaternius/Retarget"
- },
- "corps": [
- {
- "nom": "Bridget",
- "maillage": "/Game/Heavy/Daz/Bridget/bridget_gp.bridget_gp",
- "prefixe": "B_",
- "gabarit": "/Game/Heavy/Daz/Anims/Idle_F_Daz"
- },
- {
- "nom": "Michael",
- "maillage": "/Game/Heavy/Daz/Michael/michael.michael",
- "prefixe": "M_",
- "gabarit": "/Game/Heavy/Daz/Anims/idle_Daz"
- }
- ],
- "mod": "lpr_anim_quaternius",
- "travail": "Saved/AnimPipeline/quaternius",
- "sandbox": "Measurement"
- },
- "animations": {
- "qua_crouch_fwd_loop": {
- "clip": "Crouch_Fwd_Loop",
- "nom": {
- "fr": "Marche accroupie",
- "en": "Crouch walk"
- },
- "categorie": "locomotion",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Boucle de marche accroupie sur place ; à combiner avec un déplacement pour une scène furtive.",
- "en": "Looping crouched walk in place; combine with a character movement for a sneaking scene."
- }
- },
- "qua_crouch_idle_loop": {
- "clip": "Crouch_Idle_Loop",
- "nom": {
- "fr": "Attente accroupie",
- "en": "Crouch idle"
- },
- "categorie": "attente",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Boucle d'attente accroupie, pour se cacher ou observer discrètement.",
- "en": "Looping crouched idle, for hiding or watching discreetly."
- }
- },
- "qua_dance_loop": {
- "clip": "Dance_Loop",
- "nom": {
- "fr": "Danse",
- "en": "Dance"
- },
- "categorie": "danse",
- "accessoire": "",
- "style": "détendu",
- "usage": {
- "fr": "Boucle de danse libre, pour une scène de fête ou de club.",
- "en": "Looping free dance, for a party or club scene."
- }
- },
- "qua_death01": {
- "clip": "Death01",
- "nom": {
- "fr": "Mort",
- "en": "Death"
- },
- "categorie": "chute",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Joué une fois : le personnage s'effondre et reste au sol ; à utiliser pour une mort ou un évanouissement.",
- "en": "Played once: the character collapses and stays down; use for a death or a faint."
- }
- },
- "qua_driving_loop": {
- "clip": "Driving_Loop",
- "nom": {
- "fr": "Conduite",
- "en": "Driving"
- },
- "categorie": "conduite",
- "accessoire": "volant",
- "style": "neutre",
- "usage": {
- "fr": "Boucle de conduite, mains sur le volant ; pour un personnage assis dans un véhicule.",
- "en": "Looping driving pose, hands on the wheel; for a character seated in a vehicle."
- }
- },
- "qua_fixing_kneeling": {
- "clip": "Fixing_Kneeling",
- "nom": {
- "fr": "Réparer à genoux",
- "en": "Fix kneeling"
- },
- "categorie": "interaction",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Boucle de bricolage à genoux, pour une réparation ou un travail au sol.",
- "en": "Looping kneeling repair work, for fixing something or working at ground level."
- }
- },
- "qua_hit_chest": {
- "clip": "Hit_Chest",
- "nom": {
- "fr": "Coup à la poitrine",
- "en": "Hit in chest"
- },
- "categorie": "combat",
- "accessoire": "",
- "style": "agressif",
- "usage": {
- "fr": "Joué une fois : réaction à un coup reçu au torse ; à placer après une attaque.",
- "en": "Played once: reaction to a blow to the chest; place it after an attack."
- }
- },
- "qua_hit_head": {
- "clip": "Hit_Head",
- "nom": {
- "fr": "Coup à la tête",
- "en": "Hit in head"
- },
- "categorie": "combat",
- "accessoire": "",
- "style": "agressif",
- "usage": {
- "fr": "Joué une fois : réaction à un coup reçu à la tête ; à placer après une attaque.",
- "en": "Played once: reaction to a blow to the head; place it after an attack."
- }
- },
- "qua_idle_loop": {
- "clip": "Idle_Loop",
- "nom": {
- "fr": "Attente",
- "en": "Idle"
- },
- "categorie": "attente",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Boucle d'attente debout par défaut, pour un personnage qui patiente.",
- "en": "Default standing idle loop, for a waiting character."
- }
- },
- "qua_idle_talking_loop": {
- "clip": "Idle_Talking_Loop",
- "nom": {
- "fr": "Attente en parlant",
- "en": "Idle talking"
- },
- "categorie": "conversation",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Boucle debout avec gestes de la main, pour un personnage qui parle dans un dialogue.",
- "en": "Standing loop with hand gestures, for a character speaking in a dialogue."
- }
- },
- "qua_idle_torch_loop": {
- "clip": "Idle_Torch_Loop",
- "nom": {
- "fr": "Attente avec torche",
- "en": "Idle with torch"
- },
- "categorie": "attente",
- "accessoire": "torche",
- "style": "neutre",
- "usage": {
- "fr": "Boucle d'attente debout en tenant une torche ; pour une scène de nuit ou d'exploration.",
- "en": "Standing idle loop holding a torch; for a night or exploration scene."
- }
- },
- "qua_interact": {
- "clip": "Interact",
- "nom": {
- "fr": "Interagir",
- "en": "Interact"
- },
- "categorie": "interaction",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Joué une fois : geste pour actionner un objet (bouton, porte, levier).",
- "en": "Played once: gesture to operate an object (button, door, lever)."
- }
- },
- "qua_jog_fwd_loop": {
- "clip": "Jog_Fwd_Loop",
- "nom": {
- "fr": "Jogging",
- "en": "Jog"
- },
- "categorie": "locomotion",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Boucle de course légère sur place ; à combiner avec un déplacement du personnage.",
- "en": "Looping light jog in place; combine with a character movement."
- }
- },
- "qua_jump_land": {
- "clip": "Jump_Land",
- "nom": {
- "fr": "Réception de saut",
- "en": "Jump landing"
- },
- "categorie": "chute",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Joué une fois : réception au sol ; dernière phase d'un saut (après la boucle en l'air).",
- "en": "Played once: landing on the ground; last phase of a jump (after the airborne loop)."
- }
- },
- "qua_jump_loop": {
- "clip": "Jump_Loop",
- "nom": {
- "fr": "Saut en l'air",
- "en": "Jump airborne"
- },
- "categorie": "chute",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Boucle de la phase en l'air d'un saut, entre le départ et la réception.",
- "en": "Looping airborne phase of a jump, between the start and the landing."
- }
- },
- "qua_jump_start": {
- "clip": "Jump_Start",
- "nom": {
- "fr": "Départ de saut",
- "en": "Jump start"
- },
- "categorie": "chute",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Joué une fois : impulsion au départ d'un saut ; première phase avant la boucle en l'air.",
- "en": "Played once: take-off impulse; first phase before the airborne loop."
- }
- },
- "qua_pickup_table": {
- "clip": "PickUp_Table",
- "nom": {
- "fr": "Ramasser sur une table",
- "en": "Pick up from table"
- },
- "categorie": "interaction",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Joué une fois : le personnage prend un objet posé sur une table.",
- "en": "Played once: the character picks up an object lying on a table."
- }
- },
- "qua_pistol_aim_down": {
- "clip": "Pistol_Aim_Down",
- "nom": {
- "fr": "Viser vers le bas",
- "en": "Aim down"
- },
- "categorie": "combat",
- "accessoire": "pistolet",
- "style": "agressif",
- "usage": {
- "fr": "Pose de visée pistolet vers le bas ; à enchaîner avec les autres visées ou le tir.",
- "en": "Pistol aiming pose pointing down; chain with the other aims or the shot."
- }
- },
- "qua_pistol_aim_neutral": {
- "clip": "Pistol_Aim_Neutral",
- "nom": {
- "fr": "Viser droit",
- "en": "Aim straight"
- },
- "categorie": "combat",
- "accessoire": "pistolet",
- "style": "agressif",
- "usage": {
- "fr": "Pose de visée pistolet à l'horizontale ; pose de base avant un tir.",
- "en": "Pistol aiming pose at level; base pose before a shot."
- }
- },
- "qua_pistol_aim_up": {
- "clip": "Pistol_Aim_Up",
- "nom": {
- "fr": "Viser vers le haut",
- "en": "Aim up"
- },
- "categorie": "combat",
- "accessoire": "pistolet",
- "style": "agressif",
- "usage": {
- "fr": "Pose de visée pistolet vers le haut ; à enchaîner avec les autres visées ou le tir.",
- "en": "Pistol aiming pose pointing up; chain with the other aims or the shot."
- }
- },
- "qua_pistol_idle_loop": {
- "clip": "Pistol_Idle_Loop",
- "nom": {
- "fr": "Attente au pistolet",
- "en": "Pistol idle"
- },
- "categorie": "combat",
- "accessoire": "pistolet",
- "style": "agressif",
- "usage": {
- "fr": "Boucle d'attente debout, pistolet en main ; pour un personnage armé qui guette.",
- "en": "Standing idle loop with a pistol in hand; for an armed character on guard."
- }
- },
- "qua_pistol_reload": {
- "clip": "Pistol_Reload",
- "nom": {
- "fr": "Recharger le pistolet",
- "en": "Pistol reload"
- },
- "categorie": "combat",
- "accessoire": "pistolet",
- "style": "agressif",
- "usage": {
- "fr": "Joué une fois : rechargement du pistolet ; à placer entre deux tirs.",
- "en": "Played once: pistol reload; place it between two shots."
- }
- },
- "qua_pistol_shoot": {
- "clip": "Pistol_Shoot",
- "nom": {
- "fr": "Tir au pistolet",
- "en": "Pistol shot"
- },
- "categorie": "combat",
- "accessoire": "pistolet",
- "style": "agressif",
- "usage": {
- "fr": "Joué une fois : un tir de pistolet avec recul.",
- "en": "Played once: one pistol shot with recoil."
- }
- },
- "qua_punch_cross": {
- "clip": "Punch_Cross",
- "nom": {
- "fr": "Direct",
- "en": "Cross punch"
- },
- "categorie": "combat",
- "accessoire": "",
- "style": "agressif",
- "usage": {
- "fr": "Joué une fois : coup de poing direct ; pour une bagarre.",
- "en": "Played once: cross punch; for a fight."
- }
- },
- "qua_punch_jab": {
- "clip": "Punch_Jab",
- "nom": {
- "fr": "Jab",
- "en": "Jab"
- },
- "categorie": "combat",
- "accessoire": "",
- "style": "agressif",
- "usage": {
- "fr": "Joué une fois : coup de poing rapide ; pour une bagarre.",
- "en": "Played once: quick jab punch; for a fight."
- }
- },
- "qua_push_loop": {
- "clip": "Push_Loop",
- "nom": {
- "fr": "Pousser",
- "en": "Push"
- },
- "categorie": "interaction",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Boucle de poussée à deux mains sur place ; pour pousser un meuble ou une porte lourde.",
- "en": "Looping two-handed push in place; for pushing furniture or a heavy door."
- }
- },
- "qua_roll": {
- "clip": "Roll",
- "nom": {
- "fr": "Roulade",
- "en": "Roll"
- },
- "categorie": "sport",
- "accessoire": "",
- "style": "agressif",
- "usage": {
- "fr": "Joué une fois : roulade au sol ; pour esquiver ou plonger.",
- "en": "Played once: ground roll; for dodging or diving."
- }
- },
- "qua_sitting_enter": {
- "clip": "Sitting_Enter",
- "nom": {
- "fr": "S'asseoir",
- "en": "Sit down"
- },
- "categorie": "assis",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Joué une fois : entrée, le personnage passe de debout à assis ; à suivre d'une boucle assise.",
- "en": "Played once: entry, the character goes from standing to seated; follow with a seated loop."
- }
- },
- "qua_sitting_exit": {
- "clip": "Sitting_Exit",
- "nom": {
- "fr": "Se lever",
- "en": "Stand up"
- },
- "categorie": "assis",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Joué une fois : sortie, le personnage passe d'assis à debout ; à placer après une boucle assise.",
- "en": "Played once: exit, the character goes from seated to standing; place after a seated loop."
- }
- },
- "qua_sitting_idle_loop": {
- "clip": "Sitting_Idle_Loop",
- "nom": {
- "fr": "Assis, attente",
- "en": "Seated idle"
- },
- "categorie": "assis",
- "accessoire": "",
- "style": "détendu",
- "usage": {
- "fr": "Boucle d'attente assise, après « s'asseoir » ; pour un personnage installé sur une chaise.",
- "en": "Seated idle loop, after the sit-down clip; for a character settled on a chair."
- }
- },
- "qua_sitting_talking_loop": {
- "clip": "Sitting_Talking_Loop",
- "nom": {
- "fr": "Assis, en parlant",
- "en": "Seated talking"
- },
- "categorie": "assis",
- "accessoire": "",
- "style": "détendu",
- "usage": {
- "fr": "Boucle assise avec gestes de la main, pour un dialogue entre personnages assis.",
- "en": "Seated loop with hand gestures, for a dialogue between seated characters."
- }
- },
- "qua_spell_simple_enter": {
- "clip": "Spell_Simple_Enter",
- "nom": {
- "fr": "Début d'incantation",
- "en": "Spell start"
- },
- "categorie": "magie",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Joué une fois : mise en position pour lancer un sort ; à suivre de la boucle d'incantation.",
- "en": "Played once: stance to begin casting a spell; follow with the spell idle loop."
- }
- },
- "qua_spell_simple_exit": {
- "clip": "Spell_Simple_Exit",
- "nom": {
- "fr": "Fin d'incantation",
- "en": "Spell end"
- },
- "categorie": "magie",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Joué une fois : retour à la posture normale après un sort.",
- "en": "Played once: return to normal stance after a spell."
- }
- },
- "qua_spell_simple_idle_loop": {
- "clip": "Spell_Simple_Idle_Loop",
- "nom": {
- "fr": "Incantation",
- "en": "Spell idle"
- },
- "categorie": "magie",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Boucle de concentration, mains levées, entre l'entrée et le lancer du sort.",
- "en": "Looping concentration pose, hands raised, between the entry and the cast."
- }
- },
- "qua_spell_simple_shoot": {
- "clip": "Spell_Simple_Shoot",
- "nom": {
- "fr": "Lancer un sort",
- "en": "Cast spell"
- },
- "categorie": "magie",
- "accessoire": "",
- "style": "agressif",
- "usage": {
- "fr": "Joué une fois : le geste qui lance le sort ; à placer après la boucle d'incantation.",
- "en": "Played once: the gesture that casts the spell; place after the spell idle loop."
- }
- },
- "qua_sprint_loop": {
- "clip": "Sprint_Loop",
- "nom": {
- "fr": "Sprint",
- "en": "Sprint"
- },
- "categorie": "locomotion",
- "accessoire": "",
- "style": "agressif",
- "usage": {
- "fr": "Boucle de course rapide sur place ; à combiner avec un déplacement pour une fuite ou une poursuite.",
- "en": "Looping fast run in place; combine with a movement for an escape or chase."
- }
- },
- "qua_swim_fwd_loop": {
- "clip": "Swim_Fwd_Loop",
- "nom": {
- "fr": "Nage",
- "en": "Swim"
- },
- "categorie": "nage",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Boucle de nage en avant ; à combiner avec un déplacement dans l'eau.",
- "en": "Looping forward swim; combine with a movement in water."
- },
- "posture": "dans l'eau"
- },
- "qua_swim_idle_loop": {
- "clip": "Swim_Idle_Loop",
- "nom": {
- "fr": "Surplace dans l'eau",
- "en": "Treading water"
- },
- "categorie": "nage",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Boucle de flottaison sur place dans l'eau.",
- "en": "Looping treading water in place."
- },
- "posture": "dans l'eau"
- },
- "qua_sword_attack": {
- "clip": "Sword_Attack",
- "nom": {
- "fr": "Attaque à l'épée",
- "en": "Sword attack"
- },
- "categorie": "combat",
- "accessoire": "épée",
- "style": "agressif",
- "usage": {
- "fr": "Joué une fois : un coup d'épée ; à enchaîner après l'attente à l'épée.",
- "en": "Played once: a sword strike; chain after the sword idle."
- }
- },
- "qua_sword_idle": {
- "clip": "Sword_Idle",
- "nom": {
- "fr": "Attente à l'épée",
- "en": "Sword idle"
- },
- "categorie": "combat",
- "accessoire": "épée",
- "style": "agressif",
- "usage": {
- "fr": "Boucle d'attente debout, épée en main, en garde.",
- "en": "Standing idle loop, sword in hand, on guard."
- }
- },
- "qua_walk_formal_loop": {
- "clip": "Walk_Formal_Loop",
- "nom": {
- "fr": "Marche formelle",
- "en": "Formal walk"
- },
- "categorie": "locomotion",
- "accessoire": "",
- "style": "formel",
- "usage": {
- "fr": "Boucle de marche tenue et digne sur place ; à combiner avec un déplacement (cérémonie, travail).",
- "en": "Looping upright, dignified walk in place; combine with a movement (ceremony, office)."
- }
- },
- "qua_walk_loop": {
- "clip": "Walk_Loop",
- "nom": {
- "fr": "Marche",
- "en": "Walk"
- },
- "categorie": "locomotion",
- "accessoire": "",
- "style": "neutre",
- "usage": {
- "fr": "Boucle de marche sur place ; à combiner avec un déplacement du personnage.",
- "en": "Looping walk in place; combine with a character movement."
- }
- }
- }
-}
diff --git a/Config/LPSandbox.ini b/Config/LPSandbox.ini
deleted file mode 100644
index 333a510..0000000
--- a/Config/LPSandbox.ini
+++ /dev/null
@@ -1,42 +0,0 @@
-; Config/LPSandbox.ini
-; Contrat S1-T1 — chemins et options du bac a sable LPPairSandbox.
-; Toute cle absente => valeur par defaut du code (identique a celle-ci).
-; Chemins "/Game/..." : format LoadObject (/Package/Nom.Nom ou /Package/BP.BP_C).
-; Chemins relatifs (sans "/") : relatifs a Content/ sauf [Sandbox.Output] (relatif a Saved/).
-
-[Sandbox.Mode]
-; Mode initial du menu : Pair | Interaction | Mesure
-; (Saved/sandbox_mode.txt, s'il existe, reste prioritaire et est consomme.)
-Mode=Pair
-
-[Sandbox.Assets]
-PersonBP=/Game/BPs/Person.Person_C
-BridgetMesh=/Game/Heavy/Daz/Bridget/bridget_gp.bridget_gp
-MichaelMesh=/Game/Heavy/Daz/Michael/michael.michael
-QuaterniusMannequinMesh=/Game/Quaternius/UAL/UAL1_Standard.UAL1_Standard
-DazIdleFemale=/Game/Heavy/Daz/Anims/Idle_F_Daz.Idle_F_Daz
-DazIdleMale=/Game/Heavy/Daz/Anims/idle_Daz.idle_Daz
-FurnitureWallMaterial=/Game/Heavy/New2/Furniture/Materials/FntWall.FntWall
-
-[Sandbox.Roots]
-; Racines de packages UE (sans nom d'asset final)
-FurnitureRoot=/Game/Heavy/New2/Furniture
-DazAnimRoot=/Game/Heavy/Daz/Anims
-QuaterniusRoot=/Game/Quaternius
-QuaterniusUALRoot=/Game/Quaternius/UAL
-
-[Sandbox.Content]
-; Chemins disque, relatifs a Content/
-ModuleRoot=Modules/vin_Base
-WorldFile=Modules/vin_Base/World/work___vin01.lpworld
-ChatAction=Modules/vin_Base/Interactions/chat.lpaction
-QuaterniusUALDisk=Quaternius/UAL
-
-[Sandbox.Sky]
-; Optionnel : cubemap du SkyLight du sandbox
-SkyCubemap=/Game/Heavy/New2/Buildings/Mats/urban_street_03_1k.urban_street_03_1k
-SkyIntensity=0.6
-
-[Sandbox.Output]
-; Relatif a Saved/
-MeasureOutputRoot=Measurement
diff --git a/Docs/Migration/09_Commandes_Utiles.md b/Docs/Migration/09_Commandes_Utiles.md
index db91af4..c256646 100644
--- a/Docs/Migration/09_Commandes_Utiles.md
+++ b/Docs/Migration/09_Commandes_Utiles.md
@@ -2,6 +2,8 @@
> Toutes les commandes se lancent depuis `D:\Game\LifePlay-master 5.5`, sous PowerShell 7. Explications :
> `08_Guide_Developpeur.md`. Méthode : `10_Protocole_Operations.md`.
+>
+> **Atelier de mods (DC3, 2026-10-07)** : `BuildMod`, `NewMod`, `EditMod`, `HairPipeline`, `AnimPipeline`, `DeliverAnims`, `ModSource` et les lanceurs sandbox se lancent depuis `D:\Game\LifePlay-Sandbox` (`.\Tools\...`), avec `-GameRoot` facultatif (défaut : `[Workshop] GameRoot` de `Config\LPSandbox.ini` de l'addon) ; `ModSources\`, `AnimSources\` et `Tools\{anim,hairs,mods}` y sont aussi. Dans ce document, les chemins `.\Tools\
-
-