q45z35
This commit is contained in:
parent
49b571699b
commit
d5f7904365
@ -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
|
||||
|
||||
if (cards.length > 0) {
|
||||
console.log(`[HT] KI-Deck Station ${station}: ${cards.length} Karten, max. Rarity ${maxRarity}`);
|
||||
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 10`
|
||||
FROM cards
|
||||
ORDER BY RAND()
|
||||
LIMIT ?`,
|
||||
[deckSize]
|
||||
);
|
||||
return all.map(c => ({ ...c, currentCd: 0 }));
|
||||
}
|
||||
return cards.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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user