document.addEventListener('DOMContentLoaded', function() {
const lootBoxesContainer = document.getElementById('lootBoxes');
const multiplierSlider = document.getElementById('multiplierSlider');
const spinButton = document.getElementById('spinButton');
const resultModal = document.getElementById('resultModal');
const closeModal = document.getElementById('closeModal');
const spinnerIcon = document.getElementById('spinnerIcon');
// Loot box data
const lootBoxes = [
{ value: 10, rarity: 'common', color: 'text-gray-300' },
{ value: 20, rarity: 'uncommon', color: 'text-green-400' },
{ value: 50, rarity: 'rare', color: 'text-blue-400' },
{ value: 100, rarity: 'epic', color: 'text-purple-400' },
{ value: 200, rarity: 'legendary', color: 'text-amber-400' },
{ value: 5, rarity: 'common', color: 'text-gray-300' },
{ value: 15, rarity: 'uncommon', color: 'text-green-400' },
{ value: 30, rarity: 'rare', color: 'text-blue-400' },
{ value: 75, rarity: 'epic', color: 'text-purple-400' },
{ value: 150, rarity: 'legendary', color: 'text-amber-400' }
];
// Multiplier options
const multipliers = [1, 1.5, 2, 2.5, 3, 5, 10];
// Generate loot boxes
lootBoxes.forEach((box, index) => {
const boxElement = document.createElement('div');
boxElement.className = 'loot-box flex flex-col items-center justify-center';
boxElement.dataset.value = box.value;
boxElement.dataset.rarity = box.rarity;
boxElement.innerHTML = `
${box.value} SC
${box.rarity}
`;
lootBoxesContainer.appendChild(boxElement);
});
// Generate multiplier options
multipliers.forEach(multiplier => {
const option = document.createElement('div');
option.className = 'multiplier-option';
option.textContent = `×${multiplier}`;
option.dataset.multiplier = multiplier;
option.addEventListener('click', function() {
document.querySelectorAll('.multiplier-option').forEach(opt => {
opt.classList.remove('selected');
});
this.classList.add('selected');
});
multiplierSlider.appendChild(option);
});
// Set first multiplier as default selected
multiplierSlider.firstElementChild?.classList.add('selected');
// Spin button functionality
spinButton.addEventListener('click', function() {
const selectedMultiplier = parseFloat(document.querySelector('.multiplier-option.selected')?.dataset.multiplier || '1');
const lootBoxElements = document.querySelectorAll('.loot-box');
// Show loading state
spinButton.disabled = true;
spinnerIcon.classList.remove('hidden');
// Clear previous selection
lootBoxElements.forEach(box => box.classList.remove('active'));
// Random selection animation
let counter = 0;
const totalIterations = 20;
const interval = setInterval(() => {
// Remove active class from all
lootBoxElements.forEach(box => box.classList.remove('active'));
// Select random box
const randomIndex = Math.floor(Math.random() * lootBoxElements.length);
lootBoxElements[randomIndex].classList.add('active');
counter++;
// Slow down at the end
if (counter > totalIterations * 0.7) {
clearInterval(interval);
setTimeout(() => {
// Final selection
const finalIndex = Math.floor(Math.random() * lootBoxElements.length);
lootBoxElements.forEach(box => box.classList.remove('active'));
lootBoxElements[finalIndex].classList.add('active');
// Show result
const prize = parseFloat(lootBoxElements[finalIndex].dataset.value);
const total = prize * selectedMultiplier;
document.getElementById('basePrize').textContent = prize;
document.getElementById('multiplierValue').textContent = selectedMultiplier;
document.getElementById('totalPrize').textContent = total.toFixed(2);
resultModal.classList.remove('hidden');
// Reset button
spinButton.disabled = false;
spinnerIcon.classList.add('hidden');
}, 300);
}
}, 100);
});
// Close modal
closeModal.addEventListener('click', function() {
resultModal.classList.add('hidden');
});
// Replace feather icons
feather.replace();
});