1
0

Clicker: Funktionen erweitert

This commit is contained in:
Akamaru
2025-10-31 21:08:48 +01:00
parent 2c575dd211
commit 0e0110ba31
3 changed files with 284 additions and 54 deletions

View File

@@ -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 <strong style="color: var(--secondary-color);">${(0.5 + prestigeLevel * 0.1).toFixed(1)}x Multiplikator</strong> für alle Einkommen.<br><br>Deine gekauften <strong>Upgrades bleiben erhalten</strong>!`;
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');
});
}