Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
281 changes: 281 additions & 0 deletions rhythm_coach/assets/career/milestones.json
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,287 @@
{"time": 54, "text": "Bonne fille. Tu sais aspirer.", "mode": "breath", "duration": 6}
]
},
{
"id": "intro_posture_sitting",
"displayLabel": "Assieds-toi et ouvre-toi",
"level": 4,
"branches": ["obeissance"],
"requires": ["basics"],
"unlocks": ["posture_sitting"],
"sequence": [
{
"time": 0,
"text": "Aujourd'hui tu obéis à une consigne de position. Assieds-toi bien droite, écarte les genoux, et présente-toi.",
"mode": "breath",
"duration": 8
},
{
"time": 8,
"text": "Dans cette position, tu me prends en bouche. Commence doucement.",
"mode": "rhythm",
"from": "tip",
"to": "head",
"bpm": 80,
"duration": 16
},
{
"time": 24,
"text": "Reste assise, dos droit. Continue.",
"mode": "lick",
"from": "tip",
"to": "head",
"bpm": 70,
"duration": 16
},
{
"time": 40,
"text": "Souffle. Garde la position.",
"mode": "breath",
"duration": 6
},
{
"time": 46,
"text": "Encore. Tu restes assise, offerte, et tu bosses.",
"mode": "rhythm",
"from": "head",
"to": "mid",
"bpm": 85,
"duration": 18
},
{
"time": 64,
"text": "Bien. Voilà ta position assise. Tu la connais maintenant.",
"mode": "breath",
"duration": 8
}
]
},
{
"id": "intro_posture_standing",
"displayLabel": "Debout, à hauteur",
"level": 5,
"branches": ["obeissance"],
"requires": ["basics"],
"unlocks": ["posture_standing"],
"sequence": [
{
"time": 0,
"text": "Cette fois tu te mets debout. Jambes écartées, bien stable. Tu vas travailler dans cette position.",
"mode": "breath",
"duration": 8
},
{
"time": 8,
"text": "Debout, tu te penches et tu me prends. Vas-y.",
"mode": "rhythm",
"from": "tip",
"to": "head",
"bpm": 85,
"duration": 16
},
{
"time": 24,
"text": "Reste debout, ne fléchis pas. Continue.",
"mode": "rhythm",
"from": "head",
"to": "mid",
"bpm": 90,
"duration": 16
},
{
"time": 40,
"text": "Souffle. Tu tiens debout.",
"mode": "breath",
"duration": 6
},
{
"time": 46,
"text": "Encore. Jambes stables, et tu donnes tout.",
"mode": "lick",
"from": "head",
"to": "mid",
"bpm": 75,
"duration": 18
},
{
"time": 64,
"text": "Bien. Position debout acquise.",
"mode": "breath",
"duration": 8
}
]
},
{
"id": "intro_posture_kneeling",
"displayLabel": "À genoux",
"level": 6,
"branches": ["obeissance"],
"requires": ["basics"],
"unlocks": ["posture_kneeling"],
"sequence": [
{
"time": 0,
"text": "Mets-toi à genoux. C'est ta place. Genoux au sol, dos droit, bouche prête.",
"mode": "breath",
"duration": 8
},
{
"time": 8,
"text": "À genoux devant moi, tu me prends. Lève les yeux.",
"mode": "rhythm",
"from": "tip",
"to": "mid",
"bpm": 90,
"duration": 16
},
{
"time": 24,
"text": "Reste à genoux. Ne bouge pas de là. Continue.",
"mode": "rhythm",
"from": "head",
"to": "mid",
"bpm": 95,
"duration": 16
},
{
"time": 40,
"text": "Souffle. Toujours à genoux.",
"mode": "breath",
"duration": 6
},
{
"time": 46,
"text": "Encore. Genoux au sol, tu me sers.",
"mode": "rhythm",
"from": "head",
"to": "mid",
"bpm": 100,
"duration": 18
},
{
"time": 64,
"text": "Bien. À genoux, c'est là que tu es le mieux. Tu le sais maintenant.",
"mode": "breath",
"duration": 8
}
]
},
{
"id": "intro_posture_all_fours",
"displayLabel": "À quatre pattes",
"level": 9,
"branches": ["obeissance", "sloppy"],
"requires": ["basics"],
"unlocks": ["posture_all_fours"],
"sequence": [
{
"time": 0,
"text": "À quatre pattes. Maintenant. Mains et genoux au sol, croupe relevée, tête baissée.",
"mode": "breath",
"duration": 8
},
{
"time": 8,
"text": "Dans cette position, tu avances la bouche et tu me prends. Vas-y.",
"mode": "rhythm",
"from": "head",
"to": "mid",
"bpm": 95,
"duration": 16
},
{
"time": 24,
"text": "Reste à quatre pattes. Ne te relève pas. Plus profond.",
"mode": "rhythm",
"from": "head",
"to": "throat",
"bpm": 100,
"duration": 16
},
{
"time": 40,
"text": "Souffle. Garde la position à quatre pattes.",
"mode": "breath",
"duration": 6
},
{
"time": 46,
"text": "Encore. Croupe haute, et tu bosses comme la chienne que tu es.",
"mode": "rhythm",
"from": "head",
"to": "throat",
"bpm": 105,
"duration": 18
},
{
"time": 64,
"text": "Bien. À quatre pattes, soumise. Voilà ta position.",
"mode": "breath",
"duration": 8
}
]
},
{
"id": "intro_posture_on_back",
"displayLabel": "Sur le dos, gorge offerte",
"level": 12,
"branches": ["obeissance", "profondeur"],
"requires": ["full_hold"],
"unlocks": ["posture_on_back"],
"requiresCapability": [{ "axis": "hold.full.streak", "min": 5 }],
"sequence": [
{
"time": 0,
"text": "Allonge-toi sur le dos. Tête en arrière, dans le vide. Ta gorge est alignée — tu vas tout prendre.",
"mode": "breath",
"duration": 8
},
{
"time": 8,
"text": "Sur le dos, gorge ouverte, tu me laisses entrer. Doucement.",
"mode": "rhythm",
"from": "mid",
"to": "throat",
"bpm": 90,
"duration": 16
},
{
"time": 24,
"text": "Reste sur le dos. Ne relève pas la tête. Plus loin.",
"mode": "hold",
"from": "full",
"duration": 10
},
{
"time": 34,
"text": "Tiens. Ta gorge est faite pour ça dans cette position.",
"mode": "hold",
"from": "full",
"duration": 12
},
{
"time": 46,
"text": "Souffle. Reste allongée.",
"mode": "breath",
"duration": 8
},
{
"time": 54,
"text": "Encore. Sur le dos, gorge grande ouverte, tu me prends jusqu'au fond.",
"mode": "rhythm",
"from": "throat",
"to": "full",
"bpm": 95,
"duration": 16
},
{
"time": 70,
"text": "Bien. Sur le dos, tu n'es plus qu'une gorge. Tu connais cette position maintenant.",
"mode": "breath",
"duration": 8
}
]
},
{
"id": "intro_final_hold_tip",
"displayLabel": "Apothéose — sauce sur la langue",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"displayLabel": "Auf alle viere",
"stepTexts": {
"0": "Auf alle viere. Sofort. Hände und Knie auf dem Boden, Hintern hoch, Kopf runter.",
"8": "In dieser Stellung bringst du den Mund nach vorn und nimmst mich. Los.",
"24": "Bleib auf allen vieren. Steh nicht auf. Tiefer.",
"40": "Atme. Bleib auf allen vieren.",
"46": "Nochmal. Hintern hoch, und du arbeitest wie die Schlampe, die du bist.",
"64": "Gut. Auf allen vieren, unterwürfig. Das ist deine Stellung."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"displayLabel": "On all fours",
"stepTexts": {
"0": "On all fours. Now. Hands and knees on the floor, rump up, head down.",
"8": "In that position, you bring your mouth forward and take me. Go on.",
"24": "Stay on all fours. Don't get up. Deeper.",
"40": "Breathe. Keep the all-fours position.",
"46": "Again. Rump high, and you work like the bitch you are.",
"64": "Good. On all fours, submissive. That's your position."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"displayLabel": "A cuatro patas",
"stepTexts": {
"0": "A cuatro patas. Ahora. Manos y rodillas en el suelo, culo en alto, cabeza abajo.",
"8": "En esa postura, adelantas la boca y me tomas. Adelante.",
"24": "Quédate a cuatro patas. No te levantes. Más hondo.",
"40": "Respira. Mantén la postura a cuatro patas.",
"46": "Otra vez. Culo en alto, y trabajas como la perra que eres.",
"64": "Bien. A cuatro patas, sumisa. Esa es tu postura."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"displayLabel": "Auf die Knie",
"stepTexts": {
"0": "Geh auf die Knie. Das ist dein Platz. Knie auf dem Boden, Rücken gerade, Mund bereit.",
"8": "Auf den Knien vor mir nimmst du mich. Schau hoch.",
"24": "Bleib auf den Knien. Beweg dich nicht weg. Mach weiter.",
"40": "Atme. Immer noch auf den Knien.",
"46": "Nochmal. Knie auf dem Boden, du dienst mir.",
"64": "Gut. Auf den Knien bist du am besten. Jetzt weißt du es."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"displayLabel": "On your knees",
"stepTexts": {
"0": "Get on your knees. That's your place. Knees on the floor, back straight, mouth ready.",
"8": "On your knees in front of me, you take me. Look up.",
"24": "Stay on your knees. Don't move from there. Keep going.",
"40": "Breathe. Still on your knees.",
"46": "Again. Knees on the floor, you serve me.",
"64": "Good. On your knees is where you're best. You know it now."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"displayLabel": "De rodillas",
"stepTexts": {
"0": "Ponte de rodillas. Ese es tu sitio. Rodillas en el suelo, espalda recta, boca lista.",
"8": "De rodillas ante mí, me tomas. Levanta la mirada.",
"24": "Quédate de rodillas. No te muevas de ahí. Continúa.",
"40": "Respira. Sigues de rodillas.",
"46": "Otra vez. Rodillas en el suelo, me sirves.",
"64": "Bien. De rodillas es donde mejor estás. Ya lo sabes."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"displayLabel": "Auf dem Rücken, Kehle dargeboten",
"stepTexts": {
"0": "Leg dich auf den Rücken. Kopf nach hinten, über die Kante. Deine Kehle ist ausgerichtet — du nimmst alles.",
"8": "Auf dem Rücken, Kehle offen, lässt du mich rein. Langsam.",
"24": "Bleib auf dem Rücken. Heb den Kopf nicht. Weiter.",
"34": "Halt. Deine Kehle ist in dieser Stellung dafür gemacht.",
"46": "Atme. Bleib liegen.",
"54": "Nochmal. Auf dem Rücken, Kehle weit offen, du nimmst mich bis zum Grund.",
"70": "Gut. Auf dem Rücken bist du nur noch eine Kehle. Jetzt kennst du diese Stellung."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"displayLabel": "On your back, throat offered",
"stepTexts": {
"0": "Lie down on your back. Head tipped back, over the edge. Your throat is lined up — you're going to take it all.",
"8": "On your back, throat open, you let me in. Slowly.",
"24": "Stay on your back. Don't lift your head. Further.",
"34": "Hold. Your throat is made for this in this position.",
"46": "Breathe. Stay lying down.",
"54": "Again. On your back, throat wide open, you take me to the root.",
"70": "Good. On your back, you're nothing but a throat. You know this position now."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"displayLabel": "Boca arriba, garganta ofrecida",
"stepTexts": {
"0": "Túmbate boca arriba. La cabeza hacia atrás, fuera del borde. Tu garganta queda alineada — vas a tomarlo todo.",
"8": "Boca arriba, garganta abierta, me dejas entrar. Despacio.",
"24": "Quédate boca arriba. No levantes la cabeza. Más adentro.",
"34": "Aguanta. Tu garganta está hecha para esto en esta postura.",
"46": "Respira. Sigue tumbada.",
"54": "Otra vez. Boca arriba, garganta bien abierta, me tomas hasta el fondo.",
"70": "Bien. Boca arriba, no eres más que una garganta. Ya conoces esta postura."
}
}
Loading
Loading