Add full retention systems: daily hub, raids, prestige, seasons

- Graze slow-mo, perfect-wave FRENZY (x3 amber), ghost records,
  dynamic hunter titles
- Daily Hub: 7-day login calendar, animated lucky wheel, boss chest
  keys, pet eggs with rarity tiers + pity counter and real stat perks
- Seeded daily challenge (server-consistent modifiers, local top-5),
  hourly Golden Herd stampede, weekly Raid Colossus with damage tiers
- Rebirth prestige with Ancient Gem permanent perk shop
- Weapon mastery stars (+2%/level), bestiary milestone gems
- Weekly season points with Bronze..Diamond rank badges
- Shareable PNG result card on game over
This commit is contained in:
Primal Rampage Bot
2026-08-23 06:55:51 +00:00
parent 2024ea48b5
commit 7164cc798c
8 changed files with 979 additions and 28 deletions
+61 -9
View File
@@ -29,6 +29,7 @@
<button id="btn-upgrades" class="btn-menu">💪 <span id="lbl-upgrades"></span><span class="badge-dot hidden" id="dot-upgrades"></span><span class="chev"></span></button>
<button id="btn-quests" class="btn-menu">📜 <span id="lbl-quests"></span><span class="badge-dot hidden" id="dot-quests"></span><span class="chev"></span></button>
<button id="btn-bestiary" class="btn-menu">📖 <span id="lbl-bestiary"></span><span class="chev"></span></button>
<button id="btn-daily" class="btn-menu">🎁 <span id="lbl-daily"></span><span class="badge-dot hidden" id="dot-daily"></span><span class="chev"></span></button>
<button id="btn-shop" class="btn-menu" data-i18n="menu.shop"></button>
<div class="menu-sep"></div>
<button id="btn-rank" class="btn-menu sm" data-i18n="menu.rank"></button>
@@ -40,6 +41,7 @@
<div class="menu-bottombar">
<span class="ver">PRIMAL RAMPAGE · v0.9 · Stone Age Survival</span>
<span class="wallet">
<span id="menu-rank" class="rank-badge"></span>
<span id="menu-coins" class="coins"></span>
<span id="menu-gems" class="gems"></span>
</span>
@@ -121,6 +123,55 @@
</div>
</section>
<!-- DAILY HUB -->
<section id="screen-daily" class="screen narrow">
<h2 data-i18n="daily.title"></h2>
<div class="panel">
<h3 data-i18n="daily.calendar"></h3>
<div id="login-strip" class="cal-strip"></div>
<button id="btn-claim-login" class="btn primary" data-i18n="daily.claim"></button>
</div>
<div class="panel">
<h3 data-i18n="daily.wheel"></h3>
<canvas id="wheel-cv" width="240" height="240"></canvas>
<div id="wheel-result" class="wheel-result"></div>
<button id="btn-spin" class="btn primary" data-i18n="daily.spin"></button>
</div>
<div class="panel">
<h3 data-i18n="chal.title"></h3>
<div id="chal-mods" class="chest-info"></div>
<div id="chal-best" class="wheel-result"></div>
<button id="btn-play-chal" class="btn primary" data-i18n="chal.play"></button>
</div>
<div class="panel">
<h3 data-i18n="raid.title"></h3>
<div id="raid-bar-wrap" class="raid-bar"><div id="raid-bar-fill"></div></div>
<div id="raid-info" class="wheel-result"></div>
<div id="raid-tiers"></div>
<button id="btn-play-raid" class="btn primary danger" data-i18n="raid.play"></button>
</div>
<div class="panel">
<h3 data-i18n="daily.chest"></h3>
<div id="chest-info" class="chest-info"></div>
<div id="chest-art">🗝️🧰</div>
<button id="btn-open-chest" class="btn primary" data-i18n="daily.open"></button>
</div>
<div class="panel">
<h3 data-i18n="prest.title"></h3>
<div id="pr-info" class="chest-info"></div>
<div id="pr-perks"></div>
<button id="btn-rebirth" class="btn danger" data-i18n="prest.go"></button>
</div>
<div class="form-actions"><button class="btn" data-back data-i18n="set.done"></button></div>
</section>
<!-- LEADERBOARD -->
<section id="screen-rank" class="screen narrow">
<h2 data-i18n="rank.title"></h2>
@@ -225,6 +276,7 @@
<div class="col">
<button id="btn-retry" class="btn big primary" data-i18n="over.retry"></button>
<button id="btn-tomenu" class="btn big" data-i18n="over.menu"></button>
<button id="btn-share" class="btn big">📸 <span data-i18n="over.share"></span></button>
<button id="btn-adx2" class="btn big gem-btn hidden"></button>
</div>
</div>
@@ -243,14 +295,14 @@
</div>
</div>
<script src="./js/i18n.js"></script>
<script src="./js/save.js?v=13"></script>
<script src="./js/util.js?v=13"></script>
<script src="./js/audio.js?v=13"></script>
<script src="./js/art.js?v=13"></script>
<script src="./js/data.js?v=13"></script>
<script src="./js/entities.js?v=13"></script>
<script src="./js/game.js?v=13"></script>
<script src="./js/ui.js?v=13"></script>
<script src="./js/main.js?v=13"></script>
<script src="./js/save.js?v=17"></script>
<script src="./js/util.js?v=17"></script>
<script src="./js/audio.js?v=17"></script>
<script src="./js/art.js?v=17"></script>
<script src="./js/data.js?v=17"></script>
<script src="./js/entities.js?v=17"></script>
<script src="./js/game.js?v=17"></script>
<script src="./js/ui.js?v=17"></script>
<script src="./js/main.js?v=17"></script>
</body>
</html>