feat: Complete training academy integration with photo capture and endurance trials
This commit is contained in:
parent
1e55cb3f21
commit
2112142563
13
README.md
13
README.md
|
|
@ -6,6 +6,7 @@ An adult edging challenge game with multiple specialized modes, progressive trai
|
|||
|
||||
## 🎮 Game Modes
|
||||
|
||||
- **Quick Play** - Fast-start mode with background videos and streamlined interface
|
||||
- **Standard Game** - Classic endless task mode
|
||||
- **Timed Challenge** - Race against the clock
|
||||
- **Score Target** - Reach target points to win
|
||||
|
|
@ -17,9 +18,11 @@ An adult edging challenge game with multiple specialized modes, progressive trai
|
|||
## <20> Core Features
|
||||
|
||||
### 🎬 Professional Media Player System
|
||||
- **Quick Play**: Fast-start mode with background videos, compact controls, and streamlined gameplay
|
||||
- **Porn Cinema**: Full-featured video player with playlists, seeking, and theater mode
|
||||
- **Multi-Screen Quad Player**: 4-video grid layout for intensive training sessions
|
||||
- **Video Library Management**: Unified access to linked video directories
|
||||
- **Background Video Integration**: Seamless video playback during tasks with opacity controls
|
||||
- **Focus Interruptions**: Video overlays during training scenarios
|
||||
- **Player Statistics**: Watch time tracking, completion rates, and viewing analytics
|
||||
|
||||
|
|
@ -108,6 +111,16 @@ webGame/
|
|||
|
||||
## 📋 Recent Updates
|
||||
|
||||
### v3.1 - Quick Play Background Video System (November 3, 2025)
|
||||
- ✅ **Quick Play Mode**: New fast-start game mode with streamlined interface
|
||||
- ✅ **Background Video Integration**: Independent video system with 46+ videos detected
|
||||
- ✅ **Compact Video Controls**: Floating controls with opacity cycling (hidden/dim/normal/bright)
|
||||
- ✅ **Video Visibility Toggle**: Quick on/off button with eye icon for instant control
|
||||
- ✅ **Independent Game Logic**: Isolated Quick Play mode preventing main game interference
|
||||
- ✅ **Real Task Integration**: Full integration with 17 mainGameData tasks and 60 task images
|
||||
- ✅ **VideoLibrary Scanning**: Custom video detection system using existing linked directories
|
||||
- ✅ **Enhanced Timer System**: Fixed countdown functionality with proper Quick Play isolation
|
||||
|
||||
### v3.0 - Professional Media System (October 31, 2025)
|
||||
- ✅ **Complete Porn Cinema**: Professional video player with playlists, progress bars, and theater mode
|
||||
- ✅ **Multi-Screen Quad Player**: 4-video grid layout for intensive training with minimize/restore functionality
|
||||
|
|
|
|||
16
ROADMAP.md
16
ROADMAP.md
|
|
@ -26,13 +26,19 @@
|
|||
- Enhanced user experience improvements
|
||||
- Bug fixes and stability enhancements
|
||||
- Performance optimizations
|
||||
- **🎬 Multi-Screen Quad Player (October 31, 2025)** *(🚧 In Progress)*
|
||||
- **<EFBFBD> Quick Play Background Video System** *(✅ COMPLETED - November 3, 2025)*
|
||||
- ✅ **Independent Background Videos**: Complete video system with 46+ videos detected from linked directories
|
||||
- ✅ **Compact Video Controls**: Floating controls with opacity cycling (hidden/dim/normal/bright) and visibility toggle
|
||||
- ✅ **Game Mode Isolation**: Proper Quick Play mode preventing main game interference with independent task completion
|
||||
- ✅ **Real Task Integration**: Full integration with 17 mainGameData tasks and 60 task images from linked directories
|
||||
- ✅ **Enhanced Timer System**: Fixed countdown functionality with proper Quick Play state management
|
||||
- ✅ **VideoLibrary Scanning**: Custom video detection system replicating VideoLibrary functionality independently
|
||||
- **🎬 Multi-Screen Quad Player** *(✅ COMPLETED - October 31, 2025)*
|
||||
- ✅ **Quad Video Layout**: 2x2 grid displaying 4 simultaneous video streams for intensive training
|
||||
- ✅ **Training Integration**: Multi-Screen Mode button added to interactive task controls
|
||||
- ✅ **Smart Controls**: Shuffle all videos, minimize to background, and close functionality
|
||||
- ✅ **Minimize Feature**: Continue videos in background while progressing through training scenarios
|
||||
- ✅ **Proper Cleanup**: Videos stop when game ends, DOM corruption prevention with force recreation
|
||||
- 🚧 **Future Enhancements**: Individual video controls, sync options, focus mode, custom layouts
|
||||
- **🎬 Porn Cinema Media Player** *(✅ COMPLETED - October 30-31, 2025)*
|
||||
- ✅ **Complete Professional Interface**: Modern two-column layout with header navigation and sidebar panels
|
||||
- ✅ **Full Video Player Controls**: Interactive progress bar, auto-hide behavior, quality/speed selection, volume control
|
||||
|
|
@ -59,6 +65,12 @@
|
|||
## 📋 Feature Backlog
|
||||
|
||||
### 🎯 High Priority (Core Game Polish)
|
||||
- [✅] **Quick Play Background Video System** - *Completed November 3, 2025*
|
||||
- **✅ Fast-Start Game Mode**: Streamlined interface with background video integration for immediate gameplay
|
||||
- **✅ Independent Video System**: 46+ videos detected with custom VideoLibrary scanning logic
|
||||
- **✅ Compact UI Controls**: Floating video controls with opacity cycling and quick visibility toggle
|
||||
- **✅ Real Task Integration**: Full integration with mainGameData tasks and linked image directories
|
||||
- **✅ Isolated Game Logic**: Proper mode separation preventing main game interference with dedicated completion functions
|
||||
- [✅] **Porn Cinema Media Player** - *Completed October 30-31, 2025*
|
||||
- **✅ Complete Professional Interface**: Two-column responsive layout, header navigation, tabbed sidebar
|
||||
- **✅ Full Video Player**: Interactive progress bar, auto-hide controls, quality/speed selection, volume control
|
||||
|
|
|
|||
|
|
@ -1,37 +0,0 @@
|
|||
<!-- Images Directory for Task Challenge Game -->
|
||||
<!-- 🎲 AUTOMATIC IMAGE DISCOVERY - Just drop images here! -->
|
||||
|
||||
## How It Works:
|
||||
The game automatically finds and uses ANY images you put in this folder!
|
||||
|
||||
## Supported Formats:
|
||||
- **JPG** (.jpg)
|
||||
- **JPEG** (.jpeg)
|
||||
- **PNG** (.png)
|
||||
- **GIF** (.gif) - Animated GIFs work too! 🎬
|
||||
|
||||
## Super Simple Usage:
|
||||
1. **Drop any images** into this `images/` folder
|
||||
2. **Use any filenames** you want - the game will find them
|
||||
3. **Start the game** - it will randomly select from your images
|
||||
|
||||
## Examples of what you can name your files:
|
||||
- `photo1.jpg`, `photo2.png`, `photo3.jpeg`, `funny.gif`
|
||||
- `cat.jpg`, `dog.png`, `sunset.jpeg`, `dance.gif`
|
||||
- `a.jpg`, `b.jpg`, `c.jpg`, `animated.gif`
|
||||
- `1.png`, `2.png`, `3.png`, `party.gif`
|
||||
- `random_image.jpg`, `my_pic.png`, `cool_animation.gif`
|
||||
- **ANY NAME YOU WANT!**
|
||||
|
||||
## Recommendations:
|
||||
- **Image Size**: 200x200 pixels works best
|
||||
- **GIFs**: Keep file sizes reasonable for smooth gameplay
|
||||
- **Add at least 3-5 images** for variety
|
||||
- **More images = more surprises!**
|
||||
- **Mix static and animated** for visual variety
|
||||
|
||||
## No Images?
|
||||
If no images are found, the game creates a placeholder automatically.
|
||||
|
||||
## That's it!
|
||||
No coding required - just add images and GIFs and play! 🎮✨
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
# Consequence Images Directory ⚠️
|
||||
|
||||
## Purpose:
|
||||
Images in this folder are used for **CONSEQUENCE TASKS** only (when you skip a main task).
|
||||
|
||||
## What Goes Here:
|
||||
- **Warning/Serious Images**: Photos that convey "you skipped, now face the consequence"
|
||||
- **Dramatic Images**: More intense or serious imagery
|
||||
- **Punishment Theme**: Images that match the consequence vibe
|
||||
|
||||
## Supported Formats:
|
||||
- JPG, JPEG, PNG, GIF (including animated GIFs)
|
||||
|
||||
## Examples:
|
||||
- Stern faces
|
||||
- Red warning signs
|
||||
- Dramatic scenes
|
||||
- "Oops" or "Uh oh" imagery
|
||||
- Serious expressions
|
||||
- Challenge-themed images
|
||||
|
||||
## Sample Filenames to Try:
|
||||
- `punishment1.jpg`
|
||||
- `consequence2.png`
|
||||
- `penalty3.gif`
|
||||
- `warning.jpg`
|
||||
- `oops.png`
|
||||
- `uhoh.gif`
|
||||
- `serious.jpg`
|
||||
|
||||
## File Naming:
|
||||
Use any filename you want - the game auto-discovers all supported image files!
|
||||
|
||||
## Fallback:
|
||||
If no consequence images are found, the game will use task images as a backup.
|
||||
|
||||
**Note**: These images appear when you skip tasks, so they should feel more serious or challenging than your regular task images! 😬
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
{
|
||||
"tasks": [
|
||||
"20210414_212141_1.jpg",
|
||||
"20210414_212151.jpg",
|
||||
"20210414_212157.jpg",
|
||||
"20210414_212202.jpg",
|
||||
"20210414_212317.jpg",
|
||||
"20210414_212317_1.jpg",
|
||||
"20210414_212332.jpg",
|
||||
"20210414_212406.jpg",
|
||||
"20210414_212442.jpg",
|
||||
"20210414_212442_1.jpg",
|
||||
"20210414_212450.jpg",
|
||||
"20210414_212455.jpg",
|
||||
"20210414_212500.jpg",
|
||||
"20210414_212506.jpg",
|
||||
"20210414_212545.jpg",
|
||||
"20210414_212600.jpg",
|
||||
"20210414_212602.jpg",
|
||||
"20210414_212602_1.jpg",
|
||||
"20210414_212756.jpg",
|
||||
"20210414_212802.jpg",
|
||||
"20210414_212812.jpg",
|
||||
"20210414_212814.jpg",
|
||||
"20210414_212815.jpg",
|
||||
"20210414_212824.jpg",
|
||||
"20210414_212831.jpg",
|
||||
"20210414_212831_1.jpg",
|
||||
"20210414_212832.jpg",
|
||||
"20210414_212905.jpg",
|
||||
"20210414_212923.jpg",
|
||||
"20210414_212927.jpg",
|
||||
"20210414_212929.jpg",
|
||||
"20210414_212929_1.jpg",
|
||||
"20210414_212935.jpg",
|
||||
"20210414_212949.jpg",
|
||||
"20210414_213001.jpg",
|
||||
"20210414_213003.jpg",
|
||||
"20210414_213030.jpg",
|
||||
"20210414_213033.jpg",
|
||||
"20210414_213035.jpg",
|
||||
"20210414_213046.jpg",
|
||||
"20210414_213049.jpg",
|
||||
"20210414_213051.jpg"
|
||||
],
|
||||
"consequences": [
|
||||
"IMG_20210226_212725.jpg",
|
||||
"IMG_20210226_212742.jpg",
|
||||
"IMG_6347_1.png",
|
||||
"IMG_6578.png",
|
||||
"IMG_6585.png",
|
||||
"IMG_6586.png"
|
||||
]
|
||||
}
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
# Task Images Directory 🎯
|
||||
|
||||
## Purpose:
|
||||
Images in this folder are used for **MAIN TASKS** only.
|
||||
|
||||
## What Goes Here:
|
||||
- **Positive/Fun Images**: Photos that feel encouraging or motivating
|
||||
- **Neutral Images**: General photos that work with any task
|
||||
- **Your Current Photos**: Move your existing photos here!
|
||||
|
||||
## Supported Formats:
|
||||
- JPG, JPEG, PNG, GIF (including animated GIFs)
|
||||
|
||||
## Examples:
|
||||
- Happy photos
|
||||
- Nature scenes
|
||||
- Fun activities
|
||||
- Motivational images
|
||||
- Cute animals
|
||||
- Beautiful landscapes
|
||||
|
||||
## Current Images:
|
||||
The game will look for your existing photos here. You can:
|
||||
1. **Move** your current photos from `images/` to `images/tasks/`
|
||||
2. **Copy** them (game checks both locations for backward compatibility)
|
||||
3. **Add new** task-appropriate images
|
||||
|
||||
## File Naming:
|
||||
Use any filename you want - the game auto-discovers all supported image files!
|
||||
|
||||
**Note**: These images appear when you get regular tasks, so pick images that feel positive and encouraging! 🌟
|
||||
147
index.html
147
index.html
|
|
@ -154,6 +154,7 @@
|
|||
<div class="main-actions">
|
||||
<button id="start-btn" class="btn btn-primary">Start Game</button>
|
||||
<button id="quick-play-btn" class="btn btn-primary">⚡ Quick Play</button>
|
||||
<button id="training-academy-btn" class="btn btn-primary">🎓 Training Academy</button>
|
||||
<button id="porn-cinema-btn" class="btn btn-primary">🎬 Porn Cinema</button>
|
||||
<button id="player-stats-btn" class="btn btn-secondary">📊 Player Stats</button>
|
||||
<button id="user-profile-btn" class="btn btn-secondary">👤 Profile</button>
|
||||
|
|
@ -3262,6 +3263,16 @@
|
|||
});
|
||||
}
|
||||
|
||||
// Set up training academy button (only once)
|
||||
const trainingAcademyBtn = document.getElementById('training-academy-btn');
|
||||
if (trainingAcademyBtn && !trainingAcademyBtn.hasAttribute('data-handler-attached')) {
|
||||
trainingAcademyBtn.setAttribute('data-handler-attached', 'true');
|
||||
trainingAcademyBtn.addEventListener('click', () => {
|
||||
console.log('🎓 Opening Training Academy...');
|
||||
window.location.href = 'training-academy.html';
|
||||
});
|
||||
}
|
||||
|
||||
// Set up porn cinema button (only once)
|
||||
const pornCinemaBtn = document.getElementById('porn-cinema-btn');
|
||||
if (pornCinemaBtn && !pornCinemaBtn.hasAttribute('data-handler-attached')) {
|
||||
|
|
@ -4229,17 +4240,137 @@
|
|||
function setupLibraryGalleryTab() {
|
||||
console.log('Setting up gallery tab functionality...');
|
||||
|
||||
// This would connect to the existing photo gallery functionality
|
||||
// For now, show placeholder content
|
||||
// Load captured photos from localStorage
|
||||
const capturedPhotos = JSON.parse(localStorage.getItem('capturedPhotos') || '[]');
|
||||
console.log(`📸 Found ${capturedPhotos.length} captured photos`);
|
||||
|
||||
const allPhotosGrid = document.getElementById('lib-all-photos-grid');
|
||||
const allPhotosCount = document.getElementById('lib-all-photos-count');
|
||||
|
||||
if (allPhotosGrid) {
|
||||
allPhotosGrid.innerHTML = `
|
||||
<div class="no-photos-message">
|
||||
<p>📸 No photos found</p>
|
||||
<p>Take some photos during gameplay to see them here</p>
|
||||
</div>
|
||||
`;
|
||||
if (capturedPhotos.length === 0) {
|
||||
allPhotosGrid.innerHTML = `
|
||||
<div class="no-photos-message">
|
||||
<p>📸 No photos found</p>
|
||||
<p>Take some photos during gameplay to see them here</p>
|
||||
</div>
|
||||
`;
|
||||
if (allPhotosCount) allPhotosCount.textContent = '0 photos';
|
||||
} else {
|
||||
// Create photo gallery grid
|
||||
let photosHtml = '';
|
||||
capturedPhotos.forEach((photo, index) => {
|
||||
const timestamp = new Date(photo.timestamp || Date.now()).toLocaleDateString();
|
||||
const imageData = photo.imageData || photo.dataURL; // Support both formats
|
||||
|
||||
if (imageData) {
|
||||
photosHtml += `
|
||||
<div class="photo-item" data-index="${index}">
|
||||
<div class="photo-container">
|
||||
<img src="${imageData}" alt="Captured Photo ${index + 1}"
|
||||
onclick="showPhotoPreview('${imageData}', 'Photo ${index + 1}')">
|
||||
<div class="photo-info">
|
||||
<span class="photo-date">${timestamp}</span>
|
||||
<span class="photo-type">${photo.sessionType || 'Training'}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
});
|
||||
|
||||
allPhotosGrid.innerHTML = photosHtml;
|
||||
if (allPhotosCount) allPhotosCount.textContent = `${capturedPhotos.length} photos`;
|
||||
}
|
||||
}
|
||||
|
||||
// Also populate dress-up photos if they exist
|
||||
const dressUpPhotos = capturedPhotos.filter(photo =>
|
||||
photo.sessionType && photo.sessionType.includes('dress-up'));
|
||||
|
||||
const dressUpGrid = document.getElementById('lib-dress-up-photos-grid');
|
||||
const dressUpCount = document.getElementById('lib-dress-up-photos-count');
|
||||
|
||||
if (dressUpGrid && dressUpPhotos.length > 0) {
|
||||
let dressUpHtml = '';
|
||||
dressUpPhotos.forEach((photo, index) => {
|
||||
const timestamp = new Date(photo.timestamp || Date.now()).toLocaleDateString();
|
||||
const imageData = photo.imageData || photo.dataURL; // Support both formats
|
||||
|
||||
if (imageData) {
|
||||
dressUpHtml += `
|
||||
<div class="photo-item" data-index="${index}">
|
||||
<div class="photo-container">
|
||||
<img src="${imageData}" alt="Dress Up Photo ${index + 1}"
|
||||
onclick="showPhotoPreview('${imageData}', 'Dress Up Photo ${index + 1}')">
|
||||
<div class="photo-info">
|
||||
<span class="photo-date">${timestamp}</span>
|
||||
<span class="photo-type">${photo.sessionType}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
});
|
||||
dressUpGrid.innerHTML = dressUpHtml;
|
||||
if (dressUpCount) dressUpCount.textContent = `${dressUpPhotos.length} photos`;
|
||||
}
|
||||
}
|
||||
|
||||
// Show photo preview in modal
|
||||
function showPhotoPreview(imageData, title) {
|
||||
// Create modal overlay
|
||||
const overlay = document.createElement('div');
|
||||
overlay.style.cssText = `
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.9);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
z-index: 10000;
|
||||
cursor: pointer;
|
||||
`;
|
||||
|
||||
// Create image element
|
||||
const img = document.createElement('img');
|
||||
img.src = imageData;
|
||||
img.alt = title;
|
||||
img.style.cssText = `
|
||||
max-width: 90%;
|
||||
max-height: 90%;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);
|
||||
`;
|
||||
|
||||
// Create title
|
||||
const titleDiv = document.createElement('div');
|
||||
titleDiv.textContent = title;
|
||||
titleDiv.style.cssText = `
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
color: white;
|
||||
font-size: 1.2em;
|
||||
font-weight: bold;
|
||||
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8);
|
||||
`;
|
||||
|
||||
// Add elements to overlay
|
||||
overlay.appendChild(img);
|
||||
overlay.appendChild(titleDiv);
|
||||
|
||||
// Close on click
|
||||
overlay.addEventListener('click', () => {
|
||||
document.body.removeChild(overlay);
|
||||
});
|
||||
|
||||
// Add to page
|
||||
document.body.appendChild(overlay);
|
||||
}
|
||||
|
||||
function refreshAllLibraryContent() {
|
||||
|
|
|
|||
908
quick-play.html
908
quick-play.html
File diff suppressed because it is too large
Load Diff
|
|
@ -45,366 +45,619 @@ const humiliationGameData = {
|
|||
// Scenarios specific to humiliation mode
|
||||
scenarios: [
|
||||
{
|
||||
id: 'scenario-humiliation-training',
|
||||
text: "Intensive Humiliation Training Session",
|
||||
difficulty: "Medium",
|
||||
id: 'scenario-punishment-session',
|
||||
text: "Punishment Gauntlet Session",
|
||||
difficulty: "Hard",
|
||||
interactiveType: "scenario-adventure",
|
||||
interactiveData: {
|
||||
title: "Humiliation Training Academy",
|
||||
title: "Punishment Gauntlet",
|
||||
steps: {
|
||||
start: {
|
||||
type: 'choice',
|
||||
mood: 'dominant',
|
||||
story: "You've entered a specialized humiliation training session. Your trainer looks at you with a mixture of amusement and disdain. 'So, another pathetic subject who thinks they can handle real humiliation training. We'll see about that. Choose your first degrading task.'",
|
||||
mood: 'severe',
|
||||
story: "Welcome to the Punishment Gauntlet - the most intense humiliation and degradation training available. This is where failures are corrected and worthless subjects learn their proper place. Your supervisor looks at you with disgust. 'So, another pathetic failure who needs to be properly punished. We'll break you down completely. Choose your punishment.'",
|
||||
choices: [
|
||||
{
|
||||
text: "Verbal humiliation exercises",
|
||||
text: "Verbal degradation punishment",
|
||||
type: "verbal",
|
||||
preview: "Degrade yourself with words",
|
||||
nextStep: "verbal_start"
|
||||
preview: "Harsh verbal humiliation and self-degradation",
|
||||
nextStep: "verbal_punishment"
|
||||
},
|
||||
{
|
||||
text: "Physical positioning",
|
||||
text: "Position punishment",
|
||||
type: "physical",
|
||||
preview: "Assume degrading positions",
|
||||
nextStep: "position_start"
|
||||
preview: "Degrading physical positioning",
|
||||
nextStep: "position_punishment"
|
||||
},
|
||||
{
|
||||
text: "Mirror self-degradation",
|
||||
text: "Mirror punishment session",
|
||||
type: "mirror",
|
||||
preview: "Face yourself while degraded",
|
||||
nextStep: "mirror_start"
|
||||
preview: "Watch yourself be completely humiliated",
|
||||
nextStep: "mirror_punishment"
|
||||
},
|
||||
{
|
||||
text: "Complete punishment gauntlet",
|
||||
type: "ultimate",
|
||||
preview: "All punishments combined - maximum degradation",
|
||||
nextStep: "ultimate_gauntlet"
|
||||
}
|
||||
]
|
||||
},
|
||||
verbal_start: {
|
||||
verbal_punishment: {
|
||||
type: 'text',
|
||||
mood: 'commanding',
|
||||
story: "The trainer smirks. 'Verbal degradation it is. You're going to repeat after me, and you're going to mean every word. Start by saying: I am nothing but a pathetic plaything.'",
|
||||
nextStep: "verbal_continue"
|
||||
mood: 'cruel',
|
||||
story: "The supervisor smirks coldly. 'Verbal punishment it is. You're going to degrade yourself completely. Start by repeating: I am a worthless failure who deserves to be punished.' Say it louder each time until you believe it.",
|
||||
nextStep: "verbal_escalation"
|
||||
},
|
||||
position_start: {
|
||||
position_punishment: {
|
||||
type: 'text',
|
||||
mood: 'authoritative',
|
||||
story: "The trainer points to the floor. 'Get on your knees. Head down, hands behind your back. Hold this position and think about how worthless you are.'",
|
||||
nextStep: "position_continue"
|
||||
story: "The supervisor points to the floor aggressively. 'Get on your knees immediately. Hands behind your back, head down in shame. This is your punishment position. You will hold this degrading pose while thinking about what a complete failure you are.'",
|
||||
nextStep: "position_escalation"
|
||||
},
|
||||
mirror_start: {
|
||||
mirror_punishment: {
|
||||
type: 'mirror-action',
|
||||
mood: 'psychological',
|
||||
story: "The trainer activates your webcam. 'Look at yourself. Really look. I want you to see the pathetic creature you are while you repeat these phrases.'",
|
||||
mood: 'psychological_torture',
|
||||
story: "The supervisor activates your webcam with cruel satisfaction. 'Perfect. Now you'll watch yourself be completely humiliated. Look at yourself - really look at what a pathetic, worthless creature you are.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Look directly at yourself through the webcam while speaking the degrading phrases",
|
||||
mirrorTaskText: "Repeat each phrase 3 times while maintaining eye contact: 'I am worthless', 'I exist to be degraded', 'I am nothing'",
|
||||
duration: 120,
|
||||
nextStep: "mirror_continue"
|
||||
mirrorInstructions: "Look directly at yourself while repeating punishment phrases",
|
||||
mirrorTaskText: "Stare at yourself and repeat with conviction: 'I am a failure', 'I deserve punishment', 'I am worthless', 'I am completely pathetic'",
|
||||
duration: 180,
|
||||
nextStep: "mirror_escalation"
|
||||
},
|
||||
verbal_continue: {
|
||||
ultimate_gauntlet: {
|
||||
type: 'text',
|
||||
mood: 'extreme_punishment',
|
||||
story: "The supervisor's eyes light up with sadistic pleasure. 'The complete gauntlet? Excellent. You're about to experience the most degrading punishment we have. This will break you completely and leave you knowing exactly what you are - absolutely nothing.'",
|
||||
nextStep: "gauntlet_phase_one"
|
||||
},
|
||||
verbal_escalation: {
|
||||
type: 'choice',
|
||||
mood: 'demanding',
|
||||
story: "The trainer watches you closely. 'Good. Now we're going to escalate this. Choose your next level of verbal degradation.'",
|
||||
mood: 'escalating_cruelty',
|
||||
story: "The supervisor watches you degrade yourself and smiles cruelly. 'Good. Now we escalate your verbal punishment. Choose your next level of self-destruction.'",
|
||||
choices: [
|
||||
{
|
||||
text: "Repeat more intense phrases",
|
||||
type: "escalate",
|
||||
preview: "Deeper verbal humiliation",
|
||||
nextStep: "verbal_intense"
|
||||
text: "Harsher self-degradation",
|
||||
type: "extreme_verbal",
|
||||
preview: "More brutal verbal self-punishment",
|
||||
nextStep: "extreme_verbal_punishment"
|
||||
},
|
||||
{
|
||||
text: "Mirror session - face yourself",
|
||||
type: "mirror",
|
||||
preview: "See your degradation reflected",
|
||||
nextStep: "mirror_escalation"
|
||||
text: "Mirror verbal punishment",
|
||||
type: "mirror_verbal",
|
||||
preview: "Degrade yourself while watching",
|
||||
nextStep: "mirror_verbal_punishment"
|
||||
},
|
||||
{
|
||||
text: "Complete verbal destruction",
|
||||
type: "verbal_destruction",
|
||||
preview: "Total verbal self-annihilation",
|
||||
nextStep: "verbal_destruction"
|
||||
}
|
||||
]
|
||||
},
|
||||
position_continue: {
|
||||
position_escalation: {
|
||||
type: 'choice',
|
||||
mood: 'authoritative',
|
||||
story: "The trainer observes your submission. 'Holding that degrading position well. Now let's add to your humiliation.'",
|
||||
mood: 'physical_domination',
|
||||
story: "The supervisor observes your shameful position with satisfaction. 'Holding that degrading pose well. Now we add to your physical punishment.'",
|
||||
choices: [
|
||||
{
|
||||
text: "Hold position longer",
|
||||
type: "endurance",
|
||||
preview: "Extended degrading pose",
|
||||
nextStep: "position_extended"
|
||||
text: "More degrading positions",
|
||||
type: "extreme_positions",
|
||||
preview: "Even more shameful physical poses",
|
||||
nextStep: "extreme_position_punishment"
|
||||
},
|
||||
{
|
||||
text: "Mirror session - see your submission",
|
||||
type: "mirror",
|
||||
preview: "Watch yourself in degrading position",
|
||||
nextStep: "mirror_position"
|
||||
}
|
||||
]
|
||||
},
|
||||
mirror_continue: {
|
||||
type: 'choice',
|
||||
mood: 'psychological',
|
||||
story: "The trainer smiles as you stare at yourself. 'Perfect. You can see exactly how pathetic you look. Ready for the next level?'",
|
||||
choices: [
|
||||
{
|
||||
text: "Extended mirror degradation",
|
||||
type: "mirror_intense",
|
||||
preview: "Longer self-humiliation session",
|
||||
nextStep: "mirror_extended"
|
||||
text: "Extended position holding",
|
||||
type: "endurance_position",
|
||||
preview: "Hold degrading poses for longer",
|
||||
nextStep: "endurance_position_punishment"
|
||||
},
|
||||
{
|
||||
text: "Mirror while in degrading position",
|
||||
text: "Mirror position punishment",
|
||||
type: "mirror_position",
|
||||
preview: "Combine visual and physical shame",
|
||||
nextStep: "mirror_position"
|
||||
preview: "Watch yourself in degrading positions",
|
||||
nextStep: "mirror_position_punishment"
|
||||
}
|
||||
]
|
||||
},
|
||||
mirror_escalation: {
|
||||
type: 'choice',
|
||||
mood: 'psychological_breaking',
|
||||
story: "The supervisor watches you stare at yourself in humiliation. 'Perfect. You can see exactly how pathetic you are. Ready for the next level of mirror punishment?'",
|
||||
choices: [
|
||||
{
|
||||
text: "Extended mirror degradation",
|
||||
type: "extended_mirror",
|
||||
preview: "Longer self-humiliation viewing",
|
||||
nextStep: "extended_mirror_punishment"
|
||||
},
|
||||
{
|
||||
text: "Mirror with position punishment",
|
||||
type: "combined_mirror",
|
||||
preview: "Combine visual and physical punishment",
|
||||
nextStep: "combined_mirror_punishment"
|
||||
},
|
||||
{
|
||||
text: "Ultimate mirror destruction",
|
||||
type: "mirror_destruction",
|
||||
preview: "Complete psychological breakdown via mirror",
|
||||
nextStep: "mirror_destruction"
|
||||
}
|
||||
]
|
||||
},
|
||||
gauntlet_phase_one: {
|
||||
type: 'mirror-action',
|
||||
mood: 'degrading',
|
||||
story: "The trainer forces you to look at yourself while speaking even more degrading phrases. 'See how pathetic you are? Say it louder!'",
|
||||
mood: 'gauntlet_beginning',
|
||||
story: "The supervisor begins the gauntlet. 'Phase One: Look at yourself while we break down your self-worth completely. This is just the beginning of your total humiliation.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Maintain eye contact with yourself while speaking louder and more degrading phrases",
|
||||
mirrorTaskText: "Say each phrase 5 times with conviction: 'I am a pathetic loser', 'I deserve to be humiliated', 'I am worthless trash'",
|
||||
duration: 180,
|
||||
nextStep: "completion"
|
||||
},
|
||||
verbal_intense: {
|
||||
type: 'action',
|
||||
mood: 'harsh',
|
||||
story: "The trainer demands more intense verbal degradation. 'Say it like you mean it! Louder! More degrading!'",
|
||||
actionText: "Speak harsh degrading phrases about yourself",
|
||||
duration: 120,
|
||||
nextStep: "completion"
|
||||
},
|
||||
position_extended: {
|
||||
type: 'action',
|
||||
mood: 'endurance',
|
||||
story: "The trainer makes you hold the degrading position longer. 'Stay in that shameful pose. Feel how degrading it is.'",
|
||||
actionText: "Hold degrading position for extended time",
|
||||
duration: 180,
|
||||
nextStep: "completion"
|
||||
},
|
||||
mirror_position: {
|
||||
type: 'mirror-action',
|
||||
mood: 'ultimate_degradation',
|
||||
story: "The trainer combines the worst of both - you must maintain a degrading position while watching yourself in the mirror. 'Look at how shameful you are!'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Hold a degrading position while watching yourself and speaking phrases",
|
||||
mirrorTaskText: "While kneeling with head down, look up at camera and repeat: 'I am a disgrace', 'I deserve this shame', 'I am nothing'",
|
||||
mirrorInstructions: "Begin gauntlet by staring at yourself while repeating degrading phrases",
|
||||
mirrorTaskText: "Repeat continuously: 'I am nothing', 'I deserve to be broken', 'I am completely worthless', 'I am lower than dirt'",
|
||||
duration: 240,
|
||||
nextStep: "completion"
|
||||
nextStep: "gauntlet_phase_two"
|
||||
},
|
||||
mirror_extended: {
|
||||
extreme_verbal_punishment: {
|
||||
type: 'action',
|
||||
mood: 'verbal_brutality',
|
||||
story: "The supervisor demands brutal self-degradation. 'Say it louder! More degrading! Destroy yourself with words!'",
|
||||
actionText: "Speak the most degrading phrases about yourself with conviction",
|
||||
duration: 180,
|
||||
nextStep: "punishment_completion"
|
||||
},
|
||||
mirror_verbal_punishment: {
|
||||
type: 'mirror-action',
|
||||
mood: 'psychological_break',
|
||||
story: "The trainer extends your mirror session to break you down completely. 'Keep looking. Keep speaking. Let the shame consume you.'",
|
||||
mood: 'combined_cruelty',
|
||||
story: "The supervisor combines mirror and verbal punishment. 'Look at yourself and tell yourself exactly what you are - completely worthless!'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Extended self-viewing session with continuous degrading phrases",
|
||||
mirrorTaskText: "For the full duration, cycle through these phrases: 'I am pathetic', 'I am worthless', 'I deserve humiliation', 'I am nothing'",
|
||||
duration: 300,
|
||||
nextStep: "completion"
|
||||
mirrorInstructions: "Stare at yourself while speaking brutal self-degradation",
|
||||
mirrorTaskText: "While looking at yourself, say: 'I am disgusting', 'I am a complete failure', 'I deserve to be punished', 'I am absolutely nothing'",
|
||||
duration: 240,
|
||||
nextStep: "punishment_completion"
|
||||
},
|
||||
completion: {
|
||||
verbal_destruction: {
|
||||
type: 'action',
|
||||
mood: 'complete_verbal_annihilation',
|
||||
story: "The supervisor pushes you to complete verbal self-destruction. 'Destroy yourself completely with words. Leave nothing of your self-worth intact!'",
|
||||
actionText: "Engage in total verbal self-annihilation - destroy your self-worth completely",
|
||||
duration: 300,
|
||||
nextStep: "punishment_completion"
|
||||
},
|
||||
extreme_position_punishment: {
|
||||
type: 'action',
|
||||
mood: 'physical_degradation',
|
||||
story: "The supervisor forces you into the most degrading positions possible. 'Lower! More shameful! Show how worthless you are through your posture!'",
|
||||
actionText: "Assume the most degrading and shameful physical positions possible",
|
||||
duration: 240,
|
||||
nextStep: "punishment_completion"
|
||||
},
|
||||
endurance_position_punishment: {
|
||||
type: 'action',
|
||||
mood: 'endurance_humiliation',
|
||||
story: "The supervisor makes you hold degrading positions for extended time. 'Hold that shameful pose longer! Feel how degrading it is!'",
|
||||
actionText: "Hold degrading positions for extended periods as punishment",
|
||||
duration: 360,
|
||||
nextStep: "punishment_completion"
|
||||
},
|
||||
mirror_position_punishment: {
|
||||
type: 'mirror-action',
|
||||
mood: 'visual_physical_punishment',
|
||||
story: "The supervisor combines position and mirror punishment. 'Hold that degrading position while watching yourself! See how shameful you look!'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Maintain degrading position while watching yourself",
|
||||
mirrorTaskText: "While holding shameful pose, say: 'This is what I deserve', 'I look pathetic', 'I am properly positioned', 'I am in my place'",
|
||||
duration: 300,
|
||||
nextStep: "punishment_completion"
|
||||
},
|
||||
extended_mirror_punishment: {
|
||||
type: 'mirror-action',
|
||||
mood: 'extended_psychological_torture',
|
||||
story: "The supervisor extends your mirror punishment to break you completely. 'Keep looking. Keep seeing what you really are. Let it destroy any remaining pride.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Extended mirror session to completely break down self-image",
|
||||
mirrorTaskText: "For the entire duration, repeat: 'I hate what I see', 'I am completely disgusting', 'I deserve this punishment', 'I am absolutely worthless'",
|
||||
duration: 420,
|
||||
nextStep: "punishment_completion"
|
||||
},
|
||||
combined_mirror_punishment: {
|
||||
type: 'mirror-action',
|
||||
mood: 'combined_torture',
|
||||
story: "The supervisor combines all forms of mirror punishment. 'Position yourself shamefully while watching and degrading yourself! Complete humiliation!'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Combine shameful positioning with mirror viewing and verbal degradation",
|
||||
mirrorTaskText: "In degrading position, while watching yourself, say: 'I am completely broken', 'I deserve all punishment', 'I am lower than human', 'I am absolutely nothing'",
|
||||
duration: 360,
|
||||
nextStep: "punishment_completion"
|
||||
},
|
||||
mirror_destruction: {
|
||||
type: 'mirror-action',
|
||||
mood: 'complete_psychological_destruction',
|
||||
story: "The supervisor prepares to completely destroy you via mirror punishment. 'This will shatter what's left of your self-worth. Watch yourself become nothing.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Ultimate mirror session designed to completely destroy self-worth",
|
||||
mirrorTaskText: "Stare at yourself and repeat these truths: 'I am completely worthless', 'I deserve to be destroyed', 'I am lower than dirt', 'I am absolutely nothing'",
|
||||
duration: 480,
|
||||
nextStep: "punishment_completion"
|
||||
},
|
||||
gauntlet_phase_two: {
|
||||
type: 'choice',
|
||||
mood: 'gauntlet_escalation',
|
||||
story: "The supervisor continues the gauntlet with cruel satisfaction. 'Phase One complete. You're beginning to understand what you are. Phase Two will break you further. Choose your next level of punishment.'",
|
||||
choices: [
|
||||
{
|
||||
text: "Physical degradation phase",
|
||||
type: "physical_gauntlet",
|
||||
preview: "Degrading physical punishment phase",
|
||||
nextStep: "gauntlet_physical_phase"
|
||||
},
|
||||
{
|
||||
text: "Verbal destruction phase",
|
||||
type: "verbal_gauntlet",
|
||||
preview: "Complete verbal self-destruction phase",
|
||||
nextStep: "gauntlet_verbal_phase"
|
||||
},
|
||||
{
|
||||
text: "Ultimate destruction phase",
|
||||
type: "ultimate_destruction",
|
||||
preview: "Final phase - complete destruction",
|
||||
nextStep: "gauntlet_ultimate_phase"
|
||||
}
|
||||
]
|
||||
},
|
||||
gauntlet_physical_phase: {
|
||||
type: 'mirror-action',
|
||||
mood: 'gauntlet_physical',
|
||||
story: "The supervisor begins the physical degradation phase. 'Now we break your body posture while you watch. Get into the most shameful position possible while staring at yourself!'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Gauntlet physical phase - degrading positions while watching yourself",
|
||||
mirrorTaskText: "In the most shameful position possible, while watching yourself, repeat: 'I am physically pathetic', 'My body shows my worthlessness', 'I deserve this shame'",
|
||||
duration: 360,
|
||||
nextStep: "gauntlet_final_phase"
|
||||
},
|
||||
gauntlet_verbal_phase: {
|
||||
type: 'mirror-action',
|
||||
mood: 'gauntlet_verbal',
|
||||
story: "The supervisor begins the verbal destruction phase. 'Now we destroy your mind completely. Look at yourself and speak the most brutal truths about what you are!'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Gauntlet verbal phase - complete self-destruction while watching",
|
||||
mirrorTaskText: "While staring at yourself, repeat these devastating truths: 'I am completely worthless', 'I am a total failure', 'I deserve to be broken', 'I am absolutely nothing'",
|
||||
duration: 420,
|
||||
nextStep: "gauntlet_final_phase"
|
||||
},
|
||||
gauntlet_ultimate_phase: {
|
||||
type: 'mirror-action',
|
||||
mood: 'gauntlet_ultimate',
|
||||
story: "The supervisor prepares the ultimate destruction phase. 'This is it - complete annihilation of your self-worth. Everything combined for maximum degradation!'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Ultimate gauntlet phase - complete destruction through all methods",
|
||||
mirrorTaskText: "In degrading position, while watching yourself, speak continuously: 'I am completely destroyed', 'I am thoroughly broken', 'I am lower than dirt', 'I am absolutely nothing'",
|
||||
duration: 600,
|
||||
nextStep: "gauntlet_completion"
|
||||
},
|
||||
gauntlet_final_phase: {
|
||||
type: 'mirror-action',
|
||||
mood: 'gauntlet_finishing',
|
||||
story: "The supervisor prepares the final phase of your punishment gauntlet. 'One final phase to cement your complete degradation. You'll never forget what you truly are after this.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Final gauntlet phase - complete your transformation into nothing",
|
||||
mirrorTaskText: "For the final phase, repeat continuously: 'I am completely broken', 'I have been properly punished', 'I know my place', 'I am thoroughly degraded'",
|
||||
duration: 300,
|
||||
nextStep: "gauntlet_completion"
|
||||
},
|
||||
punishment_completion: {
|
||||
type: 'completion',
|
||||
mood: 'satisfied',
|
||||
story: "The trainer nods approvingly. 'Well done. You've completed your humiliation training session. You're learning your place nicely.'",outcome: "degraded"
|
||||
mood: 'satisfied_cruelty',
|
||||
story: "The supervisor nods with cruel satisfaction. 'Punishment complete. You've been properly degraded and know your place. That's what happens to failures in this facility.'",
|
||||
outcome: "punished"
|
||||
},
|
||||
gauntlet_completion: {
|
||||
type: 'completion',
|
||||
mood: 'ultimate_satisfaction',
|
||||
story: "The supervisor looks at your broken state with complete satisfaction. 'Punishment Gauntlet complete. You have been thoroughly broken, completely degraded, and properly punished. You now know exactly what you are - absolutely nothing. Congratulations on surviving the gauntlet, though you'll never be the same.'",
|
||||
outcome: "completely_broken"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
id: 'scenario-mirror-degradation',
|
||||
text: "Mirror Degradation Session",
|
||||
id: 'scenario-humiliation-task',
|
||||
text: "Advanced Humiliation Challenge",
|
||||
difficulty: "Hard",
|
||||
interactiveType: "scenario-adventure",
|
||||
interactiveData: {
|
||||
title: "Reflective Humiliation Chamber",
|
||||
title: "Advanced Humiliation Training",
|
||||
steps: {
|
||||
start: {
|
||||
type: 'choice',
|
||||
mood: 'clinical',
|
||||
story: "You've been brought to a special room focused entirely on mirror-based humiliation. The operator explains coldly: 'This session is designed to break down your self-image through forced self-observation. Choose how we begin your visual degradation.'",
|
||||
story: "You've been selected for advanced humiliation training. The instructor looks at you with cold analysis. 'This session will test your ability to handle intense psychological degradation. We'll push your limits until you break. Choose your humiliation path.'",
|
||||
choices: [
|
||||
{
|
||||
text: "Start with gentle self-viewing",
|
||||
type: "gentle",
|
||||
preview: "Ease into mirror humiliation",
|
||||
nextStep: "gentle_mirror"
|
||||
text: "Psychological degradation",
|
||||
type: "psychological",
|
||||
preview: "Mental humiliation and self-worth destruction",
|
||||
nextStep: "psychological_start"
|
||||
},
|
||||
{
|
||||
text: "Immediate intense mirror degradation",
|
||||
type: "intense",
|
||||
preview: "Full mirror humiliation from start",
|
||||
nextStep: "intense_mirror"
|
||||
text: "Physical humiliation tasks",
|
||||
type: "physical",
|
||||
preview: "Degrading physical tasks and positions",
|
||||
nextStep: "physical_start"
|
||||
},
|
||||
{
|
||||
text: "Mirror with physical positioning",
|
||||
type: "combined",
|
||||
preview: "Visual and physical degradation",
|
||||
nextStep: "combined_start"
|
||||
text: "Mirror-based self-destruction",
|
||||
type: "mirror",
|
||||
preview: "Watch yourself be completely humiliated",
|
||||
nextStep: "mirror_start"
|
||||
},
|
||||
{
|
||||
text: "Complete humiliation protocol",
|
||||
type: "complete",
|
||||
preview: "All humiliation methods combined",
|
||||
nextStep: "complete_protocol"
|
||||
}
|
||||
]
|
||||
},
|
||||
gentle_mirror: {
|
||||
type: 'mirror-action',
|
||||
mood: 'building',
|
||||
story: "The operator activates your camera. 'Just look at yourself for now. Notice how you feel being observed, even by yourself.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Simply look at yourself and observe your feelings",
|
||||
mirrorTaskText: "Look at yourself for the full duration. Pay attention to how being watched makes you feel.",
|
||||
duration: 120,
|
||||
nextStep: "escalation_choice"
|
||||
psychological_start: {
|
||||
type: 'text',
|
||||
mood: 'psychological_attack',
|
||||
story: "The instructor begins your psychological breakdown. 'We're going to destroy your self-worth systematically. You'll understand exactly how worthless you are by the end of this.'",
|
||||
nextStep: "psychological_escalation"
|
||||
},
|
||||
intense_mirror: {
|
||||
type: 'mirror-action',
|
||||
mood: 'brutal',
|
||||
story: "The operator wastes no time. 'Look at yourself and speak the truth about what you see. No mercy, no kindness.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Look directly at yourself while speaking harsh truths",
|
||||
mirrorTaskText: "Say these phrases with conviction: 'I am disgusting', 'I am a failure', 'I am pathetic', 'No one could love this'",
|
||||
duration: 240,
|
||||
nextStep: "extreme_choice"
|
||||
physical_start: {
|
||||
type: 'text',
|
||||
mood: 'physical_domination',
|
||||
story: "The instructor points to specific positions. 'Your body will show your submission. Every pose will demonstrate your worthlessness. Begin with the most degrading position you can imagine.'",
|
||||
nextStep: "physical_escalation"
|
||||
},
|
||||
combined_start: {
|
||||
mirror_start: {
|
||||
type: 'mirror-action',
|
||||
mood: 'degrading',
|
||||
story: "The operator has you assume a degrading position. 'Now watch yourself in this shameful pose while speaking about your worthlessness.'",
|
||||
mood: 'visual_destruction',
|
||||
story: "The instructor activates the visual humiliation system. 'Now you'll see yourself for what you truly are. Watch your own degradation and let it break you.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Maintain degrading position while watching yourself",
|
||||
mirrorTaskText: "While kneeling, say repeatedly: 'This is what I deserve', 'I am in my proper place', 'I am beneath others'",
|
||||
duration: 180,
|
||||
nextStep: "combined_escalation"
|
||||
mirrorInstructions: "Begin by simply watching yourself while the instructor explains your worthlessness",
|
||||
mirrorTaskText: "Look at yourself while repeating: 'I am looking at failure', 'I see worthlessness', 'This is what pathetic looks like'",
|
||||
duration: 150,
|
||||
nextStep: "mirror_escalation"
|
||||
},
|
||||
escalation_choice: {
|
||||
complete_protocol: {
|
||||
type: 'text',
|
||||
mood: 'complete_domination',
|
||||
story: "The instructor's eyes light up. 'Complete protocol? Excellent. You'll experience every form of humiliation we have. This will break you completely and rebuild you as the worthless thing you are.'",
|
||||
nextStep: "protocol_phase_one"
|
||||
},
|
||||
psychological_escalation: {
|
||||
type: 'choice',
|
||||
mood: 'building_extreme',
|
||||
story: "The operator observes your reaction. 'Good. You're getting comfortable with being watched. Now we escalate your mirror degradation.'",
|
||||
mood: 'mind_breaking',
|
||||
story: "The instructor analyzes your response. 'Good. Your psychological defenses are weakening. Now we escalate your mental degradation.'",
|
||||
choices: [
|
||||
{
|
||||
text: "Verbal self-degradation in mirror",
|
||||
text: "Self-worth destruction",
|
||||
type: "self_worth",
|
||||
preview: "Systematic destruction of self-esteem",
|
||||
nextStep: "self_worth_destruction"
|
||||
},
|
||||
{
|
||||
text: "Identity dissolution",
|
||||
type: "identity",
|
||||
preview: "Complete breakdown of personal identity",
|
||||
nextStep: "identity_dissolution"
|
||||
},
|
||||
{
|
||||
text: "Mirror psychological assault",
|
||||
type: "mirror_psych",
|
||||
preview: "Visual psychological breakdown",
|
||||
nextStep: "mirror_psychological"
|
||||
}
|
||||
]
|
||||
},
|
||||
physical_escalation: {
|
||||
type: 'choice',
|
||||
mood: 'physical_breakdown',
|
||||
story: "The instructor observes your compliance. 'Your body is learning its place. Now we increase the physical humiliation.'",
|
||||
choices: [
|
||||
{
|
||||
text: "More degrading positions",
|
||||
type: "extreme_positions",
|
||||
preview: "Increasingly shameful physical poses",
|
||||
nextStep: "extreme_positions"
|
||||
},
|
||||
{
|
||||
text: "Endurance humiliation",
|
||||
type: "endurance",
|
||||
preview: "Extended degrading position holding",
|
||||
nextStep: "endurance_humiliation"
|
||||
},
|
||||
{
|
||||
text: "Mirror physical shame",
|
||||
type: "mirror_physical",
|
||||
preview: "Watch your physical degradation",
|
||||
nextStep: "mirror_physical"
|
||||
}
|
||||
]
|
||||
},
|
||||
mirror_escalation: {
|
||||
type: 'choice',
|
||||
mood: 'visual_intensification',
|
||||
story: "The instructor watches you stare at yourself. 'Perfect. You're seeing the truth. Now we intensify your visual humiliation.'",
|
||||
choices: [
|
||||
{
|
||||
text: "Extended self-viewing",
|
||||
type: "extended_viewing",
|
||||
preview: "Longer sessions of self-observation",
|
||||
nextStep: "extended_viewing"
|
||||
},
|
||||
{
|
||||
text: "Verbal mirror degradation",
|
||||
type: "verbal_mirror",
|
||||
preview: "Speak degrading words to yourself",
|
||||
nextStep: "verbal_mirror_session"
|
||||
preview: "Speak degradingly while watching yourself",
|
||||
nextStep: "verbal_mirror"
|
||||
},
|
||||
{
|
||||
text: "Physical poses while watching",
|
||||
type: "position_mirror",
|
||||
preview: "Degrading positions in full view",
|
||||
nextStep: "position_mirror_session"
|
||||
text: "Complete mirror destruction",
|
||||
type: "mirror_destruction",
|
||||
preview: "Total visual-based breakdown",
|
||||
nextStep: "mirror_destruction"
|
||||
}
|
||||
]
|
||||
},
|
||||
extreme_choice: {
|
||||
type: 'choice',
|
||||
mood: 'extreme',
|
||||
story: "The operator notes your state. 'You're responding well to the harsh truth. Ready for the final phase of mirror degradation?'",
|
||||
choices: [
|
||||
{
|
||||
text: "Extended brutal self-examination",
|
||||
type: "extended",
|
||||
preview: "Longer intense mirror session",
|
||||
nextStep: "extended_mirror"
|
||||
},
|
||||
{
|
||||
text: "Combined degradation finale",
|
||||
type: "finale",
|
||||
preview: "Ultimate mirror humiliation",
|
||||
nextStep: "mirror_finale"
|
||||
}
|
||||
]
|
||||
},
|
||||
verbal_mirror_session: {
|
||||
protocol_phase_one: {
|
||||
type: 'mirror-action',
|
||||
mood: 'self_destructive',
|
||||
story: "The operator commands: 'Look at yourself and tell yourself exactly what you are. Be brutal. Be honest.'",
|
||||
mood: 'protocol_beginning',
|
||||
story: "The instructor begins the complete protocol. 'Phase One: Visual recognition of your worthlessness. Look at yourself and begin to understand what you are.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Speak degrading truths about yourself while maintaining eye contact",
|
||||
mirrorTaskText: "Repeat with feeling: 'I am worthless', 'I am a disappointment', 'I am unlovable', 'I deserve this shame'",
|
||||
duration: 220,
|
||||
nextStep: "final_degradation"
|
||||
mirrorInstructions: "Protocol Phase One - comprehensive visual self-analysis",
|
||||
mirrorTaskText: "Study yourself carefully while repeating: 'I am analyzing my worthlessness', 'I see complete failure', 'I understand what I am', 'I recognize my pathetic nature'",
|
||||
duration: 240,
|
||||
nextStep: "protocol_phase_two"
|
||||
},
|
||||
position_mirror_session: {
|
||||
type: 'mirror-action',
|
||||
mood: 'physical_shame',
|
||||
story: "The operator directs you: 'Assume the most shameful position you can while watching yourself. See how low you've sunk.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Hold shameful position while watching yourself",
|
||||
mirrorTaskText: "In your degrading pose, say: 'This is my place', 'I deserve to be low', 'I am properly positioned'",
|
||||
duration: 200,
|
||||
nextStep: "final_degradation"
|
||||
},
|
||||
combined_escalation: {
|
||||
type: 'choice',
|
||||
mood: 'escalating',
|
||||
story: "The operator increases the pressure. 'You're handling the combination well. Time to push your limits further.'",
|
||||
choices: [
|
||||
{
|
||||
text: "More extreme positions",
|
||||
type: "extreme_position",
|
||||
preview: "Most degrading poses possible",
|
||||
nextStep: "extreme_position_mirror"
|
||||
},
|
||||
{
|
||||
text: "Verbal and physical combined",
|
||||
type: "total_degradation",
|
||||
preview: "Complete mirror humiliation",
|
||||
nextStep: "total_degradation_mirror"
|
||||
}
|
||||
]
|
||||
},
|
||||
extended_mirror: {
|
||||
type: 'mirror-action',
|
||||
mood: 'psychological_break',
|
||||
story: "The operator extends your session to completely break down your self-image. 'Keep looking. Keep speaking. Let it destroy your pride.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Extended brutal self-examination session",
|
||||
mirrorTaskText: "For the entire time, cycle through: 'I hate what I see', 'I am disgusting', 'I am a failure', 'I deserve nothing'",
|
||||
duration: 360,
|
||||
nextStep: "completion"
|
||||
},
|
||||
extreme_position_mirror: {
|
||||
type: 'mirror-action',
|
||||
mood: 'ultimate_physical_shame',
|
||||
story: "The operator pushes you to the most degrading physical position possible while you watch yourself. 'See how low you can go.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Hold the most shameful position while watching yourself",
|
||||
mirrorTaskText: "In your most degrading pose, repeat: 'This is what I am', 'I deserve worse', 'I am below human'",
|
||||
self_worth_destruction: {
|
||||
type: 'action',
|
||||
mood: 'systematic_destruction',
|
||||
story: "The instructor systematically destroys your self-worth. 'Every positive thought about yourself is a lie. We'll eliminate them all.'",
|
||||
actionText: "Allow systematic destruction of all self-worth and positive self-image",
|
||||
duration: 300,
|
||||
nextStep: "completion"
|
||||
nextStep: "humiliation_completion"
|
||||
},
|
||||
total_degradation_mirror: {
|
||||
type: 'mirror-action',
|
||||
mood: 'complete_destruction',
|
||||
story: "The operator combines everything for your total degradation. 'This is it - complete mirror-based humiliation. Watch yourself be completely broken.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Combine shameful positioning with brutal self-verbal degradation",
|
||||
mirrorTaskText: "While in degrading position, say continuously: 'I am nothing', 'I am worthless', 'I deserve this', 'I am completely pathetic'",
|
||||
duration: 420,
|
||||
nextStep: "completion"
|
||||
identity_dissolution: {
|
||||
type: 'action',
|
||||
mood: 'identity_breakdown',
|
||||
story: "The instructor works to dissolve your identity completely. 'Who you think you are is irrelevant. You'll become nothing but what we make you.'",
|
||||
actionText: "Experience complete dissolution of personal identity and self-concept",
|
||||
duration: 360,
|
||||
nextStep: "humiliation_completion"
|
||||
},
|
||||
mirror_finale: {
|
||||
mirror_psychological: {
|
||||
type: 'mirror-action',
|
||||
mood: 'ultimate_degradation',
|
||||
story: "The operator prepares the final devastating mirror session. 'This will break you completely. Watch yourself become nothing.'",
|
||||
mood: 'visual_mind_break',
|
||||
story: "The instructor combines mirror viewing with psychological assault. 'Look at yourself while we destroy your mind. See your worthlessness reflected back.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Ultimate mirror degradation session with complete self-destruction",
|
||||
mirrorTaskText: "Repeat these devastating truths: 'I am completely worthless', 'I deserve to be humiliated', 'I am lower than dirt', 'I am absolutely nothing'",
|
||||
mirrorInstructions: "Visual psychological breakdown - watch yourself while experiencing mental degradation",
|
||||
mirrorTaskText: "While staring at yourself, repeat: 'My mind is being broken', 'I see my psychological destruction', 'I am mentally worthless', 'My thoughts are being crushed'",
|
||||
duration: 300,
|
||||
nextStep: "humiliation_completion"
|
||||
},
|
||||
extreme_positions: {
|
||||
type: 'action',
|
||||
mood: 'physical_extremity',
|
||||
story: "The instructor pushes you to the most degrading physical positions possible. 'Show me how low you can go. Demonstrate your complete physical submission.'",
|
||||
actionText: "Assume the most extremely degrading physical positions possible",
|
||||
duration: 270,
|
||||
nextStep: "humiliation_completion"
|
||||
},
|
||||
endurance_humiliation: {
|
||||
type: 'action',
|
||||
mood: 'physical_endurance_break',
|
||||
story: "The instructor makes you hold degrading positions for extended periods. 'Your body will learn to stay in shameful poses until you're broken.'",
|
||||
actionText: "Hold degrading positions for extended periods to break physical resistance",
|
||||
duration: 450,
|
||||
nextStep: "humiliation_completion"
|
||||
},
|
||||
mirror_physical: {
|
||||
type: 'mirror-action',
|
||||
mood: 'visual_physical_shame',
|
||||
story: "The instructor combines physical degradation with mirror viewing. 'Hold shameful positions while watching yourself. See how physically pathetic you are.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Hold degrading positions while watching yourself in full view",
|
||||
mirrorTaskText: "While maintaining shameful pose, say: 'I see my physical shame', 'My body shows my worthlessness', 'I look completely pathetic', 'This is my proper position'",
|
||||
duration: 330,
|
||||
nextStep: "humiliation_completion"
|
||||
},
|
||||
extended_viewing: {
|
||||
type: 'mirror-action',
|
||||
mood: 'extended_visual_torture',
|
||||
story: "The instructor extends your mirror session to break you through prolonged self-viewing. 'Keep looking. Let the image of your worthlessness burn into your mind.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Extended self-viewing session designed to create lasting psychological impact",
|
||||
mirrorTaskText: "For the entire extended period, repeat: 'I cannot escape what I see', 'This image will haunt me', 'I am permanently viewing my shame', 'I see eternal worthlessness'",
|
||||
duration: 480,
|
||||
nextStep: "completion"
|
||||
nextStep: "humiliation_completion"
|
||||
},
|
||||
final_degradation: {
|
||||
verbal_mirror: {
|
||||
type: 'mirror-action',
|
||||
mood: 'finishing_blow',
|
||||
story: "The operator prepares to finish your degradation. 'One final mirror session to cement your place. Look at what you've become.'",
|
||||
mood: 'combined_verbal_visual',
|
||||
story: "The instructor has you degrade yourself verbally while watching. 'Speak the truth about what you see. Be brutal. Be honest. Destroy yourself with words while watching.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Final degrading mirror session to complete your humiliation",
|
||||
mirrorTaskText: "For the final time, tell yourself: 'I am completely broken', 'I am thoroughly humiliated', 'I know my place', 'I am properly degraded'",
|
||||
duration: 180,
|
||||
nextStep: "completion"
|
||||
mirrorInstructions: "Combine visual self-viewing with brutal verbal self-degradation",
|
||||
mirrorTaskText: "While watching yourself, speak continuously: 'I am looking at complete failure', 'I see worthless trash', 'I am verbally destroying what I see', 'I hate what looks back at me'",
|
||||
duration: 360,
|
||||
nextStep: "humiliation_completion"
|
||||
},
|
||||
completion: {
|
||||
mirror_destruction: {
|
||||
type: 'mirror-action',
|
||||
mood: 'total_visual_annihilation',
|
||||
story: "The instructor prepares for complete mirror-based destruction. 'This will shatter you completely. Watch yourself be utterly destroyed through your own reflection.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Ultimate mirror session designed for complete psychological destruction",
|
||||
mirrorTaskText: "Stare at yourself while experiencing complete destruction: 'I am watching my complete annihilation', 'I see total destruction', 'I am being utterly destroyed', 'I am becoming nothing'",
|
||||
duration: 540,
|
||||
nextStep: "humiliation_completion"
|
||||
},
|
||||
protocol_phase_two: {
|
||||
type: 'choice',
|
||||
mood: 'protocol_escalation',
|
||||
story: "The instructor moves to the next phase. 'Phase One complete. You're beginning to see what you are. Phase Two will break you further through combined methods.'",
|
||||
choices: [
|
||||
{
|
||||
text: "Physical protocol phase",
|
||||
type: "physical_protocol",
|
||||
preview: "Physical degradation as part of complete protocol",
|
||||
nextStep: "protocol_physical"
|
||||
},
|
||||
{
|
||||
text: "Psychological protocol phase",
|
||||
type: "psychological_protocol",
|
||||
preview: "Mental breakdown as part of complete protocol",
|
||||
nextStep: "protocol_psychological"
|
||||
},
|
||||
{
|
||||
text: "Ultimate protocol completion",
|
||||
type: "ultimate_protocol",
|
||||
preview: "Final phase of complete humiliation protocol",
|
||||
nextStep: "protocol_ultimate"
|
||||
}
|
||||
]
|
||||
},
|
||||
protocol_physical: {
|
||||
type: 'mirror-action',
|
||||
mood: 'protocol_physical_phase',
|
||||
story: "The instructor begins the physical phase of the complete protocol. 'Now your body will be broken while you watch. Physical degradation while viewing your shame.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Protocol physical phase - degrading positions while watching yourself",
|
||||
mirrorTaskText: "In degrading position while watching, repeat: 'My body is being broken', 'I see my physical submission', 'I am physically worthless', 'My pose shows my truth'",
|
||||
duration: 360,
|
||||
nextStep: "protocol_completion"
|
||||
},
|
||||
protocol_psychological: {
|
||||
type: 'mirror-action',
|
||||
mood: 'protocol_mental_phase',
|
||||
story: "The instructor begins the psychological phase of the complete protocol. 'Now we break your mind while you watch it happen. Mental destruction in full view.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Protocol psychological phase - mental breakdown while watching yourself",
|
||||
mirrorTaskText: "While watching your psychological breakdown, repeat: 'I see my mind breaking', 'I watch my thoughts crumble', 'I am mentally worthless', 'I observe my psychological destruction'",
|
||||
duration: 420,
|
||||
nextStep: "protocol_completion"
|
||||
},
|
||||
protocol_ultimate: {
|
||||
type: 'mirror-action',
|
||||
mood: 'protocol_ultimate_phase',
|
||||
story: "The instructor begins the ultimate phase of the complete protocol. 'Final phase - total annihilation through all methods combined. Watch yourself be completely destroyed.'",
|
||||
interactiveType: "mirror-task",
|
||||
mirrorInstructions: "Ultimate protocol phase - complete destruction through all humiliation methods",
|
||||
mirrorTaskText: "Experience and watch total destruction: 'I am completely destroyed', 'I see total annihilation', 'I am utterly broken', 'I am absolutely nothing'",
|
||||
duration: 600,
|
||||
nextStep: "protocol_completion"
|
||||
},
|
||||
humiliation_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"
|
||||
mood: 'clinical_satisfaction',
|
||||
story: "The instructor observes your broken state with clinical satisfaction. 'Humiliation training complete. You've been properly degraded and understand your worthlessness.'",
|
||||
outcome: "humiliated"
|
||||
},
|
||||
protocol_completion: {
|
||||
type: 'completion',
|
||||
mood: 'protocol_satisfaction',
|
||||
story: "The instructor completes the protocol with satisfaction. 'Complete humiliation protocol finished. You have been systematically broken through every method available. You are now properly educated about your true nature - absolutely worthless.'",
|
||||
outcome: "completely_processed"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ const mainGameData = {
|
|||
},
|
||||
{
|
||||
id: 3,
|
||||
text: "Stroke on your knees while watching lesbian porn for 5 minutes",
|
||||
text: "Change your panties and get on your knees for 1 minute",
|
||||
difficulty: "Medium"
|
||||
},
|
||||
{
|
||||
|
|
@ -33,37 +33,37 @@ const mainGameData = {
|
|||
},
|
||||
{
|
||||
id: 6,
|
||||
text: "Watch interracial porn on your back, legs up, stroke for 7 minutes",
|
||||
text: "Watch interracial in the captain morgan pose, stroke for 7 minutes",
|
||||
difficulty: "Medium"
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
text: "Edge to femdom content while lying face down for 4 minutes",
|
||||
text: "Edge to humiliation content while kneeling down for 4 minutes",
|
||||
difficulty: "Easy"
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
text: "Watch sissy hypno standing while stroking with your non-dominant hand for 8 minutes",
|
||||
text: "Watch sissy hypno standing while stroking with your non-dominant hand for 3 minutes",
|
||||
difficulty: "Medium"
|
||||
},
|
||||
{
|
||||
id: 9,
|
||||
text: "Goon to gangbang videos sitting in chair for 10 minutes, edge every 2 minutes",
|
||||
text: "Goon to gangbang videos sitting in chair for 5 minutes",
|
||||
difficulty: "Easy"
|
||||
},
|
||||
{
|
||||
id: 10,
|
||||
text: "Watch MILF porn while in doggy position, stroke for 6 minutes",
|
||||
text: "Watch MILF porn while standing, stroke for 2 minutes",
|
||||
difficulty: "Easy"
|
||||
},
|
||||
{
|
||||
id: 11,
|
||||
text: "Edge to cuckold captions standing for 12 minutes with multiple stops",
|
||||
text: "Edge to cuckold captions standing for 5 minutes with multiple stops",
|
||||
difficulty: "Easy"
|
||||
},
|
||||
{
|
||||
id: 12,
|
||||
text: "Watch trans porn while stroking sitting and standing alternately for 9 minutes",
|
||||
text: "Watch trans porn while stroking sitting and standing alternately for 6 minutes",
|
||||
difficulty: "Medium"
|
||||
},
|
||||
{
|
||||
|
|
@ -73,22 +73,22 @@ const mainGameData = {
|
|||
},
|
||||
{
|
||||
id: 14,
|
||||
text: "Watch hotwife content while edging on knees for 12 minutes",
|
||||
text: "Watch hotwife content while edging on knees for 2 minutes",
|
||||
difficulty: "Hard"
|
||||
},
|
||||
{
|
||||
id: 15,
|
||||
text: "Extended goon session: 15 minutes of edging standing to BBC compilations",
|
||||
text: "Get naked and do 5 minutes of edging standing to BBC compilations",
|
||||
difficulty: "Hard"
|
||||
},
|
||||
{
|
||||
id: 16,
|
||||
text: "Marathon edge session: 15 minutes alternating sitting/standing while watching porn",
|
||||
text: "Change your panties and then do 5 minutes alternating sitting/standing while watching porn",
|
||||
difficulty: "Hard"
|
||||
},
|
||||
{
|
||||
id: 17,
|
||||
text: "Ultimate goon challenge: 15 minutes of edging in doggy position to humiliation content",
|
||||
text: "Put panties and a bra on and do 15 minutes of edging in doggy position to humiliation content",
|
||||
difficulty: "Hard"
|
||||
}
|
||||
],
|
||||
|
|
@ -97,51 +97,51 @@ const mainGameData = {
|
|||
consequenceTasks: [
|
||||
{
|
||||
id: 101,
|
||||
text: "Watch your girlfriend with another man fantasy while sitting in chastity for 5 minutes"
|
||||
text: "Find your wife's dirtiest panties and sniff them while stroking for 5 minutes"
|
||||
},
|
||||
{
|
||||
id: 102,
|
||||
text: "Stand in corner and repeat 'I am a sissy slut' 25 times out loud"
|
||||
text: "Find your wife's sexiest photo, imagine sending it to her ex-boyfriend, and edge while thinking about it for 8 minutes"
|
||||
},
|
||||
{
|
||||
id: 103,
|
||||
text: "Watch cuckold porn sitting while in panties, no touching for 8 minutes"
|
||||
text: "Go through your wife's photos, pick the sexiest one, and imagine her with another man for 10 minutes"
|
||||
},
|
||||
{
|
||||
id: 104,
|
||||
text: "Stand and recite 'I am inferior to real men' 50 times while watching BBC porn"
|
||||
text: "Look at your wife's most revealing photos and post them on erome for other men to see for 7 minutes"
|
||||
},
|
||||
{
|
||||
id: 105,
|
||||
text: "Wear feminine clothing and pose submissively sitting for 10 minutes"
|
||||
text: "Put on your wife's dress or skirt and pose femininely in the mirror for 10 minutes"
|
||||
},
|
||||
{
|
||||
id: 106,
|
||||
text: "Practice sucking motions on a dildo while standing and watching gay porn for 5 minutes"
|
||||
text: "Find your wife's hottest bikini photos and imagine sharing them with strangers while stroking for 8 minutes"
|
||||
},
|
||||
{
|
||||
id: 107,
|
||||
text: "Kneel and worship alpha male images for 8 minutes, no touching"
|
||||
text: "Look at your wife's photos and imagine telling other men how good she is in bed for 12 minutes"
|
||||
},
|
||||
{
|
||||
id: 108,
|
||||
text: "Sit in feminine attire and practice feminine poses while denied release for 12 minutes"
|
||||
text: "Find your wife's sexiest lingerie, put it on, and practice crawling on all fours like a submissive pet for 8 minutes"
|
||||
},
|
||||
{
|
||||
id: 109,
|
||||
text: "Listen to sissy hypno audio while standing in feminine attire for 10 minutes"
|
||||
text: "Go through your wife's photos and send her nudes to your coworkers while repeating 'She deserves better' 100 times"
|
||||
},
|
||||
{
|
||||
id: 110,
|
||||
text: "Watch hotwife videos sitting while locked in chastity, repeat 'I am a cuckold' 50 times"
|
||||
text: "Look at your wife's most intimate photos and imagine her sending them to other men behind your back for 15 minutes"
|
||||
},
|
||||
{
|
||||
id: 111,
|
||||
text: "Practice walking in heels while standing and watching feminization content for 8 minutes"
|
||||
text: "Find your wife's hottest photos and post them on chatpic for real men for 10 minutes"
|
||||
},
|
||||
{
|
||||
id: 112,
|
||||
text: "Sit and study alpha male photos while reciting why you're inferior for 15 minutes"
|
||||
text: "Look at your wife's sexiest pictures while imagining her showing them to alpha males and chanting 'I'm a pathetic cuckold' for 12 minutes"
|
||||
}
|
||||
],
|
||||
|
||||
|
|
|
|||
|
|
@ -478,6 +478,19 @@ class PopupImageManager {
|
|||
updateConfig(newConfig) {
|
||||
this.config = { ...this.config, ...newConfig };
|
||||
this.dataManager.set('popupImageConfig', this.config);
|
||||
|
||||
// Update periodic system timing if frequency/duration config is provided
|
||||
if (newConfig.frequency) {
|
||||
this.periodicSystem.minInterval = newConfig.frequency.min;
|
||||
this.periodicSystem.maxInterval = newConfig.frequency.max;
|
||||
console.log('Updated periodic system frequency:', newConfig.frequency);
|
||||
}
|
||||
|
||||
if (newConfig.duration) {
|
||||
this.periodicSystem.displayDuration = newConfig.duration.min; // Use min duration for consistency
|
||||
console.log('Updated periodic system duration:', newConfig.duration);
|
||||
}
|
||||
|
||||
console.log('Popup image config updated:', newConfig);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6320,4 +6320,91 @@ button#start-mirror-btn:disabled {
|
|||
.video-item .video-directory {
|
||||
font-size: var(--font-xs);
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
/* Photo Gallery Styles */
|
||||
.photo-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
||||
gap: 20px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.photo-item {
|
||||
background: var(--bg-secondary);
|
||||
border-radius: 12px;
|
||||
overflow: hidden;
|
||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||
}
|
||||
|
||||
.photo-item:hover {
|
||||
transform: translateY(-5px);
|
||||
box-shadow: 0 8px 25px rgba(138, 43, 226, 0.3);
|
||||
}
|
||||
|
||||
.photo-container {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.photo-container img {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
object-fit: cover;
|
||||
cursor: pointer;
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
.photo-container img:hover {
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.photo-info {
|
||||
padding: 12px;
|
||||
background: var(--bg-tertiary);
|
||||
}
|
||||
|
||||
.photo-date {
|
||||
display: block;
|
||||
color: var(--text-secondary);
|
||||
font-size: var(--font-sm);
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.photo-type {
|
||||
color: var(--color-accent);
|
||||
font-size: var(--font-xs);
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
.no-photos-message {
|
||||
grid-column: 1 / -1;
|
||||
text-align: center;
|
||||
padding: 40px 20px;
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
.no-photos-message p {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.gallery-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0 20px 10px 20px;
|
||||
border-bottom: 2px solid var(--color-primary);
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.gallery-header h4 {
|
||||
color: var(--text-primary);
|
||||
font-size: var(--font-lg);
|
||||
}
|
||||
|
||||
.photo-count {
|
||||
color: var(--color-accent);
|
||||
font-size: var(--font-sm);
|
||||
font-weight: 600;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue