From d5f7904365b0c9e25e4deb5e3491c3d17f0a94ad Mon Sep 17 00:00:00 2001 From: cay Date: Tue, 14 Apr 2026 09:05:02 +0100 Subject: [PATCH] q45z35 --- sockets/1vKI_daily.socket.js | 75 +++++++++++++++++++++++++++++------- 1 file changed, 61 insertions(+), 14 deletions(-) diff --git a/sockets/1vKI_daily.socket.js b/sockets/1vKI_daily.socket.js index b3e4178..e6eedcd 100644 --- a/sockets/1vKI_daily.socket.js +++ b/sockets/1vKI_daily.socket.js @@ -29,30 +29,77 @@ function calcAvatarHp(level) { return 20 + (Math.max(1, Math.min(50, level || 1)) - 1) * 2; } +/* ── Max. Rarity nach Spielerlevel (identisch zu combine.route.js) ── */ +function getMaxRarity(playerLevel) { + if (playerLevel < 10) return 2; + if (playerLevel < 20) return 3; + if (playerLevel < 30) return 4; + if (playerLevel < 40) return 5; + return 6; +} + /* ── Wächter-Namen pro Station ────────────────────────────── */ const GUARD_NAMES = [ "", "Torwächter", "Waldläufer", "Steinbrecher", "Schattenjäger", "Eisenherzog", "Sturmritter", "Himmelsherold", ]; -/* ── KI-Deck laden (Schwierigkeit nach Station) ───────────── */ -async function loadAiDeck(station) { - const maxRarity = station <= 2 ? 1 : station <= 4 ? 2 : station <= 6 ? 3 : 4; +/* ── KI-Deck laden (Schwierigkeit skaliert mit Station) ─────── + Station 1 → 5 Karten, max. Rarity 1 + Station 2 → 7 Karten, max. Rarity 1 + Station 3 → 9 Karten, max. Rarity 2 + Station 4 → 11 Karten, max. Rarity 2 + Station 5 → 12 Karten, max. Rarity 3 + Station 6 → 14 Karten, max. Rarity 3 + Station 7 → 15 Karten, max. Rarity 4 +────────────────────────────────────────────────────────────── */ +async function loadAiDeck(station, playerLevel) { + // Rarity nach Station (Schwierigkeitsstufe) + const stationRarity = station <= 2 ? 1 + : station <= 4 ? 2 + : station <= 6 ? 3 + : 4; + + // KI darf maximal 1 Rarity über dem Spieler liegen + const playerMaxRarity = getMaxRarity(playerLevel || 1); + const maxRarity = Math.min(stationRarity, playerMaxRarity + 1); + + // Kartenanzahl nach Station (3–15) + const deckSize = station === 1 ? 5 + : station === 2 ? 7 + : station === 3 ? 9 + : station === 4 ? 11 + : station === 5 ? 12 + : station === 6 ? 14 + : 15; + try { + // Zuerst passende Karten mit korrekter Rarity holen const [cards] = await db.query( `SELECT id, name, image, attack, defends, cooldown, \`range\`, \`race\`, rarity - FROM cards WHERE rarity <= ? ORDER BY RAND() LIMIT 10`, - [maxRarity] + FROM cards + WHERE rarity <= ? + ORDER BY RAND() + LIMIT ?`, + [maxRarity, deckSize] ); - if (cards.length === 0) { - // Fallback: alle Karten - const [all] = await db.query( - `SELECT id, name, image, attack, defends, cooldown, \`range\`, \`race\`, rarity - FROM cards ORDER BY RAND() LIMIT 10` - ); - return all.map(c => ({ ...c, currentCd: 0 })); + + if (cards.length > 0) { + console.log(`[HT] KI-Deck Station ${station}: ${cards.length} Karten, max. Rarity ${maxRarity}`); + return cards.map(c => ({ ...c, currentCd: 0 })); } - return cards.map(c => ({ ...c, currentCd: 0 })); + + // Fallback: beliebige Karten wenn keine mit passender Rarity gefunden + console.warn(`[HT] Keine Karten mit Rarity <= ${maxRarity} – Fallback auf alle Karten`); + const [all] = await db.query( + `SELECT id, name, image, attack, defends, cooldown, \`range\`, \`race\`, rarity + FROM cards + ORDER BY RAND() + LIMIT ?`, + [deckSize] + ); + return all.map(c => ({ ...c, currentCd: 0 })); + } catch (err) { console.error('[HT] loadAiDeck Fehler:', err); return []; @@ -332,7 +379,7 @@ function registerHimmelstorHandlers(io, socket) { } // KI-Deck laden - const aiDeck = await loadAiDeck(station); + const aiDeck = await loadAiDeck(station, playerLevel); if (aiDeck.length === 0) { socket.emit('ht_daily_error', { message: 'Keine Karten für diese Station gefunden.' }); return;