FIX: Quick Play XP calculation and implement exponential level scaling
FIXED: Quick Play XP calculation bug - Disabled legacy completeTask() function in quick-play.html that awarded 10-30 XP - Prevented main game from setting up button handlers when in Quick Play mode - Quick Play now correctly awards 1-3 XP based on completion time + session bonuses - Eliminated double/triple XP awards from multiple competing systems IMPLEMENTED: Exponential XP level scaling - Updated from linear progression (100 XP per level) to exponential scaling - Level 2 now requires only 10 XP (was 100 XP) for accessible early progression - Uses formula: XP = Math.floor(10 * Math.pow(1.5, level - 2)) for levels 2+ - Level scaling: L3=25, L5=82, L10=751, L15=5844, L20=44520 XP - Each level requires ~50% more XP than previous, making high levels prestigious CLEANUP: Remove outdated index_temp.html - Deleted index_temp.html containing obsolete AI task system and old theme code - File contained outdated character image paths and removed functionality - Not referenced anywhere in project, was just development cruft RESULT: Balanced progression system with accessible early levels and challenging endgame
This commit is contained in:
parent
4611f03d72
commit
0615672872
40
index.html
40
index.html
|
|
@ -2588,27 +2588,29 @@
|
|||
}
|
||||
|
||||
// ===== LEVEL CALCULATION SYSTEM =====
|
||||
// Exponential XP scaling: starts at 10 XP for level 2, then grows exponentially
|
||||
// Formula: XP = Math.floor(10 * Math.pow(1.5, level - 2)) for levels 2+
|
||||
const levelData = [
|
||||
{ level: 1, name: "Virgin", xpRequired: 0 },
|
||||
{ level: 2, name: "Curious", xpRequired: 100 },
|
||||
{ level: 3, name: "Eager", xpRequired: 200 },
|
||||
{ level: 4, name: "Aroused", xpRequired: 300 },
|
||||
{ level: 5, name: "Lustful", xpRequired: 400 },
|
||||
{ level: 6, name: "Passionate", xpRequired: 500 },
|
||||
{ level: 7, name: "Addicted", xpRequired: 600 },
|
||||
{ level: 8, name: "Obsessed", xpRequired: 700 },
|
||||
{ level: 9, name: "Deviant", xpRequired: 800 },
|
||||
{ level: 10, name: "Kinky", xpRequired: 900 },
|
||||
{ level: 11, name: "Perverted", xpRequired: 1000 },
|
||||
{ level: 12, name: "Depraved", xpRequired: 1100 },
|
||||
{ level: 13, name: "Dominant", xpRequired: 1200 },
|
||||
{ level: 14, name: "Submissive", xpRequired: 1300 },
|
||||
{ level: 15, name: "Hedonist", xpRequired: 1400 },
|
||||
{ level: 16, name: "Insatiable", xpRequired: 1500 },
|
||||
{ level: 17, name: "Transcendent", xpRequired: 1600 },
|
||||
{ level: 18, name: "Enlightened", xpRequired: 1700 },
|
||||
{ level: 19, name: "Godlike", xpRequired: 1800 },
|
||||
{ level: 20, name: "Omnipotent", xpRequired: 1900 }
|
||||
{ level: 2, name: "Curious", xpRequired: 10 }, // 10 XP
|
||||
{ level: 3, name: "Eager", xpRequired: 25 }, // 15 more (25 total)
|
||||
{ level: 4, name: "Aroused", xpRequired: 48 }, // 23 more (48 total)
|
||||
{ level: 5, name: "Lustful", xpRequired: 82 }, // 34 more (82 total)
|
||||
{ level: 6, name: "Passionate", xpRequired: 133 }, // 51 more (133 total)
|
||||
{ level: 7, name: "Addicted", xpRequired: 209 }, // 76 more (209 total)
|
||||
{ level: 8, name: "Obsessed", xpRequired: 323 }, // 114 more (323 total)
|
||||
{ level: 9, name: "Deviant", xpRequired: 494 }, // 171 more (494 total)
|
||||
{ level: 10, name: "Kinky", xpRequired: 751 }, // 257 more (751 total)
|
||||
{ level: 11, name: "Perverted", xpRequired: 1137 }, // 386 more (1137 total)
|
||||
{ level: 12, name: "Depraved", xpRequired: 1716 }, // 579 more (1716 total)
|
||||
{ level: 13, name: "Dominant", xpRequired: 2585 }, // 869 more (2585 total)
|
||||
{ level: 14, name: "Submissive", xpRequired: 3889 }, // 1304 more (3889 total)
|
||||
{ level: 15, name: "Hedonist", xpRequired: 5844 }, // 1955 more (5844 total)
|
||||
{ level: 16, name: "Insatiable", xpRequired: 8777 }, // 2933 more (8777 total)
|
||||
{ level: 17, name: "Transcendent", xpRequired: 13176 }, // 4399 more (13176 total)
|
||||
{ level: 18, name: "Enlightened", xpRequired: 19775 }, // 6599 more (19775 total)
|
||||
{ level: 19, name: "Godlike", xpRequired: 29673 }, // 9898 more (29673 total)
|
||||
{ level: 20, name: "Omnipotent", xpRequired: 44520 } // 14847 more (44520 total)
|
||||
];
|
||||
|
||||
function calculateLevel(totalXP) {
|
||||
|
|
|
|||
6264
index_temp.html
6264
index_temp.html
File diff suppressed because it is too large
Load Diff
|
|
@ -1286,7 +1286,9 @@
|
|||
endGame();
|
||||
}
|
||||
if (e.target && e.target.id === 'complete-task') {
|
||||
console.log('Complete task button clicked via global handler');
|
||||
console.log('Complete task button clicked via global handler - Quick Play handles this with specific listeners');
|
||||
// Don't call anything here - Quick Play uses its own specific event listeners
|
||||
return;
|
||||
}
|
||||
if (e.target && e.target.id === 'skip-task') {
|
||||
console.log('Skip task button clicked via global handler');
|
||||
|
|
@ -3488,15 +3490,10 @@
|
|||
}
|
||||
|
||||
function completeTask(task) {
|
||||
if (gameInstance && gameInstance.gameState) {
|
||||
gameInstance.gameState.tasksCompleted++;
|
||||
gameInstance.gameState.xp += (task.difficulty === 'Hard' ? 30 : task.difficulty === 'Medium' ? 20 : 10);
|
||||
updateGameStatus({
|
||||
tasksCompleted: gameInstance.gameState.tasksCompleted,
|
||||
xp: gameInstance.gameState.xp
|
||||
});
|
||||
}
|
||||
loadNextTask();
|
||||
// Legacy function - disabled in Quick Play to prevent double XP
|
||||
// Quick Play uses quickPlayCompleteTask() instead
|
||||
console.warn('Legacy completeTask() called - this should not happen in Quick Play mode');
|
||||
return;
|
||||
}
|
||||
|
||||
function skipTask(task) {
|
||||
|
|
|
|||
|
|
@ -1759,11 +1759,16 @@ class TaskChallengeGame {
|
|||
this.initializeGameModeListeners();
|
||||
|
||||
// Game actions - support both main game and Quick Play button IDs
|
||||
safeAddListener('complete-btn', 'click', () => this.completeTask());
|
||||
safeAddListener('complete-task', 'click', () => this.completeTask());
|
||||
safeAddListener('skip-btn', 'click', () => this.skipTask());
|
||||
safeAddListener('skip-task', 'click', () => this.skipTask());
|
||||
safeAddListener('mercy-skip-btn', 'click', () => this.mercySkip());
|
||||
// Skip setting up handlers if in Quick Play mode (Quick Play handles its own)
|
||||
if (!this.gameState.isQuickPlay) {
|
||||
safeAddListener('complete-btn', 'click', () => this.completeTask());
|
||||
safeAddListener('complete-task', 'click', () => this.completeTask());
|
||||
safeAddListener('skip-btn', 'click', () => this.skipTask());
|
||||
safeAddListener('skip-task', 'click', () => this.skipTask());
|
||||
safeAddListener('mercy-skip-btn', 'click', () => this.mercySkip());
|
||||
} else {
|
||||
console.log('🎮 Quick Play mode detected - skipping main game button handlers');
|
||||
}
|
||||
safeAddListener('pause-btn', 'click', () => this.pauseGame());
|
||||
|
||||
// Theme selector
|
||||
|
|
|
|||
Loading…
Reference in New Issue