Support starrail rogue tourn

This commit is contained in:
xtaodada 2024-06-29 21:01:48 +08:00
parent 1ab2dd677c
commit 2e0427ea2c
Signed by: xtaodada
GPG Key ID: 4CBB3F4FA8C85659
80 changed files with 706 additions and 19785 deletions

View File

@ -200,7 +200,7 @@ files = [
[[package]]
name = "alembic"
version = "1.13.1"
version = "1.13.2"
requires_python = ">=3.8"
summary = "A database migration tool for SQLAlchemy."
groups = ["default"]
@ -212,8 +212,8 @@ dependencies = [
"typing-extensions>=4",
]
files = [
{file = "alembic-1.13.1-py3-none-any.whl", hash = "sha256:2edcc97bed0bd3272611ce3a98d98279e9c209e7186e43e75bbb1b2bdfdbcc43"},
{file = "alembic-1.13.1.tar.gz", hash = "sha256:4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595"},
{file = "alembic-1.13.2-py3-none-any.whl", hash = "sha256:6b8733129a6224a9a711e17c99b08462dbf7cc9670ba8f2e2ae9af860ceb1953"},
{file = "alembic-1.13.2.tar.gz", hash = "sha256:1ff0ae32975f4fd96028c39ed9bb3c867fe3af956bd7bb37343b54c9fe7445ef"},
]
[[package]]
@ -1500,7 +1500,7 @@ files = [
[[package]]
name = "openpyxl"
version = "3.1.4"
version = "3.1.5"
requires_python = ">=3.8"
summary = "A Python library to read/write Excel 2010 xlsx/xlsm files"
groups = ["default"]
@ -1508,8 +1508,8 @@ dependencies = [
"et-xmlfile",
]
files = [
{file = "openpyxl-3.1.4-py2.py3-none-any.whl", hash = "sha256:ec17f6483f2b8f7c88c57e5e5d3b0de0e3fb9ac70edc084d28e864f5b33bbefd"},
{file = "openpyxl-3.1.4.tar.gz", hash = "sha256:8d2c8adf5d20d6ce8f9bca381df86b534835e974ed0156dacefa76f68c1d69fb"},
{file = "openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2"},
{file = "openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050"},
]
[[package]]
@ -2157,7 +2157,7 @@ files = [
[[package]]
name = "sentry-sdk"
version = "2.7.0"
version = "2.7.1"
requires_python = ">=3.6"
summary = "Python client for Sentry (https://sentry.io)"
groups = ["default"]
@ -2166,8 +2166,8 @@ dependencies = [
"urllib3>=1.26.11",
]
files = [
{file = "sentry_sdk-2.7.0-py2.py3-none-any.whl", hash = "sha256:db9594c27a4d21c1ebad09908b1f0dc808ef65c2b89c1c8e7e455143262e37c1"},
{file = "sentry_sdk-2.7.0.tar.gz", hash = "sha256:d846a211d4a0378b289ced3c434480945f110d0ede00450ba631fc2852e7a0d4"},
{file = "sentry_sdk-2.7.1-py2.py3-none-any.whl", hash = "sha256:ef1b3d54eb715825657cd4bb3cb42bb4dc85087bac14c56b0fd8c21abd968c9a"},
{file = "sentry_sdk-2.7.1.tar.gz", hash = "sha256:25006c7e68b75aaa5e6b9c6a420ece22e8d7daec4b7a906ffd3a8607b67c037b"},
]
[[package]]
@ -2197,7 +2197,7 @@ name = "simnet"
version = "0.1.22"
requires_python = "<4.0,>=3.8"
git = "https://github.com/PaiGramTeam/SIMNet"
revision = "277a33321a20909541b46bf4ecf794fd47e19fb1"
revision = "10654fc90012ab97288c21f58b7091fd16c301f7"
summary = "Modern API wrapper for Genshin Impact & Honkai: Star Rail built on asyncio and pydantic."
groups = ["default"]
dependencies = [

View File

@ -54,6 +54,7 @@ class SetCommandPlugin(Plugin):
BotCommand("challenge_boss_history", "末日幻想历史信息查询"),
BotCommand("rogue", "模拟宇宙信息查询"),
BotCommand("rogue_locust", "寰宇蝗灾信息查询"),
BotCommand("rogue_tourn", "差分宇宙信息查询"),
BotCommand("cookies_import", "从其他 BOT 导入账号信息"),
BotCommand("cookies_export", "导出账号信息给其他 BOT"),
]
@ -75,6 +76,7 @@ class SetCommandPlugin(Plugin):
BotCommand("add_block", "添加黑名单"),
BotCommand("del_block", "移除黑名单"),
]
await context.bot.delete_my_commands()
await context.bot.set_my_commands(commands=group_command)
await context.bot.set_my_commands(commands=group_command + user_command, scope=BotCommandScopeAllPrivateChats())
if config.error.notification_chat_id:

View File

@ -1,814 +0,0 @@
import asyncio
import math
from typing import Optional, List, Dict, TYPE_CHECKING, Any, Coroutine, Tuple
from simnet.models.starrail.chronicle.activity import (
StarRailFantasticStory,
StarRailTreasureDungeonRecord,
StarRailFoxStoryTeam,
)
from telegram import Update, Message
from telegram.constants import ChatAction
from telegram.ext import CallbackContext, filters
from core.dependence.assets import AssetsService
from core.plugin import Plugin, handler
from core.services.template.services import TemplateService
from gram_core.services.template.models import RenderResult, RenderGroupResult
from plugins.tools.genshin import GenshinHelper
from utils.log import logger
from utils.uid import mask_number
if TYPE_CHECKING:
from simnet import StarRailClient
__all__ = ("PlayerActivityPlugins",)
ACTIVITY_DATA_ERROR = "活动数据有误"
ACTIVITY_ATTR_ERROR = "活动数据有误 估计是彦卿晕了"
class NotSupport(Exception):
"""不支持的服务器"""
class NotHaveData(Exception):
"""没有数据"""
MSG = "没有查找到此活动数据"
class PlayerActivityPlugins(Plugin):
"""玩家活动信息查询"""
def __init__(
self,
template: TemplateService,
assets: AssetsService,
helper: GenshinHelper,
):
self.template_service = template
self.assets = assets
self.helper = helper
async def get_uid(self, user_id: int, reply: Optional[Message], player_id: int, offset: int) -> int:
"""通过消息获取 uid优先级args > reply > self"""
uid, user_id_ = player_id, user_id
if reply:
try:
user_id_ = reply.from_user.id
except AttributeError:
pass
if not uid:
player_info = await self.helper.players_service.get_player(user_id_, offset=offset)
if player_info is not None:
uid = player_info.player_id
if (not uid) and (user_id_ != user_id):
player_info = await self.helper.players_service.get_player(user_id, offset=offset)
if player_info is not None:
uid = player_info.player_id
return uid
@handler.command("fantastic_story", block=False)
@handler.message(filters.Regex("^评书奇谭信息查询(.*)"), block=False)
async def fantastic_story_command_start(self, update: Update, _: CallbackContext) -> Optional[int]:
user_id = await self.get_real_user_id(update)
message = update.effective_message
uid, offset = self.get_real_uid_or_offset(update)
self.log_user(update, logger.info, "查询评书奇谭信息命令请求")
try:
uid = await self.get_uid(user_id, message.reply_to_message, uid, offset)
async with self.helper.genshin_or_public(user_id, uid=uid) as client:
render_result = await self.fantastic_story_render(client, uid)
except AttributeError as exc:
logger.error(ACTIVITY_DATA_ERROR)
logger.exception(exc)
await message.reply_text(ACTIVITY_ATTR_ERROR)
return
except NotHaveData as e:
reply_message = await message.reply_text(e.MSG)
if filters.ChatType.GROUPS.filter(reply_message):
self.add_delete_message_job(message)
self.add_delete_message_job(reply_message)
return
await message.reply_chat_action(ChatAction.UPLOAD_PHOTO)
await render_result.reply_photo(message, filename=f"{user_id}.png")
async def get_fantastic_story_rander_data(self, uid: int, data: StarRailFantasticStory) -> Dict:
if not data.exists_data:
raise NotHaveData
avatar_icons = {}
for record in data.records:
for avatar in record.avatars:
avatar_icons[avatar.id] = self.assets.avatar.square(avatar.id).as_uri()
return {
"uid": mask_number(uid),
"records": data.records,
"avatar_icons": avatar_icons,
}
async def fantastic_story_render(self, client: "StarRailClient", uid: Optional[int] = None) -> RenderResult:
if uid is None:
uid = client.player_id
act_data = await client.get_starrail_activity(uid)
try:
fantastic_story_data = act_data.fantastic_story
except ValueError:
raise NotHaveData
data = await self.get_fantastic_story_rander_data(uid, fantastic_story_data)
return await self.template_service.render(
"starrail/activity/fantastic_story.html",
data,
{"width": 500, "height": 1200},
full_page=True,
query_selector="#container",
)
@handler.command("yitai_battle", block=False)
@handler.message(filters.Regex("^以太战线信息查询(.*)"), block=False)
async def yitai_battle_command_start(self, update: Update, _: CallbackContext) -> Optional[int]:
user_id = await self.get_real_user_id(update)
message = update.effective_message
uid, offset = self.get_real_uid_or_offset(update)
self.log_user(update, logger.info, "查询以太战线信息命令请求")
try:
uid = await self.get_uid(user_id, message.reply_to_message, uid, offset)
async with self.helper.genshin_or_public(user_id, uid=uid) as client:
render_result = await self.yitai_battle_render(client, uid)
except AttributeError as exc:
logger.error(ACTIVITY_DATA_ERROR)
logger.exception(exc)
await message.reply_text(ACTIVITY_ATTR_ERROR)
return
except NotHaveData as e:
reply_message = await message.reply_text(e.MSG)
if filters.ChatType.GROUPS.filter(reply_message):
self.add_delete_message_job(message)
self.add_delete_message_job(reply_message)
return
await message.reply_chat_action(ChatAction.UPLOAD_PHOTO)
await render_result.reply_photo(message, filename=f"{user_id}.png")
async def yitai_battle_render(self, client: "StarRailClient", uid: Optional[int] = None) -> RenderResult:
if uid is None:
uid = client.player_id
act_data = await client.get_starrail_activity(uid)
try:
yitai_battle_data = act_data.yitai_battle
if not (yitai_battle_data.exists_data and yitai_battle_data.info.exists_data):
raise NotHaveData
except ValueError:
raise NotHaveData
data = {
"uid": mask_number(uid),
"data": yitai_battle_data.info,
}
return await self.template_service.render(
"starrail/activity/yitai.html",
data,
{"width": 960, "height": 1000},
full_page=True,
query_selector="#DIV_1",
)
@handler.command("endless_side", block=False)
@handler.message(filters.Regex("^无尽位面信息查询(.*)"), block=False)
async def endless_side_command_start(self, update: Update, _: CallbackContext) -> Optional[int]:
user_id = await self.get_real_user_id(update)
message = update.effective_message
uid, offset = self.get_real_uid_or_offset(update)
self.log_user(update, logger.info, "查询无尽位面信息命令请求")
try:
uid = await self.get_uid(user_id, message.reply_to_message, uid, offset)
async with self.helper.genshin_or_public(user_id, uid=uid) as client:
render_result = await self.endless_side_render(client, uid)
except AttributeError as exc:
logger.error(ACTIVITY_DATA_ERROR)
logger.exception(exc)
await message.reply_text(ACTIVITY_ATTR_ERROR)
return
except NotHaveData as e:
reply_message = await message.reply_text(e.MSG)
if filters.ChatType.GROUPS.filter(reply_message):
self.add_delete_message_job(message)
self.add_delete_message_job(reply_message)
return
await message.reply_chat_action(ChatAction.UPLOAD_PHOTO)
await render_result.reply_photo(message, filename=f"{user_id}.png")
async def endless_side_render(self, client: "StarRailClient", uid: Optional[int] = None) -> RenderResult:
if uid is None:
uid = client.player_id
act_data = await client.get_starrail_activity(uid)
try:
endless_side_data = act_data.endless_side
if not (
endless_side_data.exists_data and endless_side_data.info.exists_data and endless_side_data.info.records
):
raise NotHaveData
if not endless_side_data.info.records[0].finished:
raise NotHaveData
except ValueError:
raise NotHaveData
data = {
"uid": mask_number(uid),
"info": endless_side_data.info,
}
return await self.template_service.render(
"starrail/activity/endless_side.html",
data,
{"width": 960, "height": 1000},
full_page=True,
query_selector="#endless_side",
)
@handler.command("fox_story", block=False)
@handler.message(filters.Regex("^狐斋志异信息查询(.*)"), block=False)
async def fox_story_command_start(self, update: Update, _: CallbackContext) -> Optional[int]:
user_id = await self.get_real_user_id(update)
message = update.effective_message
uid, offset = self.get_real_uid_or_offset(update)
self.log_user(update, logger.info, "查询狐斋志异信息命令请求")
try:
uid = await self.get_uid(user_id, message.reply_to_message, uid, offset)
async with self.helper.genshin_or_public(user_id, uid=uid) as client:
render_result = await self.fox_story_render(client, uid)
except AttributeError as exc:
logger.error(ACTIVITY_DATA_ERROR)
logger.exception(exc)
await message.reply_text(ACTIVITY_ATTR_ERROR)
return
except NotHaveData as e:
reply_message = await message.reply_text(e.MSG)
if filters.ChatType.GROUPS.filter(reply_message):
self.add_delete_message_job(message)
self.add_delete_message_job(reply_message)
return
await message.reply_chat_action(ChatAction.UPLOAD_PHOTO)
await render_result.reply_photo(message, filename=f"{user_id}.png")
@staticmethod
def line_percent(team: StarRailFoxStoryTeam) -> Tuple[float, float]:
if team.index_arrived == 0:
return 0, 0
x, i = 0.0, team.index_arrived
if i > 0:
a = i - 1
n = team.fans_range[i - 1]
r = (team.fans - n) / (team.fans_range[i] - n)
l = a + 0.5
x = max(0.0, min(1.0, (r + l) * (2 / (2 * len(team.fans_range) - 1))))
d = [
2.5,
3,
4,
4.5,
5,
5.5,
6,
7,
7,
8,
8.5,
9,
9.5,
10,
11,
11.5,
12,
13,
13,
14,
14.5,
15,
16,
16.5,
17,
18,
19,
20,
20.5,
21,
21.5,
22,
22.5,
22.5,
22.5,
23.5,
24.5,
25,
26.5,
27.5,
28.5,
29,
30,
31,
31.5,
32,
32.5,
32.5,
32.5,
33.5,
33.5,
33.5,
33.5,
33.5,
33.5,
33.5,
34,
35,
35.5,
36,
37,
37.5,
38,
38.5,
38.5,
38.5,
38.5,
37.5,
37.5,
37.5,
36.5,
37,
37,
38,
39,
39,
40,
40.5,
41,
42,
42.5,
43,
43.5,
43.5,
44.5,
44.5,
44.5,
45,
45.5,
45.5,
46,
47,
47,
48,
48.5,
49,
50,
50.5,
51,
52,
52.5,
53,
53.5,
53.5,
53.5,
53.5,
54,
54.5,
55.5,
56.5,
58,
59.5,
60.5,
61.5,
62,
63,
63.5,
64,
65,
65.5,
66,
66.5,
66.5,
66.5,
66.5,
66.5,
66.5,
67,
67,
68,
69,
70,
70,
70.5,
71.5,
71.5,
71.5,
71.5,
71.5,
71.5,
71.5,
72.5,
72.5,
72.5,
73,
73.5,
73.5,
74,
74.5,
75,
76,
77,
77.5,
78.5,
79,
80,
80.5,
81,
81.5,
81.5,
81.5,
81.5,
81.5,
81.5,
81.5,
81.5,
81.5,
81.5,
81,
80.5,
80.5,
81,
81.5,
82,
83,
83.5,
84,
84.5,
85,
86,
86.5,
87.5,
88.5,
89.5,
90.5,
92,
93,
94.5,
95.5,
96.5,
97.5,
98.5,
99.5,
100.5,
101.5,
102.5,
103.5,
104.5,
105.5,
106.5,
108,
109,
110.5,
111.5,
112.5,
113.5,
114.5,
115.5,
116.5,
117,
118,
118.5,
118.5,
119,
119.5,
120,
120.5,
121.5,
122.5,
123.5,
124.5,
126,
127,
128,
129.5,
130.5,
131.5,
132.5,
133.5,
134.5,
135.5,
136,
137,
138,
138,
139,
139.5,
139.5,
140.5,
140.5,
141,
141.5,
142,
143,
143.5,
143.5,
144.5,
144.5,
145,
145.5,
145.5,
146,
146.5,
147,
147.5,
148,
148.5,
149,
149.5,
150,
150.5,
151,
152,
153,
153.5,
154.5,
155.5,
156.5,
158,
158.5,
]
def v(t):
e = max(0, int(t))
if e == len(d):
return 0
i = min(int(math.ceil(t)), len(d) - 1)
s = d[e]
return (s + (d[i] - s) * (t - e)) / 162
return x * 100, v(x * len(d)) * 100
async def fox_story_render(self, client: "StarRailClient", uid: Optional[int] = None) -> RenderResult:
if uid is None:
uid = client.player_id
act_data = await client.get_starrail_activity(uid)
try:
fox_story_data = act_data.fox_story
if not fox_story_data.exists_data:
raise NotHaveData
fox_story_data = fox_story_data.info
if not fox_story_data.exists_data:
raise NotHaveData
except ValueError:
raise NotHaveData
data = {
"uid": mask_number(uid),
"data": fox_story_data,
"line": self.line_percent(fox_story_data.team),
}
return await self.template_service.render(
"starrail/activity/fox_story.html",
data,
{"width": 1920, "height": 1000},
full_page=True,
query_selector="#fox_story",
)
@handler.command("boxing_show", block=False)
@handler.message(filters.Regex("^斗技表演赛信息查询(.*)"), block=False)
async def boxing_show_command_start(self, update: Update, _: CallbackContext) -> None:
user_id = await self.get_real_user_id(update)
message = update.effective_message
uid, offset = self.get_real_uid_or_offset(update)
self.log_user(update, logger.info, "查询斗技表演赛信息命令请求")
try:
uid = await self.get_uid(user_id, message.reply_to_message, uid, offset)
async with self.helper.genshin_or_public(user_id, uid=uid) as client:
render_result = await self.boxing_show_render(client, uid)
except AttributeError as exc:
logger.error(ACTIVITY_DATA_ERROR)
logger.exception(exc)
await message.reply_text(ACTIVITY_ATTR_ERROR)
return
except NotHaveData as e:
reply_message = await message.reply_text(e.MSG)
if filters.ChatType.GROUPS.filter(reply_message):
self.add_delete_message_job(message)
self.add_delete_message_job(reply_message)
return
await message.reply_chat_action(ChatAction.UPLOAD_PHOTO)
await render_result.reply_photo(message, filename=f"{user_id}.png")
async def boxing_show_render(self, client: "StarRailClient", uid: Optional[int] = None) -> RenderResult:
if uid is None:
uid = client.player_id
act_data = await client.get_starrail_activity(uid)
try:
boxing_show_data = act_data.boxing_show
if not (boxing_show_data.exists_data and boxing_show_data.info.exists_data and boxing_show_data.info.list):
raise NotHaveData
if not boxing_show_data.info.list[0].has_challenge:
raise NotHaveData
box_data = boxing_show_data.info.list
except ValueError:
raise NotHaveData
avatar_icons = {}
for info in box_data:
for avatar in info.avatars_used_activity:
avatar_icons[avatar.id] = self.assets.avatar.icon(avatar.id).as_uri()
data = {
"uid": mask_number(uid),
"data": boxing_show_data.info.list,
"avatar_icons": avatar_icons,
}
return await self.template_service.render(
"starrail/activity/boxing_show.html",
data,
{"width": 960, "height": 1000},
full_page=True,
query_selector="#boxing_show",
)
@handler.command("space_zoo", block=False)
@handler.message(filters.Regex("^异宠拾遗信息查询(.*)"), block=False)
async def space_zoo_command_start(self, update: Update, _: CallbackContext) -> None:
user_id = await self.get_real_user_id(update)
message = update.effective_message
uid, offset = self.get_real_uid_or_offset(update)
self.log_user(update, logger.info, "查询异宠拾遗信息命令请求")
try:
uid = await self.get_uid(user_id, message.reply_to_message, uid, offset)
async with self.helper.genshin_or_public(user_id, uid=uid) as client:
render_result = await self.space_zoo_render(client, uid)
except AttributeError as exc:
logger.error(ACTIVITY_DATA_ERROR)
logger.exception(exc)
await message.reply_text(ACTIVITY_ATTR_ERROR)
return
except NotHaveData as e:
reply_message = await message.reply_text(e.MSG)
if filters.ChatType.GROUPS.filter(reply_message):
self.add_delete_message_job(message)
self.add_delete_message_job(reply_message)
return
await message.reply_chat_action(ChatAction.UPLOAD_PHOTO)
await render_result.reply_photo(message, filename=f"{user_id}.png")
async def space_zoo_render(self, client: "StarRailClient", uid: Optional[int] = None) -> RenderResult:
if uid is None:
uid = client.player_id
act_data = await client.get_starrail_activity(uid)
try:
space_zoo_data = act_data.space_zoo
if not space_zoo_data.exists_data:
raise NotHaveData
except ValueError:
raise NotHaveData
features_map: Dict[int, Dict[str, int]] = {i: {"cur": 0, "max": 0} for i in range(5)}
features_map2: Dict[str, int] = {"酥壳": 0, "内馅": 1, "装饰": 2, "眼睛": 3, "花纹": 4}
for feature in space_zoo_data.info.features:
feature_index = features_map2.get(feature.name_mi18n)
if feature_index is not None:
features_map[feature_index]["cur"] += feature.cur
features_map[feature_index]["max"] += feature.max
data = {
"uid": mask_number(uid),
"info": space_zoo_data.info,
"features": list(features_map.values()),
}
return await self.template_service.render(
"starrail/activity/space_zoo.html",
data,
{"width": 960, "height": 1000},
full_page=True,
query_selector="#spaceZoo",
)
@handler.command("treasure_dungeon", block=False)
@handler.message(filters.Regex("^地城探宝信息查询(.*)"), block=False)
async def treasure_dungeon_command_start(self, update: Update, _: CallbackContext) -> Optional[int]:
user_id = await self.get_real_user_id(update)
message = update.effective_message
uid, offset = self.get_real_uid_or_offset(update)
self.log_user(update, logger.info, "查询地城探宝信息命令请求")
try:
uid = await self.get_uid(user_id, message.reply_to_message, uid, offset)
async with self.helper.genshin_or_public(user_id, uid=uid) as client:
render_result = await self.treasure_dungeon_render(client, uid)
if render_result is None:
raise NotHaveData
except AttributeError as exc:
logger.error(ACTIVITY_DATA_ERROR)
logger.exception(exc)
await message.reply_text(ACTIVITY_ATTR_ERROR)
return
except NotHaveData as e:
reply_message = await message.reply_text(e.MSG)
if filters.ChatType.GROUPS.filter(reply_message):
self.add_delete_message_job(message)
self.add_delete_message_job(reply_message)
return
await message.reply_chat_action(ChatAction.UPLOAD_PHOTO)
await RenderGroupResult(results=render_result).reply_media_group(message, write_timeout=60)
self.log_user(
update,
logger.info,
"[bold]地城探宝信息数据[/bold]: 成功发送图片",
extra={"markup": True},
)
async def treasure_dungeon_render(self, client: "StarRailClient", uid: Optional[int] = None) -> List[RenderResult]:
if uid is None:
uid = client.player_id
act_data = await client.get_starrail_activity(uid)
try:
data = act_data.treasure_dungeon
if not data.exists_data:
raise NotHaveData
if all(record.finish_time is None for record in data.records):
raise NotHaveData
except ValueError:
raise NotHaveData
avatar_icons = {}
for record in data.records:
for avatar in record.avatars:
avatar_icons[avatar.id] = self.assets.avatar.icon(avatar.id).as_uri()
def render(record: StarRailTreasureDungeonRecord) -> Coroutine[Any, Any, RenderResult]:
render_data = {
"uid": mask_number(uid),
"record": record,
"avatar_icons": avatar_icons,
}
return self.template_service.render(
"starrail/activity/treasure_dungeon.html",
render_data,
{"width": 500, "height": 762},
full_page=True,
query_selector="#container",
)
tasks = [render(record) for record in data.records if record.finish_time is not None]
if len(tasks) == 1:
return [await tasks[0]]
return await asyncio.gather(*tasks) # noqa
@handler.command("copper_man", block=False)
@handler.message(filters.Regex("^金人巷信息查询(.*)"), block=False)
async def copper_man_command_start(self, update: Update, _: CallbackContext) -> Optional[int]:
user_id = await self.get_real_user_id(update)
message = update.effective_message
uid, offset = self.get_real_uid_or_offset(update)
self.log_user(update, logger.info, "查询金人巷信息命令请求")
try:
uid = await self.get_uid(user_id, message.reply_to_message, uid, offset)
async with self.helper.genshin_or_public(user_id, uid=uid) as client:
render_result = await self.copper_man_render(client, uid)
except AttributeError as exc:
logger.error(ACTIVITY_DATA_ERROR)
logger.exception(exc)
await message.reply_text(ACTIVITY_ATTR_ERROR)
return
except NotHaveData as e:
reply_message = await message.reply_text(e.MSG)
if filters.ChatType.GROUPS.filter(reply_message):
self.add_delete_message_job(message)
self.add_delete_message_job(reply_message)
return
await message.reply_chat_action(ChatAction.UPLOAD_PHOTO)
await render_result.reply_photo(message, filename=f"{user_id}.png")
async def copper_man_render(self, client: "StarRailClient", uid: Optional[int] = None) -> RenderResult:
if uid is None:
uid = client.player_id
act_data = await client.get_starrail_resident(uid)
try:
copper_man_data = act_data.copper_man
if not copper_man_data.base.exists_data:
raise ValueError
if not copper_man_data.info.exists_data:
raise ValueError
except ValueError:
raise NotHaveData
data = {
"uid": mask_number(uid),
"basic": copper_man_data.info.basic,
"shops": copper_man_data.info.shops[:-1],
"last_shop": copper_man_data.info.shops[-1],
}
return await self.template_service.render(
"starrail/activity/copper_man.html",
data,
{"width": 500, "height": 1200},
full_page=True,
query_selector="#container",
)

View File

@ -93,20 +93,11 @@ class PlayerRoguePlugins(Plugin):
uid, pre = await self.get_uid(user_id, context.args, message.reply_to_message, uid, offset)
async with self.helper.genshin_or_public(user_id, uid=uid) as client:
render_result = await self.render(client, pre, uid)
except TooManyRequestPublicCookies:
await message.reply_text("用户查询次数过多 请稍后重试")
return
except AttributeError as exc:
logger.error("模拟宇宙数据有误")
logger.exception(exc)
await message.reply_text("模拟宇宙数据有误 估计是彦卿晕了")
return
except NotSupport:
reply_message = await message.reply_text("暂不支持该服务器查询模拟宇宙数据")
if filters.ChatType.GROUPS.filter(reply_message):
self.add_delete_message_job(message)
self.add_delete_message_job(reply_message)
return
except NotHaveData:
reply_message = await message.reply_text("没有查找到模拟宇宙数据")
if filters.ChatType.GROUPS.filter(reply_message):
@ -156,6 +147,38 @@ class PlayerRoguePlugins(Plugin):
query_selector="#new-container",
)
@handler.command("rogue_tourn", block=False)
@handler.message(filters.Regex("^差分宇宙信息查询(.*)"), block=False)
async def rogue_tourn_command_start(self, update: Update, _: CallbackContext) -> Optional[int]:
user_id = await self.get_real_user_id(update)
message = update.effective_message
uid, offset = self.get_real_uid_or_offset(update)
self.log_user(update, logger.info, "查询差分宇宙信息命令请求")
try:
async with self.helper.genshin_or_public(user_id, uid=uid, offset=offset) as client:
render_result = await self.render_rogue_tourn(client)
except AttributeError as exc:
logger.error("差分宇宙数据有误")
logger.exception(exc)
await message.reply_text("差分宇宙数据有误 估计是彦卿晕了")
return
await message.reply_chat_action(ChatAction.UPLOAD_PHOTO)
await render_result.reply_photo(message, filename=f"{user_id}.png")
async def render_rogue_tourn(self, client: "StarRailClient") -> RenderResult:
rogue = await client.get_starrail_rogue_tourn()
data = {
"uid": mask_number(client.player_id),
"basic": rogue.basic,
}
return await self.template_service.render(
"starrail/rogue/rogue_tourn.html",
data,
{"width": 1000, "height": 700},
full_page=True,
query_selector=".simulate",
)
@handler.command("rogue_locust", block=False)
@handler.message(filters.Regex("^寰宇蝗灾信息查询(.*)"), block=False)
async def rogue_locust_command_start(self, update: Update, _: CallbackContext) -> Optional[int]:

View File

@ -7,7 +7,7 @@ aiohttp==3.9.5
aiolimiter==1.1.0
aiosignal==1.3.1
aiosqlite[sqlite]==0.20.0
alembic==1.13.1
alembic==1.13.2
anyio==4.4.0
apscheduler==3.10.4
arko-wrapper==0.2.8
@ -56,7 +56,7 @@ mdurl==0.1.2
msgspec==0.18.6
multidict==6.0.5
mypy-extensions==1.0.0
openpyxl==3.1.4
openpyxl==3.1.5
orjson==3.10.5
packaging==24.1
pathspec==0.12.1
@ -84,10 +84,10 @@ rapidfuzz==3.9.3
reactivex==4.0.4
redis==5.0.7
rich==13.7.1
sentry-sdk==2.7.0
sentry-sdk==2.7.1
setuptools==70.1.1
shellingham==1.5.4
simnet @ git+https://github.com/PaiGramTeam/SIMNet@277a33321a20909541b46bf4ecf794fd47e19fb1
simnet @ git+https://github.com/PaiGramTeam/SIMNet@10654fc90012ab97288c21f58b7091fd16c301f7
six==1.16.0
smmap==5.0.1
sniffio==1.3.1

View File

@ -1,86 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="css/pc_f95b4488.css" rel="stylesheet">
<link href="css/c_hsr_act_BoxBattle_78ede0f4.css" rel="stylesheet">
<link href="css/c_hsr_role-medium_341dcf55.css" rel="stylesheet">
</head>
<body>
<div style="width: 960px;" id="boxing_show">
<div data-v-391669a4="" data-v-3dedffc2="" class="battle">
<div data-v-391669a4="" class="battle-container">
<div data-v-391669a4="" class="battle-container-top">
<span data-v-391669a4="" class="time">
磐岩镇斗技表演赛 &nbsp;&nbsp;&nbsp;&nbsp; UID: {{ uid }}
</span>
</div>
<div data-v-391669a4="" class="blocks">
{% set badges = ["badge_3.2a9179f6", "badge_2.71d8481e", "badge_1.131659cd", "badge_3.2a9179f6", "badge_2.71d8481e", "badge_1.131659cd", "badge_3.2a9179f6"] %}
{% set buffs = ["buff-6.99ba4655", "buff-1.dc2fb6c8", "buff-5.72d0789f", "buff-7.57d44ceb", "buff-2.b371ab10", "buff-4.3247f059", "buff-3.2a41819d"] %}
{% for info in data %}
<div data-v-bac2d04e="" data-v-391669a4="" class="block">
<div data-v-bac2d04e="" class="top">
<div data-v-bac2d04e="" class="top-left">
<img data-v-bac2d04e="" src="https://act.hoyolab.com/app/community-game-records-sea/rpg/images/{{ badges[loop.index0] }}.png" alt="" class="badge">
<img data-v-bac2d04e="" src="https://act.hoyolab.com/app/community-game-records-sea/rpg/images/{{ buffs[loop.index0] }}.png" alt="" class="top-buff">
</div>
<div data-v-bac2d04e="" class="top-right">
<div data-v-bac2d04e="" class="mid">
<p data-v-bac2d04e="" class="name">
{{ info.name_mi18n }}
</p>
{% if info.has_challenge %}
<div data-v-bac2d04e="" class="mid-btm">
<p data-v-bac2d04e="" class="round">
轮次数:<span data-v-bac2d04e="">{{ info.round }}</span>
</p>
</div>
{% else %}
<div data-v-bac2d04e="" class="empty">
暂无挑战数据
</div>
{% endif %}
</div>
{% if info.has_challenge %}
<div data-v-bac2d04e="" class="avatars">
{% for avatar in info.avatars_used_activity %}
<div data-v-d07e5c4c="" data-v-bac2d04e="" class="hsr-role-medium normal">
<div data-v-d07e5c4c="" class="hsr-role-medium-pos">
<div data-v-d07e5c4c="" class="inner role-rarity-{{ avatar.rarity }}">
<img data-v-d07e5c4c="" class="avatar" src="{{ avatar_icons[avatar.id] }}">
<div data-v-d07e5c4c="" class="level">{{ avatar.level }}级</div>
{% if avatar.rank %}
<div data-v-d07e5c4c="" class="fate-level">
{{ avatar.rank }}
</div>
{% endif %}
<i data-v-d07e5c4c="" class="select-index" style="display: none;"></i>
</div>
{% if avatar.is_trial %}
<div data-v-d07e5c4c="" class="trial">试用</div>
{% endif %}
</div>
</div>
{% endfor %}
</div>
{% endif %}
</div>
</div>
{% if info.has_challenge %}
<div data-v-bac2d04e="" class="btm">
<div data-v-bac2d04e="" class="toggle">
<span data-v-bac2d04e="">选择增益:</span>
<span data-v-bac2d04e="">{{ info.buffs }}</span>
</div>
</div>
{% endif %}
</div>
{% endfor %}
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -1,118 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="css/33_95a8ba2f618c72c8e130.css" rel="stylesheet">
<style>
* {
margin: 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
#container {
padding: 4.26667vw 4vw 8vw;
}
</style>
</head>
<body>
<div id="container">
<div class="van-tabs__content">
<div data-v-056bcd56="" role="tabpanel" class="van-tab__pane" style="">
<div data-v-056bcd56="" class="activity-content">
<div data-v-056bcd56="" class="copper-man">
<div class="info">
<div class="level">
<span class="label">商业等级: </span>
<span class="count">{{ basic.level }}</span>
</div>
<div class="accumulate">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAMAAADW3miqAAADAFBMVEVHcEwEBAQAAAAZFhMAAAAkHBIAAAAJCAQaFxMhGhEAAABMOSIzKx9NRC1USjg4LBtlVDilkGIoHg9jUTFJPyxwWDNrZVtMRTpOOyGDcEykj2JKNx5NOSAdGx1qalhQQimZjmKahFiQgWk6KhVCMx6LdkyJeVBVQSayn2YyJRUzJhVxXztNOR1DMhhhSSOdiF1SRTZfWFFxameKelp3cG6Id1KFYzG8tYGlmm6hjGBeTTNOQz9gTS++qWuEbkddTTlwWzowJhlEWlR+Z0KqkmDKs3pRmom6pHTVvoTUvIHk0pZ4YD2vmGfJr3XawoZvWTlNl4nMuICunnbe0J64oGvFrXRHXVPn1ZtnTSs6RT5LYFbCtYq4pnrZx5PGr3i9q3ufiFmli1nTwY29pnHczJifekRKjHvWwIfcyI3PtntBWFVQlYQ9aWSGdEtQkYGkjmDQwZSZhmKLeFJzXTunlm9IkYfMvY1fSSmwm2q8qHVnSCNeZU1WZVG+nWBDjIazqoDWw4lRjHxTmIZ7ZD+RfluAbEWmk2dgRiRRnIxCXFmKcEeOdkx0VzG5sIiVcDzSwIpsUS2ynnHDrnxSSjO7om3i1aLFq3BUfW3CrXbYv33i0JtCh4HPu4TKuoevlGBFbmLCpWvhzpHBqHE1b21/a0uHdFA9U096aUkxOTOSfFGCcE6Yfk69roNwZ0dQhHNuVzWeg0+KeEmBYzjZxY7k26xpcVGsqX2zo3q1nWvd0qRSZlm0llo9f3mEbkfZwINIVEnfx4Cqrobp2qC/r4BUiHqlh0+ajl8/Y2LOsHGepIC1to53dVBQdGSImXlMh308eXE0XVgyQ0J9XDGbhFg6MiPs5LGTo4LGtoqDnoHWyJjFs4CWdkRDYF/bypXv36BNXVDAsoGyonGekWzIt4Kng0nVyI+Sgliyik5ok35tYEGUkG1ujXhjeWGXmXNha1Z6hmhGeGqCcFNdj3/Rxp95nIVVYEhLbGA9QDNEg3qalG1IYlzFsHpWWkG7nmdFSjmBh2xyZ6VQAAAAQnRSTlMADgYvC04BFR9AEPUqN5RywP5iz0Lde2bjz+/+3jhom7H4+Vio8tX85Juvz8GUdvHZo+btzLje4s/iuXLl7vve/XnmmaE3AAAD7klEQVQ4y2NgIBEwcXAqCwmxMnOx4VTCJWfF3R4R0T5BXUZFiBGrEhY586vRXc49eydMKPYvj5DgZ8dijMLT4C2fS7qdJzR7e3v7v/RfL8OKrobDIqMgumzn1Z4qEJjQU+xf7L1eHtVOdrX0glkFOw8tUP8eGRm54op0+yb/td7OwhzIvhLw7U8qm5W+POrd+127dkWFLVtx5ZKzc+sSZFXWIUk3CzZ7Vp/5FjgtNbcmKgqkLKJr+fIlAnDncyhNC/bw3Fe9bnrYvYaMo6l770eFOTldjFi9JDeXD6aIb0p/bOy+Y43r1n29t/B56pPU1LVgVd4bVi1thfqRyz506pYGz+mNjUfWHvLyfe7a96SvtcbJySmyeeXSVdoQCzkdQmNTPCob8/LSWsO9PP3m/tt0e9PtaienrMjupUVL+cGKHPeGxt712JaXnZ220cvrzYEFp+pTj25YvTXLadnkhKIiURaQIs2uuKkpHgezm5rSNobX9rocqvV6MHmDS2JNZ2dk9+WPRSIgRVrOvsHp6SBFebleJ/wWZpzIPDt/cmKiS2dnlv+zlgSwB7XWT5vq2bAt282t6fTCmTHHHntNOzX9wpR5CT8770zOL2yRBNmnWR7qEZzyOM/NzW2r375TaR+Oei04+8ZzUeiiX3f2uxS2qIKCnb98x92pnp4v3Nw65p/I2JyWdmZmRsPT9JDQkFfHgYoK83lBQVC+2jX2buDJALeOPbv9PLedPPswfEGo17uQ5O3H9/tUtPmAFLHbOE9JmXN336cAt4DTnrW1vpmenhkL098nuMYfv5880b0CpIhNxdunf0uwa31pQMf83Zm+M55V+M2a5Rn+v/pYTnVlYYkgDzjI7VYuSpmTlHktIKB0619X15PnX6a/vVAUPv9CTtFE1xhLdkhy6k7+fbM/OO5LacCP4hBX3xc1mQfPn/Y6k+MU5z4x3hSSdzhVE6b83nmrbNKNutLzxfMqz+XMS6+fM3dxzqP4oO2u4tDEIu8yY0fS4Rlz467NLt3zZ1Xd7JrERT4fFr+Kq5wYqA9Ld0xqMwN95h4um+Q+48bsuj11dbMX5yyeHhRY4r49WQyW7Nh4NGbOcamMdp/0YEfI29dHzp078rreY5J7TEmgJBc8lbPx2h7IdNkRXwFUWOEzz8V9VtLhoPiYGFcpHkRWYGPj1DiwO98lpn5NvHtvUElQdEHS3EeBcVIiaPlTobavKyHf52FFb1CbYG/0mjW3Zhhj5GI2ZbO+Hu/uy/n5bW2C+bH9yUEmzFgKDXY90Uvt5f7Nzs7OzS1KRmIsWIsWNhZWXR0JbmlubgNDcXZ8JRk7DzMzByMbqSUgAwBjJ5n3KebOLQAAAABJRU5ErkJggg==" alt="">
<div class="right">
<span class="label">累积赚取商会储值金:</span>
<span class="count">{{ basic.accumulate }}</span>
</div>
</div>
<div class="items">
<div class="item">
<div class="top">
<span class="label">常规运单:</span>
<span class="count">{{ basic.cur_common_order }}/{{ basic.max_common_order }}</span>
</div>
<div class="progress">
<div class="left"></div>
<div class="center">
<div class="bar" style="width: {{ basic.common_order_process }}%;"></div>
</div>
<div class="right"></div>
</div>
</div>
<div class="item">
<div class="top">
<span class="label">客制运单:</span>
<span class="count">{{ basic.cur_customer_order }}/{{ basic.max_customer_order }}</span>
</div>
<div class="progress">
<div class="left"></div>
<div class="center">
<div class="bar" style="width: {{ basic.customer_order_process }}%;"></div>
</div>
<div class="right"></div>
</div>
</div>
<div class="item">
<div class="top">
<span class="label">街巷事件:</span>
<span class="count">{{ basic.cur_alley_event }}/{{ basic.max_alley_event }}</span>
</div>
<div class="progress">
<div class="left"></div>
<div class="center">
<div class="bar" style="width: {{ basic.alley_event_process }}%;"></div>
</div>
<div class="right"></div>
</div>
</div>
</div>
</div>
<div class="shops">
<div class="title">已解锁商铺</div>
<div class="shop">
{% for shop in shops %}
{% if shop.is_unlock %}
{% set lock = '' %}
{% else %}
{% set lock = 'lock' %}
{% endif %}
<div class="item {{ lock }}">
<div class="icon">
<img src="{{ shop.icon }}" alt="">
</div>
<span class="name">{{ shop.name }}</span>
</div>
{% endfor %}
{% if last_shop.is_unlock %}
{% set lock = '' %}
{% else %}
{% set lock = 'lock' %}
{% endif %}
<div class="last {{ lock }}">
<div class="block">
<div class="icon">
<img src="{{ last_shop.icon }}" alt="">
</div>
<span class="name">{{ last_shop.name }}</span>
</div>
</div>
</div>
</div>
<div class="guide">
UID: {{ uid }}
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,189 +0,0 @@
/*! Copyright © 2011 - 2023 miHoYo. All Rights Reserved */
.no-data[data-v-5b777587] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.no-data .text[data-v-5b777587] {
margin-top: 2.66667vw;
font-size: 3.73333vw;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #7f858a;
height: 3.73333vw;
line-height: 3.73333vw
}
.item.is-editable.unable-be-select[data-v-03247942] {
opacity: .3
}
.item .name[data-v-03247942] {
height: 3.73333vw;
font-size: 3.73333vw;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #1e1f20;
line-height: 3.73333vw;
margin-top: 2.13333vw;
text-align: center
}
.item .name .text[data-v-03247942] {
text-align: center;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
white-space: nowrap;
height: 3.73333vw;
line-height: 3.73333vw;
width: 22.4vw;
display: inline-block;
position: relative;
left: -.8vw
}
.item .inner[data-v-03247942] {
width: 100%;
position: relative
}
.item .inner .select-label[data-v-03247942], .item .inner[data-v-03247942] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.item .inner .select-label[data-v-03247942] {
width: 5.33333vw;
height: 5.33333vw;
border: .53333vw solid #fff;
position: absolute;
top: 1.06667vw;
right: 1.06667vw;
font-size: 3.73333vw;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #fff;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
border-radius: 100%
}
.item .inner .select-label.selected[data-v-03247942] {
background: #f69502
}
.item .inner .avatar-box[data-v-03247942] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
position: relative;
overflow: hidden;
text-align: center;
border-radius: 0 4vw 0 0
}
.item .inner .avatar-box .avatar-bg[data-v-03247942] {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
z-index: 0
}
.item .inner .avatar[data-v-03247942] {
height: 100%;
width: 100%;
position: relative;
top: -.53333vw;
display: inline-block
}
.item .inner .icon[data-v-03247942] {
position: absolute;
left: 1.6vw;
top: 1.6vw
}
.item .inner .index[data-v-03247942] {
top: 0;
right: 0;
width: 4.8vw;
height: 5.86667vw;
background: rgba(0, 0, 0, .5);
border-radius: 0 4vw 0 1.6vw;
font-size: 3.73333vw;
line-height: 3.73333vw
}
.item .inner .index[data-v-03247942], .item .inner .level[data-v-03247942] {
position: absolute;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #fff;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.item .inner .level[data-v-03247942] {
bottom: .53333vw;
left: 0;
height: 3.73333vw;
background: #030b0e;
width: 100%;
font-size: 3.2vw;
line-height: 3.2vw
}
.item .inner .trial[data-v-03247942] {
position: absolute;
top: 0;
right: 0;
padding: 1px 1.06667vw;
background: #ffc870;
border-radius: 2.66667vw;
font-weight: 500;
font-size: 2.66667vw;
line-height: 2.66667vw;
font-family: PingFangSC-Medium, PingFang SC;
color: #000;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}

View File

@ -1,405 +0,0 @@
/*! Copyright © 2011 - 2023 miHoYo. All Rights Reserved */
.top[data-v-bac2d04e] {
height: 108px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
padding: 15px 32px 15px 28px;
background: no-repeat top/contain;
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/card_bg@pc.ee0a22a4.png)
}
.top-left[data-v-bac2d04e] {
position: relative;
width: 104px;
-ms-flex-negative: 0;
flex-shrink: 0;
padding-right: 26px
}
.top-left[data-v-bac2d04e]:after {
content: "";
position: absolute;
width: 10px;
height: 78px;
background: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/split_ver.8ca3b5c4.png) no-repeat 50%/contain;
right: 0;
top: 0
}
.badge[data-v-bac2d04e] {
width: 100%;
height: auto
}
.perfect[data-v-bac2d04e] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
color: #fef5d0;
text-align: center;
border-radius: 0 8px 0 0;
border: 1px solid #a15451;
background: #8e3834;
padding: 1px 11px;
font-size: 12px;
font-weight: 700;
line-height: 16px;
background: #8e3834 url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/perfect.20384159.png) no-repeat 100%/contain
}
.top-buff[data-v-bac2d04e] {
width: 20px;
height: 20px;
position: absolute;
top: 46px;
left: 55px
}
.top-right[data-v-bac2d04e] {
margin-left: 0;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
min-width: 0;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
padding-left: 16px
}
.empty[data-v-bac2d04e] {
color: rgba(66, 35, 32, .5);
text-align: left;
font-size: 16px;
font-weight: 500
}
.name[data-v-bac2d04e] {
color: #8a382a;
font-size: 18px;
font-weight: 700;
line-height: 26px;
margin-bottom: 12px
}
.mid[data-v-bac2d04e] {
width: 376px;
-ms-flex-negative: 0;
flex-shrink: 0
}
.mid-btm[data-v-bac2d04e] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.round[data-v-bac2d04e] {
color: #484848;
font-size: 14px;
font-weight: 600;
line-height: 18px;
margin-right: 24px
}
.round span[data-v-bac2d04e] {
margin-left: 4px;
color: #484848;
font-size: 17px;
font-weight: 600;
letter-spacing: .1px;
font-family: RPG_CN_Condensed
}
.avatars[data-v-bac2d04e] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
margin-left: 32px
}
.avatars .hsr-role-medium[data-v-bac2d04e] {
margin-left: 12px
}
.avatars .hsr-role-medium[data-v-bac2d04e]:first-child {
margin-left: 0
}
.avatars .hsr-role-medium[data-v-bac2d04e] .trial {
padding: 2px 8px;
border-radius: 24px;
background: #ffd966;
color: rgba(0, 0, 0, .9);
font-size: 24px;
font-weight: 600;
line-height: 32px;
right: 0;
top: 0;
white-space: nowrap
}
.btm[data-v-bac2d04e] {
border: 1px solid hsla(22, 60%, 84%, .41);
background: rgba(101, 42, 32, .53);
-webkit-backdrop-filter: blur(2px);
backdrop-filter: blur(2px);
position: relative
}
.btm[data-v-bac2d04e]:before {
content: "";
position: absolute;
width: calc(100% - 2px);
height: calc(100% - 2px);
-webkit-box-sizing: border-box;
box-sizing: border-box;
top: 1px;
left: 1px;
border: .5px solid hsla(0, 0%, 100%, .11);
pointer-events: none;
border-radius: 0
}
.toggle[data-v-bac2d04e] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.toggle img[data-v-bac2d04e] {
width: 16px;
height: 16px;
-ms-flex-negative: 0;
flex-shrink: 0;
-webkit-transition: -webkit-transform .3s ease;
transition: -webkit-transform .3s ease;
-o-transition: transform .3s ease;
transition: transform .3s ease;
transition: transform .3s ease, -webkit-transform .3s ease
}
.toggle img[rotate][data-v-bac2d04e] {
-webkit-transform: rotate(-180deg);
-ms-transform: rotate(-180deg);
transform: rotate(-180deg)
}
.toggle span[data-v-bac2d04e] {
margin-left: 2px;
color: #e6d3c0;
font-size: 12px;
line-height: 16px;
padding: 8px 0
}
.toggle-zone[data-v-bac2d04e] {
margin: 16px 32px 8px
}
.buff-box[data-v-bac2d04e] {
display: -webkit-box;
display: -ms-flexbox;
display: flex
}
.buff-box[data-v-bac2d04e]:not(:last-child) {
position: relative;
padding-bottom: 42px
}
.buff-box[data-v-bac2d04e]:not(:last-child):after {
content: "";
position: absolute;
width: 100%;
height: 10px;
background: no-repeat 50%/contain;
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/split@pc.5a621a11.png);
left: 0;
bottom: 16px
}
.buff[data-v-bac2d04e] {
width: 40px;
height: 40px;
-ms-flex-negative: 0;
flex-shrink: 0;
margin-right: 16px
}
.buff-title[data-v-bac2d04e] {
color: hsla(0, 0%, 100%, .9);
font-size: 14px;
font-weight: 700;
line-height: 20px
}
.buff-desc[data-v-bac2d04e] {
color: hsla(0, 0%, 100%, .65);
font-size: 12px;
line-height: 16px;
margin-top: 8px
}
.battle[data-v-391669a4] {
display: flow-root;
min-height: 579px;
border-radius: 0 32px 0 0;
background: #1b1b20 no-repeat top/100% auto;
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/bg@pc.2f50197a.png);
position: relative
}
.battle[data-v-391669a4]:before {
content: "";
position: absolute;
width: calc(100% - 4px);
height: calc(100% - 4px);
-webkit-box-sizing: border-box;
box-sizing: border-box;
top: 2px;
left: 2px;
border: 1px solid hsla(0, 0%, 100%, .2);
pointer-events: none;
border-radius: 0 32px 0 0
}
.empty-block[data-v-391669a4] {
margin: 220px auto 0;
height: auto
}
.empty-block[data-v-391669a4] .icon {
width: 120px;
height: 120px
}
.empty-block[data-v-391669a4] .text {
color: hsla(0, 0%, 100%, .65) !important;
font-size: 12px !important;
line-height: 14px;
margin-top: 4px !important
}
.btn[data-v-391669a4] {
position: absolute;
text-align: center;
color: #282828;
font-size: 14px;
line-height: 20px;
-ms-flex-negative: 0;
flex-shrink: 0;
width: -webkit-fit-content;
width: -moz-fit-content;
width: fit-content;
height: 32px;
margin: 24px auto 27px;
padding: 0 142px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
border-radius: 20px;
background-color: #fff;
cursor: pointer;
left: 50%;
-webkit-transform: translateX(-50%);
-ms-transform: translateX(-50%);
transform: translateX(-50%);
bottom: 24px
}
.btn span[data-v-391669a4] {
width: 100%;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap
}
.btn[data-v-391669a4]:after, .btn[data-v-391669a4]:before {
content: "";
position: absolute;
pointer-events: none
}
.btn[data-v-391669a4]:before {
top: 2px;
left: 2px;
right: 2px;
bottom: 2px;
border-radius: inherit;
border: 1px solid rgba(0, 0, 0, .16)
}
.btn[data-v-391669a4]:after {
background-color: rgba(0, 0, 0, .16);
width: 1px;
height: 1px;
border-radius: 50%;
-webkit-box-shadow: 0 0 0 2px #fff;
box-shadow: 0 0 0 2px #fff;
left: 32px;
top: 2px
}
.battle-container[data-v-391669a4] {
padding: 40px
}
.battle-container-top[data-v-391669a4] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between
}
.link[data-v-391669a4], .time[data-v-391669a4] {
color: #f9e8d3;
font-size: 16px;
line-height: 16px
}
.link[data-v-391669a4] {
width: -webkit-fit-content;
width: -moz-fit-content;
width: fit-content;
padding-right: 14px;
background: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/arrow.c2ffc550.png) no-repeat 100%/12px;
margin-top: 0;
cursor: pointer
}
.blocks[data-v-391669a4] {
margin-top: 16px
}
.block[data-v-391669a4]:not(:last-child) {
margin-bottom: 16px
}

View File

@ -1,372 +0,0 @@
/*! Copyright © 2011 - 2023 miHoYo. All Rights Reserved */
.block[data-v-04e81689] {
position: relative;
min-height: 70px;
display: flow-root
}
.bg[data-v-04e81689] {
position: absolute;
width: 100%;
height: auto;
top: 0;
left: 0
}
.title[data-v-04e81689] {
position: absolute;
top: 0;
left: 72.5px;
color: hsla(0, 0%, 100%, .9);
font-size: 12px;
font-weight: 600;
line-height: 18px;
white-space: nowrap;
-webkit-transform-origin: 0 center;
-ms-transform-origin: 0 center;
transform-origin: 0 center
}
.icon[data-v-04e81689] {
position: absolute;
width: 69px;
height: 69px;
top: 0;
left: 5px
}
.mid-info[data-v-04e81689] {
position: absolute;
top: 30px;
left: 101px;
width: auto
}
.mid-info-line[data-v-04e81689], .mid-info[data-v-04e81689] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.mid-info-line[data-v-04e81689] {
font-size: 14px
}
.mid-info-line[data-v-04e81689]:last-child {
position: relative;
margin-left: 80px
}
.mid-info-line[data-v-04e81689]:last-child:before {
content: "";
position: absolute;
width: 1px;
height: 11px;
background-color: hsla(0, 0%, 100%, .29);
border-radius: 2px;
right: calc(100% + 40px);
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%)
}
.mid-info-line-left[data-v-04e81689] {
color: hsla(0, 0%, 100%, .65);
line-height: 20px;
font-weight: 600
}
.mid-info-line-right[data-v-04e81689] {
margin-left: 8px;
color: #fff;
line-height: 18px;
font-family: RPG_CN_Condensed
}
.rank[data-v-04e81689] {
position: absolute;
width: 50px;
height: 50px;
top: 13px;
right: 13px
}
.btm[data-v-04e81689] {
width: 859px;
margin-top: 58px;
margin-left: 12px;
padding: 12px 16px;
border: .5px solid #2c2266;
background: rgba(16, 7, 55, .2)
}
.inner[data-v-04e81689] {
max-height: 149px;
overflow: hidden;
-webkit-transition: .3s ease;
-o-transition: .3s ease;
transition: .3s ease
}
.inner[fold][data-v-04e81689] {
max-height: 0
}
.role-title[data-v-04e81689] {
color: hsla(0, 0%, 100%, .65);
font-size: 10px;
font-weight: 600;
line-height: 14px
}
.roles[data-v-04e81689] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
margin-top: 12px
}
.role[data-v-04e81689] {
position: relative;
width: 32px;
height: 32px;
-ms-flex-negative: 0;
flex-shrink: 0;
margin-left: 16px
}
.role[data-v-04e81689]:first-child {
margin-left: 0
}
.role img[data-v-04e81689] {
width: 32px;
height: 32px;
-o-object-fit: cover;
object-fit: cover;
border-radius: 50%;
border: 1px solid #433d79
}
.role span[data-v-04e81689] {
position: absolute;
border-radius: 24px;
border: 1px solid hsla(0, 0%, 100%, .24);
background: #1f182d;
padding: 3px 7px;
color: #fff;
font-size: 18px;
line-height: 18px;
top: 24px;
left: 50%;
white-space: nowrap;
-webkit-transform-origin: center 0;
-ms-transform-origin: center 0;
transform-origin: center 0;
-webkit-transform: translateX(-50%) scale(.5);
-ms-transform: translateX(-50%) scale(.5);
transform: translateX(-50%) scale(.5);
letter-spacing: -.6px;
max-width: 64px;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis
}
.inner-btm[data-v-04e81689] {
margin-top: 12px;
margin-bottom: 8px;
padding: 8px;
border: .5px solid hsla(0, 0%, 100%, .08);
background: hsla(0, 0%, 100%, .05)
}
.ib[data-v-04e81689], .inner-btm[data-v-04e81689] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.ib[data-v-04e81689] {
width: -webkit-fit-content;
width: -moz-fit-content;
width: fit-content;
color: hsla(0, 0%, 100%, .65);
font-size: 12px;
line-height: 18px;
margin-left: 40px
}
.ib[data-v-04e81689]:first-child {
margin-left: 0
}
.buff-icon[data-v-04e81689] {
width: 16px;
height: 16px;
margin-right: 4px;
-ms-flex-negative: 0;
flex-shrink: 0
}
.ib-top[data-v-04e81689] {
color: hsla(0, 0%, 100%, .9);
line-height: 16px
}
.ib-btm span[data-v-04e81689], .ib-mid span[data-v-04e81689] {
margin-left: 8px;
color: hsla(0, 0%, 100%, .9);
line-height: normal;
font-family: RPG_CN_Condensed
}
.ctrl[data-v-04e81689] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
color: hsla(0, 0%, 100%, .65);
font-size: 10px;
line-height: 1;
cursor: pointer
}
.ctrl img[data-v-04e81689] {
width: 12px;
height: 12px;
margin-right: 3px;
-ms-flex-negative: 0;
flex-shrink: 0;
-webkit-transform: rotate(-180deg);
-ms-transform: rotate(-180deg);
transform: rotate(-180deg);
-webkit-transition: -webkit-transform .3s ease;
transition: -webkit-transform .3s ease;
-o-transition: transform .3s ease;
transition: transform .3s ease;
transition: transform .3s ease, -webkit-transform .3s ease
}
.ctrl img[fold][data-v-04e81689] {
-webkit-transform: rotate(0);
-ms-transform: rotate(0);
transform: rotate(0)
}
.empty[data-v-04e81689] {
position: absolute;
top: 31px;
bottom: 21px;
left: 101px;
right: 0;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
text-align: center;
color: #e2cea7;
font-size: 12px;
font-weight: 600;
line-height: 16px
}
.endless[data-v-287f8100] {
position: relative;
padding: 24px 40px 40px;
border-radius: 0 32px 0 0;
background: #1f192d no-repeat top/100% auto;
background-image: url(../images/endless_side/bg.png)
}
.endless[data-v-287f8100]:before {
content: "";
position: absolute;
pointer-events: none;
top: 2px;
left: 2px;
right: 2px;
bottom: 2px;
border-radius: 0 32px 0 0;
border: 1px solid rgba(255, 228, 196, .2)
}
.title[data-v-287f8100] {
color: #fff;
font-size: 16px;
font-weight: 600;
line-height: 24px;
text-align: center
}
.summary[data-v-287f8100] {
margin-top: 16px;
padding: 16px;
background: -webkit-gradient(linear, left top, right top, color-stop(1.53%, #4b3e8e), color-stop(115.29%, rgba(75, 62, 142, 0)));
background: -webkit-linear-gradient(left, #4b3e8e 1.53%, rgba(75, 62, 142, 0) 115.29%);
background: -o-linear-gradient(left, #4b3e8e 1.53%, rgba(75, 62, 142, 0) 115.29%);
background: linear-gradient(90deg, #4b3e8e 1.53%, rgba(75, 62, 142, 0) 115.29%);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
outline: 1px solid hsla(0, 0%, 100%, .21)
}
.summary-p1[data-v-287f8100] {
color: hsla(0, 0%, 100%, .9);
font-size: 14px;
font-weight: 500;
line-height: 18px
}
.summary-p2[data-v-287f8100] {
margin-left: 4px;
color: hsla(0, 0%, 100%, .9);
font-size: 18px;
line-height: 18px;
font-family: RPG_CN_Condensed
}
.summary-p3[data-v-287f8100] {
margin-left: auto;
color: #dbc291;
font-size: 12px;
line-height: 18px;
padding-right: 12px;
background: url(../images/endless_side/arrow.png) no-repeat 100%/10px
}
.items[data-v-287f8100] {
margin-top: 16px
}
.items .block[data-v-287f8100] {
margin-top: 20px
}
.items .block[data-v-287f8100]:first-child {
margin-top: 0
}

View File

@ -1,982 +0,0 @@
/*! Copyright © 2011 - 2023 miHoYo. All Rights Reserved */
.figure-line[data-v-1b240865] {
position: relative;
height: 100%;
width: 0
}
.figure-line .line[data-v-1b240865] {
width: 6px;
height: auto;
position: absolute;
bottom: -3px;
left: calc(50% - 3px)
}
.figure-line .line.size--l[data-v-1b240865] {
width: 10px;
bottom: -5px;
left: calc(50% - 5px)
}
.figure-line .label[data-v-1b240865] {
position: absolute;
top: calc(100% + 10px);
left: 0;
-webkit-transform: translateX(-50%);
-ms-transform: translateX(-50%);
transform: translateX(-50%);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-flow: column;
flex-flow: column;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.figure-line .label .label__item[data-v-1b240865] {
color: #c8e2e8;
font-size: 10px;
font-weight: 600;
line-height: 14px;
white-space: nowrap;
font-family: RPG_CN_Condensed
}
.figure-line .label .label__item.size--l[data-v-1b240865] {
font-size: 12px;
line-height: 16px;
font-weight: 700
}
.figure-line .label .label__item[data-v-1b240865]:not(:first-child) {
margin-top: 4px;
color: #6fbed1;
font-size: 10px;
font-weight: 600;
line-height: 12px
}
.figure-line .label .label__item:not(:first-child).size--l[data-v-1b240865] {
font-size: 14px;
line-height: 20px
}
.fans-figure[data-v-7734411a] {
height: 100%;
padding: 20px 20px 0
}
.fans-figure .wrapper[data-v-7734411a] {
overflow: hidden;
margin-top: 36px;
height: calc(100% - 36px);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-flow: column;
flex-flow: column;
-webkit-box-align: stretch;
-ms-flex-align: stretch;
align-items: stretch;
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end;
padding-bottom: 63px
}
.fans-figure .main-wrapper[data-v-7734411a] {
height: auto;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: stretch;
-ms-flex-pack: stretch;
justify-content: stretch;
-webkit-box-align: end;
-ms-flex-align: end;
align-items: flex-end;
position: relative;
width: 90%;
-ms-flex-item-align: start;
align-self: flex-start
}
.fans-figure .main[data-v-7734411a] {
position: relative;
bottom: -1px;
left: 0;
z-index: 3;
width: 100%
}
.fans-figure .main .figure[data-v-7734411a] {
position: relative;
z-index: 3;
width: 100%;
height: 0;
padding-bottom: 46.05%;
background: no-repeat bottom/100% 100%;
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/figure@pc.03d62328.png);
-webkit-clip-path: inset(0 100% 0 0);
clip-path: inset(0 100% 0 0)
}
.fans-figure .main .figure.visible[data-v-7734411a] {
-webkit-clip-path: inset(0 var(--clip-right) 0 0);
clip-path: inset(0 var(--clip-right) 0 0);
-webkit-transition: -webkit-clip-path .4s cubic-bezier(.68, .16, .43, .81);
transition: -webkit-clip-path .4s cubic-bezier(.68, .16, .43, .81);
-o-transition: clip-path .4s cubic-bezier(.68, .16, .43, .81);
transition: clip-path .4s cubic-bezier(.68, .16, .43, .81);
transition: clip-path .4s cubic-bezier(.68, .16, .43, .81), -webkit-clip-path .4s cubic-bezier(.68, .16, .43, .81)
}
.fans-figure .main .progress-cursor[data-v-7734411a] {
position: absolute;
bottom: 0
}
.fans-figure .main .progress-cursor[data-v-7734411a]:before {
content: "";
z-index: 1;
position: absolute;
top: 0;
left: 0;
width: 22px;
height: 22px;
border-radius: 50%;
background: #8eedf1;
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
opacity: .3
}
.fans-figure .main .progress-cursor .cursor-label[data-v-7734411a] {
z-index: 10;
position: absolute;
bottom: calc(12px + 100%);
left: 50%;
-webkit-transform: translateX(-50%);
-ms-transform: translateX(-50%);
transform: translateX(-50%);
min-width: 58px;
height: 26px;
padding: 0 8px 4px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
color: var(--general-grey-black-1, #000);
font-family: RPG_CN_Condensed;
text-align: center;
font-weight: 600;
font-size: 14px;
line-height: 20px;
white-space: nowrap;
background: no-repeat 50%/contain url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/bubble.547e3518.png);
opacity: 0
}
.fans-figure .main .progress-cursor .cursor-label.visible[data-v-7734411a] {
opacity: 1;
-webkit-transition: opacity .4s .4s;
-o-transition: opacity .4s .4s;
transition: opacity .4s .4s
}
.fans-figure .main .progress-cursor .cursor-label .cursor-label-bg[data-v-7734411a] {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 22px;
border-radius: 11px;
background: #ecf4f7
}
.fans-figure .main .progress-cursor .cursor-label .cursor-label-bg .cursor-label-arrow[data-v-7734411a] {
position: absolute;
width: 10px;
height: 7px;
top: calc(100% - 2px);
left: 50%;
-webkit-transform: translateX(-50%);
-ms-transform: translateX(-50%);
transform: translateX(-50%)
}
.fans-figure .main .progress-cursor .cursor-label .cursor-label-txt[data-v-7734411a] {
position: relative;
z-index: 1
}
.fans-figure .main .progress-cursor .cursor-dot[data-v-7734411a] {
z-index: 5;
position: absolute;
top: -6px;
left: -6px;
-webkit-transform: scale(1.2);
-ms-transform: scale(1.2);
transform: scale(1.2)
}
.fans-figure .main .progress-cursor .cursor-dot .cursor-dot-center[data-v-7734411a] {
width: 12px;
height: 12px;
border-radius: 50%;
border: 2px solid #8dedf0;
background: #191f28
}
.fans-figure .main .progress-cursor .cursor-line[data-v-7734411a] {
z-index: 4;
position: absolute;
height: calc(100% - 8px);
top: 8px;
width: 0;
left: -1px;
border: 1px dashed #8dedf1;
border-top: none;
border-bottom: none;
opacity: 0
}
.fans-figure .main .progress-cursor .cursor-line.visible[data-v-7734411a] {
opacity: 1;
-webkit-transition: opacity .2s .4s;
-o-transition: opacity .2s .4s;
transition: opacity .2s .4s
}
.fans-figure .base-line[data-v-7734411a] {
height: 2px;
background: #4f5862
}
.fans-figure .line-marks[data-v-7734411a] {
height: 0
}
.fans-figure .line-marks[data-v-7734411a], .fans-figure .medal-container[data-v-7734411a] {
width: 100%;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-pack: distribute;
justify-content: space-around
}
.fans-figure .medal-container[data-v-7734411a] {
z-index: 5;
position: relative
}
.fans-figure .medal-container .medal[data-v-7734411a] {
position: relative;
width: 0;
height: 0;
bottom: 11px;
-webkit-transform: scale(1.6667);
-ms-transform: scale(1.6667);
transform: scale(1.6667);
-webkit-transform-origin: bottom;
-ms-transform-origin: bottom;
transform-origin: bottom
}
.fans-figure .medal-container .medal[data-v-7734411a]:before {
content: "";
position: absolute;
width: 36px;
height: 36px;
left: -18px;
bottom: 0;
background: no-repeat 50%/contain
}
.fans-figure .medal-container .medal.medal--gold[data-v-7734411a]:before {
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/medal-gold.a05b697c.png)
}
.fans-figure .medal-container .medal.medal--silver[data-v-7734411a]:before {
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/medal-silver.8a363781.png)
}
.fans-figure .medal-container .medal.medal--got[data-v-7734411a]:after {
content: "";
position: absolute;
width: 10px;
height: 10px;
left: -5px;
bottom: 0;
background: no-repeat 50%/contain url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/medal--got.e1ef0eba.png)
}
.ghost-hunting[data-v-e688361a] {
padding: 0 40px
}
.ghost-hunting .profile[data-v-e688361a] {
margin-top: 28px;
width: 100%;
height: 72px;
position: relative;
overflow: visible
}
.ghost-hunting .profile .profile-bg[data-v-e688361a] {
position: absolute;
left: 0;
top: -18px;
background: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/profile-bg@pc.e1dd7f28.png) no-repeat 0/100% 100%;
width: 883px;
height: 98px
}
.ghost-hunting .profile .profile-fg[data-v-e688361a] {
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
padding: 12px 16px
}
.ghost-hunting .profile .profile-fg .avatar[data-v-e688361a] {
width: 48px;
height: 48px;
background: no-repeat 50%/contain url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/avatar.02b1ef6d.png);
position: relative
}
.ghost-hunting .profile .profile-fg .avatar[data-v-e688361a]:after {
content: "";
position: absolute;
bottom: -2px;
right: -2px;
width: 20px;
height: 20px;
background: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/avatar-icon-0.1011f1e2.png) no-repeat 50%/contain
}
.ghost-hunting .profile .profile-fg .avatar--stage-1[data-v-e688361a]:after {
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/avatar-icon-1.04170de5.png)
}
.ghost-hunting .profile .profile-fg .avatar--stage-2[data-v-e688361a]:after {
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/avatar-icon-2.323bef5b.png)
}
.ghost-hunting .profile .profile-fg .info[data-v-e688361a] {
margin-left: 16px;
max-width: 580px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.ghost-hunting .profile .profile-fg .info .nickname[data-v-e688361a] {
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
max-width: 100%;
white-space: nowrap;
min-width: 0;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
color: #c5e8ef;
font-size: 20px;
font-weight: 700;
line-height: 28px
}
.ghost-hunting .profile .profile-fg .info .info-divider[data-v-e688361a] {
margin: 0 24px;
width: 1px;
height: 12px;
background: rgba(180, 215, 223, .6)
}
.ghost-hunting .profile .profile-fg .info .fans[data-v-e688361a] {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.ghost-hunting .profile .profile-fg .info .fans .fans-label[data-v-e688361a] {
color: #c5e8ef;
font-size: 16px;
font-weight: 700;
line-height: 24px
}
.ghost-hunting .profile .profile-fg .info .fans .fans-num[data-v-e688361a] {
margin-left: 8px;
color: #e4f8fc;
font-family: RPG_CN_Condensed;
font-size: 20px;
font-weight: 600;
line-height: 24px
}
.ghost-hunting .profile .profile-fg .subscription[data-v-e688361a] {
position: absolute;
right: 94px;
top: 22px;
height: 28px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
border-radius: 2px;
border: 1px solid #125d6e;
background: #073c54;
padding: 0 8px;
color: #c5e8ef;
font-size: 14px;
line-height: 20px
}
.ghost-hunting .profile .profile-fg .fans-level[data-v-e688361a] {
font-family: RPG_CN_Condensed;
width: 28px;
position: absolute;
top: 31px;
right: 27px;
color: #e6f3f5;
overflow: visible;
white-space: nowrap;
text-align: center;
font-size: 18px;
font-weight: 600;
line-height: 24px
}
.ghost-hunting .chart[data-v-e688361a] {
margin: 28px 0 40px;
width: 880px;
height: 586px;
border: 1px solid rgba(25, 153, 165, .39);
background: -webkit-gradient(linear, left top, left bottom, from(rgba(22, 25, 31, .81)), to(rgba(35, 48, 61, .81)));
background: -webkit-linear-gradient(top, rgba(22, 25, 31, .81), rgba(35, 48, 61, .81));
background: -o-linear-gradient(top, rgba(22, 25, 31, .81) 0, rgba(35, 48, 61, .81) 100%);
background: linear-gradient(180deg, rgba(22, 25, 31, .81), rgba(35, 48, 61, .81));
-webkit-backdrop-filter: blur(2px);
backdrop-filter: blur(2px);
position: relative
}
.ghost-hunting .chart .popularity[data-v-e688361a] {
position: absolute;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
color: #c8e2e8;
top: 20px;
left: 20px
}
.ghost-hunting .chart .popularity[data-v-e688361a]:before {
content: "";
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: 4px;
height: 18px;
background: #61f0f3
}
.ghost-hunting .chart .popularity .popularity-label[data-v-e688361a] {
margin-left: 8px;
color: #c8e2e8;
font-size: 16px;
font-weight: 700;
line-height: 24px
}
.ghost-hunting .chart .popularity .popularity-num[data-v-e688361a] {
font-family: RPG_CN_Condensed;
margin-left: 8px;
color: #c8e2e8;
font-size: 16px;
font-weight: 600;
line-height: 14px
}
.ghost-hunting .footer[data-v-e688361a] {
margin-top: 16px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.ghost-hunting .footer .strategy-button[data-v-e688361a] {
cursor: pointer;
width: 309px;
height: 30px;
padding: 0 16px;
background: no-repeat 50%/contain url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/strategy-btn-bg.5af572e6.png);
color: hsla(0, 0%, 100%, .85);
text-align: center;
font-size: 14px;
font-weight: 500;
line-height: 30px
}
.challenge[data-v-82c5a256] {
width: 880px;
padding: 12px 20px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-flow: column;
flex-flow: column;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: stretch;
-ms-flex-align: stretch;
align-items: stretch;
background: rgba(41, 92, 110, .41);
position: relative
}
.challenge .relative[data-v-82c5a256] {
position: relative
}
.challenge[data-v-82c5a256]:after {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
border-image-source: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/card-side@pc.1922918f.png);
border-image-slice: 15.5555555556% 1.5909090909% fill;
border-image-width: 14px;
border-width: 14px;
pointer-events: none
}
.challenge--empty[data-v-82c5a256] {
height: 102px
}
.challenge--sp[data-v-82c5a256]:before {
content: "";
position: absolute;
top: 2px;
right: 4px;
bottom: 2px;
left: 4px;
background: no-repeat 50%/cover url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/card-bg-sp@pc.8dee89cc.png)
}
.challenge .challenge__header[data-v-82c5a256] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between
}
.challenge .challenge__header .challenge__title[data-v-82c5a256] {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
min-width: 0;
white-space: nowrap;
overflow: hidden;
color: rgba(204, 255, 250, .9);
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
font-size: 14px;
font-weight: 600;
line-height: 20px
}
.challenge .challenge__header .challenge__fire[data-v-82c5a256] {
margin-left: 16px;
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.challenge .challenge__header .challenge__fire__icon[data-v-82c5a256] {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: 16px;
height: 16px;
background: no-repeat 50%/contain url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/ghost-fire--stroke.ee492bf0.png)
}
.challenge .challenge__header .challenge__fire__icon--active[data-v-82c5a256] {
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/ghost-fire--fill.90dae6c8.png)
}
.challenge .challenge__header .challenge__fire__icon[data-v-82c5a256]:not(:first-child) {
margin-left: 8px
}
.challenge .challenge__divider[data-v-82c5a256] {
width: 100%;
height: 10px;
background: no-repeat 50%/100% 100% url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/divider@pc.bb16995a.png);
margin: 8px 0
}
.challenge .challenge__stages[data-v-82c5a256] {
display: grid;
grid-template-columns:repeat(4, 1fr);
grid-template-rows:1;
gap: 12px;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between
}
.challenge .challenge__stages .challenge__stage[data-v-82c5a256] {
min-width: 0;
overflow: hidden;
padding: 8px 16px;
background: rgba(63, 109, 125, .2);
-webkit-backdrop-filter: blur(2px);
backdrop-filter: blur(2px)
}
.challenge .challenge__stages .challenge__stage__label[data-v-82c5a256] {
color: #aefcf4;
font-size: 12px;
line-height: 18px;
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
margin-bottom: 4px;
white-space: nowrap;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis
}
.challenge .challenge__stages .challenge__stage__stars[data-v-82c5a256] {
width: 52px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between
}
.challenge .challenge__stages .challenge__stage__star[data-v-82c5a256] {
width: 16px;
height: 16px;
background: no-repeat 50%/contain url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/memory-star--stroke.e3e6133b.png)
}
.challenge .challenge__stages .challenge__stage__star--active[data-v-82c5a256] {
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/memory-star--fill.657727e8.png)
}
.challenge .challenge__stages .challenge__stage__empty[data-v-82c5a256] {
color: rgba(173, 252, 244, .5);
font-size: 14px;
line-height: 20px;
white-space: nowrap;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis
}
.challenge .challenge__empty[data-v-82c5a256] {
color: rgba(173, 252, 244, .5);
font-size: 14px;
line-height: 20px
}
.subduing-collection[data-v-0aa49ec3] {
color: #88ffe5
}
.subduing-collection .collection-cnt[data-v-0aa49ec3] {
-webkit-box-shadow: 0 0 4px 0 #74c4a6;
box-shadow: 0 0 4px 0 #74c4a6;
background: rgba(15, 43, 56, .8);
-webkit-backdrop-filter: blur(2px);
backdrop-filter: blur(2px);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-flow: column;
flex-flow: column;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
position: relative;
min-height: 40px;
width: 328px;
margin: 78px 72px;
padding: 12px 20px
}
.subduing-collection .collection-cnt[data-v-0aa49ec3]:before {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
border-image-source: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/cnt-bg.b6cf7d2e.png);
border-image-slice: 22.2222222222% 10.5960264901% fill;
border-image-width: 16px;
border-width: 16px
}
.subduing-collection .collection-cnt .cnt-label[data-v-0aa49ec3] {
position: relative;
color: #88ffe5;
text-align: center;
font-size: 14px;
font-weight: 700;
line-height: 20px
}
.subduing-collection .collection-cnt .cnt-value[data-v-0aa49ec3] {
position: relative;
color: #88ffe5;
font-weight: 600;
font-family: RPG_CN_Condensed;
margin-top: 8px;
font-size: 20px;
line-height: 20px
}
.subduing-collection .challenges[data-v-0aa49ec3] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-flow: column;
flex-flow: column;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.subduing-collection .challenges .challenge-card[data-v-0aa49ec3] {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto
}
.subduing-collection .challenges .challenge-card[data-v-0aa49ec3]:not(:first-child) {
margin-top: 16px
}
.fox-story[data-v-3d759804] {
position: relative;
border-radius: 0 32px 0 0;
padding: 40px 0 33px;
background: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/ghost-hunting-bg@pc.a0d95f61.png) no-repeat top/100% auto, url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/subduing-collection-bg@pc.b8815a7b.png) no-repeat bottom/100% auto, linear-gradient(180deg, #091523, #11323d)
}
.fox-story--subduing[data-v-3d759804] {
background: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/subduing-collection-bg@pc.b8815a7b.png) no-repeat top/100% auto, -webkit-gradient(linear, left top, left bottom, from(#091523), to(#11323d));
background: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/subduing-collection-bg@pc.b8815a7b.png) no-repeat top/100% auto, -webkit-linear-gradient(top, #091523, #11323d);
background: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/subduing-collection-bg@pc.b8815a7b.png) no-repeat top/100% auto, -o-linear-gradient(top, #091523 0, #11323d 100%);
background: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/subduing-collection-bg@pc.b8815a7b.png) no-repeat top/100% auto, linear-gradient(180deg, #091523, #11323d)
}
.fox-story--empty[data-v-3d759804] {
padding-top: 0
}
.fox-story[data-v-3d759804]:before {
content: "";
position: absolute;
pointer-events: none;
top: 4px;
left: 4px;
right: 4px;
bottom: 4px;
border-radius: 0 32px 0 0;
border: 1px solid hsla(0, 0%, 100%, .2)
}
.fox-story .activity__body[data-v-3d759804] {
width: 960px;
overflow: hidden
}
.fox-story .activity__body .tabs[data-v-3d759804] .van-tabs__wrap {
width: -webkit-fit-content;
width: -moz-fit-content;
width: fit-content;
height: auto !important;
margin-left: 40px
}
.fox-story .activity__body .tabs[data-v-3d759804] .van-tabs__nav {
padding-bottom: 0 !important;
background: transparent
}
.fox-story .activity__body .tabs[data-v-3d759804] .van-tabs__line {
display: none !important
}
.fox-story .activity__body .tabs[data-v-3d759804] .van-tab {
margin-right: 32px;
padding: 0 !important;
-webkit-box-flex: 0 !important;
-ms-flex: 0 0 auto !important;
flex: 0 0 auto !important;
cursor: pointer;
color: rgba(168, 209, 210, .4);
font-size: 16px;
font-weight: 700;
line-height: 24px;
-webkit-transition: color .1s, opacity .1s;
-o-transition: color .1s, opacity .1s;
transition: color .1s, opacity .1s
}
.fox-story .activity__body .tabs[data-v-3d759804] .van-tab:not(.van-tab--active):hover {
color: rgba(196, 230, 255, .4)
}
.fox-story .activity__body .tabs[data-v-3d759804] .van-tab--active {
z-index: 2;
color: #7cd4d6
}
.fox-story .activity__empty[data-v-3d759804] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-flow: column;
flex-flow: column;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
height: 796px
}
.fox-story .activity__empty .no-content[data-v-3d759804] {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
height: auto
}
.fox-story .activity__empty .no-content[data-v-3d759804] .icon {
width: 120px;
height: 120px
}
.fox-story .activity__empty .no-content[data-v-3d759804] .text {
color: hsla(0, 0%, 100%, .65) !important;
font-size: 12px !important;
line-height: 14px;
margin-top: 4px !important
}
.fox-story .activity__empty[data-v-3d759804]:after {
-webkit-box-flex: 2;
-ms-flex: 2;
flex: 2
}
.fox-story .activity__footer[data-v-3d759804] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
margin-top: 20px
}
.fox-story .activity__footer .activity__link[data-v-3d759804] {
cursor: pointer;
width: 309px;
height: 30px;
padding: 0 16px;
background: no-repeat 50%/contain url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/strategy-btn-bg.5af572e6.png);
color: hsla(0, 0%, 100%, .85);
text-align: center;
font-size: 14px;
font-weight: 500;
line-height: 30px
}

View File

@ -1,181 +0,0 @@
/*! Copyright © 2011 - 2023 miHoYo. All Rights Reserved */
.space-zoo[data-v-06359302] {
width: 960px;
height: 521px;
overflow: hidden;
background: no-repeat top/contain;
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/block-bg@pc.b5180fba.png);
position: relative
}
.space-zoo[data-v-06359302]:before {
content: "";
position: absolute;
width: calc(100% - 4px);
height: calc(100% - 4px);
-webkit-box-sizing: border-box;
box-sizing: border-box;
top: 2px;
left: 2px;
border: 1px solid rgba(84, 164, 183, .48);
pointer-events: none;
}
.space-zoo[empty][data-v-06359302] {
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/empty_bg@pc.4fd4912f.png)
}
.empty-block[data-v-06359302] {
margin-top: 161px
}
.empty-block[data-v-06359302] img {
width: 160px !important;
height: 160px !important
}
.empty-block[data-v-06359302] .text {
font-size: 12px !important;
margin-top: 4px !important;
color: hsla(0, 0%, 100%, .65) !important
}
.top[data-v-06359302] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
height: 70px;
margin: 44px 66px 0;
width: 293px
}
.name[data-v-06359302] {
margin-left: 16px;
color: #d0f4ff;
font-size: 14px;
font-weight: 500;
line-height: 18px;
max-width: 128px
}
.level[data-v-06359302] {
width: 39px;
height: 39px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
margin-right: 63px;
color: #26f8ff;
font-size: 20px;
font-weight: 600;
font-family: RPG_CN_Condensed
}
.summary[data-v-06359302] {
position: absolute;
top: 399px;
left: 327px;
width: 309px;
color: #d0f4ff;
text-align: center
}
.summary-title[data-v-06359302] {
font-size: 14px;
font-weight: 600;
line-height: 18px
}
.summary-btm[data-v-06359302] {
width: -webkit-fit-content;
width: -moz-fit-content;
width: fit-content;
min-width: 125px;
margin: 8px auto 0;
padding: 4px 8px;
border-radius: 2px;
border-right: 1px solid rgba(95, 183, 214, .83);
border-left: 1px solid rgba(95, 183, 214, .83);
background: rgba(95, 183, 214, .36)
}
.summary-subtitle[data-v-06359302] {
font-size: 12px;
line-height: 16px
}
.summary-progress[data-v-06359302] {
margin-top: 4px;
font-size: 12px;
font-weight: 600;
line-height: 16px;
font-family: RPG_CN_Condensed
}
.feature[data-v-06359302] {
position: absolute;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.feature-bg[data-v-06359302] {
width: 100px;
height: 100px;
-ms-flex-negative: 0;
flex-shrink: 0
}
.feature-progress[data-v-06359302] {
margin-top: 0;
color: #d0f4ff;
text-align: center;
font-size: 12px;
font-weight: 600;
line-height: 15.789px;
font-family: RPG_CN_Condensed
}
.feature[index="0"][data-v-06359302] {
top: 166px;
right: 716px
}
.feature[index="1"][data-v-06359302] {
top: 52px;
right: 240px
}
.feature[index="2"][data-v-06359302] {
top: 183px;
right: 121px
}
.feature[index="3"][data-v-06359302] {
top: 334px;
right: 676px
}
.feature[index="4"][data-v-06359302] {
top: 339px;
right: 192px
}

View File

@ -1,321 +0,0 @@
/*! Copyright © 2011 - 2023 miHoYo. All Rights Reserved */
.hsr-role-medium[data-v-d07e5c4c] {
width: -webkit-fit-content;
width: -moz-fit-content;
width: fit-content;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
font-size: 0;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.hsr-role-medium-pos[data-v-d07e5c4c] {
position: relative;
width: 100px;
height: 116px
}
.hsr-role-medium .avatar[data-v-d07e5c4c] {
width: 100%;
height: calc(100% - 2px);
-o-object-fit: cover;
object-fit: cover;
-o-object-position: top;
object-position: top
}
.hsr-role-medium .level[data-v-d07e5c4c] {
position: absolute;
width: 100%;
height: 18px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
font-size: 14px;
font-weight: 400;
font-family: Microsoft YaHei, sans-serif;
color: hsla(0, 0%, 100%, .85);
line-height: 1;
background: #030b0e;
left: 0;
bottom: 2px
}
.hsr-role-medium.middle .hsr-role-medium-pos[data-v-d07e5c4c] {
width: 90px;
height: 104px
}
.hsr-role-medium.middle .inner[data-v-d07e5c4c] {
border-top-right-radius: 17px
}
.hsr-role-medium.middle .level[data-v-d07e5c4c] {
font-size: 14px;
height: 16px
}
.hsr-role-medium.middle .fate-level[data-v-d07e5c4c] {
width: 22px;
height: 26px;
font-size: 16px
}
.hsr-role-medium.middle .name[data-v-d07e5c4c] {
width: 90px
}
.hsr-role-medium.normal .hsr-role-medium-pos[data-v-d07e5c4c] {
width: 62px;
height: 72px
}
.hsr-role-medium.normal .inner[data-v-d07e5c4c] {
border-top-right-radius: 12px
}
.hsr-role-medium.normal .select-box[data-v-d07e5c4c] {
border-top-right-radius: 17px
}
.hsr-role-medium.normal .level[data-v-d07e5c4c] {
font-size: 12px;
line-height: 12px;
height: 12px
}
.hsr-role-medium.normal .fate-level[data-v-d07e5c4c] {
width: 16px;
height: 20px;
font-size: 14px
}
.hsr-role-medium.normal .element[data-v-d07e5c4c] {
font-size: 14px;
top: 4px;
left: 4px
}
.hsr-role-medium.small .hsr-role-medium-pos[data-v-d07e5c4c] {
width: 56px;
height: 70px
}
.hsr-role-medium.small .inner[data-v-d07e5c4c] {
border-top-right-radius: 17px
}
.hsr-role-medium.small .level[data-v-d07e5c4c] {
font-size: 12px;
line-height: 12px;
height: 14px
}
.hsr-role-medium.small .element[data-v-d07e5c4c] {
font-size: 14px;
top: 3px;
left: 3px
}
.hsr-role-medium.small .fate-level[data-v-d07e5c4c] {
width: 14px;
height: 18px;
font-size: 12px
}
.inner[data-v-d07e5c4c] {
position: relative;
width: 100%;
height: 100%;
border-radius: 0 19px 0 0;
overflow: hidden;
background: transparent url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/character_r_1.52480cf3.png) no-repeat top/cover
}
.role-rarity-1[data-v-d07e5c4c] {
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/character_r_1.52480cf3.png)
}
.role-rarity-2[data-v-d07e5c4c] {
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/character_r_2.a172d549.png)
}
.role-rarity-3[data-v-d07e5c4c] {
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/character_r_3.bdfa75d1.png)
}
.role-rarity-4[data-v-d07e5c4c] {
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/character_r_4.24f329b7.png)
}
.role-rarity-5[data-v-d07e5c4c] {
background-image: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/character_r_5.99d42eb7.png)
}
.element[data-v-d07e5c4c] {
position: absolute;
font-size: 20px;
width: 1em;
height: 1em;
top: 7px;
left: 7px;
border-radius: 50%;
background-color: rgba(0, 0, 0, .4)
}
.name[data-v-d07e5c4c] {
width: 100px;
font-size: 12px;
font-weight: 400;
color: hsla(0, 0%, 100%, .65);
margin-top: 4px;
text-align: center;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
white-space: nowrap
}
.fate-level[data-v-d07e5c4c] {
top: 0;
right: 0;
width: 24px;
height: 28px;
background: rgba(0, 0, 0, .5);
border-radius: 0 0 0 8px;
text-align: center;
font-size: 18px;
font-family: Microsoft YaHei, sans-serif;
font-weight: 400;
line-height: 1
}
.fate-level[data-v-d07e5c4c], .select-index[data-v-d07e5c4c] {
position: absolute;
color: #fff;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.select-index[data-v-d07e5c4c] {
top: 4px;
right: 4px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
font-size: 14px;
font-weight: 500;
font-style: normal;
width: 20px;
height: 20px;
background-color: hsla(0, 0%, 100%, .3);
border: 2px solid #fff;
border-radius: 50%
}
.select-index.hasNumber[data-v-d07e5c4c] {
background-color: #f69502
}
.select-box[data-v-d07e5c4c] {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
border: 2px solid #ffc870;
border-top-right-radius: 12px;
pointer-events: none
}
.select-box[data-v-d07e5c4c]:after {
content: "";
position: absolute;
width: 20px;
height: 20px;
background: url(https://act.hoyolab.com/app/community-game-records-sea/rpg/images/select_arrow.f50d2b0c.png) no-repeat 50%/contain;
-webkit-animation: arrowRun-d07e5c4c ease-in-out .4s alternate infinite;
animation: arrowRun-d07e5c4c ease-in-out .4s alternate infinite;
left: 50%;
-webkit-transform: translate(-50%, -100%);
-ms-transform: translate(-50%, -100%);
transform: translate(-50%, -100%)
}
.trial[data-v-d07e5c4c] {
position: absolute;
padding: 1px 4px;
background: #ffc870;
border-radius: 6px 10px 10px 0;
font-size: 20px;
color: #000;
top: -8px;
right: -17px;
-webkit-transform-origin: top right;
-ms-transform-origin: top right;
transform-origin: top right;
-webkit-transform: scale(.5);
-ms-transform: scale(.5);
transform: scale(.5);
z-index: 1
}
.hsr-role-medium-pos[data-v-d07e5c4c] {
margin: auto
}
.hsr-role-medium.hover-wrapper .hsr-role-medium-pos[data-v-d07e5c4c] {
cursor: pointer;
-webkit-transition: .1s ease-in;
-o-transition: .1s ease-in;
transition: .1s ease-in
}
.select-index[data-v-d07e5c4c] {
width: 24px;
height: 24px;
top: 6px;
right: 6px;
font-size: 13px
}
@-webkit-keyframes arrowRun-d07e5c4c {
0% {
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%)
}
}
@keyframes arrowRun-d07e5c4c {
0% {
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%)
}
}
.hsr-role-medium-popper {
padding: 0 !important
}
.hsr-role-medium-popper .activity-pop-text {
display: none
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -1,69 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="css/pc_f95b4488.css" rel="stylesheet">
<link href="css/c_hsr_act_Endless_28cca4fd.css" rel="stylesheet">
</head>
<body>
<div style="width: 960px;" id="endless_side">
<div data-v-287f8100="" data-v-8ee8631e="" class="endless">
<p data-v-287f8100="" class="title">无尽位面 - {{ uid }}</p>
<div data-v-287f8100="" class="summary">
<p data-v-287f8100="" class="summary-p1">累计最高试炼点数 :</p>
<p data-v-287f8100="" class="summary-p2">{{ info.total_score }}</p>
</div>
<div data-v-287f8100="" class="items">
{% for record in info.records %}
<div data-v-04e81689="" data-v-287f8100="" class="block">
<img data-v-04e81689="" src="images/endless_side/card_bg_{{ loop.index0 }}.png" alt="" class="bg">
<p data-v-04e81689="" class="title">{{ record.name }}</p>
<img data-v-04e81689="" src="images/endless_side/level_{{ loop.index0 }}.png" alt="" class="icon">
{% if record.finished %}
<div data-v-04e81689="" class="mid-info">
<div data-v-04e81689="" class="mid-info-line">
<span data-v-04e81689="" class="mid-info-line-left">最终试炼</span>
<span data-v-04e81689="" class="mid-info-line-right">{{ record.level }}</span>
</div>
<div data-v-04e81689="" class="mid-info-line">
<span data-v-04e81689="" class="mid-info-line-left">试炼点数</span>
<span data-v-04e81689="" class="mid-info-line-right">{{ record.point }}</span>
</div>
</div>
<img data-v-04e81689="" src="images/endless_side/rank_{{ record.rank }}.png" alt="" class="rank">
<div data-v-04e81689="" class="btm">
<div data-v-04e81689="" class="inner">
<p data-v-04e81689="" class="role-title">已下载角色</p>
<div data-v-04e81689="" class="roles">
{% for avatar in record.avatars %}
<div data-v-04e81689="" class="role">
<img data-v-04e81689="" src="{{ avatar.icon }}" alt="">
</div>
{% endfor %}
</div>
<div data-v-04e81689="" class="inner-btm">
<div data-v-04e81689="" class="ib ib-top">
<img data-v-04e81689="" src="images/endless_side/{{ record.base_buff_id }}.png" alt=""
class="buff-icon">
<span data-v-04e81689="">{{ record.base_buff_name }}</span>
</div>
<div data-v-04e81689="" class="ib ib-mid">
获得祝福 <span data-v-04e81689="">{{ record.buff_cnt }}</span>
</div>
<div data-v-04e81689="" class="ib ib-btm">
获得奇物 <span data-v-04e81689="">{{ record.miracle_cnt }}</span>
</div>
</div>
</div>
</div>
{% else %}
<div data-v-04e81689="" class="empty">尚未挑战最终试炼</div>
{% endif %}
</div>
{% endfor %}
</div>
</div>
</div>
</body>
</html>

View File

@ -1,92 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Fantastic Story</title>
<link href="css/7_1860676e902f99970620.css" rel="stylesheet">
<link href="css/32_a6abfefd22b3d1a40162.css" rel="stylesheet">
</head>
<body>
<div id="container">
<div data-v-6cd4e78c="" data-v-056bcd56="" class="layout"
style="background: url('images/story-bg.436f1d88.png') 0% 0% / 100% no-repeat rgb(71, 89, 131);">
<div data-v-6cd4e78c="" class="header">
<div data-v-6cd4e78c="" class="border">
<div data-v-6cd4e78c="" class="left"><span data-v-6cd4e78c="">评书奇谭</span></div>
<div data-v-e64e4972="" class="right">
<span data-v-e64e4972="">UID:{{ uid }}</span>
<span data-v-e64e4972="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</div>
</div>
</div>
<div data-v-6cd4e78c="" class="container">
<div data-v-6cd4e78c="" class="border">
{% set bg = ['1.96e45c02', '2.3f186847', '3.f7c6b1e9', '4.32486a3e', '5.426291c0', '6.b4b0eadf'] %}
{% set level_icon = ['', '1212', '1213', '1214', '1215'] %}
{% for record in records %}
{% set not_challenge = record.score == 0 %}
<div data-v-44091bd3="" class="card" data-v-6cd4e78c="">
<div data-v-44091bd3="" class="bg {% if not_challenge %}not-challenged{% endif %}">
<img data-v-44091bd3="" src="images/{{ bg[loop.index0] }}.png" class="icon">
</div>
<div data-v-44091bd3="" class="inner {% if not_challenge %}not-challenged{% endif %}">
<div data-v-44091bd3="" class="header">
<div data-v-44091bd3="" class="name">
{{ record.name }}
{% if not not_challenge %}
<span data-v-44091bd3="">{{ record.time_str }}</span>
{% endif %}
</div>
{% if not not_challenge %}
<div data-v-44091bd3="" class="info">
<div data-v-44091bd3="" class="round">文段分数 {{ record.score }}</div>
</div>
<div data-v-44091bd3="" class="right">
<img data-v-44091bd3="" src="images/{{ level_icon[record.score_rank] }}.png"
class="icon">
</div>
{% endif %}
</div>
{% if not_challenge %}
<div data-v-44091bd3="" class="not-challenged-text">尚未挑战</div>
{% else %}
<div data-v-44091bd3="" class="line"></div>
<div data-v-44091bd3="" class="roles">
{% for role in record.avatars %}
<div data-v-03247942="" data-v-44091bd3=""
class="role-item item unable-be-select">
<div data-v-03247942="" class="inner">
<div data-v-03247942="" class="avatar-box"
style="width: 16.5333vw; height: 19.2vw;">
<div data-v-03247942="" class="avatar-bg"
style="background: url('{{ avatar_icons[role.id] }}') center center / 100% no-repeat;"></div>
<div data-v-03247942="" class="level">等级 {{ role.level }}</div>
</div>
{% if role.is_trial %}
<div data-v-03247942="" class="trial">试用</div>
{% endif %}
</div>
</div>
{% endfor %}
</div>
<div data-v-44091bd3="" class="buffs">
{% for buff in record.buffs %}
<div data-v-44091bd3="" class="buff-item">
<div data-v-44091bd3="" class="icon"
style="background-image: url('{{ buff.icon }}');"></div>
<div data-v-44091bd3="" class="text">
{{ buff.name }}{{ buff.desc }}
</div>
</div>
{% endfor %}
</div>
{% endif %}
</div>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -1,218 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="css/pc_f95b4488.css" rel="stylesheet">
<link href="css/c_hsr_act_FoxStory_4d8c2f06.css" rel="stylesheet">
</head>
<body>
<div style="width: 1920px;" id="fox_story">
<div style="display: flex; justify-content: space-between;">
<div data-v-3d759804="" data-v-3dedffc2="" class="fox-story">
<div data-v-3d759804="" class="activity__body">
<div data-v-3d759804="" class="tabs van-tabs van-tabs--line">
<div style="height: 30px"></div>
<div class="van-tabs__wrap">
<div role="tablist" class="van-tabs__nav van-tabs__nav--line">
<div role="tab" class="van-tab van-tab--active" aria-selected="true">
<span class="van-tab__text van-tab__text--ellipsis">
狐斋志异 - {{ uid }}
</span>
</div>
</div>
</div>
{% set team = data.team %}
<div class="van-tabs__content van-tabs__content--animated">
<div class="van-tabs__track"
style="transform: translate3d(0%, 0px, 0px); transition-duration: 0.3s;">
<div data-v-3d759804="" role="tabpanel" class="van-tab__pane-wrapper">
<div class="van-tab__pane">
<div data-v-e688361a="" data-v-3d759804="" class="ghost-hunting">
<div data-v-e688361a="" class="profile">
<div data-v-e688361a="" class="profile-bg"></div>
<div data-v-e688361a="" class="profile-fg">
<div data-v-e688361a="" class="avatar avatar--stage-1"></div>
<div data-v-e688361a="" class="info">
<div data-v-e688361a="" class="nickname">小桂子Guinevere</div>
<div data-v-e688361a="" class="info-divider"></div>
<div data-v-e688361a="" class="fans">
<div data-v-e688361a="" class="fans-label">粉丝</div>
<div data-v-e688361a="" class="fans-num">{{ team.fans }}</div>
</div>
</div>
<div data-v-e688361a="" class="subscription">订阅等级</div>
<div data-v-e688361a="" class="fans-level">{{ team.level }}</div>
</div>
</div>
<div style="height: 50px"></div>
<div data-v-e688361a="" class="chart">
<div data-v-e688361a="" class="popularity">
<div data-v-e688361a="" class="popularity-label">人气阶段</div>
<div data-v-e688361a="" class="popularity-num">{{ team.index_arrived }}级</div>
</div>
<div data-v-7734411a="" data-v-e688361a="" class="fans-figure">
<div data-v-7734411a="" class="wrapper">
<div data-v-7734411a="" class="main-wrapper">
<div data-v-7734411a="" class="main">
<div data-v-7734411a="" class="figure visible"
style="--clip-right: {{ 100 - line[0] }}%;"></div>
{% if line[1] %}
<div data-v-7734411a="" class="progress-cursor"
style="left: {{ line[0] }}%; height: {{ line[1] }}%;">
<div data-v-7734411a="" class="cursor-label visible">
<div data-v-7734411a="" class="cursor-label-bg">
<svg data-v-7734411a="" viewBox="0 0 10 7"
fill="none" class="cursor-label-arrow">
<path data-v-7734411a=""
d="M4.18627 5.86077L0 0H10L5.81373 5.86077C5.41491 6.41912 4.58509 6.41912 4.18627 5.86077Z"
fill="#ECF4F7"></path>
</svg>
</div>
<div data-v-7734411a="" class="cursor-label-txt">
{{ team.fans_str }}
</div>
</div>
<div data-v-7734411a="" class="cursor-dot">
<div data-v-7734411a="" class="cursor-dot-center"></div>
</div>
<div data-v-7734411a="" class="cursor-line visible"></div>
</div>
{% endif %}
</div>
</div>
<div data-v-7734411a="" class="base-line"></div>
<div data-v-7734411a="" class="line-marks">
{% for l in team.fans_range %}
<div data-v-1b240865="" data-v-7734411a=""
class="figure-line size--l">
<img data-v-1b240865="" src="https://act.hoyolab.com/app/community-game-records-sea/rpg/images/line.32deff82.png" class="line size--l">
<div data-v-1b240865="" class="label size--l">
<div data-v-1b240865="" class="label__item size--l">
{{ loop.index }}级
</div>
<div data-v-1b240865="" class="label__item size--l">
{% if l > 10000 %}
{{ l // 10000 }}万
{% else %}
{{ l }}
{% endif %}
</div>
</div>
</div>
{% endfor %}
</div>
<div data-v-7734411a="" class="medal-container">
{% set first_get = "" %}
{% set second_get = "" %}
{% if team.real_index_arrived >= 2 %}
{% set first_get = "medal--got" %}
{% endif %}
{% if team.real_index_arrived >= 4 %}
{% set second_get = "medal--got" %}
{% endif %}
<div data-v-7734411a="" class="medal medal--"></div>
<div data-v-7734411a="" class="medal medal--"></div>
<div data-v-7734411a="" class="medal medal--silver {{ first_get }}"></div>
<div data-v-7734411a="" class="medal medal--"></div>
<div data-v-7734411a="" class="medal medal--gold {{ second_get }}"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div data-v-3d759804="" data-v-3dedffc2="" class="fox-story fox-story--subduing">
<div data-v-3d759804="" class="activity__body">
<div data-v-3d759804="" class="tabs van-tabs van-tabs--line">
<div class="van-tabs__wrap">
<div role="tablist" class="van-tabs__nav van-tabs__nav--line">
<div role="tab" class="van-tab van-tab--active" aria-selected="true">
<span class="van-tab__text van-tab__text--ellipsis">
</span>
</div>
</div>
</div>
<div class="van-tabs__content van-tabs__content--animated">
<div class="van-tabs__track"
style="transform: translate3d(0%, 0px, 0px); transition-duration: 0.3s;">
<div data-v-3d759804="" role="tabpanel"
class="van-tab__pane-wrapper van-tab__pane-wrapper--inactive" aria-hidden="true">
<div class="van-tab__pane">
<div data-v-0aa49ec3="" data-v-3d759804="" class="subduing-collection">
<div data-v-0aa49ec3="" class="collection-cnt">
<div data-v-0aa49ec3="" class="cnt-label">驱邪术收集</div>
<div data-v-0aa49ec3="" class="cnt-value">
{{ data.subdue_collect_cur }}/{{ data.subdue_collect_max }}
</div>
</div>
<div data-v-0aa49ec3="" class="challenges">
{% for subdue in data.subdues %}
{% set sp = "" %}
{% if loop.index == 5 %}
{% set sp = "challenge--sp" %}
{% endif %}
<div data-v-82c5a256="" data-v-0aa49ec3="" class="challenge challenge-card {{ sp }}">
<div data-v-82c5a256="" class="challenge__header relative">
<div data-v-82c5a256="" class="challenge__name">{{ subdue.name_mi18n }}</div>
<div data-v-82c5a256="" class="challenge__fire">
{% for n in range(4) %}
{% set active = "" %}
{% if n < subdue.fire_cnt %}
{% set active = "challenge__fire__icon--active" %}
{% endif %}
<div data-v-82c5a256=""
class="challenge__fire__icon {{ active }}"></div>
{% endfor %}
</div>
</div>
<div data-v-82c5a256="" class="challenge__divider relative"></div>
<div data-v-82c5a256="" class="challenge__stages relative">
{% set n_index = loop.index %}
{% for difficulty in subdue.difficulties %}
<div data-v-82c5a256="" class="challenge__stage">
<div data-v-82c5a256="" class="challenge__stage__label">难度 {{ loop.index }}</div>
{% if difficulty.has_challenge %}
<div data-v-82c5a256="" class="challenge__stage__stars">
{% set stars = difficulty.stars %}
{% if n_index == 5 %}
{% set stars = difficulty.stars_sp %}
{% endif %}
{% for n in stars %}
{% set active = "" %}
{% if n %}
{% set active = "challenge__stage__star--active" %}
{% endif %}
<div data-v-82c5a256=""
class="challenge__stage__star {{ active }}"></div>
{% endfor %}
</div>
{% else %}
<div data-v-82c5a256="" class="challenge__stage__empty">
暂无挑战数据
</div>
{% endif %}
</div>
{% endfor %}
</div>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 477 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

View File

@ -1,43 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="css/c_hsr_act_SpaceZoo_7ec2768b.css" rel="stylesheet">
<style>
#titleDiv {
text-align: center;
height: 50px;
line-height: 50px;
background-image: url('https://act.hoyolab.com/app/community-game-records-sea/rpg/images/activity_title_bg_pc.150f56ff.png');
}
</style>
</head>
<body>
<div style="width: 960px;" id="spaceZoo">
<div id="titleDiv">
<span style="color: white">异宠拾遗 &nbsp;&nbsp;&nbsp;&nbsp; UID: {{ uid }}</span>
</div>
<div data-v-06359302="" data-v-4cf6d55a="" class="space-zoo">
<div data-v-06359302="" class="top">
<div data-v-06359302="" class="name">研究等级</div>
<div data-v-06359302="" class="level">{{ info.level }}</div>
</div>
<div data-v-06359302="" class="summary">
<div data-v-06359302="" class="summary-title">稀有造物</div>
<div data-v-06359302="" class="summary-btm">
<div data-v-06359302="" class="summary-subtitle">收集进度</div>
<div data-v-06359302="" class="summary-progress">{{ info.cur_xyzw }}/{{ info.max_xyzw }}</div>
</div>
</div>
{% set badges = ["type_3.b3733680", "type_2.2d09b275", "type_45.cf79a7f3", "type_6.da55d1e9", "type_1.9120cf02"] %}
{% for i in range(0, 5) %}
<div data-v-06359302="" index="{{ loop.index0 }}" class="feature">
<img data-v-06359302="" src="https://act.hoyolab.com/app/community-game-records-sea/rpg/images/{{ badges[loop.index0] }}.png" class="feature-bg">
<span data-v-06359302="" class="feature-progress">{{ features[loop.index0].cur }}/{{ features[loop.index0].max }}</span>
</div>
{% endfor %}
</div>
</div>
</body>
</html>

View File

@ -1,111 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="css/33_8822068204d7dabf8934.css" rel="stylesheet">
<style>
* {
-webkit-box-sizing: border-box;
}
</style>
</head>
<body>
<div id="container">
<div data-v-6cd4e78c="" data-v-056bcd56="" class="layout"
style="background: url('images/treasure-bg.4e14b9b5.png') 0% 0% / 100% no-repeat rgb(53, 47, 25);">
<div data-v-6cd4e78c="" class="header">
<div data-v-6cd4e78c="" class="border">
<div data-v-6cd4e78c="" class="left"><span data-v-6cd4e78c="">地城探宝</span></div>
<div data-v-e64e4972="" class="right">
<span data-v-e64e4972="">UID:{{ uid }}</span>
</div>
</div>
</div>
<div data-v-6cd4e78c="" class="container">
<div data-v-6cd4e78c="" class="border">
<div data-v-4c014de0="" class="card" data-v-6cd4e78c="">
<div data-v-4c014de0="" class="inner">
<div data-v-4c014de0="" class="header">
<div data-v-4c014de0="" class="name">
{{ record.name }}
</div>
<div data-v-4c014de0="" class="time">
{{ record.time_str }}
</div>
<div data-v-4c014de0="" class="difficulty" style="background-color: rgb(214, 168, 94);">
{% if record.difficulty_id == 0 %}
浅层探索
{% else %}
深层探索
{% endif %}
</div>
<div data-v-4c014de0="" class="right">
<img data-v-4c014de0="" src="{{ record.icon }}" alt="" class="icon">
</div>
</div>
<div data-v-4c014de0="" class="line"></div>
<div data-v-4c014de0="" class="sub-title">参与角色</div>
<div data-v-4c014de0="" class="roles">
{% for role in record.avatars %}
<div data-v-4c014de0="" class="avatar-item">
<img data-v-4c014de0="" src="{{ avatar_icons[role.id] }}" class="icon">
<span data-v-4c014de0="">等级{{ role.level }}</span>
{% if role.is_trial %}
<span data-v-4c014de0="" class="is-trial">试用</span>
{% endif %}
</div>
{% endfor %}
</div>
<div data-v-4c014de0="" class="expand-container is-expand">
<div data-v-4c014de0="" class="expand-item half-width">
<div data-v-4c014de0="" class="left">
<img data-v-4c014de0="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAOVBMVEVHcEz///////////////////////////////////////////////////////////////////////99PJZNAAAAEnRSTlMAMJBg3xDPn4B/UKBvX0BwvyB19BZ7AAAAbklEQVQY063RSw6AIAwEUD5Fivid+x9WLMZY7dJZvpChBed+zpQls9aInqw0kckFFu8wmUyO+HIubgAodOZLR6B44t5Dy93Aza9ROD2axdvhzauZOUjPqtfOGIL06LXbGMyW17O/vp9Urh///qgDYFIHxdPoOxIAAAAASUVORK5CYII=" class="icon">
伤害提高
</div>
<span data-v-4c014de0="">{{ record.atk_buff }}%</span></div>
<div data-v-4c014de0="" class="expand-item half-width">
<div data-v-4c014de0="" class="left">
<img data-v-4c014de0="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAARVBMVEVHcEz///////////////////////////////////////////////////////////////////////////////////////9X1DS3AAAAFnRSTlMAvxAwYECg3yDvkIBQr59ff49wb7DPw3T3cwAAAKBJREFUGBmdwVtiwyAMBMAFBJJ42E7a7v2P2sbBNO1nZvCeWNw3wz9ZvVbVHa/ijdWkW+EtYsnqPSmpJqqG6YPBDp4OKzxwymwWOKk1ZjwIoVwUFDwkRufixoST3guXTRRPNQiXPWx4ym5cjBmT58ApdMel1DunvXziIm7Kk5ruuETdbPBHsKL4lTksiaQ42PGiK0drw13wh5UvUlvEO74BTGUNgYPvMN8AAAAASUVORK5CYII=" class="icon">
伤害减免
</div>
<span data-v-4c014de0="">{{ record.def_buff }}%</span></div>
<div data-v-4c014de0="" class="expand-item">
<div data-v-4c014de0="" class="left"><!---->
持续伤害提高
</div>
<span data-v-4c014de0="">{{ record.special_buff }}%</span></div>
<div data-v-4c014de0="" class="expand-item">
<div data-v-4c014de0="" class="left"><!---->
消耗耐力
</div>
<span data-v-4c014de0="">{{ record.used_stamina }}</span></div>
<div data-v-4c014de0="" class="expand-item">
<div data-v-4c014de0="" class="left"><!---->
击败敌人数量
</div>
<span data-v-4c014de0="">{{ record.enemy_killed }}</span></div>
<div data-v-4c014de0="" class="expand-item">
<div data-v-4c014de0="" class="left"><!---->
发现古代兵器
</div>
<span data-v-4c014de0="">{{ record.ancient_weapon }}</span></div>
<div data-v-4c014de0="" class="expand-item">
<div data-v-4c014de0="" class="left"><!---->
发现古代防具
</div>
<span data-v-4c014de0="">{{ record.ancient_armor }}</span></div>
<div data-v-4c014de0="" class="expand-item">
<div data-v-4c014de0="" class="left"><!---->
发现古代炸弹
</div>
<span data-v-4c014de0="">{{ record.ancient_bomb }}</span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -1,208 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="css/yitai.css" rel="stylesheet">
</head>
<body>
<div>
<div id="DIV_1">
<div id="DIV_2">
<p id="P_3">
以太战线
</p>
<div id="DIV_4">
{% set gender_bg = ['', 'gender_1.019e84ed.png', 'gender_2.1ccf5d85.png'] %}
{% set rank_bg = ['', 'rank_1.467cdd9b.png', 'rank_2.bb4cfb69.png', 'rank_3.e10030df.png', 'rank_4.e2a47f70.png', 'rank_5.5cd5c289.png', 'rank_6.1908893a.png'] %}
<img src="https://act.hoyolab.com/app/community-game-records-sea/rpg/images/{{ gender_bg[data.basic.gender] }}"
id="IMG_5" alt=''/>
<div id="DIV_6">
<div id="DIV_7">
<img src="https://act.hoyolab.com/app/community-game-records-sea/rpg/images/{{ rank_bg[data.basic.rating_id] }}"
id="IMG_8" alt=''/>
<span id="SPAN_9">{{ data.basic.rating_name }} - {{ uid }}</span>
</div>
<div id="DIV_10">
<p id="P_11" style="width: {{ data.basic.rating_cur / data.basic.rating_max * 100 }}%!important;">
</p>
</div>
</div>
<div id="DIV_12">
<p id="P_13">
{{ data.basic.collect_cur }}/{{ data.basic.collect_max }}
</p>
<p id="P_14">
以太灵收集进度
</p>
</div>
</div>
<div id="DIV_15">
<div id="DIV_16">
<div id="DIV_17">
<div id="DIV_18">
<span id="SPAN_19">决胜乐园</span>
</div>
<div id="DIV_22">
</div>
</div>
</div>
<div id="DIV_23">
<div id="DIV_24">
<div id="DIV_25">
<div id="DIV_26">
<div id="DIV_27">
<div id="DIV_28">
{% if data.fairy_land.is_open %}
{% set land_bg = 'land.ec6f60ce.png' %}
{% else %}
{% set land_bg = 'land_lock.370dc35d.png' %}
{% endif %}
<img src="https://act.hoyolab.com/app/community-game-records-sea/rpg/images/{{ land_bg }}"
alt="" id="IMG_29"/>
{% if data.fairy_land.is_open %}
<div id="DIV_201">
<p id="P_202">
已击败对手
</p>
{% set enemy = {108: 'enemy_108.f2f1a13a.png', 109: 'enemy_109.bca00e7a.png', 110: 'enemy_110.ae202ae9.png', 111: 'enemy_111.182fb3cb.png', 112: 'enemy_112.18b3f6b0.png', 113: 'enemy_113.d73aea7f.png'} %}
<div id="DIV_203">
{% for kill in data.fairy_land.kills %}
<div id="DIV_204">
<img src="https://act.hoyolab.com/app/community-game-records-sea/rpg/images/{{ enemy[kill] }}" alt="" id="IMG_205" />
</div>
{% endfor %}
</div>
</div>
{% else %}
<div id="DIV_30">
竞技场尚未开启
</div>
{% endif %}
</div>
<div id="DIV_31">
{% set city = data.fairy_land.cities[0] %}
<div id="DIV_32">
<img src="https://act.hoyolab.com/app/community-game-records-sea/rpg/images/city_1.0cafc249.png"
alt="" id="IMG_33"/>
<div id="DIV_34">
<p id="P_35">
残响回廊
</p>
{% if city.has_challenge %}
<div id="DIV_301">
{% for _ in range(city.stars_cur) %}
<i class="star"></i>
{% endfor %}
</div>
{% else %}
<p id="P_36">
暂无挑战数据
</p>
{% endif %}
</div>
</div>
{% set city = data.fairy_land.cities[1] %}
<div id="DIV_37">
<img src="https://act.hoyolab.com/app/community-game-records-sea/rpg/images/city_2.91aacc34.png"
alt="" id="IMG_38"/>
<div id="DIV_39">
<p id="P_40">
流云渡
</p>
{% if city.has_challenge %}
<div id="DIV_301">
{% for _ in range(city.stars_cur) %}
<i class="star"></i>
{% endfor %}
</div>
{% else %}
<p id="P_36">
暂无挑战数据
</p>
{% endif %}
</div>
</div>
{% set city = data.fairy_land.cities[2] %}
<div id="DIV_42">
<img src="https://act.hoyolab.com/app/community-game-records-sea/rpg/images/city_3.deb99fba.png"
alt="" id="IMG_43"/>
<div id="DIV_44">
<p id="P_45">
空间站「黑塔」
</p>
{% if city.has_challenge %}
<div id="DIV_301">
{% for _ in range(city.stars_cur) %}
<i class="star"></i>
{% endfor %}
</div>
{% else %}
<p id="P_36">
暂无挑战数据
</p>
{% endif %}
</div>
</div>
{% set city = data.fairy_land.cities[3] %}
<div id="DIV_47">
<img src="https://act.hoyolab.com/app/community-game-records-sea/rpg/images/city_4.b8400d03.png"
alt="" id="IMG_48"/>
<div id="DIV_49">
<p id="P_50">
大矿区
</p>
{% if city.has_challenge %}
<div id="DIV_301">
{% for _ in range(city.stars_cur) %}
<i class="star"></i>
{% endfor %}
</div>
{% else %}
<p id="P_36">
暂无挑战数据
</p>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</div>
<div id="DIV_52">
<div id="DIV_53">
</div>
</div>
</div>
</div>
</div>
<div style="height: 100px"></div>
<div id="DIV_15">
<div id="DIV_16">
<div id="DIV_17">
<div id="DIV_18">
<span id="SPAN_19">超链接对决</span>
</div>
<div id="DIV_22">
</div>
</div>
</div>
<div id="DIV_23">
<div id="DIV_24">
<div id="DIV_101">
{% for battle in data.link_battle %}
<div id="DIV_102">
<img src="https://act.hoyolab.com/app/community-game-records-sea/rpg/images/{{ rank_bg[battle.rank] }}"
alt="" id="IMG_103"/> <span id="SPAN_104">{{ battle.rank_name }}</span> <span
id="SPAN_105">{{ battle.challenge_cur }}/{{ battle.challenge_max }}</span>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,27 @@
/*! Copyright © 2011 - 2024 miHoYo. All Rights Reserved */
*, :after, :before {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-scroll-snap-strictness: proximity;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: rgb(59 130 246/0.5);
--tw-ring-offset-shadow: 0 0 #0000;
--tw-ring-shadow: 0 0 #0000;
--tw-shadow: 0 0 #0000;
--tw-shadow-colored: 0 0 #0000
}
* {
-webkit-box-sizing: border-box;
box-sizing: border-box;
margin: 0
}

View File

@ -0,0 +1,483 @@
/*! Copyright © 2011 - 2024 miHoYo. All Rights Reserved */
.content-right-wrap .content-right[data-v-15e079f7], .content-right-wrap[data-v-15e079f7] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.content-right-wrap .content-right[data-v-15e079f7] {
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end;
position: relative
}
.content-right-wrap .content-right .finish-name[data-v-15e079f7] {
color: #a7a7a7;
text-align: right;
font-size: 14px;
font-style: normal;
font-weight: 700;
line-height: 20px
}
.content-right-wrap .difficult-img[data-v-15e079f7] {
width: 46px;
height: 46px
}
.content-right-wrap .difficult-num[data-v-15e079f7] {
position: absolute;
right: 10px;
top: 21px;
color: #dbc291;
text-align: right;
font-size: 14px;
font-weight: 650;
line-height: 15.8px
}
.content-right-wrap .difficult-level-img[data-v-15e079f7] {
width: 46px;
height: 46px
}
.content-right-wrap .content-right-image[data-v-15e079f7] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.content-right-wrap .difficult-icon[data-v-15e079f7] {
width: 56px;
height: 56px;
margin-left: 2px
}
.content-right-wrap .difficult-desc[data-v-15e079f7] {
margin-left: 2px;
margin-top: 1px;
color: #ac8560;
text-align: right;
font-size: 16px;
font-weight: 500;
line-height: 20px;
white-space: pre
}
.content-right-wrap .finish-name[data-v-15e079f7] {
color: #a7a7a7;
text-align: right;
font-size: 14px;
font-style: normal;
font-weight: 700;
line-height: 20px
}
.content-right-wrap[size=m] .difficult-img[data-v-15e079f7] {
width: 32px;
height: 32px
}
.content-right-wrap[size=m] .difficult-num[data-v-15e079f7] {
right: 6px;
top: 15px;
font-size: 10px;
line-height: 11px
}
.content-right-detail .difficult-level-img[data-v-15e079f7] {
width: 46px;
height: 46px
}
.content-right-detail .difficult-num[data-v-15e079f7] {
position: absolute;
right: 10px;
top: 21px;
font-size: 14px;
font-weight: 650;
line-height: 15px
}
.content-right-detail .difficult-desc[data-v-15e079f7], .content-right-detail .difficult-icon[data-v-15e079f7] {
display: none
}
.simulate[data-v-5dedbd3c] {
margin-top: 20px;
padding: 4px;
background: url(../img/pc-simulated-bg.00bf3090.png) no-repeat top/100% auto;
/*border-radius: 0 30px 0 0*/
}
.simulate-box[data-v-5dedbd3c] {
border-radius: 0 28px 0 0;
padding: 23px 37px 19px;
border: 1px solid hsla(0, 0%, 100%, .2)
}
.simulate-box-title[data-v-5dedbd3c] {
color: #f3d28c;
text-align: center;
font-size: 18px;
font-style: normal;
font-weight: 700;
line-height: 26px
}
.simulate-box-head[data-v-5dedbd3c] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
margin: 22px 0 18px
}
.simulate-box-head_list[data-v-5dedbd3c] {
background-color: #1e1d1e;
position: relative;
padding: 9px 12px;
border-image-source: url(../img/pc-list-bg.49c38e17.png);
border-image-slice: 17.6470588235% 2.8103044496% fill;
border-image-width: 12px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
width: 100%
}
.simulate-box-head_list[data-v-5dedbd3c]:first-child {
margin-right: 22px;
margin-bottom: 0
}
.simulate-box-head_list[data-v-5dedbd3c]:before {
position: absolute;
content: "";
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url(../img/pc-card-bg.74e68f40.png) no-repeat 100%/92px auto
}
.simulate-box-head_desc[data-v-5dedbd3c] {
text-align: right;
margin-left: 12px
}
.simulate-box-head_image[data-v-5dedbd3c] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.simulate-box-head_image img[data-v-5dedbd3c] {
width: 50px;
height: 50px;
display: block;
-ms-flex-negative: 0;
flex-shrink: 0
}
.simulate-box-head_name[data-v-5dedbd3c] {
margin-left: 6px;
display: inline-block;
color: #d6bf96;
font-size: 14px;
font-style: normal;
font-weight: 700;
line-height: 20px
}
.simulate-box-head_name[mini][data-v-5dedbd3c] {
font-size: 10px;
line-height: 11px
}
.simulate-box-head_num[data-v-5dedbd3c] {
text-align: right;
margin-top: 4px;
color: #dfcb9d;
font-size: 23px;
font-style: normal;
font-weight: 650;
line-height: 24px
}
.simulate-box-head_num.score[data-v-5dedbd3c] {
font-size: 18px
}
.simulate-box-center[data-v-5dedbd3c] {
margin-bottom: 18px
}
.simulate-box-center_title[data-v-5dedbd3c] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
margin-bottom: 12px
}
.simulate-box-center_title .title-left[data-v-5dedbd3c] {
color: #d6bf96;
font-size: 16px;
font-style: normal;
font-weight: 700;
line-height: 24px;
max-width: auto
}
.simulate-box-center_title .title-left[mini][data-v-5dedbd3c] {
font-size: 12px;
line-height: 13px
}
.simulate-box-center_title .title-right[data-v-5dedbd3c] {
cursor: pointer;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
padding: 3px 7px 3px 11px;
color: #f3d28c;
font-size: 12px;
font-style: normal;
font-weight: 700;
border-radius: 20px;
border: 1px solid hsla(0, 0%, 100%, .24);
background: rgba(0, 0, 0, .2);
line-height: 16px
}
.simulate-box-center_title .title-right .arrow[data-v-5dedbd3c] {
margin-left: 1px;
width: 10px;
height: 10px;
color: #f3d28c
}
.simulate-box-center_title .title-right .title-btn[mini][data-v-5dedbd3c] {
font-size: 8px;
line-height: 14px
}
.simulate-box-center_content[data-v-5dedbd3c] {
padding: 9px 12px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
position: relative;
border-image-source: url(../img/pc-long-card.49e750f0.png);
border-image-slice: 17.6470588235% 1.3698630137% fill;
border-image-width: 12px
}
.simulate-box-center_content[data-v-5dedbd3c]:before {
position: absolute;
content: "";
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url(../img/pc-card-bg.74e68f40.png) no-repeat 100%/auto 100%
}
.simulate-box-center_content.info[data-v-5dedbd3c] {
padding: 14px 40px 13px;
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start
}
.simulate-box-center_content.info[data-v-5dedbd3c]:before {
position: absolute;
content: "";
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url(../img/long-card-bg.d071f73a.png) no-repeat 50%/314px auto
}
.simulate-box-center_content.week[data-v-5dedbd3c] {
height: 68px
}
.simulate-box-center_content.week[data-v-5dedbd3c]:last-child {
margin-top: 12px
}
.simulate-box-center_content.daily[data-v-5dedbd3c] {
min-height: 68px;
padding: 6.5px 12px
}
.simulate-box-center_content .info-list[data-v-5dedbd3c] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
width: 300px
}
.simulate-box-center_content .info-num[data-v-5dedbd3c] {
color: #dfcb9d;
text-align: center;
font-size: 20px;
font-style: normal;
font-weight: 650;
line-height: 21px
}
.simulate-box-center_content .info-border[data-v-5dedbd3c] {
width: 53px;
height: 3px;
margin-top: 6px;
margin-bottom: 4px
}
.simulate-box-center_content .info-name[data-v-5dedbd3c] {
color: #d6bf96;
text-align: center;
font-size: 14px;
font-style: normal;
font-weight: 600;
line-height: 18px
}
.simulate-box-center_content .info-name[mini][data-v-5dedbd3c] {
font-size: 8px;
line-height: 10px
}
.simulate-box-center_content .content-left[data-v-5dedbd3c] {
color: #d6bf96;
font-size: 14px;
font-style: normal;
font-weight: 700;
line-height: 20px;
margin-right: 0;
max-width: auto
}
.simulate-box-center_content .content-left[mini][data-v-5dedbd3c] {
font-size: 10px;
line-height: 13px
}
.simulate-box-center_content .difficult[data-v-5dedbd3c] {
position: relative
}
.simulate-box-center_content .difficult .difficult-img[data-v-5dedbd3c] {
width: 46px;
height: 46px
}
.simulate-box-center_content .difficult .difficult-num[data-v-5dedbd3c] {
position: absolute;
right: 6px;
top: 15px;
color: #dbc291;
text-align: right;
font-size: 10px;
font-style: normal;
font-weight: 650;
line-height: 11px
}
.simulate-box-center_content .difficult .difficult-level-img[data-v-5dedbd3c] {
width: 46px;
height: 46px
}
.simulate-box-center_content .difficult .difficult-icon[data-v-5dedbd3c] {
width: 46px;
height: 46px;
margin-left: 2px
}
.simulate-box-center_content .difficult-desc[data-v-5dedbd3c] {
margin-left: 2px;
margin-top: 1px;
color: #ac8560;
text-align: right;
font-size: 16px;
font-weight: 500;
line-height: 20px
}
.simulate-box-center_content .content-right[data-v-5dedbd3c] {
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end;
position: relative
}
.simulate-box-center_content .content-right-wrap[data-v-5dedbd3c], .simulate-box-center_content .content-right[data-v-5dedbd3c] {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.simulate-box-center_content .finish-name[data-v-5dedbd3c] {
color: #a7a7a7;
text-align: right;
font-size: 14px;
font-style: normal;
font-weight: 700;
line-height: 20px
}
.simulate-box-center_content .finish-icon[data-v-5dedbd3c] {
margin-left: 2px;
width: 18px;
height: 18px;
background: url(../img/not-finish-icon.a769356e.png) no-repeat 50%/cover
}
.simulate-box-center_content .finish .finish-icon[data-v-5dedbd3c] {
background: url(../img/finish-icon.dee97c1a.png) no-repeat 50%/cover
}
.simulate-box-center_content .finish .finish-name[data-v-5dedbd3c] {
color: #d6bf96
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@ -0,0 +1,148 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="css/pc.css" rel="stylesheet">
<link href="css/rogue_tourn.css" rel="stylesheet">
</head>
<body>
<div>
<div data-v-5dedbd3c="" data-v-0d3913e0="" class="simulate">
<div data-v-5dedbd3c="" class="simulate-box">
<div data-v-5dedbd3c="" class="simulate-box-title">差分宇宙•人间喜剧 - UID {{ uid }}</div>
<div data-v-5dedbd3c="" class="simulate-box-head">
<div data-v-5dedbd3c="" class="simulate-box-head_list">
<div data-v-5dedbd3c="" class="simulate-box-head_image">
<img data-v-5dedbd3c="" src="img/level-icon.f3d1f752.png" alt="">
<div data-v-5dedbd3c="" class="simulate-box-head_name">拟合等级</div>
</div>
<div data-v-5dedbd3c="" class="simulate-box-head_desc">
<div data-v-5dedbd3c="" class="simulate-box-head_num g--font-hsr">{{ basic.season_level }}</div>
</div>
</div>
<div data-v-5dedbd3c="" class="simulate-box-head_list">
<div data-v-5dedbd3c="" class="simulate-box-head_image">
<img data-v-5dedbd3c="" src="img/score-icon.1742263a.png" alt="">
<div data-v-5dedbd3c="" class="simulate-box-head_name">本周额外拟合值</div>
</div>
<div data-v-5dedbd3c="" class="simulate-box-head_desc">
<div data-v-5dedbd3c="" class="simulate-box-head_num g--font-hsr score">
{{ basic.weekly_score }}/{{ basic.weekly_score_max }}
</div>
</div>
</div>
</div>
<div data-v-5dedbd3c="" class="simulate-box-center">
<div data-v-5dedbd3c="" class="simulate-box-center_title">
<div data-v-5dedbd3c="" class="title-left">数据一览</div>
</div>
<div data-v-5dedbd3c="" class="simulate-box-center_content info">
<div data-v-5dedbd3c="" class="info-list">
<div data-v-5dedbd3c="" class="info-num g--font-hsr">{{ basic.possibility_gallery_progress }}%</div>
<img data-v-5dedbd3c="" src="img/info-border.4ea24bf7.png" class="info-border" alt="">
<div data-v-5dedbd3c="" class="info-name">可能性画廊</div>
</div>
<div data-v-5dedbd3c="" class="info-list">
<div data-v-5dedbd3c="" class="info-num g--font-hsr">{{ basic.skill_tree_activated }}</div>
<img data-v-5dedbd3c="" src="img/info-border.4ea24bf7.png" class="info-border" alt="">
<div data-v-5dedbd3c="" class="info-name">已激活结点</div>
</div>
<div data-v-5dedbd3c="" class="info-list">
<div data-v-5dedbd3c="" class="info-num g--font-hsr">
{{ basic.season_task_finished }}/{{ basic.season_task_total }}
</div>
<img data-v-5dedbd3c="" src="img/info-border.4ea24bf7.png" class="info-border" alt="">
<div data-v-5dedbd3c="" class="info-name">稳态数组</div>
</div>
</div>
</div>
<div data-v-5dedbd3c="" class="simulate-box-center">
<div data-v-5dedbd3c="" class="simulate-box-center_title">
<div data-v-5dedbd3c="" class="title-left">常规演算</div>
</div>
{% set record = basic.normal_record_brief %}
<div data-v-5dedbd3c="" class="simulate-box-center_content daily">
<div data-v-5dedbd3c="" class="content-left">最高通关难度</div>
{% if record.exist_data %}
<div data-v-15e079f7="" data-v-5dedbd3c="" class="content-right-wrap content-right-undefined">
<div data-v-15e079f7="" class="content-right-image">
<div data-v-15e079f7="" class="content-right">
{% set level = record.common_info.floor + 1 %}
{% set diff = record.common_info.difficulty %}
<img data-v-15e079f7="" src="img/level-{{ level }}.png" class="difficult-level-img" alt="">
{% if level == 6 and diff > 0 %}
<p data-v-15e079f7="" class="difficult-num g--font-hsr">
{{ diff }}
</p>
{% endif %}
</div>
{% if record.icon %}
<img data-v-15e079f7="" src="{{ record.icon }}" class="difficult-icon" alt="">
{% endif %}
</div>
{% if record.title %}
<div data-v-15e079f7="" class="difficult-desc" style="color: {{ record.color }};">{{ record.title }}</div>
{% endif %}
</div>
{% else %}
<div data-v-15e079f7="" data-v-5dedbd3c="" class="content-right-wrap">
<p data-v-15e079f7="" class="finish-name">尚未挑战</p>
</div>
{% endif %}
</div>
</div>
<div data-v-5dedbd3c="" class="simulate-box-center">
<div data-v-5dedbd3c="" class="simulate-box-center_title">
<div data-v-5dedbd3c="" class="title-left">周期演算</div>
</div>
<div data-v-5dedbd3c="" class="simulate-box-center_content week">
<div data-v-5dedbd3c="" class="content-left">本周首通奖励</div>
{% set finish_css = '' %}
{% set finish_text = '未领取' %}
{% if basic.finished_weekly %}
{% set finish_css = 'finish' %}
{% set finish_text = '已领取' %}
{% endif %}
<div data-v-5dedbd3c="" class="content-right {{ finish_css }}"><p data-v-5dedbd3c="" class="finish-name">
{{ finish_text }}
</p>
<div data-v-5dedbd3c="" class="finish-icon"></div>
</div>
</div>
{% set record = basic.weekly_record_brief %}
<div data-v-5dedbd3c="" class="simulate-box-center_content week">
<div data-v-5dedbd3c="" class="content-left">本周最高通关难度</div>
{% if record.exist_data %}
<div data-v-15e079f7="" data-v-5dedbd3c="" size="" class="content-right-wrap content-right-detail">
<div data-v-15e079f7="" class="content-right-image">
<div data-v-15e079f7="" class="content-right">
{% set level = record.common_info.floor + 1 %}
{% set diff = record.common_info.difficulty %}
<img data-v-15e079f7="" src="img/level-{{ level }}.png" class="difficult-level-img" alt="">
{% if level == 6 and diff > 0 %}
<p data-v-15e079f7="" class="difficult-num g--font-hsr">
{{ diff }}
</p>
{% endif %}
</div>
{% if record.icon %}
<img data-v-15e079f7="" src="{{ record.icon }}" class="difficult-icon" alt="">
{% endif %}
</div>
{% if record.title %}
<div data-v-15e079f7="" class="difficult-desc" style="color: {{ record.color }};">{{ record.title }}</div>
{% endif %}
</div>
{% else %}
<div data-v-15e079f7="" data-v-5dedbd3c="" class="content-right-wrap">
<p data-v-15e079f7="" class="finish-name">尚未挑战</p>
</div>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</body>
</html>