diff --git a/public/images/items/1v1.png b/public/images/items/1v1.png
new file mode 100644
index 0000000..aca446f
Binary files /dev/null and b/public/images/items/1v1.png differ
diff --git a/public/images/items/2v2.png b/public/images/items/2v2.png
new file mode 100644
index 0000000..69c39c3
Binary files /dev/null and b/public/images/items/2v2.png differ
diff --git a/public/js/quickmenu/events.js b/public/js/quickmenu/events.js
index 551d8a2..d727be1 100644
--- a/public/js/quickmenu/events.js
+++ b/public/js/quickmenu/events.js
@@ -20,19 +20,22 @@ function rarityImgs(rarity, size = 13) {
}
function cardHTML(card, isFront = true) {
- if (!isFront) return `
`;
+ if (!isFront)
+ return `
`;
// image zuerst, dann icon als Fallback
const imgFile = card?.image || card?.icon || null;
- const img = imgFile ? `/images/cards/${imgFile}` : "/images/items/rueckseite.png";
+ const img = imgFile
+ ? `/images/cards/${imgFile}`
+ : "/images/items/rueckseite.png";
return `
-
- ${card?.attack != null ? `${card.attack}` : ""}
- ${card?.defends != null ? `${card.defends}` : ""}
- ${card?.cooldown!= null ? `${card.cooldown}` : ""}
- ${card?.rarity ? `
`;
- body.querySelector(`#booster-slot-${i}`).classList.remove("revealed", "spinning");
+ body
+ .querySelector(`#booster-slot-${i}`)
+ .classList.remove("revealed", "spinning");
}
const stapel = body.querySelector("#booster-stapel");
stapel.classList.remove("used");
stapel.style.opacity = "1";
- stapel.style.cursor = "pointer";
+ stapel.style.cursor = "pointer";
body.querySelector("#booster-hint").textContent = "Klicken zum Öffnen";
preloadCards();
}
@@ -237,7 +266,7 @@ export async function loadEvents() {
/* ── Slot drehen – 350ms, damit man die Karten erkennt ── */
function startSpinSlot(index) {
slotLocked[index] = false;
- const slot = body.querySelector(`#booster-slot-${index}`);
+ const slot = body.querySelector(`#booster-slot-${index}`);
const inner = slot.querySelector(".booster-slot-inner");
slot.classList.add("spinning");
@@ -252,13 +281,13 @@ 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 slot = body.querySelector(`#booster-slot-${index}`);
const inner = slot.querySelector(".booster-slot-inner");
slot.classList.remove("spinning");
slot.classList.add("revealed");
@@ -283,17 +312,17 @@ export async function loadEvents() {
const stapel = body.querySelector("#booster-stapel");
stapel.classList.add("used");
stapel.style.opacity = "0.35";
- stapel.style.cursor = "default";
+ stapel.style.cursor = "default";
body.querySelector("#booster-hint").textContent = "Wird gezogen...";
// Zurück-Button während der Animation sperren
const backBtn = body.querySelector("#booster-back-btn");
backBtn.style.opacity = "0.35";
- backBtn.style.cursor = "not-allowed";
+ backBtn.style.cursor = "not-allowed";
let drawnCards = [];
try {
- const res = await fetch("/api/booster/open", { method: "POST" });
+ const res = await fetch("/api/booster/open", { method: "POST" });
const text = await res.text();
console.log("[Booster] API Antwort raw:", text);
const data = JSON.parse(text);
@@ -312,32 +341,37 @@ export async function loadEvents() {
setTimeout(() => revealSlot(i, drawnCards[i]), (i + 1) * 5000);
}
- setTimeout(async () => {
- body.querySelector("#booster-hint").textContent = "Karten werden gespeichert...";
- isSpinning = false;
+ setTimeout(
+ async () => {
+ body.querySelector("#booster-hint").textContent =
+ "Karten werden gespeichert...";
+ isSpinning = false;
- // Karten in user_cards speichern
- try {
- const cardIds = drawnCards.map(c => c.id);
- const saveRes = await fetch("/api/booster/save", {
- method: "POST",
- headers: { "Content-Type": "application/json" },
- body: JSON.stringify({ cardIds }),
- });
- if (!saveRes.ok) throw new Error(saveRes.status);
- } catch (e) {
- console.error("Karten speichern fehlgeschlagen", e);
- }
+ // Karten in user_cards speichern
+ try {
+ const cardIds = drawnCards.map((c) => c.id);
+ const saveRes = await fetch("/api/booster/save", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({ cardIds }),
+ });
+ if (!saveRes.ok) throw new Error(saveRes.status);
+ } catch (e) {
+ console.error("Karten speichern fehlgeschlagen", e);
+ }
- // Booster-Daily als erledigt markieren (event_id = 1)
- await markDailyComplete(1);
+ // Booster-Daily als erledigt markieren (event_id = 1)
+ await markDailyComplete(1);
- allRevealed = true;
- body.querySelector("#booster-hint").textContent = "Alle Karten erhalten! ✓";
- const backBtn = body.querySelector("#booster-back-btn");
- backBtn.style.opacity = "1";
- backBtn.style.cursor = "pointer";
- }, 5 * 5000 + 500);
+ allRevealed = true;
+ body.querySelector("#booster-hint").textContent =
+ "Alle Karten erhalten! ✓";
+ const backBtn = body.querySelector("#booster-back-btn");
+ backBtn.style.opacity = "1";
+ backBtn.style.cursor = "pointer";
+ },
+ 5 * 5000 + 500,
+ );
});
preloadCards();