|
|
<!DOCTYPE html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>Dragon's Hoard Battle Pass</title> |
|
|
<script src="https://cdn.tailwindcss.com"></script> |
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
|
|
<style> |
|
|
@import url('https://fonts.googleapis.com/css2?family=MedievalSharp&family=Cinzel+Decorative&display=swap'); |
|
|
|
|
|
:root { |
|
|
--gold: #FFD700; |
|
|
--silver: #C0C0C0; |
|
|
--bronze: #CD7F32; |
|
|
--dragon-red: #8B0000; |
|
|
--scroll-beige: #F5F5DC; |
|
|
} |
|
|
|
|
|
body { |
|
|
font-family: 'MedievalSharp', cursive; |
|
|
background: url('https://images.unsplash.com/photo-1542273917363-3b1817f69a2d?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80') no-repeat center center fixed; |
|
|
background-size: cover; |
|
|
color: white; |
|
|
min-height: 100vh; |
|
|
} |
|
|
|
|
|
.scroll-bg { |
|
|
background-color: rgba(245, 245, 220, 0.9); |
|
|
border: 8px double var(--dragon-red); |
|
|
box-shadow: 0 0 20px rgba(0, 0, 0, 0.5); |
|
|
} |
|
|
|
|
|
.header-text { |
|
|
font-family: 'Cinzel Decorative', cursive; |
|
|
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); |
|
|
color: var(--gold); |
|
|
} |
|
|
|
|
|
.progress-bar { |
|
|
height: 30px; |
|
|
background: linear-gradient(to right, #2c3e50, #4ca1af); |
|
|
border: 2px solid var(--gold); |
|
|
box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.5); |
|
|
} |
|
|
|
|
|
.progress-fill { |
|
|
height: 100%; |
|
|
background: linear-gradient(to right, var(--gold), var(--bronze)); |
|
|
transition: width 0.5s ease; |
|
|
} |
|
|
|
|
|
.level-card { |
|
|
background: rgba(0, 0, 0, 0.7); |
|
|
border: 2px solid var(--gold); |
|
|
transition: all 0.3s ease; |
|
|
cursor: pointer; |
|
|
} |
|
|
|
|
|
.level-card:hover { |
|
|
transform: scale(1.05); |
|
|
box-shadow: 0 0 15px var(--gold); |
|
|
} |
|
|
|
|
|
.level-card.unlocked { |
|
|
background: rgba(139, 0, 0, 0.7); |
|
|
border-color: var(--gold); |
|
|
} |
|
|
|
|
|
.level-card.premium { |
|
|
background: rgba(0, 0, 0, 0.9); |
|
|
border: 2px dashed var(--gold); |
|
|
} |
|
|
|
|
|
.reward-icon { |
|
|
font-size: 2rem; |
|
|
margin-bottom: 10px; |
|
|
} |
|
|
|
|
|
.dragon-head { |
|
|
position: absolute; |
|
|
right: -30px; |
|
|
top: 50%; |
|
|
transform: translateY(-50%); |
|
|
font-size: 3rem; |
|
|
color: var(--dragon-red); |
|
|
} |
|
|
|
|
|
@keyframes pulse { |
|
|
0% { transform: scale(1); } |
|
|
50% { transform: scale(1.05); } |
|
|
100% { transform: scale(1); } |
|
|
} |
|
|
|
|
|
.pulse { |
|
|
animation: pulse 2s infinite; |
|
|
} |
|
|
|
|
|
.tooltip { |
|
|
position: relative; |
|
|
display: inline-block; |
|
|
} |
|
|
|
|
|
.tooltip .tooltiptext { |
|
|
visibility: hidden; |
|
|
width: 200px; |
|
|
background-color: #555; |
|
|
color: #fff; |
|
|
text-align: center; |
|
|
border-radius: 6px; |
|
|
padding: 5px; |
|
|
position: absolute; |
|
|
z-index: 1; |
|
|
bottom: 125%; |
|
|
left: 50%; |
|
|
margin-left: -100px; |
|
|
opacity: 0; |
|
|
transition: opacity 0.3s; |
|
|
} |
|
|
|
|
|
.tooltip:hover .tooltiptext { |
|
|
visibility: visible; |
|
|
opacity: 1; |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="flex items-center justify-center p-4"> |
|
|
<div class="scroll-bg w-full max-w-6xl rounded-lg p-6 relative overflow-hidden"> |
|
|
|
|
|
<div class="dragon-head"> |
|
|
<i class="fas fa-dragon"></i> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="text-center mb-8"> |
|
|
<h1 class="header-text text-4xl md:text-5xl mb-2">Dragon's Hoard Battle Pass</h1> |
|
|
<p class="text-xl text-gray-800">Season of the Eternal Flame</p> |
|
|
|
|
|
<div class="flex justify-between items-center mt-6 mb-4 px-4"> |
|
|
<span class="text-gray-800 font-bold">Level 1</span> |
|
|
<span class="text-gray-800 font-bold">Level 20</span> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="progress-bar rounded-full mb-4 relative"> |
|
|
<div id="progressFill" class="progress-fill rounded-full" style="width: 10%"></div> |
|
|
<div id="currentLevelMarker" class="absolute top-0 h-full w-1 bg-white" style="left: 10%"></div> |
|
|
</div> |
|
|
|
|
|
<div class="flex justify-between"> |
|
|
<button id="prevBtn" class="bg-gray-700 hover:bg-gray-600 text-white px-4 py-2 rounded"> |
|
|
<i class="fas fa-arrow-left"></i> Previous |
|
|
</button> |
|
|
<div class="flex items-center"> |
|
|
<span id="currentLevelDisplay" class="text-2xl font-bold text-gray-800 mr-4">Level: 2</span> |
|
|
<span id="xpDisplay" class="text-gray-800">XP: 250/1000</span> |
|
|
</div> |
|
|
<button id="nextBtn" class="bg-gray-700 hover:bg-gray-600 text-white px-4 py-2 rounded"> |
|
|
Next <i class="fas fa-arrow-right"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="flex border-b border-gray-600 mb-6"> |
|
|
<button class="tab-btn active px-4 py-2 font-bold text-gray-800 border-b-2 border-red-700" data-tab="free">Free Rewards</button> |
|
|
<button class="tab-btn px-4 py-2 font-bold text-gray-800" data-tab="premium">Premium Rewards</button> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="free" class="tab-content grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-4"> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="premium" class="tab-content hidden grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-4"> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="mt-8 text-center"> |
|
|
<button id="purchaseBtn" class="bg-gradient-to-r from-yellow-600 to-yellow-800 hover:from-yellow-700 hover:to-yellow-900 text-white font-bold py-3 px-8 rounded-full text-lg pulse"> |
|
|
<i class="fas fa-coins mr-2"></i> Unlock Premium Pass - 999 Gold |
|
|
</button> |
|
|
<p class="text-gray-700 mt-2">Includes all premium rewards + exclusive Dragon Rider title</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<script> |
|
|
|
|
|
const battlePass = { |
|
|
freeRewards: [ |
|
|
{ level: 1, icon: "fa-coins", name: "100 Gold", description: "Start your adventure with some gold" }, |
|
|
{ level: 2, icon: "fa-helmet-battle", name: "Iron Helmet", description: "Basic protection for your journey" }, |
|
|
{ level: 3, icon: "fa-flask", name: "Health Potion x3", description: "Restore your vitality in battle" }, |
|
|
{ level: 4, icon: "fa-ring", name: "Copper Ring", description: "A simple magical ring" }, |
|
|
{ level: 5, icon: "fa-horse", name: "Common Mount", description: "A trusty steed for your travels" }, |
|
|
{ level: 6, icon: "fa-shield", name: "Steel Shield", description: "Improved defense against enemies" }, |
|
|
{ level: 7, icon: "fa-scroll", name: "Scroll of Fireball", description: "Cast a powerful fire spell" }, |
|
|
{ level: 8, icon: "fa-gem", name: "Ruby", description: "Valuable gem for trading" }, |
|
|
{ level: 9, icon: "fa-axe-battle", name: "Battle Axe", description: "Heavy weapon for strong warriors" }, |
|
|
{ level: 10, icon: "fa-crown", name: "Adventurer's Crown", description: "Mark of a seasoned explorer" }, |
|
|
{ level: 11, icon: "fa-bolt", name: "Lightning Charm", description: "Chance to stun enemies" }, |
|
|
{ level: 12, icon: "fa-dungeon", name: "Dungeon Key", description: "Unlocks secret areas" }, |
|
|
{ level: 13, icon: "fa-bow-arrow", name: "Elven Bow", description: "Precision weapon for rangers" }, |
|
|
{ level: 14, icon: "fa-dragon", name: "Dragon Scale", description: "Rare crafting material" }, |
|
|
{ level: 15, icon: "fa-wand-magic", name: "Mage's Staff", description: "Empowers your spells" }, |
|
|
{ level: 16, icon: "fa-book-spells", name: "Spell Tome", description: "Learn new magical abilities" }, |
|
|
{ level: 17, icon: "fa-chess-knight", name: "Knight's Armor", description: "Heavy plate armor" }, |
|
|
{ level: 18, icon: "fa-hat-wizard", name: "Wizard's Hat", description: "Boosts magical abilities" }, |
|
|
{ level: 19, icon: "fa-sack-dollar", name: "500 Gold", description: "Wealth for your adventures" }, |
|
|
{ level: 20, icon: "fa-trophy", name: "Champion's Trophy", description: "Proof of your achievements" } |
|
|
], |
|
|
premiumRewards: [ |
|
|
{ level: 1, icon: "fa-coins", name: "500 Gold", description: "A royal sum to start with" }, |
|
|
{ level: 2, icon: "fa-helmet-battle", name: "Dwarven Helm", description: "Exceptional craftsmanship" }, |
|
|
{ level: 3, icon: "fa-flask", name: "Elixir of Life", description: "Full health restoration" }, |
|
|
{ level: 4, icon: "fa-ring", name: "Ring of Power", description: "+10% to all attributes" }, |
|
|
{ level: 5, icon: "fa-horse-head", name: "Nightmare Steed", description: "Fiery mount from the underworld" }, |
|
|
{ level: 6, icon: "fa-shield", name: "Dragonbone Shield", description: "Forged from ancient dragon bones" }, |
|
|
{ level: 7, icon: "fa-scroll", name: "Scroll of Meteor", description: "Devastating area spell" }, |
|
|
{ level: 8, icon: "fa-gem", name: "Dragon's Eye Gem", description: "Extremely rare and valuable" }, |
|
|
{ level: 9, icon: "fa-axe-battle", name: "Executioner's Axe", description: "Massive two-handed weapon" }, |
|
|
{ level: 10, icon: "fa-crown", name: "Royal Crown", description: "Worn by kings and queens" }, |
|
|
{ level: 11, icon: "fa-bolt", name: "Storm Amulet", description: "Summon lightning storms" }, |
|
|
{ level: 12, icon: "fa-dungeon", name: "Master Key", description: "Opens all doors" }, |
|
|
{ level: 13, icon: "fa-bow-arrow", name: "Phoenix Bow", description: "Fires flaming arrows" }, |
|
|
{ level: 14, icon: "fa-dragon", name: "Dragon Egg", description: "Hatch your own dragon" }, |
|
|
{ level: 15, icon: "fa-wand-magic", name: "Archmage's Staff", description: "Legendary magical focus" }, |
|
|
{ level: 16, icon: "fa-book-spells", name: "Tome of Forbidden Knowledge", description: "Learn powerful dark magic" }, |
|
|
{ level: 17, icon: "fa-chess-knight", name: "Dragonbone Armor", description: "Lightweight yet incredibly strong" }, |
|
|
{ level: 18, icon: "fa-hat-wizard", name: "Archmage's Circlet", description: "Doubles mana regeneration" }, |
|
|
{ level: 19, icon: "fa-sack-dollar", name: "2000 Gold", description: "A king's ransom" }, |
|
|
{ level: 20, icon: "fa-trophy", name: "Dragon Slayer's Trophy", description: "Ultimate achievement" } |
|
|
], |
|
|
xpRequirements: [ |
|
|
0, 250, 500, 800, 1200, 1700, 2300, 3000, 3800, 4700, |
|
|
5700, 6800, 8000, 9300, 10700, 12200, 13800, 15500, 17300, 19200 |
|
|
] |
|
|
}; |
|
|
|
|
|
|
|
|
let currentLevel = 2; |
|
|
let currentXP = 250; |
|
|
let hasPremium = false; |
|
|
|
|
|
|
|
|
const freeTab = document.getElementById('free'); |
|
|
const premiumTab = document.getElementById('premium'); |
|
|
const tabButtons = document.querySelectorAll('.tab-btn'); |
|
|
const progressFill = document.getElementById('progressFill'); |
|
|
const currentLevelMarker = document.getElementById('currentLevelMarker'); |
|
|
const currentLevelDisplay = document.getElementById('currentLevelDisplay'); |
|
|
const xpDisplay = document.getElementById('xpDisplay'); |
|
|
const nextBtn = document.getElementById('nextBtn'); |
|
|
const prevBtn = document.getElementById('prevBtn'); |
|
|
const purchaseBtn = document.getElementById('purchaseBtn'); |
|
|
|
|
|
|
|
|
function initBattlePass() { |
|
|
renderLevels('free', battlePass.freeRewards); |
|
|
renderLevels('premium', battlePass.premiumRewards); |
|
|
updateProgressDisplay(); |
|
|
} |
|
|
|
|
|
|
|
|
function renderLevels(tabId, rewards) { |
|
|
const container = document.getElementById(tabId); |
|
|
container.innerHTML = ''; |
|
|
|
|
|
rewards.forEach(reward => { |
|
|
const isUnlocked = reward.level <= currentLevel; |
|
|
const isPremiumTab = tabId === 'premium'; |
|
|
|
|
|
const card = document.createElement('div'); |
|
|
card.className = `level-card rounded-lg p-4 text-center relative overflow-hidden ${isUnlocked ? 'unlocked' : ''} ${isPremiumTab ? 'premium' : ''}`; |
|
|
|
|
|
|
|
|
if (isPremiumTab && !hasPremium) { |
|
|
card.innerHTML += `<div class="absolute inset-0 bg-black bg-opacity-70 flex items-center justify-center"> |
|
|
<i class="fas fa-lock text-2xl text-yellow-500"></i> |
|
|
</div>`; |
|
|
} |
|
|
|
|
|
card.innerHTML += ` |
|
|
<div class="text-xl font-bold mb-2 ${isUnlocked ? 'text-yellow-500' : 'text-gray-400'}">Level ${reward.level}</div> |
|
|
<div class="reward-icon ${isUnlocked ? 'text-yellow-400' : 'text-gray-500'}"> |
|
|
<i class="fas ${reward.icon}"></i> |
|
|
</div> |
|
|
<h3 class="font-bold ${isUnlocked ? 'text-white' : 'text-gray-400'}">${reward.name}</h3> |
|
|
<div class="tooltip mt-2"> |
|
|
<i class="fas fa-info-circle ${isUnlocked ? 'text-blue-400' : 'text-gray-500'}"></i> |
|
|
<span class="tooltiptext">${reward.description}</span> |
|
|
</div> |
|
|
`; |
|
|
|
|
|
container.appendChild(card); |
|
|
}); |
|
|
} |
|
|
|
|
|
|
|
|
function updateProgressDisplay() { |
|
|
const currentLevelXP = battlePass.xpRequirements[currentLevel - 1]; |
|
|
const nextLevelXP = battlePass.xpRequirements[currentLevel] || battlePass.xpRequirements[battlePass.xpRequirements.length - 1]; |
|
|
const progressPercentage = ((currentXP - currentLevelXP) / (nextLevelXP - currentLevelXP)) * 100; |
|
|
|
|
|
progressFill.style.width = `${(currentLevel / 20) * 100}%`; |
|
|
currentLevelMarker.style.left = `${(currentLevel / 20) * 100}%`; |
|
|
currentLevelDisplay.textContent = `Level: ${currentLevel}`; |
|
|
xpDisplay.textContent = `XP: ${currentXP}/${nextLevelXP}`; |
|
|
} |
|
|
|
|
|
|
|
|
tabButtons.forEach(button => { |
|
|
button.addEventListener('click', () => { |
|
|
|
|
|
tabButtons.forEach(btn => btn.classList.remove('active', 'border-red-700')); |
|
|
|
|
|
|
|
|
button.classList.add('active', 'border-red-700'); |
|
|
|
|
|
|
|
|
document.querySelectorAll('.tab-content').forEach(tab => { |
|
|
tab.classList.add('hidden'); |
|
|
}); |
|
|
|
|
|
|
|
|
const tabId = button.getAttribute('data-tab'); |
|
|
document.getElementById(tabId).classList.remove('hidden'); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
nextBtn.addEventListener('click', () => { |
|
|
if (currentLevel < 20) { |
|
|
currentLevel++; |
|
|
updateProgressDisplay(); |
|
|
renderLevels('free', battlePass.freeRewards); |
|
|
renderLevels('premium', battlePass.premiumRewards); |
|
|
} |
|
|
}); |
|
|
|
|
|
prevBtn.addEventListener('click', () => { |
|
|
if (currentLevel > 1) { |
|
|
currentLevel--; |
|
|
updateProgressDisplay(); |
|
|
renderLevels('free', battlePass.freeRewards); |
|
|
renderLevels('premium', battlePass.premiumRewards); |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
purchaseBtn.addEventListener('click', () => { |
|
|
if (!hasPremium) { |
|
|
hasPremium = true; |
|
|
purchaseBtn.innerHTML = '<i class="fas fa-check-circle mr-2"></i> Premium Unlocked!'; |
|
|
purchaseBtn.classList.remove('pulse', 'from-yellow-600', 'to-yellow-800', 'hover:from-yellow-700', 'hover:to-yellow-900'); |
|
|
purchaseBtn.classList.add('bg-green-600', 'hover:bg-green-700'); |
|
|
renderLevels('premium', battlePass.premiumRewards); |
|
|
|
|
|
|
|
|
const fireworks = document.createElement('div'); |
|
|
fireworks.className = 'fixed inset-0 flex items-center justify-center z-50 pointer-events-none'; |
|
|
fireworks.innerHTML = ` |
|
|
<div class="text-6xl text-yellow-400 animate-bounce"> |
|
|
<i class="fas fa-fire"></i> |
|
|
</div> |
|
|
`; |
|
|
document.body.appendChild(fireworks); |
|
|
|
|
|
setTimeout(() => { |
|
|
fireworks.remove(); |
|
|
}, 2000); |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', initBattlePass); |
|
|
</script> |
|
|
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Denoria/bp" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
|
|
</html> |