天赋抽取 #11
@@ -487,7 +487,7 @@ class YtWorldApi(http.Controller):
|
||||
@http.route('/yt_world/api/char/talent/draw', type='http', auth='public',
|
||||
methods=['POST', 'OPTIONS'], csrf=False)
|
||||
def char_talent_draw(self, **kw):
|
||||
"""新手抽天赋:返回 5 张随机未拥有的天赋牌(前端先展示牌背,翻牌时再免费激活)。"""
|
||||
"""新手抽天赋:返回 15 张随机未拥有的天赋牌(前端先展示牌背,翻牌时再免费激活)。"""
|
||||
auth_err = self._require_user()
|
||||
if auth_err:
|
||||
return _json(auth_err)
|
||||
@@ -500,7 +500,7 @@ class YtWorldApi(http.Controller):
|
||||
data = pool.read(['code', 'name', 'icon', 'quality', 'trigger',
|
||||
'effect', 'description', 'max_level'])
|
||||
random.shuffle(data)
|
||||
return _json({'ok': True, 'deck': data[:5]})
|
||||
return _json({'ok': True, 'deck': data[:15]})
|
||||
|
||||
@http.route('/yt_world/api/char/talent/draw/activate', type='http', auth='public',
|
||||
methods=['POST', 'OPTIONS'], csrf=False)
|
||||
|
||||
+5
-5
@@ -779,10 +779,10 @@ body { background: #0a0e17; overflow: hidden; font-family: 'Microsoft YaHei', sa
|
||||
.tp-empty{text-align:center;padding:30px 10px;color:#7b8ea8;font-size:14px;line-height:1.7;}
|
||||
.tp-empty a{color:#8b5cf6;}
|
||||
/* ===== 新手抽天赋引导 ===== */
|
||||
#talentDraw{position:fixed;inset:0;z-index:1300;display:flex;align-items:center;justify-content:center;background:rgba(4,7,15,.72);backdrop-filter:blur(7px);opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s;padding:28px 18px;}
|
||||
#talentDraw{position:fixed;inset:0;z-index:1300;display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;background:rgba(4,7,15,.72);backdrop-filter:blur(7px);opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s;padding:28px 18px;}
|
||||
#talentDraw.open{opacity:1;visibility:visible;}
|
||||
#talentDraw[hidden]{display:none;}
|
||||
.td-wrap{width:760px;max-width:100%;display:flex;flex-direction:column;align-items:center;gap:18px;}
|
||||
.td-wrap{width:760px;max-width:100%;display:flex;flex-direction:column;align-items:center;gap:18px;margin:auto;}
|
||||
.td-npc{display:flex;align-items:flex-end;gap:14px;align-self:flex-start;max-width:100%;}
|
||||
.td-avatar{width:64px;height:64px;flex:0 0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:34px;background:radial-gradient(circle at 30% 30%,#a78bfa,#6d28d9);box-shadow:0 0 26px rgba(139,92,246,.6);animation:td-float 3s ease-in-out infinite;}
|
||||
@keyframes td-float{0%,100%{transform:translateY(0);}50%{transform:translateY(-7px);}}
|
||||
@@ -6935,7 +6935,7 @@ if (typeof fitWorld === 'function') fitWorld();
|
||||
<div class="td-avatar">🔮</div>
|
||||
<div class="td-bubble">
|
||||
<div class="td-npcname">引导精灵 · 星澜</div>
|
||||
<div id="tdBubbleText">你好,勇者!命运之牌已为你备好。点击下方「开始抽牌」,从五张天赋牌中翻开三张,它们将化作你独有的天赋。</div>
|
||||
<div id="tdBubbleText">你好,勇者!命运之牌已为你备好。点击下方「开始抽牌」,从十五张天赋牌中翻开三张,它们将化作你独有的天赋。</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="td-cards" id="tdCards"></div>
|
||||
@@ -7043,7 +7043,7 @@ if (typeof fitWorld === 'function') fitWorld();
|
||||
document.getElementById('tdCards').innerHTML = '';
|
||||
document.getElementById('tdCount').textContent = '';
|
||||
document.getElementById('tdBubbleText').textContent =
|
||||
'你好,勇者!命运之牌已为你备好。点击下方「开始抽牌」,从五张天赋牌中翻开三张,它们将化作你独有的天赋。';
|
||||
'你好,勇者!命运之牌已为你备好。点击下方「开始抽牌」,从十五张天赋牌中翻开三张,它们将化作你独有的天赋。';
|
||||
document.getElementById('tdStart').hidden = false;
|
||||
document.getElementById('tdLater').hidden = true;
|
||||
document.getElementById('tdFinish').hidden = true;
|
||||
@@ -7079,7 +7079,7 @@ if (typeof fitWorld === 'function') fitWorld();
|
||||
tdDeck.forEach((t, i) => {
|
||||
const card = document.createElement('div');
|
||||
card.className = 'td-card dealt';
|
||||
card.style.animationDelay = (i * 0.12) + 's';
|
||||
card.style.animationDelay = (i * 0.06) + 's';
|
||||
card.style.setProperty('--rz', (Math.random()*18 - 9).toFixed(1) + 'deg');
|
||||
setTimeout(() => playTalentSfx('deal'), i * 120);
|
||||
card.innerHTML =
|
||||
|
||||
Reference in New Issue
Block a user