diff --git a/clicker/index.html b/clicker/index.html
index 30daf90..c379502 100644
--- a/clicker/index.html
+++ b/clicker/index.html
@@ -80,117 +80,130 @@
diff --git a/clicker/script.js b/clicker/script.js
index 1763fc4..0b123e8 100644
--- a/clicker/script.js
+++ b/clicker/script.js
@@ -184,6 +184,21 @@ function updateUI() {
updateCardState('timeBonusCard', !timeBonus && score >= timeBonusCost);
updateCardState('ultraPowerCard', !ultraPower && score >= ultraPowerCost);
+ // Update premium upgrade "Gekauft" status
+ updatePremiumUpgradeOwned('doubleClick', doubleClick);
+ updatePremiumUpgradeOwned('idleMultiplier', idleMultiplier);
+ updatePremiumUpgradeOwned('clickMultiplier', clickMultiplier);
+ updatePremiumUpgradeOwned('fastAutoClicker', fastAutoClicker);
+ updatePremiumUpgradeOwned('autoClickerBoost', autoClickerBoost);
+ updatePremiumUpgradeOwned('megaClick', megaClick);
+ updatePremiumUpgradeOwned('hyperIdle', hyperIdle);
+ updatePremiumUpgradeOwned('prestigeBoost', prestigeBoost);
+ updatePremiumUpgradeOwned('superMultiplier', superMultiplier);
+ updatePremiumUpgradeOwned('timeBonus', timeBonus);
+ updatePremiumUpgradeOwned('goldenClick', goldenClick);
+ updatePremiumUpgradeOwned('comboSystem', comboSystem);
+ updatePremiumUpgradeOwned('ultraPower', ultraPower);
+
// Update settings
document.getElementById('notificationStatus').textContent = notificationsOn ? 'AN' : 'AUS';
@@ -194,16 +209,25 @@ function updateUI() {
saveGame();
}
-function showScoreChange(amount, isGolden = false) {
+function showScoreChange(amount, isGolden = false, isAuto = false) {
const container = document.getElementById('score-container');
const change = document.createElement('div');
change.className = 'score-change';
- change.textContent = `+${formatNumber(amount)}${isGolden ? ' ⭐' : ''}`;
+
+ if (isAuto) {
+ change.textContent = `+${formatNumber(amount)} 🤖`;
+ change.style.left = '0';
+ change.style.right = 'auto';
+ } else {
+ change.textContent = `+${formatNumber(amount)}${isGolden ? ' ⭐' : ''}`;
+ }
+
if (isGolden) {
change.style.color = '#FFD700';
change.style.fontSize = '1.5rem';
change.style.fontWeight = '800';
}
+
container.appendChild(change);
setTimeout(() => change.remove(), 1000);
@@ -223,6 +247,19 @@ function updateCardState(id, enabled) {
}
}
+function updatePremiumUpgradeOwned(name, isOwned) {
+ const ownedLabel = document.getElementById(name + 'Owned');
+ const costLabel = document.getElementById(name + 'CostLabel');
+
+ if (isOwned) {
+ ownedLabel.style.display = 'inline';
+ if (costLabel) costLabel.style.display = 'none';
+ } else {
+ ownedLabel.style.display = 'none';
+ if (costLabel) costLabel.style.display = 'inline';
+ }
+}
+
function clickScore() {
// Basis-Multiplikatoren
let clickMultipliers = (doubleClick ? 2 : 1) * (clickMultiplier ? 1.5 : 1);
@@ -499,28 +536,42 @@ function buyUltraPower() {
function prestige() {
const requiredScore = 1000 * Math.pow(2, prestigeLevel);
if (score >= requiredScore) {
- if (confirm(`Prestige durchführen? Du wirst deinen Fortschritt zurücksetzen, aber erhältst einen permanenten ${(0.5 + prestigeLevel * 0.1).toFixed(1)}x Multiplikator für alle Einkommen.`)) {
- prestigeLevel++;
-
- // Reset game state but keep prestige level and upgrades
- score = 0;
- clickPower = 1;
- idlePower = 0;
- autoClickers = 0;
- clickPowerCost = 10;
- idleCost = 20;
- autoClickerCost = 100;
- totalClicks = 0;
-
- if (notificationsOn) {
- showNotification(`Prestige auf Level ${prestigeLevel}! ${(0.5 + (prestigeLevel-1)*0.1).toFixed(1)}x Multiplikator erhalten.`);
- }
-
- updateUI();
- }
+ // Öffne das Prestige-Modal
+ const modal = document.getElementById('prestigeModal');
+ const text = document.getElementById('prestigeModalText');
+ text.innerHTML = `Du wirst deinen Fortschritt zurücksetzen, aber erhältst einen permanenten ${(0.5 + prestigeLevel * 0.1).toFixed(1)}x Multiplikator für alle Einkommen.
Deine gekauften Upgrades bleiben erhalten!`;
+ modal.classList.add('active');
}
}
+function closePrestigeModal() {
+ const modal = document.getElementById('prestigeModal');
+ modal.classList.remove('active');
+}
+
+function confirmPrestige() {
+ // Schließe das Modal
+ closePrestigeModal();
+
+ prestigeLevel++;
+
+ // Reset game state but keep prestige level and upgrades
+ score = 0;
+ clickPower = 1;
+ idlePower = 0;
+ autoClickers = 0;
+ clickPowerCost = 10;
+ idleCost = 20;
+ autoClickerCost = 100;
+ totalClicks = 0;
+
+ if (notificationsOn) {
+ showNotification(`Prestige auf Level ${prestigeLevel}! ${(0.5 + (prestigeLevel-1)*0.1).toFixed(1)}x Multiplikator erhalten.`);
+ }
+
+ updateUI();
+}
+
function toggleNotifications() {
notificationsOn = !notificationsOn;
updateUI();
@@ -542,9 +593,81 @@ function switchTab(id) {
}
function resetGame() {
- if (confirm("Bist du sicher, dass du ALLE Fortschritte zurücksetzen möchtest? Dies kann nicht rückgängig gemacht werden!")) {
- localStorage.removeItem("clickerSave");
- location.reload();
+ // Öffne das Reset-Modal
+ const modal = document.getElementById('resetModal');
+ modal.classList.add('active');
+}
+
+function closeResetModal() {
+ const modal = document.getElementById('resetModal');
+ modal.classList.remove('active');
+}
+
+function confirmReset() {
+ // Schließe das Modal
+ closeResetModal();
+
+ // Lösche den Spielstand
+ localStorage.removeItem("clickerSave");
+
+ // Setze alle Variablen zurück
+ score = 0;
+ totalScore = 0;
+ clickPower = 1;
+ idlePower = 0;
+ autoClickers = 0;
+ clickPowerCost = 10;
+ idleCost = 20;
+ autoClickerCost = 100;
+ totalClicks = 0;
+ prestigeLevel = 0;
+ secondsPlayed = 0;
+ lastUpdate = Date.now();
+ startTime = Date.now();
+ comboCount = 0;
+ lastClickTime = 0;
+
+ // Setze Upgrades zurück
+ doubleClick = false;
+ idleMultiplier = false;
+ clickMultiplier = false;
+ doubleClickCost = 500;
+ idleMultiplierCost = 1000;
+ clickMultiplierCost = 2000;
+
+ // Neue Upgrades zurücksetzen
+ fastAutoClicker = false;
+ autoClickerBoost = false;
+ megaClick = false;
+ hyperIdle = false;
+ superMultiplier = false;
+ prestigeBoost = false;
+ goldenClick = false;
+ comboSystem = false;
+ timeBonus = false;
+ ultraPower = false;
+ fastAutoClickerCost = 5000;
+ autoClickerBoostCost = 10000;
+ megaClickCost = 15000;
+ hyperIdleCost = 20000;
+ superMultiplierCost = 30000;
+ prestigeBoostCost = 25000;
+ goldenClickCost = 40000;
+ comboSystemCost = 50000;
+ timeBonusCost = 35000;
+ ultraPowerCost = 75000;
+
+ // Achievements zurücksetzen
+ achievements.forEach(achievement => {
+ achievement.earned = false;
+ });
+
+ // UI aktualisieren
+ updateUI();
+ renderAchievements();
+
+ if (notificationsOn) {
+ showNotification('Spiel wurde zurückgesetzt!');
}
}
@@ -796,6 +919,10 @@ setInterval(() => {
const clicks = autoClickers * clickMultipliers * prestigeBonus * timeMult;
score += clicks;
totalScore += clicks;
+
+ // Visual feedback - zeige Auto-Clicker-Anzeige
+ showScoreChange(clicks, false, true);
+
updateUI();
}
}, fastAutoClicker ? 3000 : 5000);
@@ -884,7 +1011,7 @@ function copyShareText() {
}, 2000);
}).catch(err => {
console.error('Fehler beim Kopieren:', err);
- alert('Fehler beim Kopieren in die Zwischenablage');
+ showNotification('❌ Fehler beim Kopieren in die Zwischenablage');
});
}
diff --git a/clicker/style.css b/clicker/style.css
index 2731ee9..cd889c8 100644
--- a/clicker/style.css
+++ b/clicker/style.css
@@ -120,7 +120,7 @@ nav {
right: 0;
font-size: 1rem;
font-weight: 600;
- color: var(--success);
+ color: var(--secondary-color);
opacity: 0;
transform: translateY(10px);
animation: scoreFloat 1s ease-out forwards;
@@ -317,7 +317,7 @@ footer a:hover {
border-radius: 8px;
margin-bottom: 10px;
animation: slideIn 0.3s ease forwards;
- border-left: 4px solid var(--spotify-green);
+ border-left: 4px solid var(--secondary-color);
box-shadow: 0 3px 6px var(--shadow-color);
}
@@ -505,7 +505,7 @@ footer a:hover {
bottom: 20px;
left: 50%;
transform: translateX(-50%) translateY(100px);
- background: var(--spotify-green);
+ background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
color: white;
padding: 15px 25px;
border-radius: 8px;