21 KiB
Phase 4: Levels 21-25 Path Specialization
Priority: MEDIUM - Path differentiation and specialization
Estimated Effort: 20-26 hours
Status: Not Started
Dependencies: Phase 3 (Levels 11-20)
🎯 Phase Goals
Implement levels 21-25, covering the Path Specialization Arc. At Level 21, players choose one of 6 specialized paths based on their preferences and goals. Levels 22-25 provide path-specific scenarios and challenges.
📋 What This Phase Delivers
Arc Implemented:
Path Specialization Arc (L21-25): Path selection + 4 path-specific levels
The 6 Paths:
- Endurance Path: Stamina building, marathon sessions, long-duration challenges
- Denial Path: Extended denial, edging without release, frustration training
- Humiliation Path: Degradation scenarios, humiliation tasks, ego dissolution
- Obedience Path: Command following, submission training, control surrender
- Sensitivity Path: Heightened arousal, minimal touch, extreme sensitivity
- Multi-Sensory Path: All features maxed, overwhelming stimulation, sensory mastery
Level-by-Level:
- L21: Path Selection (165min) - Questionnaire + path choice
- L22: Path Level 1 (180min) - Introduction to chosen path
- L23: Path Level 2 (195min) - Intermediate path training
- L24: Path Level 3 (210min) - Advanced path challenges
- L25: Path Mastery Checkpoint (225min) - Path graduation + preference update
End Result: Personalized experience based on user's path choice, preparing for Ultimate Mastery arc.
🏗️ Implementation Tasks
Task 1: Path Selection System (5-6 hours)
File to Create: src/features/academy/pathSelector.js
Responsibilities:
- Display path selection questionnaire
- Calculate recommended path based on answers
- Allow manual path override
- Save selected path
- Generate path-specific content
Questionnaire Questions:
const pathQuestions = [
{
id: 1,
question: "What aspect of gooning excites you most?",
answers: [
{ text: "Going for hours without stopping", path: "Endurance", weight: 3 },
{ text: "Being denied release", path: "Denial", weight: 3 },
{ text: "Being degraded and humiliated", path: "Humiliation", weight: 3 },
{ text: "Following commands obediently", path: "Obedience", weight: 3 },
{ text: "Increasing my sensitivity", path: "Sensitivity", weight: 3 },
{ text: "Overwhelming my senses", path: "Multi-Sensory", weight: 3 }
]
},
{
id: 2,
question: "How do you prefer to edge?",
answers: [
{ text: "Slow and steady for maximum duration", path: "Endurance", weight: 2 },
{ text: "Right to the edge without going over", path: "Denial", weight: 2 },
{ text: "While being verbally degraded", path: "Humiliation", weight: 2 },
{ text: "Only when commanded", path: "Obedience", weight: 2 },
{ text: "With minimal touch", path: "Sensitivity", weight: 2 },
{ text: "With all features active", path: "Multi-Sensory", weight: 2 }
]
},
{
id: 3,
question: "What is your ultimate gooning goal?",
answers: [
{ text: "Goon for 5+ hours straight", path: "Endurance", weight: 3 },
{ text: "Edge for days without cumming", path: "Denial", weight: 3 },
{ text: "Embrace total humiliation", path: "Humiliation", weight: 3 },
{ text: "Become perfectly obedient", path: "Obedience", weight: 3 },
{ text: "Cum from minimal stimulation", path: "Sensitivity", weight: 3 },
{ text: "Master sensory overload", path: "Multi-Sensory", weight: 3 }
]
},
{
id: 4,
question: "Which feature do you enjoy most?",
answers: [
{ text: "Long video marathons", path: "Endurance", weight: 1 },
{ text: "Denial and stop-stroking commands", path: "Denial", weight: 1 },
{ text: "Humiliating captions and tasks", path: "Humiliation", weight: 1 },
{ text: "TTS commands and instructions", path: "Obedience", weight: 1 },
{ text: "Hypno spirals and edge control", path: "Sensitivity", weight: 1 },
{ text: "Everything at once", path: "Multi-Sensory", weight: 1 }
]
},
{
id: 5,
question: "How intense should your training be?",
answers: [
{ text: "Moderate but long-lasting", path: "Endurance", weight: 2 },
{ text: "Intensely frustrating", path: "Denial", weight: 2 },
{ text: "Psychologically challenging", path: "Humiliation", weight: 2 },
{ text: "Strictly controlled", path: "Obedience", weight: 2 },
{ text: "Physically overwhelming", path: "Sensitivity", weight: 2 },
{ text: "Maximum intensity across all dimensions", path: "Multi-Sensory", weight: 2 }
]
}
];
Path Calculation:
class PathSelector {
calculateRecommendedPath(answers) {
// Sum weights for each path
// Return path with highest score
}
showPathSelection(recommendedPath) {
// Display questionnaire results
// Show recommended path with description
// Allow user to override choice
// Return selected path
}
savePath(path) {
// Save to academyProgress.selectedPath
}
getPathDescription(path) {
// Return detailed description of path
}
}
Path Descriptions:
const pathDescriptions = {
Endurance: {
name: "Endurance Path",
tagline: "Master of marathons",
description: "Build stamina for ultra-long sessions. Train to goon for hours without breaks.",
focus: "Duration, stamina, marathon sessions",
graduation: "5-hour session with minimal breaks"
},
Denial: {
name: "Denial Path",
tagline: "Master of frustration",
description: "Learn to edge endlessly without release. Embrace permanent denial.",
focus: "Denial periods, edging without cumming, frustration tolerance",
graduation: "4-hour denial session with 100+ edges"
},
Humiliation: {
name: "Humiliation Path",
tagline: "Master of degradation",
description: "Embrace humiliation and ego dissolution. Become the perfect degraded gooner.",
focus: "Humiliating tasks, degrading captions, ego death",
graduation: "Humiliation gauntlet with extreme tasks"
},
Obedience: {
name: "Obedience Path",
tagline: "Master of submission",
description: "Perfect command following. Learn total obedience and control surrender.",
focus: "TTS commands, instant obedience, submission",
graduation: "Perfect obedience test with complex commands"
},
Sensitivity: {
name: "Sensitivity Path",
tagline: "Master of sensation",
description: "Heighten your sensitivity to extreme levels. Minimal touch, maximum pleasure.",
focus: "Sensitivity training, minimal stimulation, edge control",
graduation: "Hands-free or minimal-touch edge marathon"
},
MultiSensory: {
name: "Multi-Sensory Path",
tagline: "Master of everything",
description: "All features, maximum intensity. Become a master of sensory overload.",
focus: "All features combined, maximum complexity, total immersion",
graduation: "Ultimate sensory overload challenge"
}
};
Testing Checklist:
- Questionnaire displays
- Answers calculate recommended path
- Path descriptions display
- Can override recommendation
- Selected path saves
Task 2: Path-Specific Action Handlers (6-8 hours)
File to Update: src/features/tasks/interactiveTaskManager.js
Add handlers for path-specific actions:
Endurance Path Actions:
{
type: 'marathon-warmup',
params: {
duration: 600, // 10-minute warmup
instruction: 'Prepare your body and mind for the long haul'
}
}
{
type: 'stamina-building',
params: {
edgeCycles: 5,
cycleLength: 300, // 5-minute cycles
intensity: 'moderate'
}
}
{
type: 'endurance-test',
params: {
duration: 3600, // 1-hour test
minEdges: 30,
breaks: 'none'
}
}
Denial Path Actions:
{
type: 'extended-denial',
params: {
denialDuration: 1800, // 30-minute denial
allowedTouching: 'none',
showTimer: true
}
}
{
type: 'frustration-building',
params: {
edgesToBrink: 20,
forcedStops: 5
}
}
{
type: 'denial-oath',
params: {
oath: 'I will not cum. I am a denied gooner.',
repetitions: 10
}
}
Humiliation Path Actions:
{
type: 'humiliation-task',
params: {
task: 'Write "I am a pathetic gooner" 10 times',
verification: 'photo' // optional
}
}
{
type: 'degrading-mantra',
params: {
mantra: 'I am addicted. I am weak. I am a gooner.',
duration: 300,
tts: true
}
}
{
type: 'ego-dissolution',
params: {
captions: 'degrading',
hypno: true,
duration: 600
}
}
Obedience Path Actions:
{
type: 'command-drill',
params: {
commands: [
{ command: 'Edge now', delay: 10 },
{ command: 'Stop', delay: 5 },
{ command: 'Edge again', delay: 10 }
]
}
}
{
type: 'instant-obedience',
params: {
randomCommands: true,
commandFrequency: 30, // every 30 seconds
duration: 600
}
}
{
type: 'obedience-oath',
params: {
oath: 'I obey. I submit. I am controlled.',
repetitions: 10
}
}
Sensitivity Path Actions:
{
type: 'sensitivity-training',
params: {
touchIntensity: 'minimal',
edges: 20,
instruction: 'Use only your fingertips'
}
}
{
type: 'slow-edge',
params: {
duration: 600, // 10-minute slow edge
maxStrokes: 100
}
}
{
type: 'hands-free-attempt',
params: {
duration: 300,
allowedStimulation: 'visual-only'
}
}
Multi-Sensory Path Actions:
{
type: 'total-overload',
params: {
features: ['quad-video', 'hypno', 'tts', 'captions', 'interruptions', 'popups', 'webcam'],
duration: 900,
intensity: 'maximum'
}
}
{
type: 'feature-cascade',
params: {
startWith: ['video'],
addEvery: 60, // add feature every 60 seconds
features: ['tts', 'hypno', 'captions', 'quad-video', 'popups', 'interruptions']
}
}
{
type: 'sensory-mastery',
params: {
allFeatures: true,
complexTasks: true,
duration: 1200
}
}
Handler Implementation:
class InteractiveTaskManager {
// ... existing handlers ...
// Endurance handlers
async handleMarathonWarmup(action) { /* Warmup routine */ }
async handleStaminaBuilding(action) { /* Edge cycles */ }
async handleEnduranceTest(action) { /* Long duration test */ }
// Denial handlers
async handleExtendedDenial(action) { /* Long denial period */ }
async handleFrustrationBuilding(action) { /* Edge to brink repeatedly */ }
async handleDenialOath(action) { /* Repeat oath */ }
// Humiliation handlers
async handleHumiliationTask(action) { /* Display and verify task */ }
async handleDegradingMantra(action) { /* TTS mantra loop */ }
async handleEgoDissolution(action) { /* Hypno + degrading captions */ }
// Obedience handlers
async handleCommandDrill(action) { /* Sequence of commands */ }
async handleInstantObedience(action) { /* Random rapid commands */ }
async handleObedienceOath(action) { /* Repeat oath */ }
// Sensitivity handlers
async handleSensitivityTraining(action) { /* Minimal touch edges */ }
async handleSlowEdge(action) { /* Slow, controlled edge */ }
async handleHandsFreeAttempt(action) { /* No touch challenge */ }
// Multi-Sensory handlers
async handleTotalOverload(action) { /* Activate all features */ }
async handleFeatureCascade(action) { /* Add features progressively */ }
async handleSensoryMastery(action) { /* Ultimate challenge */ }
}
Testing Checklist:
- All 6 paths have unique actions
- Path-specific handlers work correctly
- Actions respect path focus
- No conflicts between path actions
Task 3: Path-Specific Level Data (4-5 hours)
File to Update: src/data/modes/academyLevelData.js
Add levels 21-25 with path variations:
const academyLevels = {
// ... L1-20 ...
21: {
name: "Path Selection",
arc: "Path Specialization",
duration: 9900, // 165 minutes
requirements: {
minLevel: 21,
completedLevels: [20]
},
unlocks: {
level: 22
},
sessionStructure: {
warmup: [
{ type: 'show-path-questionnaire' }
],
main: [
{ type: 'quad-video' },
{ type: 'edge', params: { count: 165 } }
],
cooldown: [
{ type: 'show-path-results' },
{ type: 'save-path-selection' }
]
}
},
22: {
name: "Path Level 1",
arc: "Path Specialization",
duration: 10800, // 180 minutes
requirements: {
minLevel: 22,
completedLevels: [21],
pathSelected: true
},
unlocks: {
level: 23
},
sessionStructure: {
// Different structure per path
Endurance: {
main: [
{ type: 'marathon-warmup', params: { duration: 600 } },
{ type: 'stamina-building', params: { edgeCycles: 5, cycleLength: 300 } },
{ type: 'edge', params: { count: 100 } }
]
},
Denial: {
main: [
{ type: 'extended-denial', params: { denialDuration: 1800 } },
{ type: 'frustration-building', params: { edgesToBrink: 30 } },
{ type: 'denial-oath', params: { repetitions: 10 } }
]
},
Humiliation: {
main: [
{ type: 'humiliation-task', params: { task: 'Write degrading affirmations' } },
{ type: 'degrading-mantra', params: { duration: 600, tts: true } },
{ type: 'edge', params: { count: 80 } }
]
},
Obedience: {
main: [
{ type: 'command-drill', params: { commands: [...] } },
{ type: 'instant-obedience', params: { duration: 900 } },
{ type: 'obedience-oath', params: { repetitions: 10 } }
]
},
Sensitivity: {
main: [
{ type: 'sensitivity-training', params: { edges: 50 } },
{ type: 'slow-edge', params: { duration: 1200 } },
{ type: 'hands-free-attempt', params: { duration: 300 } }
]
},
MultiSensory: {
main: [
{ type: 'feature-cascade', params: { startWith: ['video'], addEvery: 120 } },
{ type: 'total-overload', params: { duration: 1800 } }
]
}
}
},
23: {
name: "Path Level 2",
arc: "Path Specialization",
duration: 11700, // 195 minutes
requirements: {
minLevel: 23,
completedLevels: [22]
},
unlocks: {
level: 24
},
sessionStructure: {
// Intermediate path training (more intense)
// Similar structure to L22 but harder
}
},
24: {
name: "Path Level 3",
arc: "Path Specialization",
duration: 12600, // 210 minutes
requirements: {
minLevel: 24,
completedLevels: [23]
},
unlocks: {
level: 25
},
sessionStructure: {
// Advanced path challenges
// Similar structure to L23 but hardest
}
},
25: {
name: "Path Mastery",
arc: "Path Specialization",
duration: 13500, // 225 minutes
isCheckpoint: true,
requirements: {
minLevel: 25,
completedLevels: [24]
},
unlocks: {
level: 26,
arcsCompleted: ['Path Specialization'],
durationTiers: ['Marathon'] // Unlock Marathon tier (15x)
},
sessionStructure: {
warmup: [
{ type: 'show-preferences', reason: 'checkpoint' }
],
main: {
// Path graduation challenge
// Hardest test for each path
Endurance: [
{ type: 'endurance-test', params: { duration: 7200, minEdges: 100 } }
],
Denial: [
{ type: 'extended-denial', params: { denialDuration: 3600 } },
{ type: 'frustration-building', params: { edgesToBrink: 100 } }
],
Humiliation: [
{ type: 'ego-dissolution', params: { duration: 3600 } },
{ type: 'humiliation-task', params: { task: 'Ultimate humiliation gauntlet' } }
],
Obedience: [
{ type: 'instant-obedience', params: { duration: 3600, commandFrequency: 15 } }
],
Sensitivity: [
{ type: 'hands-free-attempt', params: { duration: 1800 } },
{ type: 'slow-edge', params: { duration: 1800, maxStrokes: 50 } }
],
MultiSensory: [
{ type: 'sensory-mastery', params: { duration: 3600, allFeatures: true } }
]
},
cooldown: [
{ type: 'show-arc-complete', arc: 'Path Specialization' },
{ type: 'show-path-graduation', path: 'selected' }
]
}
}
};
Testing Checklist:
- L21 questionnaire works
- Path selection saves
- L22-24 load correct path structure
- L25 graduation challenge matches path
- Marathon tier unlocks at L25
Task 4: Path Data Management (2-3 hours)
File to Create: src/data/academy/pathData.js
Path Definitions:
export const paths = {
Endurance: {
// ... full path definition ...
},
// ... other 5 paths ...
};
export const pathQuestionnaire = [ /* questions */ ];
File to Update: src/core/gameDataManager.js
Add selectedPath to academyProgress:
academyProgress: {
// ... existing fields ...
selectedPath: null, // 'Endurance', 'Denial', etc.
pathQuestionnaireAnswers: [],
pathProgress: {
level22Complete: false,
level23Complete: false,
level24Complete: false,
level25Complete: false
}
}
Testing Checklist:
- Path data loads correctly
- Selected path persists
- Path progress tracks
Task 5: UI for Path Selection (3-4 hours)
File to Update: training-academy.html
Add path selection UI:
<!-- Path Questionnaire Modal -->
<div id="path-questionnaire-modal" class="modal hidden">
<h2>Choose Your Path</h2>
<p>Answer these questions to find your ideal training path.</p>
<div id="questionnaire-container">
<!-- Questions rendered here -->
</div>
<button id="calculate-path">Calculate Recommended Path</button>
</div>
<!-- Path Results Modal -->
<div id="path-results-modal" class="modal hidden">
<h2>Your Recommended Path</h2>
<div id="recommended-path">
<h3 id="path-name"></h3>
<p id="path-tagline"></p>
<p id="path-description"></p>
<p><strong>Focus:</strong> <span id="path-focus"></span></p>
<p><strong>Graduation:</strong> <span id="path-graduation"></span></p>
</div>
<div id="all-paths">
<h3>Or choose a different path:</h3>
<!-- 6 path cards -->
</div>
<button id="confirm-path">Confirm Path</button>
</div>
<!-- Path Graduation Modal -->
<div id="path-graduation-modal" class="modal hidden">
<h2>🎓 Path Mastery Complete!</h2>
<p>You have mastered the <span id="graduated-path"></span>.</p>
<p>Marathon tier (15x) now unlocked!</p>
<button id="continue-graduation">Continue to Ultimate Mastery</button>
</div>
Testing Checklist:
- Questionnaire renders
- Results display correctly
- All 6 paths selectable
- Graduation modal displays
📏 Measurable Test Criteria
After Phase 4, ALL of these must pass:
Level 21 (Path Selection):
- Questionnaire displays with all 5 questions
- Can answer all questions
- Recommended path calculates correctly
- Path descriptions display
- Can override recommendation
- Selected path saves
- Completing L21 unlocks L22
Level 22 (Path Level 1):
- Correct path structure loads
- Endurance path: Marathon warmup + stamina building work
- Denial path: Extended denial + frustration work
- Humiliation path: Tasks + degrading mantras work
- Obedience path: Commands + instant obedience work
- Sensitivity path: Sensitivity training + slow edges work
- Multi-Sensory path: Feature cascade + total overload work
- Completing L22 unlocks L23
Level 23 (Path Level 2):
- Intermediate difficulty loads
- Path-specific content works
- Completing L23 unlocks L24
Level 24 (Path Level 3):
- Advanced difficulty loads
- Path-specific content works
- Completing L24 unlocks L25
Level 25 (Path Mastery):
- Preference form appears
- Path graduation challenge loads
- Endurance: 2-hour test works
- Denial: 1-hour denial + 100 edges work
- Humiliation: Ego dissolution + gauntlet work
- Obedience: 1-hour instant obedience works
- Sensitivity: Hands-free + slow edge work
- Multi-Sensory: Ultimate overload works
- Path graduation modal displays
- Marathon tier unlocks
- Path Specialization Arc completes
- Completing L25 unlocks L26
Overall:
- All 6 paths functional
- Path selection persists
- No console errors
- Can complete L21 → L25 for any path
- Marathon tier confirmed unlocked
🎯 Success Criteria
Phase 4 Complete When:
- Levels 21-25 fully functional
- All 6 paths implemented
- Path selection system works
- All path-specific actions functional
- All measurable tests pass
- Path graduation displays correctly
- Marathon tier unlocks at L25
📂 Files Created/Modified
New Files:
src/features/academy/pathSelector.jssrc/data/academy/pathData.js
Modified Files:
src/features/tasks/interactiveTaskManager.jssrc/data/modes/academyLevelData.jssrc/core/gameDataManager.jstraining-academy.html
🚀 Next Phase
After Phase 4: Phase 5: Levels 26-30 + Graduation (Ultimate Mastery arc)