This commit is contained in:
cay 2026-04-06 13:52:15 +01:00
parent 511fc9f17b
commit 18e10179ef
2 changed files with 18 additions and 6 deletions

View File

@ -22,9 +22,12 @@ function rarityImgs(rarity, size = 13) {
function cardHTML(card, isFront = true) {
if (!isFront) return `<img class="booster-slot-img" src="/images/items/rueckseite.png" alt="?" draggable="false">`;
const img = card?.image ? `/images/cards/${card.image}` : "/images/items/rueckseite.png";
// image zuerst, dann icon als Fallback
const imgFile = card?.image || card?.icon || null;
const img = imgFile ? `/images/cards/${imgFile}` : "/images/items/rueckseite.png";
return `
<img class="booster-slot-img" src="${img}" alt="${card?.name || ''}" draggable="false">
<img class="booster-slot-img" src="${img}" alt="${card?.name || ''}" draggable="false"
onerror="this.src='/images/items/rueckseite.png'">
${card?.attack != null ? `<span class="bs-stat-atk">${card.attack}</span>` : ""}
${card?.defends != null ? `<span class="bs-stat-def">${card.defends}</span>` : ""}
${card?.cooldown!= null ? `<span class="bs-stat-cd">${card.cooldown}</span>` : ""}
@ -201,15 +204,24 @@ export async function loadEvents() {
/* ── Slot enthüllen Sperre setzen BEVOR clearInterval ── */
function revealSlot(index, card) {
slotLocked[index] = true; // zuerst sperren
slotLocked[index] = true; // zuerst sperren
clearInterval(spinIntervals[index]); // dann stoppen
delete spinIntervals[index];
console.log(`[Booster] Slot ${index} enthüllt:`, card);
const slot = body.querySelector(`#booster-slot-${index}`);
const inner = slot.querySelector(".booster-slot-inner");
slot.classList.remove("spinning");
slot.classList.add("revealed");
inner.innerHTML = cardHTML(card, true); // finale Karte setzen
// innerHTML setzen und danach nochmal sicherstellen (doppelte Absicherung)
inner.innerHTML = cardHTML(card, true);
setTimeout(() => {
if (slot.classList.contains("revealed")) {
inner.innerHTML = cardHTML(card, true);
}
}, 100);
}
/* ── Stapel klicken ── */

View File

@ -59,7 +59,7 @@ router.get("/booster/cards", async (req, res) => {
if (!req.session?.user) return res.status(401).json({ error: "Nicht eingeloggt" });
try {
const [cards] = await db.query(
"SELECT id, name, image, max_level, rarity, attack, defends, cooldown FROM cards ORDER BY id"
"SELECT id, name, image, icon, max_level, rarity, attack, defends, cooldown FROM cards ORDER BY id"
);
res.json(cards);
} catch (err) {
@ -85,7 +85,7 @@ router.post("/booster/open", async (req, res) => {
const maxAllowed = Math.max(...weights.map(w => w.maxLevel));
const [allCards] = await db.query(
"SELECT id, name, image, max_level, rarity, attack, defends, cooldown FROM cards WHERE max_level <= ?",
"SELECT id, name, image, icon, max_level, rarity, attack, defends, cooldown FROM cards WHERE max_level <= ?",
[maxAllowed]
);