fgjngf
This commit is contained in:
parent
c0f7f965c4
commit
33460b025d
@ -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 = ?",
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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.` });
|
||||
|
||||
Loading…
Reference in New Issue
Block a user