diff --git a/public/js/quickmenu/carddeck.js b/public/js/quickmenu/carddeck.js
index 4984b9b..2cb4a87 100644
--- a/public/js/quickmenu/carddeck.js
+++ b/public/js/quickmenu/carddeck.js
@@ -3,8 +3,8 @@ const CARDS_PER_PAGE = 18;
let currentGroupId = null;
let currentPage = 1;
let currentDeckId = null;
-let deckCards = []; // [{card_id, level, amount}]
-let userCardsCache = []; // aktuelle Seite: [{card_id, level, amount, name, image, attack, defense}]
+let deckCards = []; // [{card_id, amount}]
+let userCardsCache = []; // aktuelle Seite: [{card_id, amount, name, image, rarity, attack, defense}]
let decks = []; // [{id, name}]
@@ -19,10 +19,12 @@ const RARITY_CRYSTALS = {
"7": "pinker-cristal.png",
};
-function rarityImg(rarity, size = 16) {
+function rarityImgs(rarity, size = 14) {
const file = RARITY_CRYSTALS[String(rarity)];
if (!file) return "";
- return ``;
+ const count = parseInt(rarity) || 0;
+ const img = `
`;
+ return img.repeat(count);
}
/* ══════════════════════════════════════════════
@@ -415,14 +417,19 @@ function renderShell() {
}
.kd-deck-count-indeck { font-family: "Cinzel", serif; font-size: 13px; color: #88cc44; font-weight: bold; }
- /* ── Rarity Kristall ────────────────────── */
+ /* ── Rarity Kristalle ───────────────────── */
.kd-rarity {
- position: absolute;
- top: 3px;
- right: 4px;
- z-index: 5;
- pointer-events: none;
- line-height: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-wrap: wrap;
+ gap: 1px;
+ padding: 3px 4px;
+ background: rgba(0,0,0,0.82);
+ border-top: 1px solid #3a2810;
+ flex-shrink: 0;
+ min-height: 20px;
+ border-radius: 0 0 6px 6px;
}
/* ── Empty / Loading States ──────────────── */
@@ -612,18 +619,18 @@ async function addCardToDeck(card) {
return;
}
- // Level > 5: max. 1 Exemplar im Deck
- if (card.level > 5) {
- const already = deckCards.find(c => c.card_id === card.card_id && c.level === card.level);
+ // Rarity > 5: max. 1 Exemplar im Deck
+ if (parseInt(card.rarity) > 5) {
+ const already = deckCards.find(c => c.card_id === card.card_id);
if (already) {
- showToast("Karten ab Level 6 dürfen nur 1x im Deck sein.");
+ showToast("Karten ab Rarity 6 dürfen nur 1x im Deck sein.");
return;
}
}
// Nicht mehr als vorhanden besitzt
const owned = card.amount;
- const inDeck = getDeckCount(card.card_id, card.level);
+ const inDeck = getDeckCount(card.card_id);
if (inDeck >= owned) {
showToast("Du hast keine weiteren Exemplare dieser Karte.");
return;
@@ -633,7 +640,7 @@ async function addCardToDeck(card) {
const res = await fetch(`/api/decks/${currentDeckId}/cards`, {
method: "POST",
headers: { "Content-Type": "application/json" },
- body: JSON.stringify({ card_id: card.card_id, level: card.level }),
+ body: JSON.stringify({ card_id: card.card_id }),
});
if (!res.ok) {
const err = await res.json();
@@ -655,7 +662,7 @@ async function removeCardFromDeck(card) {
const res = await fetch(`/api/decks/${currentDeckId}/cards`, {
method: "DELETE",
headers: { "Content-Type": "application/json" },
- body: JSON.stringify({ card_id: card.card_id, level: card.level }),
+ body: JSON.stringify({ card_id: card.card_id }),
});
if (!res.ok) {
const err = await res.json();
@@ -712,14 +719,13 @@ function renderCollectionGrid(grid, cards) {
const totalInDeck = deckCards.reduce((s, c) => s + c.amount, 0);
grid.innerHTML = cards.map(c => {
- const inDeck = getDeckCount(c.card_id, c.level);
+ const inDeck = getDeckCount(c.card_id);
const maxed = isMaxedOut(c, inDeck, totalInDeck);
return `