From 33460b025d7f6a51c35804e84a98213266a2b437 Mon Sep 17 00:00:00 2001 From: cay Date: Tue, 14 Apr 2026 11:40:20 +0100 Subject: [PATCH] fgjngf --- routes/booster.route.js | 20 +++++++++++++++----- routes/himmelstor-daily.route.js | 5 +++-- sockets/1vKI_daily.socket.js | 18 +++++------------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/routes/booster.route.js b/routes/booster.route.js index 4e3bf06..4fce99b 100644 --- a/routes/booster.route.js +++ b/routes/booster.route.js @@ -1,6 +1,7 @@ const express = require("express"); const router = express.Router(); const db = require("../database/database"); +const { getMaxRarity } = require("../utils/rarity"); /* ================================ Gewichtete Zufallsauswahl @@ -171,12 +172,16 @@ router.post("/booster/wood-donate", async (req, res) => { return res.status(400).json({ error: "Nicht genug Holz (100 benötigt)" }); } - // Rarity-3 Karten laden + // Spielerlevel → passende Rarity bestimmen + const [[acc]] = await db.query("SELECT level FROM accounts WHERE id = ?", [userId]); + const woodRarity = getMaxRarity(acc?.level ?? 1); + const [pool] = await db.query( - "SELECT id, name, image, icon, max_level, rarity, attack, defends, cooldown, `range`, `race` FROM cards WHERE rarity = 3", + "SELECT id, name, image, icon, max_level, rarity, attack, defends, cooldown, `range`, `race` FROM cards WHERE rarity = ?", + [woodRarity] ); if (!pool.length) - return res.status(400).json({ error: "Keine Rarity-3 Karten verfügbar" }); + return res.status(400).json({ error: `Keine Rarity-${woodRarity} Karten verfügbar` }); // 100 Holz abziehen await db.query( @@ -219,11 +224,16 @@ router.post("/booster/gold-donate", async (req, res) => { return res.status(400).json({ error: "Nicht genug Gold (100 benötigt)" }); } + // Spielerlevel → 1 Rarity über dem Maximum (Bonus für Gold) + const [[accG]] = await db.query("SELECT level FROM accounts WHERE id = ?", [userId]); + const goldRarity = Math.min(getMaxRarity(accG?.level ?? 1) + 1, 6); + const [pool] = await db.query( - "SELECT id, name, image, icon, max_level, rarity, attack, defends, cooldown, `range`, `race` FROM cards WHERE rarity = 4", + "SELECT id, name, image, icon, max_level, rarity, attack, defends, cooldown, `range`, `race` FROM cards WHERE rarity = ?", + [goldRarity] ); if (!pool.length) - return res.status(400).json({ error: "Keine Rarity-4 Karten verfügbar" }); + return res.status(400).json({ error: `Keine Rarity-${goldRarity} Karten verfügbar` }); await db.query( "UPDATE account_currency SET gold = gold - 100 WHERE account_id = ?", diff --git a/routes/himmelstor-daily.route.js b/routes/himmelstor-daily.route.js index 25bd157..a158722 100644 --- a/routes/himmelstor-daily.route.js +++ b/routes/himmelstor-daily.route.js @@ -17,10 +17,11 @@ router.get("/progress", requireLogin, async (req, res) => { const userId = req.session.user.id; try { const [rows] = await db.query( - "SELECT event_id FROM daily_completions WHERE user_id = ? AND DATE(completed_at) = CURDATE()", + "SELECT event_id FROM daily_completions WHERE user_id = ? AND event_id BETWEEN 101 AND 107 AND DATE(completed_at) = CURDATE()", [userId] ); - const completed = rows.map(r => r.event_id); + // event_id 101-107 → Station 1-7 + const completed = rows.map(r => r.event_id - 100); res.json({ completed, total: 7, allDone: completed.length >= 7 }); } catch (err) { console.error("[Daily] Fortschritt laden:", err); diff --git a/sockets/1vKI_daily.socket.js b/sockets/1vKI_daily.socket.js index 568ce75..b909986 100644 --- a/sockets/1vKI_daily.socket.js +++ b/sockets/1vKI_daily.socket.js @@ -315,29 +315,21 @@ async function htHandleMatchEnd(io, matchId, aiRoom, loserSlot) { try { await db.query( `INSERT IGNORE INTO daily_completions (user_id, event_id) VALUES (?, ?)`, - [aiRoom.playerAccountId, aiRoom.station] + [aiRoom.playerAccountId, 100 + aiRoom.station] ); } catch (err) { console.error('[HT] Completion speichern Fehler:', err); } - // Punkte vergeben (Platzhalter: 10 Punkte pro Station) - let winResult = { awarded: 0 }; - if (aiRoom.playerAccountId) { - try { - winResult = await pointsRoute.awardPoints(aiRoom.playerAccountId, 10); - } catch {} - } - io.to(aiRoom.playerSocketId).emit('ht_station_complete', { station: aiRoom.station, }); io.to(aiRoom.playerSocketId).emit('match_result', { won: true, - awarded: winResult.awarded ?? 0, - level_up: winResult.level_up ?? false, - new_level:winResult.new_level ?? null, + awarded: 0, + level_up: false, + new_level: null, }); } else { io.to(aiRoom.playerSocketId).emit('match_result', { @@ -392,7 +384,7 @@ function registerHimmelstorHandlers(io, socket) { if (accountId) { const [done] = await db.query( "SELECT id FROM daily_completions WHERE user_id = ? AND event_id = ? AND DATE(completed_at) = CURDATE()", - [accountId, station] + [accountId, 100 + station] ); if (done.length > 0) { socket.emit('ht_daily_error', { message: `Station ${station} wurde heute bereits abgeschlossen.` });