bug fixes
This commit is contained in:
parent
41a353a143
commit
ab5d897da3
|
|
@ -0,0 +1,28 @@
|
|||
const fs = require('fs');
|
||||
|
||||
// Remove effects and conditions objects from game.js
|
||||
const filePath = 'src/core/game.js';
|
||||
let content = fs.readFileSync(filePath, 'utf8');
|
||||
|
||||
// Remove effects objects
|
||||
content = content.replace(/,?\s*effects:\s*{[^}]+}/g, '');
|
||||
|
||||
// Remove conditions objects
|
||||
content = content.replace(/,?\s*conditions:\s*{[^}]+}/g, '');
|
||||
|
||||
// Clean up orphaned commas
|
||||
content = content.replace(/\{\s*,/g, '{');
|
||||
content = content.replace(/,\s*\}/g, '}');
|
||||
content = content.replace(/,(\s*),/g, ',');
|
||||
|
||||
// Clean up any lines that only have commas
|
||||
content = content.split('\n').map(line => {
|
||||
const trimmed = line.trim();
|
||||
if (trimmed === ',' || trimmed === ',,' || trimmed === ',,,') {
|
||||
return '';
|
||||
}
|
||||
return line;
|
||||
}).join('\n');
|
||||
|
||||
fs.writeFileSync(filePath, content, 'utf8');
|
||||
console.log('Effects and conditions objects removed from game.js');
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
const fs = require('fs');
|
||||
|
||||
// Remove template variables from game.js story text
|
||||
const filePath = 'src/core/game.js';
|
||||
let content = fs.readFileSync(filePath, 'utf8');
|
||||
|
||||
// Replace template variables with generic text
|
||||
content = content.replace(/Your \{arousal\} level is showing, and your \{control\} needs work/g, 'Your level is showing, and you need to focus');
|
||||
content = content.replace(/Your final stats show \{arousal\} arousal and \{control\} control/g, 'You have completed the session');
|
||||
content = content.replace(/Your final arousal level of \{arousal\} and control level of \{control\}/g, 'Your performance');
|
||||
content = content.replace(/Your arousal is at \{arousal\} and your control is \{control\}/g, 'The punishment is having its effect');
|
||||
content = content.replace(/Your final arousal of \{arousal\} and broken control of \{control\}/g, 'Your state');
|
||||
content = content.replace(/Arousal: \{arousal\}, Control: \{control\}/g, 'Your session state');
|
||||
content = content.replace(/Final state - Arousal: \{arousal\}, Control: \{control\}/g, 'Final state recorded');
|
||||
content = content.replace(/Your \{arousal\} is showing/g, 'Your state is evident');
|
||||
content = content.replace(/Your arousal at \{arousal\} and diminished control at \{control\}/g, 'Your state and responses');
|
||||
content = content.replace(/Final arousal: \{arousal\}, Control: \{control\}/g, 'Final state recorded');
|
||||
|
||||
// Remove any remaining isolated template variables
|
||||
content = content.replace(/\{arousal\}/g, 'your state');
|
||||
content = content.replace(/\{control\}/g, 'your focus');
|
||||
content = content.replace(/\{intensity\}/g, 'the level');
|
||||
|
||||
fs.writeFileSync(filePath, content, 'utf8');
|
||||
console.log('Template variables removed from game.js story text');
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
const fs = require('fs');
|
||||
|
||||
// Remove all remaining counter code from interactiveTaskManager.js
|
||||
const filePath = 'src/features/tasks/interactiveTaskManager.js';
|
||||
let content = fs.readFileSync(filePath, 'utf8');
|
||||
|
||||
// Remove the default state initialization
|
||||
content = content.replace(/arousal: 50,.*?\/\/ 0-100 scale\s*\n/g, '');
|
||||
content = content.replace(/control: 50,.*?\/\/ 0-100 scale.*?\n/g, '');
|
||||
content = content.replace(/intensity: 1,.*?\/\/ 1-3 scale\s*\n/g, '');
|
||||
|
||||
// Remove the effect application functions
|
||||
content = content.replace(/applyChoiceEffects\(choice, state\)\s*\{[\s\S]*?\n\s*\}/g, 'applyChoiceEffects(choice, state) {\n // Effects system removed\n }');
|
||||
content = content.replace(/applyActionEffects\(step, state\)\s*\{[\s\S]*?\n\s*\}/g, 'applyActionEffects(step, state) {\n // Effects system removed\n }');
|
||||
|
||||
// Remove any remaining counter processing in photo selection logic
|
||||
content = content.replace(/const arousal = state\.arousal \|\| 50;/g, '// Counter system removed');
|
||||
content = content.replace(/const control = state\.control \|\| 50;/g, '// Counter system removed');
|
||||
|
||||
// Replace arousal-based photo logic with simple static logic
|
||||
content = content.replace(/if \(arousal >= 80\) \{[\s\S]*?\} else if \(arousal >= 60\) \{[\s\S]*?\} else if \(arousal >= 40\) \{[\s\S]*?\}/g, 'photoCount += 1; // Static photo count');
|
||||
|
||||
// Remove any conditional logic based on control
|
||||
content = content.replace(/if \(control >= 70\) \{[\s\S]*?\}/g, '// Control-based logic removed');
|
||||
|
||||
fs.writeFileSync(filePath, content, 'utf8');
|
||||
console.log('Counter code removed from interactiveTaskManager.js');
|
||||
148
src/core/game.js
148
src/core/game.js
|
|
@ -330,21 +330,18 @@ class TaskChallengeGame {
|
|||
text: "Yes, I want to be challenged",
|
||||
type: "dominant",
|
||||
preview: "Show eagerness for intense training",
|
||||
effects: { arousal: 10, intensity: 1 },
|
||||
nextStep: "eager_path"
|
||||
},
|
||||
{
|
||||
text: "I'm nervous, please be gentle",
|
||||
type: "submissive",
|
||||
preview: "Ask for a softer approach",
|
||||
effects: { arousal: 5, control: 10 },
|
||||
nextStep: "gentle_path"
|
||||
},
|
||||
{
|
||||
text: "I want to set the pace myself",
|
||||
type: "normal",
|
||||
preview: "Take control of the session",
|
||||
effects: { control: 15 },
|
||||
nextStep: "controlled_path"
|
||||
}
|
||||
]
|
||||
|
|
@ -355,7 +352,6 @@ class TaskChallengeGame {
|
|||
story: "Your trainer grins. 'Good, I like enthusiasm. Let's start with some warm-up exercises. I want you to edge for exactly 30 seconds - no more, no less. Show me your control.'",
|
||||
actionText: "Edge for exactly 30 seconds",
|
||||
duration: 30,
|
||||
effects: { arousal: 20, control: -5 },
|
||||
nextStep: "post_warmup"
|
||||
},
|
||||
gentle_path: {
|
||||
|
|
@ -364,7 +360,6 @@ class TaskChallengeGame {
|
|||
story: "Your trainer's expression softens. 'Of course, we'll take this slow. Begin with gentle touches, just enough to warm up. Take your time - 45 seconds of light stimulation.'",
|
||||
actionText: "Gentle warm-up touches",
|
||||
duration: 45,
|
||||
effects: { arousal: 15, control: 5 },
|
||||
nextStep: "post_warmup"
|
||||
},
|
||||
controlled_path: {
|
||||
|
|
@ -375,13 +370,11 @@ class TaskChallengeGame {
|
|||
{
|
||||
text: "Test my endurance",
|
||||
preview: "Long, controlled session",
|
||||
effects: { intensity: 1 },
|
||||
nextStep: "endurance_test"
|
||||
},
|
||||
{
|
||||
text: "Practice precise control",
|
||||
preview: "Focus on technique",
|
||||
effects: { control: 10 },
|
||||
nextStep: "precision_test"
|
||||
}
|
||||
]
|
||||
|
|
@ -389,20 +382,17 @@ class TaskChallengeGame {
|
|||
post_warmup: {
|
||||
type: 'choice',
|
||||
mood: 'seductive',
|
||||
story: "Your trainer watches your performance with interest. 'Not bad... but now comes the real test. Your {arousal} level is showing, and your {control} needs work. What's next?'",
|
||||
story: "Your trainer watches your performance with interest. 'Not bad... but now comes the real test. Your level is showing, and you need to focus. What's next?'",
|
||||
choices: [
|
||||
{
|
||||
text: "Push me harder",
|
||||
type: "risky",
|
||||
preview: "Increase the intensity",
|
||||
conditions: { arousal: 20 },
|
||||
effects: { arousal: 15, intensity: 1 },
|
||||
nextStep: "intense_challenge"
|
||||
},
|
||||
{
|
||||
text: "I need to slow down",
|
||||
preview: "Take a breather",
|
||||
effects: { arousal: -10, control: 15 },
|
||||
nextStep: "recovery_break"
|
||||
},
|
||||
{
|
||||
|
|
@ -418,7 +408,6 @@ class TaskChallengeGame {
|
|||
story: "Your trainer's eyes light up. 'Now we're talking! I want you to edge three times in a row - get close, then stop completely. Each edge should be more intense than the last. Can you handle it?'",
|
||||
actionText: "Triple edge challenge - 60 seconds",
|
||||
duration: 60,
|
||||
effects: { arousal: 30, control: -10 },
|
||||
nextStep: "final_outcome"
|
||||
},
|
||||
recovery_break: {
|
||||
|
|
@ -427,7 +416,6 @@ class TaskChallengeGame {
|
|||
story: "Your trainer nods understandingly. 'Smart choice. Sometimes knowing your limits is the most important skill. Take 30 seconds to breathe and center yourself.'",
|
||||
actionText: "Recovery breathing - hands off",
|
||||
duration: 30,
|
||||
effects: { arousal: -15, control: 20 },
|
||||
nextStep: "final_outcome"
|
||||
},
|
||||
creative_challenge: {
|
||||
|
|
@ -438,13 +426,11 @@ class TaskChallengeGame {
|
|||
{
|
||||
text: "Change positions every 10 seconds",
|
||||
preview: "Dynamic movement challenge",
|
||||
effects: { arousal: 10, control: 5 },
|
||||
nextStep: "position_challenge"
|
||||
},
|
||||
{
|
||||
text: "Use different rhythms",
|
||||
preview: "Rhythm variation exercise",
|
||||
effects: { arousal: 15 },
|
||||
nextStep: "rhythm_challenge"
|
||||
}
|
||||
]
|
||||
|
|
@ -455,7 +441,6 @@ class TaskChallengeGame {
|
|||
story: "Your trainer starts counting. 'Every 10 seconds, I want you to change your position. Standing, sitting, lying down - keep moving, keep stimulating. Ready?'",
|
||||
actionText: "Position changes every 10 seconds",
|
||||
duration: 40,
|
||||
effects: { arousal: 20, control: -5 },
|
||||
nextStep: "final_outcome"
|
||||
},
|
||||
rhythm_challenge: {
|
||||
|
|
@ -464,14 +449,13 @@ class TaskChallengeGame {
|
|||
story: "Your trainer begins snapping their fingers in different rhythms. 'Match my beat. Slow... fast... slow again... Can you keep up while staying focused?'",
|
||||
actionText: "Follow the changing rhythm",
|
||||
duration: 45,
|
||||
effects: { arousal: 25, control: 5 },
|
||||
nextStep: "final_outcome"
|
||||
},
|
||||
final_outcome: {
|
||||
type: 'ending',
|
||||
mood: 'satisfied',
|
||||
story: "Your trainer evaluates your performance with a satisfied expression. Based on your choices and control, they have some final words for you...",
|
||||
endingText: "Training session complete. Your final stats show {arousal} arousal and {control} control. You've learned something valuable about yourself today.",
|
||||
endingText: "Training session complete. You have completed the session. You've learned something valuable about yourself today.",
|
||||
outcome: "success"
|
||||
}
|
||||
}
|
||||
|
|
@ -495,7 +479,6 @@ class TaskChallengeGame {
|
|||
text: "Accept the challenge",
|
||||
type: "risky",
|
||||
preview: "Enter the unknown game",
|
||||
effects: { arousal: 15, intensity: 1 },
|
||||
nextStep: "game_begins"
|
||||
},
|
||||
{
|
||||
|
|
@ -514,13 +497,11 @@ class TaskChallengeGame {
|
|||
text: "Trial of Endurance",
|
||||
type: "risky",
|
||||
preview: "Test your limits",
|
||||
effects: { intensity: 1 },
|
||||
nextStep: "endurance_trial"
|
||||
},
|
||||
{
|
||||
text: "Trial of Precision",
|
||||
preview: "Test your control",
|
||||
effects: { control: 10 },
|
||||
nextStep: "precision_trial"
|
||||
}
|
||||
]
|
||||
|
|
@ -531,7 +512,6 @@ class TaskChallengeGame {
|
|||
story: "The voice commands: 'Edge continuously for 90 seconds. Do not stop, do not climax. Prove your endurance...'",
|
||||
actionText: "Endurance test - 90 seconds",
|
||||
duration: 90,
|
||||
effects: { arousal: 40, control: -15 },
|
||||
nextStep: "game_result"
|
||||
},
|
||||
precision_trial: {
|
||||
|
|
@ -540,13 +520,12 @@ class TaskChallengeGame {
|
|||
story: "The voice instructs: 'Edge exactly to the point of no return, then stop. Hold for 10 seconds. Repeat 3 times. Precision is key...'",
|
||||
actionText: "Precision control test",
|
||||
duration: 60,
|
||||
effects: { arousal: 30, control: 10 },
|
||||
nextStep: "game_result"
|
||||
},
|
||||
game_result: {
|
||||
type: 'ending',
|
||||
mood: 'mysterious',
|
||||
story: "The mysterious voice evaluates your performance. Your final arousal level of {arousal} and control level of {control} determine your fate...",
|
||||
story: "The mysterious voice evaluates your performance. Your performance determine your fate...",
|
||||
endingText: "The game concludes. You have proven yourself worthy of... what comes next remains a mystery for another time.",
|
||||
outcome: "partial"
|
||||
},
|
||||
|
|
@ -578,21 +557,18 @@ class TaskChallengeGame {
|
|||
text: "Accept punishment willingly",
|
||||
type: "submissive",
|
||||
preview: "Show complete submission",
|
||||
effects: { arousal: 10, control: -10 },
|
||||
nextStep: "willing_punishment"
|
||||
},
|
||||
{
|
||||
text: "Try to negotiate for mercy",
|
||||
type: "normal",
|
||||
preview: "Attempt to reduce the severity",
|
||||
effects: { control: 5 },
|
||||
nextStep: "bargaining"
|
||||
},
|
||||
{
|
||||
text: "Remain defiant and silent",
|
||||
type: "risky",
|
||||
preview: "Show no submission",
|
||||
effects: { control: 10, intensity: 1 },
|
||||
nextStep: "defiant_path"
|
||||
}
|
||||
]
|
||||
|
|
@ -606,21 +582,18 @@ class TaskChallengeGame {
|
|||
text: "Painful nipple pinching for 30 seconds",
|
||||
type: "submissive",
|
||||
preview: "Sharp, focused pain",
|
||||
effects: { arousal: 15, intensity: 1 },
|
||||
nextStep: "nipple_punishment"
|
||||
},
|
||||
{
|
||||
text: "Humiliating position holding",
|
||||
type: "submissive",
|
||||
preview: "Degrading poses",
|
||||
effects: { arousal: 10, control: -15 },
|
||||
nextStep: "position_punishment"
|
||||
},
|
||||
{
|
||||
text: "Denial edging with no release",
|
||||
type: "risky",
|
||||
preview: "Cruel frustration",
|
||||
effects: { arousal: 25, control: -20 },
|
||||
nextStep: "denial_punishment"
|
||||
}
|
||||
]
|
||||
|
|
@ -633,14 +606,12 @@ class TaskChallengeGame {
|
|||
{
|
||||
text: "Accept the extra punishment",
|
||||
preview: "Original plus additional tasks",
|
||||
effects: { arousal: 5, intensity: 1 },
|
||||
nextStep: "extra_punishment"
|
||||
},
|
||||
{
|
||||
text: "Take the double punishment",
|
||||
type: "risky",
|
||||
preview: "Twice the consequences",
|
||||
effects: { intensity: 2 },
|
||||
nextStep: "double_punishment"
|
||||
}
|
||||
]
|
||||
|
|
@ -651,7 +622,6 @@ class TaskChallengeGame {
|
|||
story: "Your defiance is noted with displeasure. 'So be it. We'll break that attitude. Strip completely and assume a humiliating position on all fours. Hold it for 2 full minutes while contemplating your disobedience.'",
|
||||
actionText: "Humiliating position - naked on all fours",
|
||||
duration: 120,
|
||||
effects: { arousal: 20, control: -25 },
|
||||
nextStep: "broken_defiance"
|
||||
},
|
||||
nipple_punishment: {
|
||||
|
|
@ -660,7 +630,6 @@ class TaskChallengeGame {
|
|||
story: "Take your nipples between your fingers. Pinch them hard - harder than comfortable. Hold that pressure for the full duration. No releasing early.",
|
||||
actionText: "Painful nipple pinching",
|
||||
duration: 30,
|
||||
effects: { arousal: 20, intensity: 1 },
|
||||
nextStep: "punishment_continues"
|
||||
},
|
||||
position_punishment: {
|
||||
|
|
@ -669,7 +638,6 @@ class TaskChallengeGame {
|
|||
story: "Get on your knees, spread them wide, and put your hands behind your head. Arch your back and present yourself shamefully. Hold this degrading position and think about what a pathetic display you're making.",
|
||||
actionText: "Humiliating presentation position",
|
||||
duration: 45,
|
||||
effects: { arousal: 15, control: -20 },
|
||||
nextStep: "punishment_continues"
|
||||
},
|
||||
denial_punishment: {
|
||||
|
|
@ -678,7 +646,6 @@ class TaskChallengeGame {
|
|||
story: "Begin edging yourself slowly. Build up the pleasure, get close to the edge, then stop completely. Repeat this cycle, but you are absolutely forbidden from cumming. Feel the cruel frustration build.",
|
||||
actionText: "Denial edging - no release allowed",
|
||||
duration: 90,
|
||||
effects: { arousal: 40, control: -30 },
|
||||
nextStep: "punishment_continues"
|
||||
},
|
||||
extra_punishment: {
|
||||
|
|
@ -687,7 +654,6 @@ class TaskChallengeGame {
|
|||
story: "Your bargaining has consequences. Slap your inner thighs 10 times each, then edge for 60 seconds without completion. This is what happens when you try to negotiate.",
|
||||
actionText: "Thigh slapping plus denial edging",
|
||||
duration: 75,
|
||||
effects: { arousal: 25, control: -15, intensity: 1 },
|
||||
nextStep: "punishment_continues"
|
||||
},
|
||||
double_punishment: {
|
||||
|
|
@ -696,7 +662,6 @@ class TaskChallengeGame {
|
|||
story: "You chose the harder path. First, painful nipple clamps or pinching for 45 seconds, then immediately into frustrating edge denial for another 45 seconds. No breaks between.",
|
||||
actionText: "Double punishment - pain then denial",
|
||||
duration: 90,
|
||||
effects: { arousal: 35, control: -25, intensity: 2 },
|
||||
nextStep: "punishment_continues"
|
||||
},
|
||||
broken_defiance: {
|
||||
|
|
@ -708,15 +673,12 @@ class TaskChallengeGame {
|
|||
text: "I submit completely now",
|
||||
type: "submissive",
|
||||
preview: "Full surrender",
|
||||
effects: { control: -20 },
|
||||
nextStep: "final_submission"
|
||||
},
|
||||
{
|
||||
text: "I still resist",
|
||||
type: "risky",
|
||||
preview: "Continue defiance",
|
||||
conditions: { control: 20 },
|
||||
effects: { intensity: 1 },
|
||||
nextStep: "ultimate_punishment"
|
||||
}
|
||||
]
|
||||
|
|
@ -724,21 +686,18 @@ class TaskChallengeGame {
|
|||
punishment_continues: {
|
||||
type: 'choice',
|
||||
mood: 'evaluating',
|
||||
story: "Your punishment is having its effect. Your arousal is at {arousal} and your control is {control}. There's still more to your sentence. What comes next?",
|
||||
story: "Your punishment is having its effect. The punishment is having its effect. There's still more to your sentence. What comes next?",
|
||||
choices: [
|
||||
{
|
||||
text: "Please, I've learned my lesson",
|
||||
type: "submissive",
|
||||
preview: "Beg for mercy",
|
||||
effects: { control: -10 },
|
||||
nextStep: "mercy_consideration"
|
||||
},
|
||||
{
|
||||
text: "I can take whatever you give me",
|
||||
type: "risky",
|
||||
preview: "Challenge for more",
|
||||
conditions: { arousal: 30 },
|
||||
effects: { intensity: 1 },
|
||||
nextStep: "escalated_punishment"
|
||||
},
|
||||
{
|
||||
|
|
@ -752,7 +711,7 @@ class TaskChallengeGame {
|
|||
type: 'ending',
|
||||
mood: 'satisfied',
|
||||
story: "Your begging is noted. Perhaps you have learned something after all. Your punishment ends here, but remember this lesson.",
|
||||
endingText: "Punishment session concluded. Your final arousal of {arousal} and broken control of {control} show the effectiveness of proper discipline.",
|
||||
endingText: "Punishment session concluded. Your state show the effectiveness of proper discipline.",
|
||||
outcome: "partial"
|
||||
},
|
||||
escalated_punishment: {
|
||||
|
|
@ -761,7 +720,6 @@ class TaskChallengeGame {
|
|||
story: "Your boldness will be your downfall. Final punishment: intense edging while in a painful position. Build to the edge three times but never release. Learn your place.",
|
||||
actionText: "Intense edge torture - no release",
|
||||
duration: 120,
|
||||
effects: { arousal: 40, control: -30 },
|
||||
nextStep: "punishment_complete"
|
||||
},
|
||||
final_punishment: {
|
||||
|
|
@ -770,14 +728,13 @@ class TaskChallengeGame {
|
|||
story: "Your acceptance is noted. One final test of your submission: edge slowly and stop exactly when told. Show you've learned control through punishment.",
|
||||
actionText: "Controlled edging demonstration",
|
||||
duration: 60,
|
||||
effects: { arousal: 30, control: 10 },
|
||||
nextStep: "punishment_complete"
|
||||
},
|
||||
final_submission: {
|
||||
type: 'ending',
|
||||
mood: 'satisfied',
|
||||
story: "Finally, proper submission. Your defiance has been broken and replaced with appropriate obedience.",
|
||||
endingText: "Your punishment session ends with your complete submission. Arousal: {arousal}, Control: {control}. Remember this feeling.",
|
||||
endingText: "Your punishment session ends with your complete submission. Your session state. Remember this feeling.",
|
||||
outcome: "success"
|
||||
},
|
||||
ultimate_punishment: {
|
||||
|
|
@ -786,14 +743,13 @@ class TaskChallengeGame {
|
|||
story: "Your continued resistance demands the ultimate punishment. Painful edging in the most humiliating position possible, building arousal while maintaining your shameful display.",
|
||||
actionText: "Ultimate humiliation punishment",
|
||||
duration: 150,
|
||||
effects: { arousal: 50, control: -40 },
|
||||
nextStep: "punishment_complete"
|
||||
},
|
||||
punishment_complete: {
|
||||
type: 'ending',
|
||||
mood: 'concluded',
|
||||
story: "Your punishment session is complete. The lesson has been delivered and received.",
|
||||
endingText: "Punishment concluded. Final state - Arousal: {arousal}, Control: {control}. You have experienced the consequences of your actions.",
|
||||
endingText: "Punishment concluded. Final state - Your session state. You have experienced the consequences of your actions.",
|
||||
outcome: "punishment"
|
||||
}
|
||||
}
|
||||
|
|
@ -817,20 +773,17 @@ class TaskChallengeGame {
|
|||
text: "Yes, I want to feel humiliated",
|
||||
type: "submissive",
|
||||
preview: "Embrace the degradation",
|
||||
effects: { arousal: 15, control: -10 },
|
||||
nextStep: "eager_humiliation"
|
||||
},
|
||||
{
|
||||
text: "Start with something mild",
|
||||
type: "normal",
|
||||
preview: "Ease into it",
|
||||
effects: { arousal: 5 },
|
||||
nextStep: "mild_start"
|
||||
},
|
||||
{
|
||||
text: "I'm not sure about this",
|
||||
preview: "Hesitant participation",
|
||||
effects: { control: 5 },
|
||||
nextStep: "reluctant_start"
|
||||
}
|
||||
]
|
||||
|
|
@ -844,21 +797,18 @@ class TaskChallengeGame {
|
|||
text: "Crawl around naked on all fours",
|
||||
type: "submissive",
|
||||
preview: "Animal-like degradation",
|
||||
effects: { arousal: 10, control: -15 },
|
||||
nextStep: "crawling_task"
|
||||
},
|
||||
{
|
||||
text: "Repeat degrading phrases about yourself",
|
||||
type: "submissive",
|
||||
preview: "Verbal self-humiliation",
|
||||
effects: { arousal: 15, control: -20 },
|
||||
nextStep: "verbal_humiliation"
|
||||
},
|
||||
{
|
||||
text: "Assume shameful positions",
|
||||
type: "submissive",
|
||||
preview: "Degrading physical poses",
|
||||
effects: { arousal: 12, control: -12 },
|
||||
nextStep: "position_humiliation"
|
||||
}
|
||||
]
|
||||
|
|
@ -869,7 +819,6 @@ class TaskChallengeGame {
|
|||
story: "We'll ease you into this. Start by removing your clothes slowly while thinking about how exposed and vulnerable you're becoming. Take your time and really feel the vulnerability.",
|
||||
actionText: "Slow, deliberate undressing",
|
||||
duration: 45,
|
||||
effects: { arousal: 10, control: -5 },
|
||||
nextStep: "building_shame"
|
||||
},
|
||||
reluctant_start: {
|
||||
|
|
@ -880,7 +829,6 @@ class TaskChallengeGame {
|
|||
{
|
||||
text: "Try something very gentle",
|
||||
preview: "Minimal humiliation",
|
||||
effects: { arousal: 5 },
|
||||
nextStep: "gentle_humiliation"
|
||||
},
|
||||
{
|
||||
|
|
@ -896,7 +844,6 @@ class TaskChallengeGame {
|
|||
story: "Get down on your hands and knees. Crawl in a circle around the room like the animal you are. Feel how degrading this position is. You're not a person right now - you're just a pathetic creature on display.",
|
||||
actionText: "Crawling like an animal",
|
||||
duration: 60,
|
||||
effects: { arousal: 20, control: -25 },
|
||||
nextStep: "humiliation_escalates"
|
||||
},
|
||||
verbal_humiliation: {
|
||||
|
|
@ -905,7 +852,6 @@ class TaskChallengeGame {
|
|||
story: "Complete the webcam mirror task to look at yourself and repeat degrading phrases: 'I am a pathetic toy', 'I exist for others' pleasure', 'I have no dignity'. Say each phrase 5 times while looking at yourself.",
|
||||
actionText: "Complete webcam mirror self-degradation task",
|
||||
duration: 45,
|
||||
effects: { arousal: 25, control: -30 },
|
||||
nextStep: "humiliation_escalates",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Look directly at yourself through the webcam while speaking the degrading phrases",
|
||||
|
|
@ -917,19 +863,17 @@ class TaskChallengeGame {
|
|||
story: "Assume the most shameful position you can think of. Spread yourself wide, arch your back, present yourself like you're begging for attention. Hold this degrading pose and feel the shame wash over you.",
|
||||
actionText: "Shameful presentation position",
|
||||
duration: 50,
|
||||
effects: { arousal: 18, control: -20 },
|
||||
nextStep: "humiliation_escalates"
|
||||
},
|
||||
building_shame: {
|
||||
type: 'choice',
|
||||
mood: 'building',
|
||||
story: "Good. Now that you're exposed and vulnerable, you can feel the humiliation starting to build. Your {arousal} is showing. Ready for the next level of degradation?",
|
||||
story: "Good. Now that you're exposed and vulnerable, you can feel the humiliation starting to build. Your state is evident. Ready for the next level of degradation?",
|
||||
choices: [
|
||||
{
|
||||
text: "Yes, humiliate me more",
|
||||
type: "submissive",
|
||||
preview: "Increase the shame",
|
||||
effects: { arousal: 10, control: -10 },
|
||||
nextStep: "deeper_humiliation"
|
||||
},
|
||||
{
|
||||
|
|
@ -945,27 +889,23 @@ class TaskChallengeGame {
|
|||
story: "Just stand naked and look at yourself. Notice how exposed you feel. There's something humbling about vulnerability, isn't there? Take a moment to appreciate this feeling.",
|
||||
actionText: "Gentle self-awareness",
|
||||
duration: 30,
|
||||
effects: { arousal: 8, control: -5 },
|
||||
nextStep: "gentle_conclusion"
|
||||
},
|
||||
humiliation_escalates: {
|
||||
type: 'choice',
|
||||
mood: 'intense',
|
||||
story: "The humiliation is taking effect. Your arousal at {arousal} and diminished control at {control} show how the degradation is affecting you. Time for the final humiliating task.",
|
||||
story: "The humiliation is taking effect. Your state and responses show how the degradation is affecting you. Time for the final humiliating task.",
|
||||
choices: [
|
||||
{
|
||||
text: "Beg to be used and humiliated",
|
||||
type: "submissive",
|
||||
preview: "Complete verbal submission",
|
||||
effects: { arousal: 20, control: -25 },
|
||||
nextStep: "complete_degradation"
|
||||
},
|
||||
{
|
||||
text: "Perform the most shameful act I can think of",
|
||||
type: "risky",
|
||||
preview: "Ultimate personal humiliation",
|
||||
conditions: { arousal: 25 },
|
||||
effects: { arousal: 30, control: -35 },
|
||||
nextStep: "ultimate_shame"
|
||||
},
|
||||
{
|
||||
|
|
@ -981,7 +921,6 @@ class TaskChallengeGame {
|
|||
story: "Now for deeper shame. Assume a degrading position and edge yourself while repeating how pathetic and shameful you are. Build the arousal while embracing the humiliation.",
|
||||
actionText: "Degrading edge while self-shaming",
|
||||
duration: 75,
|
||||
effects: { arousal: 30, control: -25 },
|
||||
nextStep: "humiliation_complete"
|
||||
},
|
||||
complete_degradation: {
|
||||
|
|
@ -990,7 +929,6 @@ class TaskChallengeGame {
|
|||
story: "Beg out loud. Say exactly what you want done to you. Describe how pathetic you are and how much you need to be used. Let the words shame you as much as the actions.",
|
||||
actionText: "Verbal begging and self-degradation",
|
||||
duration: 60,
|
||||
effects: { arousal: 35, control: -40 },
|
||||
nextStep: "humiliation_complete"
|
||||
},
|
||||
ultimate_shame: {
|
||||
|
|
@ -999,28 +937,27 @@ class TaskChallengeGame {
|
|||
story: "Do whatever shameful act comes to mind - the thing that would embarrass you most. This is your ultimate degradation, chosen by your own twisted desires.",
|
||||
actionText: "Personal ultimate shame act",
|
||||
duration: 90,
|
||||
effects: { arousal: 50, control: -50 },
|
||||
nextStep: "humiliation_complete"
|
||||
},
|
||||
gentle_conclusion: {
|
||||
type: 'ending',
|
||||
mood: 'gentle',
|
||||
story: "You've experienced a taste of humiliation without going too far. Sometimes just the hint of shame is enough.",
|
||||
endingText: "Gentle humiliation session complete. You maintained some dignity while exploring new feelings. Arousal: {arousal}, Control: {control}.",
|
||||
endingText: "Gentle humiliation session complete. You maintained some dignity while exploring new feelings. Your session state.",
|
||||
outcome: "partial"
|
||||
},
|
||||
mercy_ending: {
|
||||
type: 'ending',
|
||||
mood: 'understanding',
|
||||
story: "You've reached your limit, and that's perfectly acceptable. Knowing your boundaries is important.",
|
||||
endingText: "Humiliation session ended at your request. You explored your limits safely. Final arousal: {arousal}, Control: {control}.",
|
||||
endingText: "Humiliation session ended at your request. You explored your limits safely. Final state recorded.",
|
||||
outcome: "partial"
|
||||
},
|
||||
humiliation_complete: {
|
||||
type: 'ending',
|
||||
mood: 'satisfied',
|
||||
story: "Your humiliation session is complete. You've been thoroughly degraded and shamefully aroused.",
|
||||
endingText: "Complete humiliation achieved. Your final state shows the effect: Arousal {arousal}, Control {control}. You've been properly put in your place.",
|
||||
endingText: "Complete humiliation achieved. Your final state shows the effect: Arousal your state, Control your focus. You've been properly put in your place.",
|
||||
outcome: "success"
|
||||
},
|
||||
respectful_exit: {
|
||||
|
|
@ -1051,20 +988,17 @@ class TaskChallengeGame {
|
|||
text: "I want the full intense experience",
|
||||
type: "risky",
|
||||
preview: "Maximum difficulty marathon",
|
||||
effects: { arousal: 20, intensity: 2 },
|
||||
nextStep: "intense_marathon"
|
||||
},
|
||||
{
|
||||
text: "Give me a challenging but manageable pace",
|
||||
type: "normal",
|
||||
preview: "Moderate intensity marathon",
|
||||
effects: { arousal: 15, intensity: 1 },
|
||||
nextStep: "moderate_marathon"
|
||||
},
|
||||
{
|
||||
text: "Start me off gently",
|
||||
preview: "Easier introduction to edging",
|
||||
effects: { arousal: 10 },
|
||||
nextStep: "gentle_marathon"
|
||||
}
|
||||
]
|
||||
|
|
@ -1075,7 +1009,6 @@ class TaskChallengeGame {
|
|||
story: "The intense marathon begins now. Edge for 90 seconds, getting as close as possible to climax, then stop completely for 30 seconds. This cycle will repeat. No mercy, no early finish.",
|
||||
actionText: "Intense edging cycle - 90 seconds",
|
||||
duration: 90,
|
||||
effects: { arousal: 35, control: -20 },
|
||||
nextStep: "marathon_continues"
|
||||
},
|
||||
moderate_marathon: {
|
||||
|
|
@ -1084,7 +1017,6 @@ class TaskChallengeGame {
|
|||
story: "The moderate marathon begins. Edge for 60 seconds, building arousal steadily, then take a 20-second break. Find your rhythm and try to maintain control.",
|
||||
actionText: "Moderate edging cycle - 60 seconds",
|
||||
duration: 60,
|
||||
effects: { arousal: 25, control: -10 },
|
||||
nextStep: "marathon_continues"
|
||||
},
|
||||
gentle_marathon: {
|
||||
|
|
@ -1093,32 +1025,27 @@ class TaskChallengeGame {
|
|||
story: "The gentle marathon starts slowly. Edge for 45 seconds, focusing on building arousal gradually. You'll have time to recover between cycles.",
|
||||
actionText: "Gentle edging introduction - 45 seconds",
|
||||
duration: 45,
|
||||
effects: { arousal: 20, control: -5 },
|
||||
nextStep: "marathon_continues"
|
||||
},
|
||||
marathon_continues: {
|
||||
type: 'choice',
|
||||
mood: 'testing',
|
||||
story: "Round one complete. Your arousal is at {arousal} and your control is at {control}. The marathon continues. How are you feeling for the next round?",
|
||||
story: "Round one complete. Your arousal is at your state and your control is at your focus. The marathon continues. How are you feeling for the next round?",
|
||||
choices: [
|
||||
{
|
||||
text: "I can handle more intensity",
|
||||
type: "risky",
|
||||
preview: "Increase the challenge",
|
||||
conditions: { control: 30 },
|
||||
effects: { arousal: 15, intensity: 1 },
|
||||
nextStep: "escalated_round"
|
||||
},
|
||||
{
|
||||
text: "Keep the same pace",
|
||||
preview: "Maintain current intensity",
|
||||
effects: { arousal: 10 },
|
||||
nextStep: "consistent_round"
|
||||
},
|
||||
{
|
||||
text: "I need to slow down",
|
||||
preview: "Reduce intensity",
|
||||
effects: { arousal: -5, control: 10 },
|
||||
nextStep: "recovery_round"
|
||||
},
|
||||
{
|
||||
|
|
@ -1134,7 +1061,6 @@ class TaskChallengeGame {
|
|||
story: "You asked for more intensity. Edge for 2 full minutes this time, getting closer to the edge than before. No stopping until the timer ends. Push your limits.",
|
||||
actionText: "Extended intense edging - 120 seconds",
|
||||
duration: 120,
|
||||
effects: { arousal: 40, control: -25 },
|
||||
nextStep: "final_challenge"
|
||||
},
|
||||
consistent_round: {
|
||||
|
|
@ -1143,7 +1069,6 @@ class TaskChallengeGame {
|
|||
story: "Maintaining the same intensity. Continue your edging pattern, staying consistent with your rhythm. Build that arousal steadily.",
|
||||
actionText: "Consistent edging round",
|
||||
duration: 75,
|
||||
effects: { arousal: 20, control: -10 },
|
||||
nextStep: "final_challenge"
|
||||
},
|
||||
recovery_round: {
|
||||
|
|
@ -1152,33 +1077,28 @@ class TaskChallengeGame {
|
|||
story: "Taking it easier this round. Light touches and gentle stimulation. Focus on maintaining arousal without overwhelming yourself.",
|
||||
actionText: "Recovery round - gentle touches",
|
||||
duration: 45,
|
||||
effects: { arousal: 10, control: 5 },
|
||||
nextStep: "final_challenge"
|
||||
},
|
||||
final_challenge: {
|
||||
type: 'choice',
|
||||
mood: 'climactic',
|
||||
story: "This is the final challenge of your edging marathon. Your arousal is at {arousal} and your control is {control}. Choose how you want to finish this marathon.",
|
||||
story: "This is the final challenge of your edging marathon. The punishment is having its effect. Choose how you want to finish this marathon.",
|
||||
choices: [
|
||||
{
|
||||
text: "Ultimate edge - get as close as possible",
|
||||
type: "risky",
|
||||
preview: "Maximum arousal challenge",
|
||||
conditions: { arousal: 40 },
|
||||
effects: { arousal: 30, control: -30 },
|
||||
nextStep: "ultimate_edge"
|
||||
},
|
||||
{
|
||||
text: "Controlled finish - demonstrate precision",
|
||||
preview: "Skill-based conclusion",
|
||||
effects: { control: 15 },
|
||||
nextStep: "precision_finish"
|
||||
},
|
||||
{
|
||||
text: "Denied finish - stop before completion",
|
||||
type: "submissive",
|
||||
preview: "Frustrating denial ending",
|
||||
effects: { arousal: 20, control: -20 },
|
||||
nextStep: "denial_finish"
|
||||
}
|
||||
]
|
||||
|
|
@ -1189,7 +1109,6 @@ class TaskChallengeGame {
|
|||
story: "The ultimate edge challenge. Get as close to climax as humanly possible without going over. This is the test of your marathon training. Hold that edge for as long as you can.",
|
||||
actionText: "Ultimate edge challenge",
|
||||
duration: 60,
|
||||
effects: { arousal: 50, control: -40 },
|
||||
nextStep: "marathon_complete"
|
||||
},
|
||||
precision_finish: {
|
||||
|
|
@ -1198,7 +1117,6 @@ class TaskChallengeGame {
|
|||
story: "Show the precision you've developed. Edge exactly to your predetermined point, hold for 10 seconds, then stop cleanly. Demonstrate your newfound control.",
|
||||
actionText: "Precision control demonstration",
|
||||
duration: 45,
|
||||
effects: { arousal: 25, control: 20 },
|
||||
nextStep: "marathon_complete"
|
||||
},
|
||||
denial_finish: {
|
||||
|
|
@ -1207,21 +1125,20 @@ class TaskChallengeGame {
|
|||
story: "Build up your arousal one final time, then stop completely when you're desperately close. Feel the cruel frustration of denial after all that work.",
|
||||
actionText: "Final denial - no release",
|
||||
duration: 30,
|
||||
effects: { arousal: 40, control: -35 },
|
||||
nextStep: "marathon_complete"
|
||||
},
|
||||
early_finish: {
|
||||
type: 'ending',
|
||||
mood: 'understanding',
|
||||
story: "You've pushed yourself as far as you could go. Sometimes knowing when to stop is the greatest skill.",
|
||||
endingText: "Marathon ended early by choice. You challenged yourself and learned your limits. Arousal: {arousal}, Control: {control}.",
|
||||
endingText: "Marathon ended early by choice. You challenged yourself and learned your limits. Your session state.",
|
||||
outcome: "partial"
|
||||
},
|
||||
marathon_complete: {
|
||||
type: 'ending',
|
||||
mood: 'accomplished',
|
||||
story: "The edging marathon is complete. You've endured the full challenge and tested your limits.",
|
||||
endingText: "Edging marathon finished! Your final state shows your endurance: Arousal {arousal}, Control {control}. You've proven your dedication.",
|
||||
endingText: "Edging marathon finished! Your final state shows your endurance: Arousal your state, Control your focus. You've proven your dedication.",
|
||||
outcome: "success"
|
||||
}
|
||||
}
|
||||
|
|
@ -1245,21 +1162,18 @@ class TaskChallengeGame {
|
|||
text: "Stand at attention, ready to obey",
|
||||
type: "submissive",
|
||||
preview: "Show immediate submission",
|
||||
effects: { control: -10, arousal: 10 },
|
||||
nextStep: "good_start"
|
||||
},
|
||||
{
|
||||
text: "Ask what the training involves",
|
||||
type: "normal",
|
||||
preview: "Seek clarification",
|
||||
effects: { control: 5 },
|
||||
nextStep: "questioning_attitude"
|
||||
},
|
||||
{
|
||||
text: "Cross arms and look skeptical",
|
||||
type: "risky",
|
||||
preview: "Show resistance",
|
||||
effects: { control: 15, intensity: 1 },
|
||||
nextStep: "resistance_noted"
|
||||
}
|
||||
]
|
||||
|
|
@ -1273,19 +1187,16 @@ class TaskChallengeGame {
|
|||
text: "Position training - assume commanded poses",
|
||||
type: "submissive",
|
||||
preview: "Physical obedience",
|
||||
effects: { arousal: 15, control: -15 },
|
||||
nextStep: "position_training"
|
||||
},
|
||||
{
|
||||
text: "Response training - verbal acknowledgments",
|
||||
preview: "Verbal obedience",
|
||||
effects: { arousal: 10, control: -5 },
|
||||
nextStep: "response_training"
|
||||
},
|
||||
{
|
||||
text: "Timing training - precise execution",
|
||||
preview: "Precision obedience",
|
||||
effects: { control: 5 },
|
||||
nextStep: "timing_training"
|
||||
}
|
||||
]
|
||||
|
|
@ -1299,13 +1210,11 @@ class TaskChallengeGame {
|
|||
text: "Apologize and prepare to obey",
|
||||
type: "submissive",
|
||||
preview: "Accept correction",
|
||||
effects: { arousal: 5, control: -10 },
|
||||
nextStep: "corrected_attitude"
|
||||
},
|
||||
{
|
||||
text: "Explain that questions help understanding",
|
||||
preview: "Justify the questions",
|
||||
effects: { intensity: 1 },
|
||||
nextStep: "discipline_needed"
|
||||
}
|
||||
]
|
||||
|
|
@ -1316,7 +1225,6 @@ class TaskChallengeGame {
|
|||
story: "Your resistance is noted and will be addressed. First, you'll learn what happens to those who resist. Assume a stress position - hands behind head, standing on toes for 60 seconds.",
|
||||
actionText: "Stress position for resistance",
|
||||
duration: 60,
|
||||
effects: { arousal: 10, control: -20, intensity: 1 },
|
||||
nextStep: "resistance_broken"
|
||||
},
|
||||
position_training: {
|
||||
|
|
@ -1325,7 +1233,6 @@ class TaskChallengeGame {
|
|||
story: "When I say 'present', you will immediately assume a kneeling position with hands on thighs. When I say 'attention', stand straight with hands at sides. Practice these transitions for 45 seconds.",
|
||||
actionText: "Position command training",
|
||||
duration: 45,
|
||||
effects: { arousal: 20, control: -10 },
|
||||
nextStep: "training_progresses"
|
||||
},
|
||||
response_training: {
|
||||
|
|
@ -1334,7 +1241,6 @@ class TaskChallengeGame {
|
|||
story: "You will respond to every command with 'Yes Sir' or 'Yes Ma'am'. Practice this now while performing simple actions. Say it out loud with each instruction you follow.",
|
||||
actionText: "Verbal response training",
|
||||
duration: 30,
|
||||
effects: { arousal: 15, control: -10 },
|
||||
nextStep: "training_progresses"
|
||||
},
|
||||
timing_training: {
|
||||
|
|
@ -1343,7 +1249,6 @@ class TaskChallengeGame {
|
|||
story: "Obedience must be immediate. When given a command, you have exactly 3 seconds to begin compliance. Practice instant response to touch commands for 40 seconds.",
|
||||
actionText: "Instant response training",
|
||||
duration: 40,
|
||||
effects: { arousal: 18, control: 5 },
|
||||
nextStep: "training_progresses"
|
||||
},
|
||||
corrected_attitude: {
|
||||
|
|
@ -1352,7 +1257,6 @@ class TaskChallengeGame {
|
|||
story: "Better. Now that your attitude is corrected, we can proceed with proper training. Begin with basic submission positions - kneel and wait for commands.",
|
||||
actionText: "Basic submission training",
|
||||
duration: 35,
|
||||
effects: { arousal: 15, control: -15 },
|
||||
nextStep: "training_progresses"
|
||||
},
|
||||
discipline_needed: {
|
||||
|
|
@ -1361,7 +1265,6 @@ class TaskChallengeGame {
|
|||
story: "Your continued questioning shows you need discipline before training can begin. Hold a stress position while contemplating the value of unquestioning obedience.",
|
||||
actionText: "Disciplinary stress position",
|
||||
duration: 75,
|
||||
effects: { arousal: 12, control: -25, intensity: 1 },
|
||||
nextStep: "discipline_learned"
|
||||
},
|
||||
resistance_broken: {
|
||||
|
|
@ -1373,14 +1276,11 @@ class TaskChallengeGame {
|
|||
text: "Yes, I'm ready to obey",
|
||||
type: "submissive",
|
||||
preview: "Submit to training",
|
||||
effects: { control: -15 },
|
||||
nextStep: "obedience_accepted"
|
||||
},
|
||||
{
|
||||
text: "I still have questions",
|
||||
preview: "Continue resistance",
|
||||
conditions: { control: 20 },
|
||||
effects: { intensity: 1 },
|
||||
nextStep: "additional_discipline"
|
||||
}
|
||||
]
|
||||
|
|
@ -1388,26 +1288,23 @@ class TaskChallengeGame {
|
|||
training_progresses: {
|
||||
type: 'choice',
|
||||
mood: 'progressive',
|
||||
story: "Good progress. Your arousal at {arousal} and control at {control} show the training is having an effect. Time for more advanced obedience lessons.",
|
||||
story: "Good progress. Your arousal at your state and control at your focus show the training is having an effect. Time for more advanced obedience lessons.",
|
||||
choices: [
|
||||
{
|
||||
text: "Advanced position training",
|
||||
type: "submissive",
|
||||
preview: "More complex positions",
|
||||
effects: { arousal: 15, control: -10 },
|
||||
nextStep: "advanced_positions"
|
||||
},
|
||||
{
|
||||
text: "Endurance obedience test",
|
||||
type: "risky",
|
||||
preview: "Sustained obedience",
|
||||
effects: { intensity: 1 },
|
||||
nextStep: "endurance_test"
|
||||
},
|
||||
{
|
||||
text: "Precision command following",
|
||||
preview: "Exact obedience",
|
||||
effects: { control: 5 },
|
||||
nextStep: "precision_commands"
|
||||
}
|
||||
]
|
||||
|
|
@ -1421,7 +1318,6 @@ class TaskChallengeGame {
|
|||
text: "Yes, no more questions",
|
||||
type: "submissive",
|
||||
preview: "Accept training authority",
|
||||
effects: { control: -20 },
|
||||
nextStep: "training_progresses"
|
||||
},
|
||||
{
|
||||
|
|
@ -1437,7 +1333,6 @@ class TaskChallengeGame {
|
|||
story: "Excellent. Now we can begin real training. Follow a series of position commands exactly as given. Show me your newfound obedience.",
|
||||
actionText: "Obedience demonstration",
|
||||
duration: 60,
|
||||
effects: { arousal: 25, control: -20 },
|
||||
nextStep: "training_complete"
|
||||
},
|
||||
additional_discipline: {
|
||||
|
|
@ -1446,7 +1341,6 @@ class TaskChallengeGame {
|
|||
story: "More discipline is clearly needed. Extended stress position combined with arousal denial. You'll learn that questions are not your place.",
|
||||
actionText: "Extended disciplinary training",
|
||||
duration: 90,
|
||||
effects: { arousal: 20, control: -35, intensity: 1 },
|
||||
nextStep: "complete_submission"
|
||||
},
|
||||
advanced_positions: {
|
||||
|
|
@ -1455,7 +1349,6 @@ class TaskChallengeGame {
|
|||
story: "Advanced training requires more challenging positions. Transition between multiple poses rapidly while maintaining arousal. Show your growing obedience.",
|
||||
actionText: "Advanced position sequences",
|
||||
duration: 75,
|
||||
effects: { arousal: 30, control: -15 },
|
||||
nextStep: "training_complete"
|
||||
},
|
||||
endurance_test: {
|
||||
|
|
@ -1464,7 +1357,6 @@ class TaskChallengeGame {
|
|||
story: "The ultimate test - maintain a challenging position while building arousal, but you may not climax without permission. Endure for the full duration.",
|
||||
actionText: "Endurance obedience test",
|
||||
duration: 120,
|
||||
effects: { arousal: 40, control: -25 },
|
||||
nextStep: "training_complete"
|
||||
},
|
||||
precision_commands: {
|
||||
|
|
@ -1473,7 +1365,6 @@ class TaskChallengeGame {
|
|||
story: "Execute precise movements exactly as commanded. Every hesitation, every imperfection will be noted. Show perfect obedience.",
|
||||
actionText: "Precision command execution",
|
||||
duration: 60,
|
||||
effects: { arousal: 25, control: 10 },
|
||||
nextStep: "training_complete"
|
||||
},
|
||||
final_lesson: {
|
||||
|
|
@ -1482,21 +1373,20 @@ class TaskChallengeGame {
|
|||
story: "Final lesson: sometimes obedience means accepting what you don't understand. Perform actions without explanation for the remainder of this training.",
|
||||
actionText: "Unquestioned obedience",
|
||||
duration: 45,
|
||||
effects: { arousal: 20, control: -15 },
|
||||
nextStep: "training_complete"
|
||||
},
|
||||
complete_submission: {
|
||||
type: 'ending',
|
||||
mood: 'dominant',
|
||||
story: "Your resistance has been completely broken. You now understand the meaning of true obedience.",
|
||||
endingText: "Obedience training completed through discipline. Final state: Arousal {arousal}, Control {control}. You have learned to obey without question.",
|
||||
endingText: "Obedience training completed through discipline. Final state: Arousal your state, Control your focus. You have learned to obey without question.",
|
||||
outcome: "success"
|
||||
},
|
||||
training_complete: {
|
||||
type: 'ending',
|
||||
mood: 'accomplished',
|
||||
story: "Your obedience training is complete. You've learned to follow commands properly and promptly.",
|
||||
endingText: "Training program completed successfully. Final assessment: Arousal {arousal}, Control {control}. You've developed proper obedience skills.",
|
||||
endingText: "Training program completed successfully. Final assessment: Arousal your state, Control your focus. You've developed proper obedience skills.",
|
||||
outcome: "success"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@ const dressUpGameData = {
|
|||
type: 'ending',
|
||||
mood: 'extreme_sissy_documented',
|
||||
story: "The photographer reviews the extreme feminization photos with delight. 'Absolutely perfect! These photos show your complete transformation into the most pathetic sissy possible. Every shot captures your extreme feminization and total humiliation.'",
|
||||
endingText: "Extreme feminization completed. Final state: Arousal HIGH, Control VARIABLE. You have been transformed into the ultimate sissy and it's all documented.",
|
||||
endingText: "Extreme feminization completed. You have been transformed into the ultimate sissy and it's all documented.",
|
||||
outcome: "extreme_sissy_documented"
|
||||
},
|
||||
cleaning_path: {
|
||||
|
|
@ -248,7 +248,7 @@ const dressUpGameData = {
|
|||
type: 'ending',
|
||||
mood: 'maid_servant_documented',
|
||||
story: "The photographer laughs at the photos of you cleaning while dressed as a maid. 'Perfect! These photos show what a degraded little servant you are. Your humiliation while doing menial labor is beautifully captured.'",
|
||||
endingText: "Maid cleaning session completed. Final state: Arousal HIGH, Control VARIABLE. Your degradation as a servant has been documented.",
|
||||
endingText: "Maid cleaning session completed. Your degradation as a servant has been documented.",
|
||||
outcome: "maid_servant_documented"
|
||||
},
|
||||
inappropriate_path: {
|
||||
|
|
@ -278,14 +278,14 @@ const dressUpGameData = {
|
|||
type: 'ending',
|
||||
mood: 'bimbo_behavior_documented',
|
||||
story: "The photographer can't stop laughing at the photos of you acting like a brainless bimbo. 'These are hilarious! Every photo captures how stupid and desperate you are. Your complete bimbo transformation is perfectly documented.'",
|
||||
endingText: "Bimbo behavior session completed. Final state: Arousal HIGH, Control VARIABLE. Your brainless bimbo behavior has been documented.",
|
||||
endingText: "Bimbo behavior session completed. Your brainless bimbo behavior has been documented.",
|
||||
outcome: "bimbo_behavior_documented"
|
||||
},
|
||||
completion: {
|
||||
type: 'ending',
|
||||
mood: 'satisfied',
|
||||
story: "The photographer reviews the humiliating photos with satisfaction. 'Perfect! These photos capture your complete transformation and degradation. You're now documented as the sissy you truly are.'",
|
||||
endingText: "Photo session complete. Final state: Arousal HIGH, Control VARIABLE. Your feminization has been permanently documented.",
|
||||
endingText: "Photo session complete. Your feminization has been permanently documented.",
|
||||
outcome: "feminized_documented"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ const enduranceGameData = {
|
|||
type: 'ending',
|
||||
mood: 'accomplished',
|
||||
story: "Your trainer stands and applauds. 'Congratulations! You have mastered gooning endurance. Your ability to maintain arousal for extended periods makes you a true dedicated gooner. You've earned your endurance certification.'",
|
||||
endingText: "ENDURANCE MASTERY ACHIEVED! Final state: Arousal HIGH, Control VARIABLE. You are now certified in advanced gooning endurance - capable of extended sessions that prove your dedication.",
|
||||
endingText: "ENDURANCE MASTERY ACHIEVED! You are now certified in advanced gooning endurance - capable of extended sessions that prove your dedication.",
|
||||
outcome: "endurance_master"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -403,7 +403,8 @@ const humiliationGameData = {
|
|||
completion: {
|
||||
type: 'completion',
|
||||
mood: 'cold_satisfaction',
|
||||
story: "The operator turns off the camera. 'Session complete. Your self-image has been properly adjusted through mirror-based degradation.'",outcome: "completely_degraded"
|
||||
story: "The operator turns off the camera. 'Session complete. Your self-image has been properly adjusted through mirror-based degradation.'",
|
||||
outcome: "completely_degraded"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -362,7 +362,7 @@ const trainingGameData = {
|
|||
type: 'ending',
|
||||
mood: 'proud',
|
||||
story: "Your instructor stands and salutes you. 'Congratulations! You have completed the Advanced Gooner Training Academy with distinction. You are now a certified gooner, dedicated to porn and masturbation. Your commitment to edging and porn worship is exemplary.'",
|
||||
endingText: "GOONER CERTIFICATION ACHIEVED! Final state: Arousal HIGH, Control VARIABLE, Intensity MAXIMUM. You are now a certified dedicated gooner, committed to spending your life edging to pornography.",
|
||||
endingText: "GOONER CERTIFICATION ACHIEVED! You are now a certified dedicated gooner, committed to spending your life edging to pornography.",
|
||||
outcome: "certified_gooner"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,7 +77,6 @@ const creativeTasksScenarioData = {
|
|||
story: "Your instructor prepares multiple art stations. 'Mixed media combines all forms - writing, performance, visual, and movement. You'll rotate between stations, creating a complete artistic expression while maintaining constant arousal.'",
|
||||
actionText: "Multi-station creative expression while edging",
|
||||
duration: 300,
|
||||
effects: { arousal: 35, control: -10, intensity: 1 },
|
||||
nextStep: "artistic_mastery"
|
||||
},
|
||||
writing_evaluation: {
|
||||
|
|
|
|||
|
|
@ -134,7 +134,6 @@ const punishmentSessionScenarioData = {
|
|||
story: "Your instructor intensifies the evaluation. 'Admirable composure. Now we test deeper. Edge while maintaining perfect stillness even as intensity increases. True stoicism must be proven under pressure.'",
|
||||
actionText: "Edge with increased intensity while maintaining stoic composure",
|
||||
duration: 300,
|
||||
effects: { arousal: 40, control: 10, intensity: 1 },
|
||||
nextStep: "stoic_mastery"
|
||||
},
|
||||
redemption_earned: {
|
||||
|
|
|
|||
|
|
@ -1716,11 +1716,6 @@ class InteractiveTaskManager {
|
|||
</div>
|
||||
|
||||
<div class="scenario-status">
|
||||
<div class="scenario-stats">
|
||||
<span class="stat">Arousal: <span id="scenario-arousal">Unknown</span></span>
|
||||
<span class="stat">Control: <span id="scenario-control">Unknown</span></span>
|
||||
<span class="stat">Intensity: <span id="scenario-intensity">Low</span></span>
|
||||
</div>
|
||||
<div class="tts-info" id="tts-info" style="font-size: 12px; color: #888; margin-top: 10px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1750,9 +1745,6 @@ class InteractiveTaskManager {
|
|||
stepNumber: 1,
|
||||
totalSteps: this.getScenarioStepCount(scenario),
|
||||
choices: [],
|
||||
arousal: 50, // 0-100 scale
|
||||
control: 50, // 0-100 scale (higher = more controlled)
|
||||
intensity: 1, // 1-3 scale
|
||||
completed: false,
|
||||
outcome: null
|
||||
};
|
||||
|
|
@ -1976,9 +1968,6 @@ class InteractiveTaskManager {
|
|||
}, 2000);
|
||||
}
|
||||
|
||||
// Update stats display
|
||||
this.updateScenarioStats(task.scenarioState);
|
||||
|
||||
// Apply scenario effects (audio, visual effects, etc.)
|
||||
this.applyScenarioEffects(step, task.scenarioState);
|
||||
}
|
||||
|
|
@ -2331,19 +2320,11 @@ class InteractiveTaskManager {
|
|||
}
|
||||
|
||||
applyChoiceEffects(choice, state) {
|
||||
if (choice.effects) {
|
||||
if (choice.effects.arousal) state.arousal = Math.max(0, Math.min(100, state.arousal + choice.effects.arousal));
|
||||
if (choice.effects.control) state.control = Math.max(0, Math.min(100, state.control + choice.effects.control));
|
||||
if (choice.effects.intensity) state.intensity = Math.max(1, Math.min(3, state.intensity + choice.effects.intensity));
|
||||
}
|
||||
// Effects system removed
|
||||
}
|
||||
|
||||
applyActionEffects(step, state) {
|
||||
if (step.effects) {
|
||||
if (step.effects.arousal) state.arousal = Math.max(0, Math.min(100, state.arousal + step.effects.arousal));
|
||||
if (step.effects.control) state.control = Math.max(0, Math.min(100, state.control + step.effects.control));
|
||||
if (step.effects.intensity) state.intensity = Math.max(1, Math.min(3, state.intensity + step.effects.intensity));
|
||||
}
|
||||
// Effects system removed
|
||||
}
|
||||
|
||||
applyScenarioEffects(step, state) {
|
||||
|
|
@ -2353,35 +2334,7 @@ class InteractiveTaskManager {
|
|||
}
|
||||
}
|
||||
|
||||
updateScenarioStats(state) {
|
||||
const arousalEl = document.getElementById('scenario-arousal');
|
||||
const controlEl = document.getElementById('scenario-control');
|
||||
const intensityEl = document.getElementById('scenario-intensity');
|
||||
|
||||
if (arousalEl) arousalEl.textContent = this.getArousalText(state.arousal);
|
||||
if (controlEl) controlEl.textContent = this.getControlText(state.control);
|
||||
if (intensityEl) intensityEl.textContent = this.getIntensityText(state.intensity);
|
||||
}
|
||||
|
||||
getArousalText(arousal) {
|
||||
if (arousal < 20) return 'Very Low';
|
||||
if (arousal < 40) return 'Low';
|
||||
if (arousal < 60) return 'Moderate';
|
||||
if (arousal < 80) return 'High';
|
||||
return 'Very High';
|
||||
}
|
||||
|
||||
getControlText(control) {
|
||||
if (control < 20) return 'Lost';
|
||||
if (control < 40) return 'Struggling';
|
||||
if (control < 60) return 'Managing';
|
||||
if (control < 80) return 'Good';
|
||||
return 'Excellent';
|
||||
}
|
||||
|
||||
getIntensityText(intensity) {
|
||||
return ['Low', 'Medium', 'High'][intensity - 1] || 'Low';
|
||||
}
|
||||
// Scenario stats system removed - counters no longer used
|
||||
|
||||
getOutcomeText(outcome) {
|
||||
const outcomes = {
|
||||
|
|
@ -2396,25 +2349,16 @@ class InteractiveTaskManager {
|
|||
}
|
||||
|
||||
isChoiceAvailable(choice, state) {
|
||||
if (!choice.conditions) return true;
|
||||
|
||||
for (const [key, value] of Object.entries(choice.conditions)) {
|
||||
if (key === 'arousal' && state.arousal < value) return false;
|
||||
if (key === 'control' && state.control < value) return false;
|
||||
if (key === 'intensity' && state.intensity < value) return false;
|
||||
if (key === 'minArousal' && state.arousal < value) return false;
|
||||
if (key === 'maxArousal' && state.arousal > value) return false;
|
||||
}
|
||||
|
||||
// Counter-based conditions removed - all choices are available
|
||||
return true;
|
||||
}
|
||||
|
||||
processScenarioText(text, state) {
|
||||
// Replace placeholders with current state values
|
||||
// Counter system removed - return text as-is
|
||||
return text
|
||||
.replace(/\{arousal\}/g, this.getArousalText(state.arousal))
|
||||
.replace(/\{control\}/g, this.getControlText(state.control))
|
||||
.replace(/\{intensity\}/g, this.getIntensityText(state.intensity));
|
||||
.replace(/\{arousal\}/g, 'your state')
|
||||
.replace(/\{control\}/g, 'your focus')
|
||||
.replace(/\{intensity\}/g, 'the level');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -2966,20 +2910,14 @@ class InteractiveTaskManager {
|
|||
* Calculate dynamic photo count based on scenario state
|
||||
*/
|
||||
calculateDynamicPhotoCount(state, step) {
|
||||
const arousal = state.arousal || 50;
|
||||
const control = state.control || 50;
|
||||
// Counter system removed
|
||||
// Counter system removed
|
||||
|
||||
// Base photo count
|
||||
let photoCount = 1;
|
||||
|
||||
// Increase photo count based on arousal level
|
||||
if (arousal >= 80) {
|
||||
photoCount += 3; // Very high arousal = 4+ photos
|
||||
} else if (arousal >= 60) {
|
||||
photoCount += 2; // High arousal = 3+ photos
|
||||
} else if (arousal >= 40) {
|
||||
photoCount += 1; // Medium arousal = 2+ photos
|
||||
}
|
||||
photoCount += 1; // Static photo count
|
||||
|
||||
// Adjust based on control level
|
||||
if (control <= 20) {
|
||||
|
|
@ -2991,7 +2929,7 @@ class InteractiveTaskManager {
|
|||
// Cap at reasonable limits
|
||||
photoCount = Math.max(1, Math.min(6, photoCount));
|
||||
|
||||
console.log(`📸 Dynamic photo count: ${photoCount} (arousal: ${arousal}, control: ${control})`);
|
||||
console.log(`📸 Dynamic photo count: ${photoCount}`);
|
||||
return photoCount;
|
||||
}
|
||||
|
||||
|
|
@ -3106,21 +3044,7 @@ class InteractiveTaskManager {
|
|||
* Apply step effects with photo count modifiers
|
||||
*/
|
||||
applyStepEffects(effects, state, photoCount = 1) {
|
||||
// Base effects
|
||||
if (effects.arousal) state.arousal = Math.max(0, Math.min(100, state.arousal + effects.arousal));
|
||||
if (effects.control) state.control = Math.max(0, Math.min(100, state.control + effects.control));
|
||||
if (effects.intensity) state.intensity = Math.max(1, Math.min(3, state.intensity + effects.intensity));
|
||||
|
||||
// Additional effects based on photo count
|
||||
if (photoCount > 1) {
|
||||
const bonusArousal = (photoCount - 1) * 3; // +3 arousal per extra photo
|
||||
const bonusControlLoss = (photoCount - 1) * 2; // -2 control per extra photo
|
||||
|
||||
state.arousal = Math.max(0, Math.min(100, state.arousal + bonusArousal));
|
||||
state.control = Math.max(0, Math.min(100, state.control - bonusControlLoss));
|
||||
|
||||
console.log(`📸 Photo bonus effects: +${bonusArousal} arousal, -${bonusControlLoss} control (${photoCount} photos)`);
|
||||
}
|
||||
// Effects system removed
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue