From 86ef549b757e4fa866a0ae031b5cd34d5f13b657 Mon Sep 17 00:00:00 2001 From: musnows Date: Sat, 4 Mar 2023 18:47:46 +0800 Subject: [PATCH 01/31] fix(main): add EzAuthExp.InitError to check_reauth fix(main): using BaseException handler in some cmd --- code/main.py | 339 +++++++++++++++++++++++++-------------------------- 1 file changed, 167 insertions(+), 172 deletions(-) diff --git a/code/main.py b/code/main.py index d349c37..3dcf2ae 100644 --- a/code/main.py +++ b/code/main.py @@ -9,7 +9,7 @@ import copy import zhconv import asyncio -from khl import (Bot, Event, EventTypes, Message, PrivateMessage, requester,Channel) +from khl import (Bot, Event, EventTypes, Message, PrivateMessage, requester, Channel) from khl.card import Card, CardMessage, Element, Module, Types, Struct from aiohttp import client_exceptions from PIL import Image, UnidentifiedImageError # 用于合成图片 @@ -25,7 +25,7 @@ from utils.Gtime import GetTime, GetTimeStampOf8AM # bot的token文件 -from utils.FileManage import config,bot,ApiAuthLog,Save_All_File +from utils.FileManage import config, bot, ApiAuthLog, Save_All_File # 只用来上传图片的bot bot_upimg = Bot(token=config['token']['img_upload_token']) @@ -33,8 +33,8 @@ master_id = config['master_id'] #在bot一开机的时候就获取log频道作为全局变量 -debug_ch:Channel -cm_send_test:Channel +debug_ch: Channel +cm_send_test: Channel NOTIFY_NUM = 3 # 非vip用户皮肤提醒栏位 VIP_BG_SIZE = 4 # vip用户背景图片数量限制 RATE_LIMITED_TIME = 180 # 全局登录速率超速等待秒数 @@ -96,7 +96,7 @@ async def Ahri(msg: Message, *arg): cm = Help.help_main(start_time) await msg.reply(cm) except Exception as result: - await BotLog.BaseException_Handler("ahri", traceback.format_exc(),msg,debug_send=debug_ch) + await BotLog.BaseException_Handler("ahri", traceback.format_exc(), msg, debug_send=debug_ch) # help命令(瓦洛兰特相关) @@ -107,7 +107,7 @@ async def Vhelp(msg: Message, *arg): cm = Help.help_val() await msg.reply(cm) except Exception as result: - await BotLog.BaseException_Handler("vhelp", traceback.format_exc(),msg,debug_send=debug_ch) + await BotLog.BaseException_Handler("vhelp", traceback.format_exc(), msg, debug_send=debug_ch) # 当有人@机器人的时候进行回复,可识别出是否为机器人作者 @@ -124,7 +124,7 @@ async def atAhri(msg: Message): await msg.reply(f"呀,听说有人想我了,是吗?\n输入`/ahri` 或 `/vhelp` 打开帮助面板,和阿狸一起玩吧!") _log.info(f"Au:{msg.author_id} | msg.reply success!") except: - await BotLog.BaseException_Handler("at_help", traceback.format_exc(),msg) + await BotLog.BaseException_Handler("at_help", traceback.format_exc(), msg) ################################################################################################# @@ -149,7 +149,7 @@ async def countdown(msg: Message, time: int = 60, *args): cm.append(c1) await msg.reply(cm) except Exception as result: - await BotLog.BaseException_Handler("countdown", traceback.format_exc(), msg,debug_send=debug_ch) + await BotLog.BaseException_Handler("countdown", traceback.format_exc(), msg, debug_send=debug_ch) # 掷骰子 saying `!roll 1 100` in channel,or `/roll 1 100 5` to dice 5 times once @@ -170,7 +170,7 @@ async def roll(msg: Message, t_min: int = 1, t_max: int = 100, n: int = 1, *args result = [random.randint(t_min, t_max) for i in range(n)] await msg.reply(f'掷出来啦: {result}') except Exception as result: - await BotLog.BaseException_Handler("roll", traceback.format_exc(), msg,debug_send=debug_ch) + await BotLog.BaseException_Handler("roll", traceback.format_exc(), msg, debug_send=debug_ch) # 返回天气 @@ -184,7 +184,7 @@ async def Weather(msg: Message, city: str = "err"): try: await Other.weather(msg, city) except Exception as result: - await BotLog.BaseException_Handler("Weather", traceback.format_exc(), msg,debug_send=debug_ch) + await BotLog.BaseException_Handler("Weather", traceback.format_exc(), msg, debug_send=debug_ch) ################################ grant roles for user ########################################## @@ -336,7 +336,7 @@ async def Login_Forbidden_Change(msg: Message): # 存储用户游戏id -@bot.command() +@bot.command(name="saveid", case_sensitive=False) async def saveid(msg: Message, *args): BotLog.logMsg(msg) if args == (): @@ -346,9 +346,7 @@ async def saveid(msg: Message, *args): game_id = " ".join(args) #避免用户需要输入双引号 await saveid_main(msg, game_id) except Exception as result: - err_str = f"ERR! [{GetTime()}] saveid\n```\n{traceback.format_exc()}\n```" - _log.exception("Exception occur") - await msg.reply(err_str) + await BotLog.BaseException_Handler("saveid", traceback.format_exc(), msg) # 已保存id总数 @@ -358,25 +356,17 @@ async def saveid_all(msg: Message): try: await saveid_count(msg) except Exception as result: - err_str = f"ERR! [{GetTime()}] saveid2 = {result}" - _log.exception("Exception occur") - await msg.reply(err_str) + await BotLog.BaseException_Handler("saveid-a", traceback.format_exc(), msg) # 实现读取用户游戏ID并返回 -@bot.command(name="myid", aliases=['MYID']) # 这里的aliases是别名 +@bot.command(name="myid", case_sensitive=False) async def myid(msg: Message, *args): BotLog.logMsg(msg) - if args != (): - await msg.reply(f"`/myid`命令不需要参数!") - return - try: await myid_main(msg) except Exception as result: - err_str = f"ERR! [{GetTime()}] myid\n```\n{traceback.format_exc()}\n```" - _log.exception("Exception occur") - await msg.reply(err_str) + await BotLog.BaseException_Handler("myid", traceback.format_exc(), msg) # 查询游戏错误码 @@ -386,7 +376,7 @@ async def val_err(msg: Message, numS: str = "-1", *arg): try: await val_errcode(msg, numS) except Exception as result: - await msg.reply(f"您输入的错误码格式不正确!\n请提供正确范围的`数字`,而非`{numS}`") + await BotLog.BaseException_Handler("val", traceback.format_exc(), msg,help=f"您输入的错误码格式不正确!\n请提供正确范围的`数字`,而非`{numS}`") #关于dx报错的解决方法 @@ -399,7 +389,7 @@ async def dx(msg: Message): ###########################################vip###################################################### #用来存放roll的频道/服务器/回应用户的dict -from utils.FileManage import VipShopBgDict, VipRollDcit, UserPwdReauth,VipUserDict +from utils.FileManage import VipShopBgDict, VipRollDcit, UserPwdReauth, VipUserDict # 新建vip的uuid,第一个参数是天数,第二个参数是数量 @@ -420,9 +410,7 @@ async def get_vip_uuid(msg: Message, day: int = 30, num: int = 10): else: await msg.reply("您没有权限操作此命令!") except Exception as result: - err_str = f"ERR! [{GetTime()}] create_vip_uuid\n```\n{traceback.format_exc()}\n```" - _log.exception("Exception occur") - await msg.reply(err_str) + await BotLog.BaseException_Handler("vip-a", traceback.format_exc(), msg) # 兑换vip @@ -438,7 +426,7 @@ async def buy_vip_uuid(msg: Message, uuid: str = 'err', *arg): global VipShopBgDict #在用户兑换vip的时候就创建此键值 VipShopBgDict['cache'][msg.author_id] = {'cache_time': 0, 'cache_img': None} except Exception as result: - await BotLog.BaseException_Handler("vip-u", traceback.format_exc(), msg,debug_send=debug_ch) + await BotLog.BaseException_Handler("vip-u", traceback.format_exc(), msg, debug_send=debug_ch) # 看vip剩余时间 @@ -453,7 +441,8 @@ async def check_vip_timeremain(msg: Message, *arg): ret_cm = await BotVip.vip_time_remain_cm(ret_t) await msg.reply(ret_cm) except Exception as result: - await BotLog.BaseException_Handler("vip-c", traceback.format_exc(), msg,debug_send=debug_ch) + await BotLog.BaseException_Handler("vip-c", traceback.format_exc(), msg, debug_send=debug_ch) + # 看vip用户列表 @bot.command(name="vip-l") @@ -600,7 +589,7 @@ async def vip_shop_bg_set(msg: Message, icon: str = "err", *arg): _log.info(f"Au:{msg.author_id} img add | {x3}") except requester.HTTPRequester.APIRequestFailed as result: - await BotLog.APIRequestFailed_Handler("vip_shop", traceback.format_exc(), msg, bot,cm) + await BotLog.APIRequestFailed_Handler("vip_shop", traceback.format_exc(), msg, bot, cm) VipShopBgDict['bg'][msg.author_id]["background"].remove(x3) #删掉里面的图片 _log.error(f"Au:{msg.author_id} | remove({x3})") except Exception as result: @@ -727,7 +716,7 @@ async def vip_roll(msg: Message, vday: int = 7, vnum: int = 5, rday: float = 1.0 cm = BotVip.roll_vip_start(vnum, vday, rday) roll_ch = await bot.client.fetch_public_channel(msg.ctx.channel.id) roll_send = await bot.client.send(roll_ch, cm) - VipRollDcit[roll_send['msg_id']] = { # type: ignore + VipRollDcit[roll_send['msg_id']] = { # type: ignore 'time': time.time() + rday * 86400, 'nums': vnum, 'days': vday, @@ -737,7 +726,7 @@ async def vip_roll(msg: Message, vday: int = 7, vnum: int = 5, rday: float = 1.0 } _log.info(f"card message send | C:{msg.ctx.channel.id}") except: - await BotLog.BaseException_Handler("vip-r",traceback.format_exc(),msg) + await BotLog.BaseException_Handler("vip-r", traceback.format_exc(), msg) @bot.task.add_interval(seconds=80) @@ -829,7 +818,7 @@ async def vip_time_add(msg: Message, vday: int = 1, *arg): ##################################################################################### # 预加载用户的riot游戏id和玩家uuid(登录后Api获取) -from utils.FileManage import UserRiotName, SkinNotifyDict, EmojiDict, SkinRateDict,ValBundleList +from utils.FileManage import UserRiotName, SkinNotifyDict, EmojiDict, SkinRateDict, ValBundleList # 用来存放auth对象(无法直接保存到文件) UserAuthDict = {'AP': {}} @@ -912,7 +901,7 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', if not resw['status']: cm1 = await get_card("登录中断,需要提供邮箱验证码", "请使用「/tfa 验证码」提供邮箱验证码", icon_cm.val_logo_gif) await upd_card(send_msg['msg_id'], cm1, channel_type=msg.channel_type) - _log.info(f"login | 2fa user | Au:{msg.author_id}") # 打印信息 + _log.info(f"login | 2fa user | Au:{msg.author_id}") # 打印信息 return # 4.如果没有抛出异常,那就是完成登录了,设置用户的玩家uuid+昵称 @@ -958,7 +947,7 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', err_str = f"ERR! [{GetTime()}] login Au:{msg.author_id} - {result}" # 更新全局速率限制 login_rate_limit = {'limit': True, 'time': time.time()} - _log.error(err_str+" set login_rate_limit = True") + _log.error(err_str + " set login_rate_limit = True") # 这里是第一个出现速率限制err的用户,更新消息提示 cm = await get_card(f"登录请求超速!请在{RATE_LIMITED_TIME}s后重试", "RatelimitError,try again later", icon_cm.lagging) await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) @@ -987,9 +976,13 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', cm = await get_card(text, text_sub, icon_cm.that_it) await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) except requester.HTTPRequester.APIRequestFailed as result: #卡片消息发送失败 - await BotLog.APIRequestFailed_Handler("login", traceback.format_exc(), msg, bot, cm,send_msg=send_msg) + await BotLog.APIRequestFailed_Handler("login", traceback.format_exc(), msg, bot, cm, send_msg=send_msg) except Exception as result: # 其他错误 - await BotLog.BaseException_Handler("login", traceback.format_exc(), msg, send_msg=send_msg,help="请加入帮助频道咨询,或尝试重新执行login命令") + await BotLog.BaseException_Handler("login", + traceback.format_exc(), + msg, + send_msg=send_msg, + help="请加入帮助频道咨询,或尝试重新执行login命令") @bot.command(name='tfa') @@ -1030,7 +1023,7 @@ async def tfa_verify(msg: Message, tfa: str, *arg): # 更新消息 await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) except Exception as result: # 其他错误 - await BotLog.BaseException_Handler("tfa", traceback.format_exc(), msg,help="请加入帮助频道咨询,或尝试重新执行login命令") + await BotLog.BaseException_Handler("tfa", traceback.format_exc(), msg, help="请加入帮助频道咨询,或尝试重新执行login命令") # 退出登录 @@ -1150,7 +1143,7 @@ async def check_reauth(def_name: str = "", msg: Union[Message, str] = ''): elif ret == True and is_msg: #正常重新登录,且传过来了消息 return send_msg #返回发送出去的消息(用于更新) - return ret #返回假 + return ret #返回是否成功重登 except client_exceptions.ClientResponseError as result: err_str = f"[Check_re_auth] aiohttp ERR!\n```\n{traceback.format_exc()}\n```\n" @@ -1166,6 +1159,10 @@ async def check_reauth(def_name: str = "", msg: Union[Message, str] = ''): _log.error(err_str) await bot.client.send(debug_ch, err_str) return False + # 用户在EzAuth初始化完毕之前调用了其他命令 + except EzAuthExp.InitError as result: + _log.error(f"Au:{user_id} | EzAuth used before init") + return False except Exception as result: if 'httpStatus' in str(result): _log.info(f"Au:{user_id} | No need to reauthorize [{result}]") @@ -1215,133 +1212,131 @@ async def get_daily_shop(msg: Message, *arg): return send_msg = None try: - if msg.author_id in UserAuthDict: - reau = await check_reauth("每日商店", msg) - if reau == False: return #如果为假说明重新登录失败 - # 重新获取token成功,从dict中获取玩家id - player_gamename = f"{UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" - # 获取玩家id成功了,再提示正在获取商店 - cm = await get_card("正在尝试获取您的每日商店", "阿狸正在施法,很快就好啦!", icon_cm.duck) - if isinstance(reau, dict): #如果传过来的是一个dict,说明重新登录成功且发送了消息 - await upd_card(reau['msg_id'], cm, channel_type=msg.channel_type) - send_msg = reau - else: - send_msg = await msg.reply(cm) #记录消息id用于后续更新 - - # 计算获取每日商店要多久 - start = time.perf_counter() #开始计时 - # 从auth的dict中获取对象 - auth = UserAuthDict[msg.author_id]['auth'] - assert isinstance(auth, EzAuth) - riotUser = auth.get_riotuser_token() - # 开始判断是否需要获取商店 - log_time = "" - a_time = time.time() - global UserShopDict, VipShopBgDict - # UserShopDict每天早八会被清空,如果用户在里面且玩家id一样,那么说明已经获取过当日商店了 - if msg.author_id in UserShopDict and isSame_Authuuid(msg): #直接使用本地已有的当日商店 - list_shop = UserShopDict[msg.author_id]["SkinsPanelLayout"]["SingleItemOffers"] # 商店刷出来的4把枪 - timeout = shop_time_remain() # 通过当前时间计算商店剩余时间 - log_time += f"[Dict_shop] {format(time.time()-a_time,'.4f')} " - else: - resp = await fetch_daily_shop(riotUser) #本地没有,api获取每日商店 - list_shop = resp["SkinsPanelLayout"]["SingleItemOffers"] # 商店刷出来的4把枪 - timeout = resp["SkinsPanelLayout"]["SingleItemOffersRemainingDurationInSeconds"] # 剩余时间 - timeout = time.strftime("%H:%M:%S", time.gmtime(timeout)) # 将秒数转为标准时间 - # 需要设置uuid来保证是同一个用户,方便同日的下次查询 - UserShopDict[msg.author_id] = {} - UserShopDict[msg.author_id]["auth_user_id"] = UserRiotName[msg.author_id]["auth_user_id"] - UserShopDict[msg.author_id]["SkinsPanelLayout"] = resp["SkinsPanelLayout"] - log_time += f"[Api_shop] {format(time.time()-a_time,'.4f')} " - - # 开始画图 - draw_time = time.time() #计算画图需要的时间 - is_vip = await BotVip.vip_ck(msg.author_id) #判断用户是否为VIP - img_ret = {'status': True, 'value': None} - upload_flag = True - # 初始化为一个展示错误的图片 - dailyshop_img_src = "https://img.kookapp.cn/assets/2023-02/5UxA8W06B70e803m.png" - # 如果是vip而且path存在,背景图/登录用户没有更改过,图片缓存时间正确 - if is_vip and is_CacheLatest(msg.author_id): - upload_flag = False #有缓存图,直接使用本地已有链接 - dailyshop_img_src = VipShopBgDict['cache'][msg.author_id]['cache_img'] - elif is_vip: # 本地缓存路径不存在,或者缓存过期 - play_currency = await fetch_vp_rp_dict(riotUser) #获取用户的vp和rp - # 如果没有设置背景图,那就设置为err - background_img = ('err' if msg.author_id not in VipShopBgDict['bg'] else - VipShopBgDict['bg'][msg.author_id]["background"][0]) - img_ret = await ShopImg.get_shop_img_169(list_shop, - vp=play_currency['vp'], - rp=play_currency['rp'], - bg_img_src=background_img) - else: # 普通用户 - # 判断是否有缓存命中 - cache_ret = await ShopRate.query_ShopCache(skinlist=list_shop) - if not cache_ret['status']: # 缓存没有命中 - img_ret = await ShopImg.get_shop_img_11(list_shop) - else: # 命中 - upload_flag = False - dailyshop_img_src = cache_ret['img_url'] - log_time += "[cache] " - - # img_ret 代表是否画图成功,如果是缓存命中,也当成功处理 - if img_ret['status']: - bg = img_ret['value'] #获取图片 - else: # 出现背景图片违规或其他问题 - await msg.reply(img_ret['value']) - _log.info(f"[GetShopImg] Au:{msg.author_id} | {img_ret['value']}") - return + # 如果用户不在Authdict里面,代表没有登录,直接退出 + if msg.author_id not in UserAuthDict: + cm = await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that) + await msg.reply(cm) + return - # 获取图片成功,打印画图耗时 - _log.info(log_time + f"- [Drawing] {format(time.time() - draw_time,'.4f')} - [Au] {msg.author_id}") - # 判断是否需要上传,false不需要 - if upload_flag: - # 上传图片 - imgByteArr = io.BytesIO() - bg.save(imgByteArr, format='PNG') - imgByte = imgByteArr.getvalue() - dailyshop_img_src = await bot_upimg.client.create_asset(imgByte) # type: ignore - # 如果在bg里面代表有自定义背景图,需更新status - if is_vip: - if msg.author_id in VipShopBgDict['bg']: - VipShopBgDict['bg'][msg.author_id]['status'] = True - # 设置商店图片缓存+图片缓存的时间 - VipShopBgDict['cache'][msg.author_id] = {'cache_img': dailyshop_img_src, 'cache_time': time.time()} - else: # 非vip,更新缓存 - await ShopRate.update_ShopCache(skinlist=list_shop, img_url=dailyshop_img_src) - - # 结束shop的总计时,结果为浮点数,保留两位小数 - shop_using_time = format(time.perf_counter() - start, '.2f') - - # 商店的图片 卡片 - cm = CardMessage() - c = Card(color='#fb4b57') - c.append(Module.Header(f"玩家 {player_gamename} 的每日商店!")) - c.append(Module.Context(f"失效时间剩余: {timeout} 本次查询用时: {shop_using_time}s")) - c.append(Module.Container(Element.Image(src=dailyshop_img_src))) - cm.append(c) + reau = await check_reauth("每日商店", msg) + if reau == False: return #如果为假说明重新登录失败 + # 重新获取token成功,从dict中获取玩家id + player_gamename = f"{UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" + # 获取玩家id成功了,再提示正在获取商店 + cm = await get_card("正在尝试获取您的每日商店", "阿狸正在施法,很快就好啦!", icon_cm.duck) + if isinstance(reau, dict): #如果传过来的是一个dict,说明重新登录成功且发送了消息 + await upd_card(reau['msg_id'], cm, channel_type=msg.channel_type) + send_msg = reau + else: + send_msg = await msg.reply(cm) #记录消息id用于后续更新 - # 皮肤评分和评价卡片,用户不在rate_err_user里面才显示(在评论中发表违规言论的用户) - if not check_rate_err_user(msg.author_id): - cm = await ShopRate.get_shop_rate_cm(list_shop, msg.author_id, cm=cm) - end = time.perf_counter() #计算获取评分的时间 - # 更新消息 - await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) - # 结束,打印结果 - _log.info( - f"Au:{msg.author_id} | daily_shop reply successful [{shop_using_time}/{format(end - start, '.2f')}]" - ) + # 计算获取每日商店要多久 + start = time.perf_counter() #开始计时 + # 从auth的dict中获取对象 + auth = UserAuthDict[msg.author_id]['auth'] + assert isinstance(auth, EzAuth) + riotUser = auth.get_riotuser_token() + # 开始判断是否需要获取商店 + log_time = "" + a_time = time.time() + global UserShopDict, VipShopBgDict + # UserShopDict每天早八会被清空,如果用户在里面且玩家id一样,那么说明已经获取过当日商店了 + if msg.author_id in UserShopDict and isSame_Authuuid(msg): #直接使用本地已有的当日商店 + list_shop = UserShopDict[msg.author_id]["SkinsPanelLayout"]["SingleItemOffers"] # 商店刷出来的4把枪 + timeout = shop_time_remain() # 通过当前时间计算商店剩余时间 + log_time += f"[Dict_shop] {format(time.time()-a_time,'.4f')} " else: - cm = await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that) - await msg.reply(cm) + resp = await fetch_daily_shop(riotUser) #本地没有,api获取每日商店 + list_shop = resp["SkinsPanelLayout"]["SingleItemOffers"] # 商店刷出来的4把枪 + timeout = resp["SkinsPanelLayout"]["SingleItemOffersRemainingDurationInSeconds"] # 剩余时间 + timeout = time.strftime("%H:%M:%S", time.gmtime(timeout)) # 将秒数转为标准时间 + # 需要设置uuid来保证是同一个用户,方便同日的下次查询 + UserShopDict[msg.author_id] = {} + UserShopDict[msg.author_id]["auth_user_id"] = UserRiotName[msg.author_id]["auth_user_id"] + UserShopDict[msg.author_id]["SkinsPanelLayout"] = resp["SkinsPanelLayout"] + log_time += f"[Api_shop] {format(time.time()-a_time,'.4f')} " + + # 开始画图 + draw_time = time.time() #计算画图需要的时间 + is_vip = await BotVip.vip_ck(msg.author_id) #判断用户是否为VIP + img_ret = {'status': True, 'value': None} + upload_flag = True + # 初始化为一个展示错误的图片 + dailyshop_img_src = "https://img.kookapp.cn/assets/2023-02/5UxA8W06B70e803m.png" + # 如果是vip而且path存在,背景图/登录用户没有更改过,图片缓存时间正确 + if is_vip and is_CacheLatest(msg.author_id): + upload_flag = False #有缓存图,直接使用本地已有链接 + dailyshop_img_src = VipShopBgDict['cache'][msg.author_id]['cache_img'] + elif is_vip: # 本地缓存路径不存在,或者缓存过期 + play_currency = await fetch_vp_rp_dict(riotUser) #获取用户的vp和rp + # 如果没有设置背景图,那就设置为err + background_img = ('err' if msg.author_id not in VipShopBgDict['bg'] else + VipShopBgDict['bg'][msg.author_id]["background"][0]) + img_ret = await ShopImg.get_shop_img_169(list_shop, + vp=play_currency['vp'], + rp=play_currency['rp'], + bg_img_src=background_img) + else: # 普通用户 + # 判断是否有缓存命中 + cache_ret = await ShopRate.query_ShopCache(skinlist=list_shop) + if not cache_ret['status']: # 缓存没有命中 + img_ret = await ShopImg.get_shop_img_11(list_shop) + else: # 命中 + upload_flag = False + dailyshop_img_src = cache_ret['img_url'] + log_time += "[cache] " + + # img_ret 代表是否画图成功,如果是缓存命中,也当成功处理 + if img_ret['status']: + bg = img_ret['value'] #获取图片 + else: # 出现背景图片违规或其他问题 + await msg.reply(img_ret['value']) + _log.info(f"[GetShopImg] Au:{msg.author_id} | {img_ret['value']}") return + # 获取图片成功,打印画图耗时 + _log.info(log_time + f"- [Drawing] {format(time.time() - draw_time,'.4f')} - [Au] {msg.author_id}") + # 判断是否需要上传,false不需要 + if upload_flag: + # 上传图片 + imgByteArr = io.BytesIO() + bg.save(imgByteArr, format='PNG') + imgByte = imgByteArr.getvalue() + dailyshop_img_src = await bot_upimg.client.create_asset(imgByte) # type: ignore + # 如果在bg里面代表有自定义背景图,需更新status + if is_vip: + if msg.author_id in VipShopBgDict['bg']: + VipShopBgDict['bg'][msg.author_id]['status'] = True + # 设置商店图片缓存+图片缓存的时间 + VipShopBgDict['cache'][msg.author_id] = {'cache_img': dailyshop_img_src, 'cache_time': time.time()} + else: # 非vip,更新缓存 + await ShopRate.update_ShopCache(skinlist=list_shop, img_url=dailyshop_img_src) + + # 结束shop的总计时,结果为浮点数,保留两位小数 + shop_using_time = format(time.perf_counter() - start, '.2f') + + # 商店的图片 卡片 + cm = CardMessage() + c = Card(color='#fb4b57') + c.append(Module.Header(f"玩家 {player_gamename} 的每日商店!")) + c.append(Module.Context(f"失效时间剩余: {timeout} 本次查询用时: {shop_using_time}s")) + c.append(Module.Container(Element.Image(src=dailyshop_img_src))) + cm.append(c) + + # 皮肤评分和评价卡片,用户不在rate_err_user里面才显示(在评论中发表违规言论的用户) + if not check_rate_err_user(msg.author_id): + cm = await ShopRate.get_shop_rate_cm(list_shop, msg.author_id, cm=cm) + end = time.perf_counter() #计算获取评分的时间 + # 更新消息 + await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) + # 结束,打印结果 + _log.info(f"Au:{msg.author_id} | daily_shop reply successful [{shop_using_time}/{format(end - start, '.2f')}]") except requester.HTTPRequester.APIRequestFailed as result: #卡片消息发送失败 - await BotLog.APIRequestFailed_Handler("shop", traceback.format_exc(), msg, bot,cm,send_msg=send_msg) + await BotLog.APIRequestFailed_Handler("shop", traceback.format_exc(), msg, bot, cm, send_msg=send_msg) except Exception as result: err_str = f"ERR! [{GetTime()}] shop\n```\n{traceback.format_exc()}\n```\n" if "SkinsPanelLayout" in str(result): - _log.error(err_str+resp) + _log.error(err_str + resp) btext = f"KeyError:{result}, please re-login\n如果此问题重复出现,请[联系开发者](https://kook.top/gpbTwZ)" cm = await get_card(f"键值错误,需要重新登录", btext, icon_cm.whats_that) await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) @@ -1384,7 +1379,7 @@ async def get_night_market(msg: Message, *arg): assert isinstance(auth, EzAuth) riotUser = auth.get_riotuser_token() # 获取商店(夜市是相同接口) - resp = await fetch_daily_shop(riotUser) + resp = await fetch_daily_shop(riotUser) if "BonusStore" not in resp: # 如果没有这个字段,说明夜市取消了 NightMarketOff = False cm1 = await get_card("嗷~ 夜市已关闭 或 Api没能正确返回结果", "night_market closed! 'BonusStore' not in resp", @@ -1431,7 +1426,7 @@ async def get_night_market(msg: Message, *arg): return except requester.HTTPRequester.APIRequestFailed as result: #卡片消息发送失败 - await BotLog.APIRequestFailed_Handler("night", traceback.format_exc(), msg, bot,cm,send_msg=send_msg) + await BotLog.APIRequestFailed_Handler("night", traceback.format_exc(), msg, bot, cm, send_msg=send_msg) except Exception as result: # 其他错误 await BotLog.BaseException_Handler("night", traceback.format_exc(), msg, send_msg=send_msg) @@ -1536,7 +1531,7 @@ async def get_user_card(msg: Message, *arg): return except requester.HTTPRequester.APIRequestFailed as result: #卡片消息发送失败 - await BotLog.APIRequestFailed_Handler("uinfo", traceback.format_exc(), msg, bot, cm,send_msg=send_msg) + await BotLog.APIRequestFailed_Handler("uinfo", traceback.format_exc(), msg, bot, cm, send_msg=send_msg) except Exception as result: err_str = f"ERR! [{GetTime()}] uinfo\n```\n{traceback.format_exc()}\n```" if "Identity" in str(result) or "Balances" in str(result): @@ -1577,7 +1572,7 @@ async def get_bundle(msg: Message, *arg): else: # 找不到价格就直接插入武器名字 text += f"{w['displayName']}\n" - text += "```\n" + text += "```\n" c.append(Module.Section(Element.Text(text, Types.Text.KMD))) #插入皮肤 cm.append(c) await msg.reply(cm) @@ -1663,7 +1658,7 @@ async def rate_skin_add(msg: Message, *arg): await msg.reply(cm) except requester.HTTPRequester.APIRequestFailed as result: #卡片消息发送失败 - await BotLog.APIRequestFailed_Handler("rate", traceback.format_exc(), msg, bot,cm) + await BotLog.APIRequestFailed_Handler("rate", traceback.format_exc(), msg, bot, cm) except Exception as result: # 其他错误 await BotLog.BaseException_Handler("rate", traceback.format_exc(), msg) @@ -1946,7 +1941,7 @@ async def list_skin_notify(msg: Message, *arg): text += "注:`=`号前面很长的那一串就是uuid\n" await msg.reply(text) except Exception as result: - await BotLog.BaseException_Handler("notify-list", traceback.format_exc(), msg,debug_send=debug_ch) + await BotLog.BaseException_Handler("notify-list", traceback.format_exc(), msg, debug_send=debug_ch) # 删除已有皮肤通知 @@ -1969,7 +1964,7 @@ async def delete_skin_notify(msg: Message, uuid: str = "err", *arg): await msg.reply(f"您提供的uuid不在列表中!") return except Exception as result: - await BotLog.BaseException_Handler("notify-del", traceback.format_exc(), msg,debug_send=debug_ch) + await BotLog.BaseException_Handler("notify-del", traceback.format_exc(), msg, debug_send=debug_ch) #独立函数,为了封装成命令+定时 @@ -2240,7 +2235,7 @@ async def proc_check(msg: Message, *arg): #在阿狸开机的时候自动加载所有保存过的cookie @bot.on_startup -async def loading_cache(bot:Bot): +async def loading_cache(bot: Bot): try: global debug_ch, cm_send_test cm_send_test = await bot_upimg.client.fetch_public_channel(config['channel']["img_upload_ch"]) @@ -2268,14 +2263,14 @@ async def loading_cache(bot:Bot): UserAuthDict[user] = {"auth": auth, "2fa": False} #将对象插入 log_str_success += f"({user})" else: - del auth # 删除对象 + del auth # 删除对象 log_str_failed += f"({user}) " continue else: log_not_exits += f"({user}) " continue # 结束任务 - _log.info("TASK.INFO\n\t"+log_str_success + "\n\t" + log_str_failed + "\n\t" + log_not_exits) + _log.info("TASK.INFO\n\t" + log_str_success + "\n\t" + log_str_failed + "\n\t" + log_not_exits) _log.info(f"[BOT.TASK] loading user cookie finished") # api缓存的用户列表 @@ -2294,14 +2289,14 @@ async def loading_cache(bot:Bot): UserAuthDict[user] = {"auth": auth, "2fa": False} #将对象插入 log_str_success += f"({user})" else: - del auth # 删除对象 + del auth # 删除对象 log_str_failed += f"({user}) " continue else: log_not_exits += f"({user}) " continue # 结束任务 - _log.info("TASK.INFO\n\t"+log_str_success + "\n\t" + log_str_failed + "\n\t" + log_not_exits) + _log.info("TASK.INFO\n\t" + log_str_success + "\n\t" + log_str_failed + "\n\t" + log_not_exits) _log.info(f"[BOT.TASK] loading api user cookie finished") From 0d1263bb6d47f63227e7ddaa54d42384cac89df6 Mon Sep 17 00:00:00 2001 From: musnows Date: Sat, 4 Mar 2023 20:37:35 +0800 Subject: [PATCH 02/31] feat(EzAuth): add cache_auth_object in EzAuth --- code/utils/valorant/EzAuth.py | 41 +++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/code/utils/valorant/EzAuth.py b/code/utils/valorant/EzAuth.py index d56ae93..0c09663 100644 --- a/code/utils/valorant/EzAuth.py +++ b/code/utils/valorant/EzAuth.py @@ -60,8 +60,8 @@ def __init__(self) -> None: }) self.session.mount('https://', SSLAdapter()) self.is2fa = False # 2fa set to false - self.__mfa_start__ = 0 # 2fa start time - self.__is_init__ = False # is_init finised? + self.__mfa_start = 0 # 2fa start time + self.is_init = False # is_init finised? def __set_userinfo(self) -> None: """set_user_info to value""" @@ -106,7 +106,7 @@ def __set_info(self, tokens: dict) -> None: self.entitlements_token = self.get_entitlement_token() self.__set_userinfo() self.__set_region() - self.__is_init__ = True # set init as finised + self.is_init = True # set init as finised async def authorize(self, username, password) -> dict: """Authenticate using username and password.\n @@ -150,7 +150,7 @@ async def authorize(self, username, password) -> dict: # 2fa auth elif 'multifactor' in r.text: self.is2fa = True # is 2fa user - self.__mfa_start__ = time.time() + self.__mfa_start = time.time() return {"status": False, "auth": self, "2fa_status": self.is2fa} else: raise EzAuthExp.UnkownError(r.text) @@ -170,10 +170,10 @@ async def email_verfiy(self, vcode: str) -> dict: Return {"status":True,"auth":self,"2fa":self.is2fa} """ # no need to 2fa - if self.__mfa_start__ == 0: + if self.__mfa_start == 0: return {"status": True, "auth": self, "2fa": self.is2fa} # check time - if (time.time() - self.__mfa_start__) <= TFA_TIME_LIMIT: + if (time.time() - self.__mfa_start) <= TFA_TIME_LIMIT: authdata = { 'type': 'multifactor', 'code': vcode, @@ -200,7 +200,7 @@ async def email_verfiy(self, vcode: str) -> dict: else: raise EzAuthExp.UnkownError(r.text) - self.__mfa_start__ = 0 + self.__mfa_start = 0 return {"status": True, "auth": self, "2fa": self.is2fa} async def reauthorize(self,exp_print=True) -> bool: @@ -294,7 +294,7 @@ def get_riotuser_token(self) -> RiotUserToken: region=self.Region) - if is_init==False, raise init not finished err """ - if self.__is_init__: + if self.is_init: ret = RiotUserToken(user_id=self.user_id, access_token=self.access_token, entitlements=self.entitlements_token, @@ -316,4 +316,27 @@ def load_cookies(self, path: str) -> None: with open(path, "r") as f: load_cookies = json.loads(f.read()) - self.session.cookies = requests.utils.cookiejar_from_dict(load_cookies) # type: ignore \ No newline at end of file + self.session.cookies = requests.utils.cookiejar_from_dict(load_cookies) # type: ignore + + + +################################################################################################# +# 缓存登录对象 +from ..FileManage import UserAuthCache + +async def cache_auth_object(platfrom:str,key:str,auth:EzAuth) -> None: + # 在data中插入对象 + UserAuthCache['data'][auth.user_id] = {"auth": auth, "2fa": auth.is2fa} + + # 判断缓存的来源 + if platfrom == 'kook': + # 用户id键值不存在,新建key + if key not in UserAuthCache['kook']: + UserAuthCache['kook'][key] = [] + # 如果该账户已经登陆过了,则不进行操作 + if auth.user_id not in UserAuthCache['kook'][key]: + UserAuthCache['kook'][key].append(auth.user_id) # 往用户id缓存list中插入Riot用户的uuid + + elif platfrom == 'api': + # 往缓存键值中插入Riot用户的uuid (api的键值是用户账户,有唯一性,不需弄list) + UserAuthCache['api'][key] = auth.user_id \ No newline at end of file From 2c0e7424de8b33253c2f7cca0cfe3242db4fbfc8 Mon Sep 17 00:00:00 2001 From: musnows Date: Sun, 5 Mar 2023 19:41:58 +0800 Subject: [PATCH 03/31] feat(main): using UserAuthCache for caching EzAuth obj base on riot_user_id --- code/main.py | 737 ++++++++++++++----------------- code/utils/FileManage.py | 23 +- code/utils/valorant/AuthCache.py | 41 ++ code/utils/valorant/EzAuth.py | 23 - code/utils/valorant/Reauth.py | 145 ++++++ 5 files changed, 542 insertions(+), 427 deletions(-) create mode 100644 code/utils/valorant/AuthCache.py create mode 100644 code/utils/valorant/Reauth.py diff --git a/code/main.py b/code/main.py index 9323b24..8045bf2 100644 --- a/code/main.py +++ b/code/main.py @@ -4,7 +4,6 @@ import time import traceback from datetime import datetime, timedelta -from typing import Union import aiohttp import copy import zhconv @@ -17,7 +16,7 @@ from utils import ShopRate, ShopImg, Help, GrantRoles, Translate, BotVip, Other from utils.log import BotLog from utils.log.Logging import _log -from utils.valorant import ValFileUpd +from utils.valorant import ValFileUpd,Reauth,AuthCache from utils.KookApi import (icon_cm, status_active_game, status_active_music, status_delete, bot_offline, upd_card, get_card) from utils.valorant.Val import * @@ -25,7 +24,7 @@ from utils.Gtime import GetTime, GetTimeStampOf8AM # bot的token文件 -from utils.FileManage import config, bot, ApiAuthLog, Save_All_File +from utils.FileManage import config, bot, ApiAuthLog, Save_All_File, Login_Forbidden # 只用来上传图片的bot bot_upimg = Bot(token=config['token']['img_upload_token']) @@ -38,7 +37,6 @@ NOTIFY_NUM = 3 # 非vip用户皮肤提醒栏位 VIP_BG_SIZE = 4 # vip用户背景图片数量限制 RATE_LIMITED_TIME = 180 # 全局登录速率超速等待秒数 -Login_Forbidden = False # 403错误禁止所有用户登录 #记录开机时间 start_time = GetTime() @@ -519,7 +517,7 @@ async def check_vip_img_task(): @bot.command(name="vip-img") -async def check_vip_img_task(msg: Message, *arg): +async def check_vip_img_cmd(msg: Message, *arg): BotLog.logMsg(msg) if msg.author_id == master_id: await check_vip_img() @@ -610,8 +608,8 @@ async def vip_shop_bg_set_s(msg: Message, num: str = "err", *arg): await msg.reply("您尚未自定义商店背景图!") return - num = int(num) - if num < len(VipShopBgDict['bg'][msg.author_id]["background"]): + num = int(num) # type: ignore + if num < len(VipShopBgDict['bg'][msg.author_id]["background"]): # type: ignore try: #打开用户需要切换的图片 bg_vip = Image.open( io.BytesIO(await ShopImg.img_requestor(VipShopBgDict['bg'][msg.author_id]["background"][num]))) @@ -818,10 +816,8 @@ async def vip_time_add(msg: Message, vday: int = 1, *arg): ##################################################################################### # 预加载用户的riot游戏id和玩家uuid(登录后Api获取) -from utils.FileManage import UserRiotName, SkinNotifyDict, EmojiDict, SkinRateDict, ValBundleList +from utils.FileManage import UserRiotName, SkinNotifyDict, EmojiDict, SkinRateDict, ValBundleList,UserAuthCache -# 用来存放auth对象(无法直接保存到文件) -UserAuthDict = {'AP': {}} # 判断夜市有没有开 NightMarketOff = False # 全局的速率限制,如果触发了速率限制的err,则阻止所有用户login @@ -863,12 +859,14 @@ async def check_GloginRate(): #查询当前有多少用户登录了 @bot.command(name="ckau") -async def check_UserAuthDict_len(msg: Message): +async def check_UserAuthCache_len(msg: Message): BotLog.logMsg(msg) - sz = len(UserAuthDict) - res = f"UserAuthDict_len: `{sz}`" - _log.info(res) - await msg.reply(res) + try: + text = f"bot: `{len(UserAuthCache['kook'])}` | api: {len(UserAuthCache['api'])}" + _log.info(text) + await msg.reply(text) + except: + await BotLog.BaseException_Handler("ckau",traceback.format_exc(),msg) # 登录,保存用户的token @@ -876,7 +874,7 @@ async def check_UserAuthDict_len(msg: Message): async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', *arg): _log.info(f"Au:{msg.author_id} {msg.author.username}#{msg.author.identify_num} | /login {apSave}") BotLog.log_bot_user(msg.author_id) #这个操作只是用来记录用户和cmd总数的 - global Login_Forbidden, login_rate_limit, UserRiotName, UserAuthDict + global Login_Forbidden, login_rate_limit, UserRiotName, UserAuthCache if not isinstance(msg, PrivateMessage): # 不是私聊的话,禁止调用本命令 await msg.reply(f"为了避免您的账户信息泄漏,请「私聊」使用本命令!\n用法:`/login 账户 密码`") return @@ -886,6 +884,8 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', elif Login_Forbidden: await Login_Forbidden_send(msg) return + # 提前定义,避免报错 + send_msg = {'msg_id':''} try: # 1.检查全局登录速率 await check_GloginRate() # 无须接收此函数返回值,直接raise @@ -896,10 +896,11 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', # 3.登录,获取用户的token auth = EzAuth() resw = await auth.authorize(user, passwd) - UserAuthDict[msg.author_id] = {"auth": auth, "2fa": auth.is2fa} # 将对象插入 - # 3.1 没有成功,是2fa用户,需要执行/tfa命令 + # 3.1 将对象插入缓存队列 + await AuthCache.cache_auth_object('kook',msg.author_id,auth) + # 3.2 没有成功,是2fa用户,需要执行/tfa命令 if not resw['status']: - cm1 = await get_card("登录中断,需要提供邮箱验证码", "请使用「/tfa 验证码」提供邮箱验证码", icon_cm.val_logo_gif) + cm1 = await get_card("请使用「/tfa 验证码」提供邮箱验证码","登录中断,需要提供邮箱验证码",icon_cm.whats_that) await upd_card(send_msg['msg_id'], cm1, channel_type=msg.channel_type) _log.info(f"login | 2fa user | Au:{msg.author_id}") # 打印信息 return @@ -920,10 +921,10 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', # 6.用户自己选择是否保存账户密码,默认是不保存的;2fa用户也不会保存 if apSave == 'save' and (not auth.is2fa): - # 不在这里再新建(用于保存阿狸使用账户密码重登的时间,告知用户) + # 不在dict里面,再新建(用于保存阿狸使用账户密码重登的时间,告知用户) if msg.author_id not in UserPwdReauth: UserPwdReauth[msg.author_id] = {} - UserAuthDict['AP'][msg.author_id] = {'a': user, 'p': passwd} + UserAuthCache['acpw'][auth.user_id] = {'a': user, 'p': passwd} info_text += "\n您选择了保存账户密码,cookie失效后将使用账户密码重登" # 7.发送登录成功的信息 @@ -932,7 +933,7 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', # 8.全部都搞定了,打印登录信息日志 _log.info( - f"[{GetTime()}] [Login] Au:{msg.author_id} - {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" + f"Login | Au:{msg.author_id} | {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" ) except EzAuthExp.AuthenticationError as result: _log.error(f"login AuthenticationError | Au:{msg.author_id} | {result}") @@ -995,19 +996,25 @@ async def tfa_verify(msg: Message, tfa: str, *arg): send_msg = {'msg_id': ''} try: # 1. 先判断用户是否在dict里面 - if msg.author_id not in UserAuthDict: - await msg.reply("您不在UserAuthDict中,请先执行login!") + if msg.author_id not in UserAuthCache['tfa']: + await msg.reply("您不在UserAuthCache中,请先执行login!") return # 1.1 在,且auth对象是ezauth - auth = UserAuthDict[msg.author_id]['auth'] + auth = await AuthCache.get_tfa_auth_object(msg.author_id) assert isinstance(auth, EzAuth) + # 1.2 判断这个auth是否已经初始化完毕了,如果是,则不执行后续操作 + if auth.is_init: # 初始化完毕 + await msg.reply(await get_card(f"玩家「{auth.Name}#{auth.Tag}」已登录,无须执行本命令","若有问题,请联系开发者",icon_cm.correct)) + return # 2.发送提示信息 cm0 = await get_card(f"两步验证码「{tfa}」获取成功", "小憩一下,很快就好啦!", icon_cm.val_logo_gif) send_msg = await msg.reply(cm0) #记录消息id用于后续更新 # 3.进行邮箱验证 - res = await auth.email_verfiy(tfa) + await auth.email_verfiy(tfa) + # 3.1 验证成功,进行缓存 + await AuthCache.cache_auth_object('kook',msg.author_id,auth) # 4.成功 UserRiotName[msg.author_id] = {'auth_user_id': auth.user_id, 'GameName': auth.Name, 'TagLine': auth.Tag} text = f"登陆成功!欢迎回来,{UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" @@ -1031,23 +1038,29 @@ async def tfa_verify(msg: Message, tfa: str, *arg): async def logout(msg: Message, *arg): BotLog.logMsg(msg) try: - global UserRiotName, UserAuthDict - if msg.author_id not in UserAuthDict: #使用not in判断是否不存在 + global UserRiotName, UserAuthCache + # 1.用户如果没有登录,那也没必要logout + if msg.author_id not in UserAuthCache['kook']: cm = await get_card("您尚未登陆!无须logout", "阿巴阿巴?", icon_cm.whats_that) await msg.reply(cm) return log_text = f"[Logout] Au:{msg.author_id} - {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" - # 如果id存在,删除auth对象 - # 因为UserRiotName里面只存放了用户游戏名/uuid,且不作为是否登录的判断,所以不需要删除 - del UserAuthDict[msg.author_id] - # 如果是vip用户,删除本地保存的cookie + # 2.如果id存在,删除auth对象; 删除UserRiotName里面存放的用户游戏名/uuid + # 2.1 删除对象 + riot_user_id_list = UserAuthCache['kook'][msg.author_id] + for u in riot_user_id_list: + del UserAuthCache['data'][u] + # 2.2 删除键值 + del UserRiotName[msg.author_id] + del UserAuthCache['kook'][msg.author_id] + # 3.如果是vip用户,删除本地保存的cookie cookie_path = f"./log/cookie/{msg.author_id}.cke" - # 判断路径是否存在,存在直接删除 + # 3.1 判断路径是否存在,存在直接删除 if os.path.exists(cookie_path): os.remove(cookie_path) # 删除文件 log_text += " - rm cookie file" - + # 4.成功,发提示信息 text = f"已退出登录!下次再见,{UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" cm = await get_card(text, "你会回来的,对吗?", icon_cm.crying_crab) await msg.reply(cm) @@ -1077,102 +1090,6 @@ async def login_acpw(msg: Message, *arg): await BotLog.BaseException_Handler("login-ap", traceback.format_exc(), msg) -# cookie重新登录 -async def login_reauth(kook_user_id: str): - base_print = f"Au:{kook_user_id} | " - _log.info(base_print + "auth_token failure,trying reauthorize()") - global UserAuthDict, UserRiotName - auth = UserAuthDict[kook_user_id]['auth'] - assert isinstance(auth, EzAuth) - #用cookie重新登录,会返回一个bool是否成功 - ret = await auth.reauthorize() - if ret: #会返回一个bool是否成功,成功了重新赋值 - UserAuthDict[kook_user_id]['auth'] = auth - _log.info(base_print + "reauthorize() Successful!") - else: # cookie重新登录失败 - _log.info(base_print + "reauthorize() Failed! T-T") # 失败打印 - # 有保存账户密码+不是邮箱验证用户 - if kook_user_id in UserAuthDict['AP'] and (not UserAuthDict[kook_user_id]['2fa']): - auth = EzAuth() # 用账户密码重新登录 - resw = await auth.authorize(UserAuthDict['AP'][kook_user_id]['a'], UserAuthDict['AP'][kook_user_id]['p']) - if not resw['status']: # 需要邮箱验证,那就直接跳出 - _log.info(base_print + "authorize() need 2fa, return False") - return False - # 更新auth对象 - UserAuthDict[kook_user_id]['auth'] = auth - auth.save_cookies(f"./log/cookie/{kook_user_id}.cke") # 保存cookie - # 记录使用账户密码重新登录的时间 - UserPwdReauth[kook_user_id][GetTime()] = UserRiotName[kook_user_id]['GameName'] - _log.info(base_print + "authflow() by AP") - ret = True - # 正好返回auth.reauthorize()的bool - return ret - - -# 判断是否需要重新获取token -async def check_reauth(def_name: str = "", msg: Union[Message, str] = ''): - """ - return value: - - True: no need to reauthorize / get `user_id` as params & reauhorize success - - False: unkown err / reauthorize failed - - send_msg(dict): get `Message` as params & reauhorize success - """ - user_id = "[ERR!]" #先给userid赋值,避免下方打印的时候报错(不出意外是会被下面的语句修改的) - try: - user_id = msg if isinstance(msg, str) else msg.author_id #如果是str就直接用 - auth = UserAuthDict[user_id]['auth'] - assert isinstance(auth, EzAuth) - # 直接从对象中获取user的Token - riotUser = auth.get_riotuser_token() - resp = await fetch_valorant_point(riotUser) - # resp={'httpStatus': 400, 'errorCode': 'BAD_CLAIMS', 'message': 'Failure validating/decoding RSO Access Token'} - # 如果没有这个键,会直接报错进except; 如果有这个键,就可以继续执行下面的内容 - test = resp['httpStatus'] - is_msg = isinstance(msg, Message) #判断传入的类型是不是消息 - if is_msg: #如果传入的是msg,则提示用户 - text = f"获取「{def_name}」失败!正在尝试重新获取token,您无需操作" - cm = await get_card(text, f"{resp['message']}", icon_cm.im_good_phoniex) - send_msg = await msg.reply(cm) - - # 不管传入的是用户id还是msg,都传userid进入该函数 - ret = await login_reauth(user_id) - if ret == False and is_msg: #没有正常返回,重新获取token失败 - text = f"重新获取token失败,请私聊「/login」重新登录\n" - cm = await get_card(text, "Auto Reauthorize Failed!", icon_cm.crying_crab) - await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) - elif ret == True and is_msg: #正常重新登录,且传过来了消息 - return send_msg #返回发送出去的消息(用于更新) - - return ret #返回是否成功重登 - - except client_exceptions.ClientResponseError as result: - err_str = f"[Check_re_auth] aiohttp ERR!\n```\n{traceback.format_exc()}\n```\n" - if 'auth.riotgames.com' and '403' in str(result): - global Login_Forbidden - Login_Forbidden = True - err_str += f"[Check_re_auth] 403 err! set Login_Forbidden = True" - elif '404' in str(result): - err_str += f"[Check_re_auth] 404 err! network err, try again" - else: - err_str += f"[Check_re_auth] Unkown aiohttp ERR!" - - _log.error(err_str) - await bot.client.send(debug_ch, err_str) - return False - # 用户在EzAuth初始化完毕之前调用了其他命令 - except EzAuthExp.InitError as result: - _log.error(f"Au:{user_id} | EzAuth used before init") - return False - except Exception as result: - if 'httpStatus' in str(result): - _log.info(f"Au:{user_id} | No need to reauthorize [{result}]") - return True - else: - _log.exception("Unkown Exception occur") - await bot.client.send(debug_ch, f"[Check_re_auth] Unkown ERR!\n{traceback.format_exc()}") - return False - - # 计算当前时间和明天早上8点的差值 def shop_time_remain(): today = datetime.today().strftime("%y-%m-%d %H:%M:%S") #今天日期+时间 @@ -1202,51 +1119,66 @@ def is_CacheLatest(kook_user_id: str): # 获取每日商店的命令 @bot.command(name='shop', aliases=['SHOP']) -async def get_daily_shop(msg: Message, *arg): +async def get_daily_shop(msg: Message,index:str = "0",*arg): BotLog.logMsg(msg) - if arg != (): - await msg.reply(f"`/shop`命令不需要参数。您是否想`/login`?") - return - elif Login_Forbidden: + if Login_Forbidden: await Login_Forbidden_send(msg) return - send_msg = None + # index参数是下标,应该为一个正整数 + elif "-" in index or "." in index: + await msg.reply(f"index 参数错误,请使用「/login-l」查看您需要查询的商店账户,并指定正确的编号(默认为0,即第一个账户)") + return + # 提前初始化变量 + send_msg = {'msg_id':''} + resp = "" try: - # 如果用户不在Authdict里面,代表没有登录,直接退出 - if msg.author_id not in UserAuthDict: - cm = await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that) - await msg.reply(cm) + # 1.如果用户不在Authdict里面,代表没有登录,直接退出 + if msg.author_id not in UserAuthCache['kook']: + await msg.reply(await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that)) return - reau = await check_reauth("每日商店", msg) - if reau == False: return #如果为假说明重新登录失败 - # 重新获取token成功,从dict中获取玩家id + # 2.判断下标是否合法,默认下标为0 + _index = int(index) + # 2.2 下标非法(越界),发送报错信息 + if _index >= len(UserAuthCache['kook'][msg.author_id]): + await msg.reply(await get_card("您提供的下标超出范围!请检查您的输入,或不提供本参数","使用「/login-l」查看您当前登录的账户",icon_cm.dont_do_that)) + return + # 2.2 下标合法,获取需要进行操作的Riot用户id + riot_user_id = UserAuthCache['kook'][msg.author_id][_index] + # 3.执行cookie重登 + reau = await Reauth.check_reauth("每日商店",msg.author_id,riot_user_id,debug_ch,msg) + if reau == False: return # 如果为假说明重新登录失败,退出 + # 3.1 重新获取token成功,从dict中获取玩家id player_gamename = f"{UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" - # 获取玩家id成功了,再提示正在获取商店 + # 3.2 获取玩家id成功了,再提示正在获取商店 cm = await get_card("正在尝试获取您的每日商店", "阿狸正在施法,很快就好啦!", icon_cm.duck) - if isinstance(reau, dict): #如果传过来的是一个dict,说明重新登录成功且发送了消息 + # 3.2.1 如果reauth函数return的是dict,说明重新登录成功且发送了消息,则更新卡片 + if isinstance(reau, dict): await upd_card(reau['msg_id'], cm, channel_type=msg.channel_type) send_msg = reau + # 3.2.1 不是dict,说明不需要重登,也没有发送提示信息 else: send_msg = await msg.reply(cm) #记录消息id用于后续更新 - # 计算获取每日商店要多久 + # 4.开始获取每日商店 + # 4.1 计算获取每日商店要多久 + log_time = "" start = time.perf_counter() #开始计时 - # 从auth的dict中获取对象 - auth = UserAuthDict[msg.author_id]['auth'] + # 4.2 从auth的dict中获取对象 + auth = UserAuthCache['data'][riot_user_id]['auth'] assert isinstance(auth, EzAuth) riotUser = auth.get_riotuser_token() - # 开始判断是否需要获取商店 - log_time = "" + # 4.3 开始判断是否需要获取商店(是否有缓存) a_time = time.time() global UserShopDict, VipShopBgDict - # UserShopDict每天早八会被清空,如果用户在里面且玩家id一样,那么说明已经获取过当日商店了 + # 4.3.1 UserShopDict每天早八会被清空,如果用户在里面且玩家id一样,那么说明已经获取过当日商店了 if msg.author_id in UserShopDict and isSame_Authuuid(msg): #直接使用本地已有的当日商店 list_shop = UserShopDict[msg.author_id]["SkinsPanelLayout"]["SingleItemOffers"] # 商店刷出来的4把枪 timeout = shop_time_remain() # 通过当前时间计算商店剩余时间 log_time += f"[Dict_shop] {format(time.time()-a_time,'.4f')} " + # 4.3.2 本地没有,api获取每日商店 else: - resp = await fetch_daily_shop(riotUser) #本地没有,api获取每日商店 + resp = await fetch_daily_shop(riotUser) list_shop = resp["SkinsPanelLayout"]["SingleItemOffers"] # 商店刷出来的4把枪 timeout = resp["SkinsPanelLayout"]["SingleItemOffersRemainingDurationInSeconds"] # 剩余时间 timeout = time.strftime("%H:%M:%S", time.gmtime(timeout)) # 将秒数转为标准时间 @@ -1256,19 +1188,19 @@ async def get_daily_shop(msg: Message, *arg): UserShopDict[msg.author_id]["SkinsPanelLayout"] = resp["SkinsPanelLayout"] log_time += f"[Api_shop] {format(time.time()-a_time,'.4f')} " - # 开始画图 - draw_time = time.time() #计算画图需要的时间 - is_vip = await BotVip.vip_ck(msg.author_id) #判断用户是否为VIP + # 5.开始画图 + draw_time = time.time() # 计算画图需要的时间 + is_vip = await BotVip.vip_ck(msg.author_id) # 判断用户是否为VIP img_ret = {'status': True, 'value': None} upload_flag = True - # 初始化为一个展示错误的图片 + # 5.1 初始化商店图片的url为一个展示错误的图片 dailyshop_img_src = "https://img.kookapp.cn/assets/2023-02/5UxA8W06B70e803m.png" - # 如果是vip而且path存在,背景图/登录用户没有更改过,图片缓存时间正确 + # 5.1.1 如果是vip而且path存在,背景图/登录用户没有更改过,图片缓存时间正确 if is_vip and is_CacheLatest(msg.author_id): - upload_flag = False #有缓存图,直接使用本地已有链接 + upload_flag = False # 有缓存图,直接使用本地已有链接 dailyshop_img_src = VipShopBgDict['cache'][msg.author_id]['cache_img'] - elif is_vip: # 本地缓存路径不存在,或者缓存过期 - play_currency = await fetch_vp_rp_dict(riotUser) #获取用户的vp和rp + elif is_vip: # 5.1.2 本地缓存路径不存在,或者缓存过期 + play_currency = await fetch_vp_rp_dict(riotUser) # 获取用户的vp和rp # 如果没有设置背景图,那就设置为err background_img = ('err' if msg.author_id not in VipShopBgDict['bg'] else VipShopBgDict['bg'][msg.author_id]["background"][0]) @@ -1276,7 +1208,7 @@ async def get_daily_shop(msg: Message, *arg): vp=play_currency['vp'], rp=play_currency['rp'], bg_img_src=background_img) - else: # 普通用户 + else: # 5.1.3 普通用户 # 判断是否有缓存命中 cache_ret = await ShopRate.query_ShopCache(skinlist=list_shop) if not cache_ret['status']: # 缓存没有命中 @@ -1286,7 +1218,7 @@ async def get_daily_shop(msg: Message, *arg): dailyshop_img_src = cache_ret['img_url'] log_time += "[cache] " - # img_ret 代表是否画图成功,如果是缓存命中,也当成功处理 + # 5.2 img_ret 代表是否画图成功,如果是缓存命中,也当成功处理 if img_ret['status']: bg = img_ret['value'] #获取图片 else: # 出现背景图片违规或其他问题 @@ -1294,16 +1226,16 @@ async def get_daily_shop(msg: Message, *arg): _log.info(f"[GetShopImg] Au:{msg.author_id} | {img_ret['value']}") return - # 获取图片成功,打印画图耗时 + # 5.3 获取图片成功,打印画图耗时 _log.info(log_time + f"- [Drawing] {format(time.time() - draw_time,'.4f')} - [Au] {msg.author_id}") - # 判断是否需要上传,false不需要 + # 5.3.1 判断是否需要上传,false不需要 if upload_flag: - # 上传图片 + # 5.3.2 上传图片 imgByteArr = io.BytesIO() bg.save(imgByteArr, format='PNG') imgByte = imgByteArr.getvalue() dailyshop_img_src = await bot_upimg.client.create_asset(imgByte) # type: ignore - # 如果在bg里面代表有自定义背景图,需更新status + # 5.3.3 如果在bg里面代表有自定义背景图,需更新status if is_vip: if msg.author_id in VipShopBgDict['bg']: VipShopBgDict['bg'][msg.author_id]['status'] = True @@ -1312,10 +1244,10 @@ async def get_daily_shop(msg: Message, *arg): else: # 非vip,更新缓存 await ShopRate.update_ShopCache(skinlist=list_shop, img_url=dailyshop_img_src) - # 结束shop的总计时,结果为浮点数,保留两位小数 + # 6.结束shop的总计时,结果为浮点数,保留两位小数 shop_using_time = format(time.perf_counter() - start, '.2f') - # 商店的图片 卡片 + # 7.商店的图片 卡片 cm = CardMessage() c = Card(color='#fb4b57') c.append(Module.Header(f"玩家 {player_gamename} 的每日商店!")) @@ -1323,13 +1255,13 @@ async def get_daily_shop(msg: Message, *arg): c.append(Module.Container(Element.Image(src=dailyshop_img_src))) cm.append(c) - # 皮肤评分和评价卡片,用户不在rate_err_user里面才显示(在评论中发表违规言论的用户) + # 8.皮肤评分和评价卡片,用户不在rate_err_user里面才显示(在评论中发表违规言论的用户) if not check_rate_err_user(msg.author_id): cm = await ShopRate.get_shop_rate_cm(list_shop, msg.author_id, cm=cm) end = time.perf_counter() #计算获取评分的时间 - # 更新消息 + # 9.更新消息 await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) - # 结束,打印结果 + # 10.结束,打印结果 _log.info(f"Au:{msg.author_id} | daily_shop reply successful [{shop_using_time}/{format(end - start, '.2f')}]") except requester.HTTPRequester.APIRequestFailed as result: #卡片消息发送失败 await BotLog.APIRequestFailed_Handler("shop", traceback.format_exc(), msg, bot, cm, send_msg=send_msg) @@ -1346,11 +1278,11 @@ async def get_daily_shop(msg: Message, *arg): # 获取夜市 @bot.command(name='night', aliases=['NIGHT']) -async def get_night_market(msg: Message, *arg): +async def get_night_market(msg: Message,index:str="0", *arg): BotLog.logMsg(msg) global NightMarketOff - if arg != (): - await msg.reply(f"`/night`命令不需要参数。您是否想`/login`?") + if "-" in index or "." in index: + await msg.reply(f"index 参数错误,请使用「/login-l」查看您需要查询的账户,并指定正确的编号(默认为0,即第一个账户)") return elif Login_Forbidden: await Login_Forbidden_send(msg) @@ -1359,71 +1291,80 @@ async def get_night_market(msg: Message, *arg): await msg.reply(f"夜市暂未开放!请等开放了之后再使用本命令哦~") return - send_msg = None + send_msg = {'msg_id':''} try: - if msg.author_id in UserAuthDict: - reau = await check_reauth("夜市", msg) - if reau == False: return #如果为假说明重新登录失败 + # 1.判断是否已经登录 + if msg.author_id not in UserAuthCache['kook']: + await msg.reply(await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that)) + return + + # 2.判断下标是否合法,默认下标为0 + _index = int(index) + # 2.2 下标非法(越界),发送报错信息 + if _index >= len(UserAuthCache['kook'][msg.author_id]): + await msg.reply(await get_card("您提供的下标超出范围!请检查您的输入,或不提供本参数","使用「/login-l」查看您当前登录的账户",icon_cm.dont_do_that)) + return + # 2.2 下标合法,获取需要进行操作的Riot用户id + riot_user_id = UserAuthCache['kook'][msg.author_id][_index] + # 3.执行cookie重登 + reau = await Reauth.check_reauth("夜市",msg.author_id,riot_user_id,debug_ch,msg) + if reau == False: return #如果为假说明重新登录失败 - # 重新获取token成功了再提示正在获取夜市 - cm0 = await get_card("正在尝试获取您的夜市", "阿狸正在施法,很快就好啦!", icon_cm.duck) - if isinstance(reau, dict): #如果传过来的是一个dict,说明重新登录成功且发送了消息 - await upd_card(reau['msg_id'], cm0, channel_type=msg.channel_type) - send_msg = reau - else: - send_msg = await msg.reply(cm0) #记录消息id用于后续更新 + # 重新获取token成功了再提示正在获取夜市 + cm0 = await get_card("正在尝试获取您的夜市", "阿狸正在施法,很快就好啦!", icon_cm.duck) + if isinstance(reau, dict): #如果传过来的是一个dict,说明重新登录成功且发送了消息 + await upd_card(reau['msg_id'], cm0, channel_type=msg.channel_type) # type: ignore + send_msg = reau + else: + send_msg = await msg.reply(cm0) #记录消息id用于后续更新 - #计算获取时间 - start = time.perf_counter() #开始计时 - auth = UserAuthDict[msg.author_id]['auth'] - assert isinstance(auth, EzAuth) - riotUser = auth.get_riotuser_token() - # 获取商店(夜市是相同接口) - resp = await fetch_daily_shop(riotUser) - if "BonusStore" not in resp: # 如果没有这个字段,说明夜市取消了 - NightMarketOff = False - cm1 = await get_card("嗷~ 夜市已关闭 或 Api没能正确返回结果", "night_market closed! 'BonusStore' not in resp", - icon_cm.duck) - await upd_card(send_msg['msg_id'], cm1, channel_type=msg.channel_type) # 更新消息 - _log.error("night_market closed! | 'BonusStore' not in resp") - return + # 计算获取时间 + start = time.perf_counter() #开始计时 + auth = UserAuthCache['data'][riot_user_id]['auth'] + assert isinstance(auth, EzAuth) + riotUser = auth.get_riotuser_token() + # 获取商店(夜市是相同接口) + resp = await fetch_daily_shop(riotUser) + if "BonusStore" not in resp: # 如果没有这个字段,说明夜市取消了 + NightMarketOff = False + cm1 = await get_card("嗷~ 夜市已关闭 或 Api没能正确返回结果", "night_market closed! 'BonusStore' not in resp", + icon_cm.duck) + await upd_card(send_msg['msg_id'], cm1, channel_type=msg.channel_type) # 更新消息 + _log.error("night_market closed! | 'BonusStore' not in resp") + return - timeout = resp["BonusStore"]["BonusStoreRemainingDurationInSeconds"] #剩余时间 - timeout = time.strftime("%d %H:%M:%S", time.gmtime(timeout)) #将秒数转为标准时间 + timeout = resp["BonusStore"]["BonusStoreRemainingDurationInSeconds"] #剩余时间 + timeout = time.strftime("%d %H:%M:%S", time.gmtime(timeout)) #将秒数转为标准时间 - cm = CardMessage() - c = Card(color='#fb4b57') - c.append( - Module.Header( - f"玩家 {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']} 的夜市!")) - for Bonus in resp["BonusStore"]["BonusStoreOffers"]: - skin = fetch_skin_bylist(Bonus["Offer"]["OfferID"]) - skin_icon = skin["data"]['levels'][0]["displayIcon"] - skin_name = skin["data"]["displayName"] - for it in ValSkinList['data']: #查找皮肤的等级 - if it['levels'][0]['uuid'] == Bonus["Offer"]["OfferID"]: - res_iters = fetch_item_iters_bylist(it['contentTierUuid']) - break - iter_emoji = ValItersEmoji[res_iters['data']['devName']] - basePrice = Bonus["Offer"]["Cost"]["85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741"] #原价 - discPercent = Bonus["DiscountPercent"] # 打折百分比 - discPrice = Bonus["DiscountCosts"]["85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741"] #打折后的价格 - text = f"(emj){res_iters['data']['uuid']}(emj)[{iter_emoji}] {skin_name}\n" - text += f"(emj)vp(emj)[3986996654014459/qGVLdavCfo03k03k] {discPrice} ~~{basePrice}~~ {discPercent}%Off" - #c.append(Module.Section(Element.Text(text, Types.Text.KMD), Element.Image(src=skin_icon, size='sm'))) - c.append(Module.Section(Element.Text(text, Types.Text.KMD))) - - # 结束计时 - using_time = format(time.perf_counter() - start, '.2f') - c.append(Module.Context(f"失效时间剩余: {timeout} 本次查询用时: {using_time}s")) - cm.append(c) - # 更新消息 - await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) - _log.info(f"Au:{msg.author_id} | night_market reply success [{using_time}]") - else: - cm = await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that) - await msg.reply(cm) - return + cm = CardMessage() + c = Card(color='#fb4b57') + c.append( + Module.Header( + f"玩家 {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']} 的夜市!")) + for Bonus in resp["BonusStore"]["BonusStoreOffers"]: + skin = fetch_skin_bylist(Bonus["Offer"]["OfferID"]) + skin_icon = skin["data"]['levels'][0]["displayIcon"] + skin_name = skin["data"]["displayName"] + for it in ValSkinList['data']: #查找皮肤的等级 + if it['levels'][0]['uuid'] == Bonus["Offer"]["OfferID"]: + res_iters = fetch_item_iters_bylist(it['contentTierUuid']) + break + iter_emoji = ValItersEmoji[res_iters['data']['devName']] + basePrice = Bonus["Offer"]["Cost"]["85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741"] #原价 + discPercent = Bonus["DiscountPercent"] # 打折百分比 + discPrice = Bonus["DiscountCosts"]["85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741"] #打折后的价格 + text = f"(emj){res_iters['data']['uuid']}(emj)[{iter_emoji}] {skin_name}\n" + text += f"(emj)vp(emj)[3986996654014459/qGVLdavCfo03k03k] {discPrice} ~~{basePrice}~~ {discPercent}%Off" + #c.append(Module.Section(Element.Text(text, Types.Text.KMD), Element.Image(src=skin_icon, size='sm'))) + c.append(Module.Section(Element.Text(text, Types.Text.KMD))) + + # 结束计时 + using_time = format(time.perf_counter() - start, '.2f') + c.append(Module.Context(f"失效时间剩余: {timeout} 本次查询用时: {using_time}s")) + cm.append(c) + # 更新消息 + await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) + _log.info(f"Au:{msg.author_id} | night_market reply success [{using_time}]") except requester.HTTPRequester.APIRequestFailed as result: #卡片消息发送失败 await BotLog.APIRequestFailed_Handler("night", traceback.format_exc(), msg, bot, cm, send_msg=send_msg) @@ -1447,35 +1388,39 @@ async def open_night_market(msg: Message, *arg): else: await msg.reply("您没有权限执行本命令!") except: - err_str = f"ERR! [{GetTime()}] open-nm\n```\n{traceback.format_exc()}\n```" - await msg.reply(f"{err_str}") - _log.exception("Exception occur") + await BotLog.BaseException_Handler("open-nm", traceback.format_exc(), msg) # 获取玩家卡面(添加point的别名) @bot.command(name='uinfo', aliases=['point', 'UINFO', 'POINT']) async def get_user_card(msg: Message, *arg): BotLog.logMsg(msg) - if arg != (): - await msg.reply(f"`/uinfo`命令不需要参数。您是否想`/login`?") - return - elif Login_Forbidden: + if Login_Forbidden: await Login_Forbidden_send(msg) return - send_msg = None + # 初始化变量 + send_msg = {'msg_id':''} + cm = CardMessage() try: - if msg.author_id in UserAuthDict: - reau = await check_reauth("玩家装备/通行证", msg) #重新登录 + # 1.判断用户是否登录 + if msg.author_id not in UserAuthCache['kook']: + await msg.reply(await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that)) + return + + # 2.uinfo直接使用for循环来获取不同用户的信息 + for riot_user_id in UserAuthCache['kook'][msg.author_id]: + # 执行cookie重登 + reau = await Reauth.check_reauth("玩家信息",msg.author_id,riot_user_id,debug_ch,msg) if reau == False: return #如果为假说明重新登录失败 cm = await get_card("正在尝试获取您的 玩家卡面/VP/R点", "阿狸正在施法,很快就好啦!", icon_cm.rgx_card) - if isinstance(reau, dict): #如果传过来的是一个dict,说明重新登录成功且发送了消息 + if isinstance(reau, dict): # 如果传过来的是一个dict,说明重新登录成功且发送了消息 await upd_card(reau['msg_id'], cm, channel_type=msg.channel_type) send_msg = reau else: # 如果不需要重新登录,则直接发消息 send_msg = await msg.reply(cm) #记录消息id用于后续更新 - auth = UserAuthDict[msg.author_id]['auth'] + auth = UserAuthCache['data'][riot_user_id]['auth'] assert isinstance(auth, EzAuth) riotUser = auth.get_riotuser_token() resp = await fetch_player_loadout(riotUser) #获取玩家装备栏 @@ -1483,17 +1428,17 @@ async def get_user_card(msg: Message, *arg): player_title = await fetch_title_uuid(resp['Identity']['PlayerTitleID']) #玩家称号id if 'data' not in player_card or player_card['status'] != 200: player_card = {'data': {'wideArt': 'https://img.kookapp.cn/assets/2022-09/PDlf7DcoUH0ck03k.png'}} - _log.error(f"ERR![player_card] Au:{msg.author_id} uuid:{resp['Identity']['PlayerCardID']}") + _log.warning(f"player_card | Au:{msg.author_id} | uuid:{resp['Identity']['PlayerCardID']}") if 'data' not in player_title or player_title['status'] != 200: player_title = { 'data': { "displayName": f"未知玩家卡面uuid!\nUnknow uuid: `{resp['Identity']['PlayerTitleID']}`" } } - _log.error(f"ERR![player_title] Au:{msg.author_id} uuid:{resp['Identity']['PlayerTitleID']}") + _log.warning(f"player_title | Au:{msg.author_id} | uuid:{resp['Identity']['PlayerTitleID']}") # 可能遇到全新账户(没打过游戏)的情况 if resp['Guns'] == None or resp['Sprays'] == None: - cm = await get_card(f"状态错误!您是否登录了一个全新的账户?", f"card: `{player_card}`\ntitle: `{player_title}`", + cm = await get_card(f"状态错误!您是否登录了一个全新(没上过号)账户?", f"card: `{player_card}`\ntitle: `{player_title}`", icon_cm.whats_that) await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) return @@ -1504,7 +1449,6 @@ async def get_user_card(msg: Message, *arg): player_level_xp = resp["Progress"]["XP"] # 玩家等级经验值 last_fwin = resp["LastTimeGrantedFirstWin"] # 上次首胜时间 next_fwin = resp["NextTimeFirstWinAvailable"] # 下次首胜重置 - cm = CardMessage() c = Card(color='#fb4b57') c.append( Module.Header( @@ -1522,18 +1466,14 @@ async def get_user_card(msg: Message, *arg): text += f"(emj)vp(emj)[3986996654014459/qGVLdavCfo03k03k] VP {resp['vp']}\n" c.append(Module.Section(Element.Text(text, Types.Text.KMD))) cm.append(c) - await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) - _log.info(f"Au:{msg.author_id} | uinfo reply successful!") - - else: - cm = await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that) - await msg.reply(cm) - return + + # 多个账户都获取完毕,输出结果 + await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) + _log.info(f"Au:{msg.author_id} | uinfo reply successful!") - except requester.HTTPRequester.APIRequestFailed as result: #卡片消息发送失败 + except requester.HTTPRequester.APIRequestFailed as result: # 卡片消息发送失败 await BotLog.APIRequestFailed_Handler("uinfo", traceback.format_exc(), msg, bot, cm, send_msg=send_msg) except Exception as result: - err_str = f"ERR! [{GetTime()}] uinfo\n```\n{traceback.format_exc()}\n```" if "Identity" in str(result) or "Balances" in str(result): _log.exception("Exception occur") cm2 = await get_card(f"键值错误,需要重新登录", f"KeyError:{result}, please re-login", icon_cm.lagging) @@ -1582,42 +1522,42 @@ async def get_bundle(msg: Message, *arg): await msg.reply(f"未能查找到结果,请检查您的皮肤名拼写") _log.info(f"Au:{msg.author_id} | get_bundle failed! Can't find {name}") except Exception as result: - err_str = f"ERR! [{GetTime()}] get_bundle\n```\n{traceback.format_exc()}\n```" - _log.exception("Exception occur") - await msg.reply(err_str) - await bot.client.send(debug_ch, err_str) + await BotLog.BaseException_Handler("bundle", traceback.format_exc(), msg) # 设置rate的错误用户 @bot.command(name='ban-r') async def set_rate_err_user(msg: Message, user_id: str): - global SkinRateDict - if msg.author_id != master_id: - await msg.reply(f"您没有权限执行此命令!") - return - if user_id in SkinRateDict['err_user']: - await msg.reply(f"该用户已在SkinRateDict['err_user']列表中") - elif user_id in SkinRateDict['data']: - for skin, info in SkinRateDict['data'][user_id].items(): - # 找到这条评论,将其删除 - if not await ShopRate.remove_UserRate(skin, user_id): - await msg.reply(f"Au:{user_id} 删除 {skin} [{info['name']}] 错误") - - # 删除完该用户的所有评论之后,将其放入err_user - temp_user = copy.deepcopy(SkinRateDict['data'][user_id]) - del SkinRateDict['data'][user_id] - SkinRateDict['err_user'][user_id] = temp_user - await msg.reply(f"用户 {user_id} 已被加入SkinRateDict['err_user']列表") - _log.info(f"[rate_err_user] add Au:{user_id} | file save success") - - -# 每月1日删除用户 + BotLog.logMsg(msg) + try: + global SkinRateDict + if msg.author_id != master_id: + await msg.reply(f"您没有权限执行此命令!") + return + + if user_id in SkinRateDict['err_user']: + await msg.reply(f"该用户已在SkinRateDict['err_user']列表中") + elif user_id in SkinRateDict['data']: + for skin, info in SkinRateDict['data'][user_id].items(): + # 找到这条评论,将其删除 + if not await ShopRate.remove_UserRate(skin, user_id): + await msg.reply(f"Au:{user_id} 删除 {skin} [{info['name']}] 错误") + + # 删除完该用户的所有评论之后,将其放入err_user + temp_user = copy.deepcopy(SkinRateDict['data'][user_id]) + del SkinRateDict['data'][user_id] + SkinRateDict['err_user'][user_id] = temp_user + await msg.reply(f"用户 {user_id} 已被加入SkinRateDict['err_user']列表") + _log.info(f"rate_err_user | add Au:{user_id} | file saved") + except Exception as result: + await BotLog.BaseException_Handler("bundle", traceback.format_exc(), msg) + +# 每月1日删除违规用户 @bot.task.add_cron(day=1, timezone="Asia/Shanghai") async def clear_rate_err_user(): global SkinRateDict SkinRateDict['err_user'] = {} - #写入文件 - SkinRateDict.save() + SkinRateDict.save()# 写入文件 _log.info(f"[BOT.TASK] clear_rate_err_user") @@ -1840,7 +1780,7 @@ async def add_skin_notify(msg: Message, *arg): return #用户没有登录 - if msg.author_id not in UserAuthDict: + if msg.author_id not in UserAuthCache['kook']: cm = await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that) await msg.reply(cm) return @@ -1966,12 +1906,12 @@ async def delete_skin_notify(msg: Message, uuid: str = "err", *arg): except Exception as result: await BotLog.BaseException_Handler("notify-del", traceback.format_exc(), msg, debug_send=debug_ch) - + #独立函数,为了封装成命令+定时 async def auto_skin_notify(): global SkinNotifyDict, SkinRateDict, UserShopDict, VipShopBgDict try: - _log.info(f"[BOT.TASK.NOTIFY] Start") #开始的时候打印一下 + _log.info(f"Start") #开始的时候打印一下 UserShopDict = {} #清空用户的商店 #清空昨日最好/最差用户的皮肤表 SkinRateDict["kkn"] = copy.deepcopy(SkinRateDict["cmp"]) @@ -1981,24 +1921,33 @@ async def auto_skin_notify(): SkinRateDict["cmp"]["worse"]["rating"] = 100 # 更新数据库中的记录,并重置计数器 await ShopRate.update_ShopCmp(SkinRateDict["kkn"]["best"], SkinRateDict["kkn"]["worse"], 'kook', True) - _log.info(f"[BOT.TASK.NOTIFY] SkinRateDict/UserShopDict clear, sleep(10)") + _log.info(f"SkinRateDict/UserShopDict clear, sleep(10)") #睡10s再开始遍历(避免时间不准) await asyncio.sleep(10) - _log.info(f"[BOT.TASK.NOTIFY] skin_notify Start") + _log.info(f"skin_notify Start") #加载vip用户列表 VipUserD = copy.deepcopy(VipUserDict) err_count = 0 # 设置一个count来计算出错的用户数量 - log_vip_failed = f"[BOT.TASK.NOTIFY] reauthorize failed = VAu: " - log_vip_not_login = f"[BOT.TASK.NOTIFY] not_in UserAuthDict = VAu: " - #先遍历vip用户列表,获取vip用户的商店 + log_vip_failed = f"reauthorize failed = VipAu: " + log_vip_not_login = f"not_in UserAuthCache = VipAu: " + dailyshop_img_src = "https://img.kookapp.cn/assets/2023-02/5UxA8W06B70e803m.png" + # 先遍历vip用户列表,获取vip用户的商店 for vip, uinfo in VipUserD.items(): + riot_user_id = "none" try: user = await bot.client.fetch_user(vip) - if vip in UserAuthDict: - if await check_reauth("定时获取玩家商店", vip) == True: # 重新登录,如果为假说明重新登录失败 - shop_text = "err" - start = time.perf_counter() #开始计时 - auth = UserAuthDict[vip]['auth'] + if vip in UserAuthCache['kook']: + cm = CardMessage() + start = time.perf_counter() # 开始计时这个用户 + for riot_user_id in UserAuthCache['kook'][vip]: + # 重新登录,如果为假说明重新登录失败 + if not await Reauth.check_reauth("早八Vip用户商店", vip,riot_user_id,debug_ch): + log_vip_failed += f"({vip})" + continue + + shop_text = "" # 空字符串认为是False + a_start = time.perf_counter() # 开始计时当前拳头用户 + auth = UserAuthCache['data'][riot_user_id]['auth'] assert isinstance(auth, EzAuth) riotUser = auth.get_riotuser_token() a_time = time.time() # 获取token的时间 @@ -2024,11 +1973,12 @@ async def auto_skin_notify(): play_currency = await fetch_vp_rp_dict(riotUser) #获取用户的vp和rp # 设置用户背景图,如果在则用,否则返回err background_img = ('err' if vip not in VipShopBgDict['bg'] else - VipShopBgDict['bg'][vip]["background"][0]) + VipShopBgDict['bg'][vip]["background"][0]) img_ret = await ShopImg.get_shop_img_169(list_shop, - vp=play_currency['vp'], - rp=play_currency['rp'], - bg_img_src=background_img) + vp=play_currency['vp'], + rp=play_currency['rp'], + bg_img_src=background_img) + # 画图成功 if img_ret['status']: bg_shop = img_ret['value'] bg_shop.save(img_shop_path, format='PNG') @@ -2036,128 +1986,118 @@ async def auto_skin_notify(): log_time += f"- [Drawing] {format(time.time() - draw_time,'.4f')} - [Au] {vip}" _log.info(log_time) dailyshop_img_src = await bot_upimg.client.create_asset(img_shop_path) # 上传图片 - VipShopBgDict['cache'][vip] = { - 'cache_img': dailyshop_img_src, - 'cache_time': time.time() - } # 缓存图片的url+设置图片缓存的时间 + # 缓存图片的url+设置图片缓存的时间 + VipShopBgDict['cache'][vip] = { 'cache_img': dailyshop_img_src,'cache_time': time.time()} + # 更新商店图片status为True,代表用户当天执行/shop命令不需再画图 if vip in VipShopBgDict['bg']: VipShopBgDict['bg'][vip]['status'] = True - else: #如果图片没有正常返回,那就发送文字版本 - shop_text = "" + else: # 如果图片没有正常返回,那就发送文字版本 for skinuuid in list_shop: res_item = fetch_skin_bylist(skinuuid) # 从本地文件中查找 res_price = fetch_item_price_bylist(skinuuid) # 在本地文件中查找 price = res_price['Cost']['85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741'] shop_text += f"{res_item['data']['displayName']} - VP {price}\n" - _log.info(f"[BOT.TASK.NOTIFY] VAu:{vip} | test img err, using text") + _log.info(f"VipAu:{vip} | Riot:{riot_user_id} | img_draw err, using text") # 结束shop的总计时 结果为浮点数,保留两位小数 - using_time = format(time.perf_counter() - start, '.2f') - #卡片消息发送图片或者text - cm = CardMessage() + using_time = format(time.perf_counter() - a_start, '.2f') + # 卡片消息发送图片或者text c = Card(color='#fb4b57') - if shop_text == "err": - c.append( - Module.Header( + c.append(Module.Header( f"早安!玩家 {UserRiotName[vip]['GameName']}#{UserRiotName[vip]['TagLine']} 的每日商店")) - c.append(Module.Context(f"失效时间剩余: {timeout} 本次查询用时: {using_time}s")) + c.append(Module.Context(f"失效时间剩余: {timeout} 本次查询用时: {using_time}s")) + # 如果字符串不为空,代表图片获取失败,需要进行文字提醒 + if not shop_text: c.append(Module.Container(Element.Image(src=dailyshop_img_src))) else: - c.append( - Module.Section( - Element.Text( - f"早安!玩家 {UserRiotName[vip]['GameName']}#{UserRiotName[vip]['TagLine']}", - Types.Text.KMD), Element.Image(src=icon_cm.shot_on_fire, size='sm'))) c.append(Module.Section(Element.Text(shop_text, Types.Text.KMD))) c.append(Module.Context(Element.Text(f"这里有没有你想要的枪皮呢?", Types.Text.KMD))) - # 发送 + # 单个拳头用户的卡片做好了 cm.append(c) - await user.send(cm) - _log.info(f"[BOT.TASK.NOTIFY] VAu:{vip} | notify_shop success [{using_time}]") - else: #reauthorize failed! - log_vip_failed += f"({vip})" + + # 多个拳头账户遍历完毕,发送信息 + using_time = format(time.perf_counter() - start, '.2f') + await user.send(cm) + _log.info(f"VipAu:{vip} | notify_shop success [{using_time}]") else: #不在auth里面说明没有登录 log_vip_not_login += f"({vip})" except Exception as result: #这个是用来获取单个用户的问题的 - err_cur = str(traceback.format_exc()) - err_str = f"ERR![BOT.TASK.NOTIFY] VAu:{vip} vip_user.send\n```\n{err_cur}\n```" - _log.error(err_str) err_count += 1 - if '屏蔽' in err_cur or '无法发起' in err_cur: - SkinNotifyDict['err_user'][vip] = GetTime() - err_str += f"\nadd to ['err_user']" - - await bot.client.send(debug_ch, err_str) #发送消息到debug频道 - #打印vip的log信息 + err_str = f"VipAu:{vip} | Riot:{riot_user_id}\n```\n{traceback.format_exc()}\n```" + err_str+= await Reauth.check_user_send_err(str(result),vip,True) + _log.error(err_str) + # 发送消息到debug频道 + await bot.client.send(debug_ch, err_str) + # 打印vip用户的log信息 _log.info(log_vip_failed) _log.info(log_vip_not_login) # 再遍历所有用户的皮肤提醒 - log_failed = f"[BOT.TASK.NOTIFY] reauthorize failed = Au: " - log_not_login = f"[BOT.TASK.NOTIFY] not_in UserAuthDict = Au: " + log_failed = f"reauthorize failed = Au: " + log_not_login = f"not_in UserAuthCache = Au: " temp_SkinNotifyDict = copy.deepcopy(SkinNotifyDict) for aid, skin in temp_SkinNotifyDict['data'].items(): + riot_user_id = "none" try: user = await bot.client.fetch_user(aid) - if aid in UserAuthDict: - if await check_reauth("定时获取玩家商店", aid) == True: # 重新登录,如果为假说明重新登录失败 - auth = UserAuthDict[aid]['auth'] + if aid in UserAuthCache['kook']: + # 遍历这个用户的拳头商店 + for riot_user_id in UserAuthCache['kook'][aid]: + # 重新登录,如果为假说明重新登录失败 + if not await Reauth.check_reauth("早八用户商店", aid,riot_user_id,debug_ch): + log_failed += f"({aid})" + continue + # 重登成功,进行后续操作 + auth = UserAuthCache['data'][riot_user_id]['auth'] assert isinstance(auth, EzAuth) riotUser = auth.get_riotuser_token() - #vip用户在前面已经获取过商店了 + # vip用户在前面已经获取过商店了,直接在缓存里面取 if await BotVip.vip_ck(aid): list_shop = UserShopDict[aid]["SkinsPanelLayout"]["SingleItemOffers"] - else: + else: # 非vip用户,调用api获取每日商店 resp = await fetch_daily_shop(riotUser) # 获取每日商店 list_shop = resp["SkinsPanelLayout"]["SingleItemOffers"] # 商店刷出来的4把枪 - await ShopRate.check_shop_rate(vip, list_shop) #计算非vip用户商店得分 + await ShopRate.check_shop_rate(aid, list_shop) #计算非vip用户商店得分 # 然后再遍历列表查看是否有提醒皮肤 # 关于下面这一行参考 https://img.kookapp.cn/assets/2022-08/oYbf8PM6Z70ae04s.png target_skin = [val for key, val in skin.items() if key in list_shop] for name in target_skin: - _log.info(f"[BOT.TASK.NOTIFY] Au:{aid} auto_skin_notify = {name}") + _log.info(f"Au:{aid} | Riot:{riot_user_id} | skin_notify | {name}") await user.send(f"[{GetTime()}] 您的每日商店刷出`{name}`了,请上号查看哦!") - # 打印这个说明这个用户正常遍历完了 - _log.info(f"[BOT.TASK.NOTIFY] Au:{aid} auto_skin_notify = None") - else: #reauthorize failed! - log_failed += f"({aid})" + + # 打印这个说明这个用户正常遍历完了 + _log.info(f"Au:{aid} | skin_notify finished") else: #不在auth里面说明没有登录 log_not_login += f"({aid})" except Exception as result: #这个是用来获取单个用户的问题的 - err_cur = str(traceback.format_exc()) - err_str = f"ERR![BOT.TASK.NOTIFY] Au:{aid} user.send\n```\n{err_cur}\n```" err_count += 1 - if '屏蔽' in err_cur or '无法发起' in err_cur: - del SkinNotifyDict['data'][aid] #直接粗暴解决,删除用户 - SkinNotifyDict['err_user'][aid] = GetTime() - err_str += f"\ndel SkinNotifyDict['data'][{aid}],add to ['err_user']" - + err_str = f"Au:{aid} | Riot:{riot_user_id}\n```\n{traceback.format_exc()}\n```" + err_str+= await Reauth.check_user_send_err(str(result),aid,False) _log.error(err_str) await bot.client.send(debug_ch, err_str) # 发送消息到debug频道 - #打印普通用户的log信息 + # 打印普通用户的log信息 _log.info(log_failed) _log.info(log_not_login) - #完成遍历后,如果有删除才重新保存dict + # 完成遍历后,如果有删除才重新保存dict if temp_SkinNotifyDict != SkinNotifyDict: SkinNotifyDict.save() - _log.info("[BOT.TASK.NOTIFY] save SkinNotifyDict") + _log.info("save SkinNotifyDict") # 打印结束信息 - finish_str = f"[BOT.TASK.NOTIFY] Finish at {GetTime()} [ERR {err_count}]" - _log.info(finish_str) #正常完成 + finish_str = f"[NOTIFY.TASK] Finish at {GetTime()} [ERR {err_count}]" + _log.info(finish_str) # 正常完成 await bot.client.send(debug_ch, finish_str) #发送消息到debug频道 except Exception as result: - err_str = f"ERR! [{GetTime()}] auto_skin_notify\n```\n{traceback.format_exc()}\n```" - _log.exception("Exception occur") + err_str = f"ERR! [{GetTime()}] NOTIFY.TASK\n```\n{traceback.format_exc()}\n```" await bot.client.send(debug_ch, err_str) # 发送消息到debug频道 + _log.exception("Exception occur") - +# 早八自动执行 @bot.task.add_cron(hour=8, minute=0, timezone="Asia/Shanghai") async def auto_skin_notify_task(): await auto_skin_notify() - # 手动执行notify task @bot.command(name='notify-test') async def auto_skin_notify_cmd(msg: Message, *arg): @@ -2177,14 +2117,14 @@ async def update_skin_price_bundle(msg: Message): if await ValFileUpd.update_bundle_url(msg, bot_upimg): await msg.reply(f"成功更新:捆绑包") # 获取物品价格需要登录 - auth = UserAuthDict[msg.author_id]['auth'] + riot_user_id = UserAuthCache['kook'][msg.author_id][0] + auth = UserAuthCache['data'][riot_user_id]['auth'] assert isinstance(auth, EzAuth) riotUser = auth.get_riotuser_token() if await ValFileUpd.update_price(msg, riotUser): await msg.reply(f"成功更新:物品价格") except Exception as result: - _log.exception("Exception occur") - await msg.reply(f"ERR! [{GetTime()}] update_spb\n```\n{traceback.format_exc()}\n```") + await BotLog.BaseException_Handler("update_spb",traceback.format_exc(),msg) ####################################################################################################### @@ -2196,29 +2136,29 @@ async def update_skin_price_bundle(msg: Message): async def bot_log_list(msg: Message, *arg): BotLog.logMsg(msg) try: - if msg.author_id == master_id: - retDict = await BotLog.log_bot_list(msg) # 获取用户/服务器列表 - res_text = await BotLog.log_bot_list_text(retDict) # 获取text - - cm = CardMessage() - c = Card( - Module.Header(f"来看看阿狸当前的用户记录吧!"), - Module.Context( - f"服务器总数: {retDict['guild']['guild_total']} 活跃服务器: {retDict['guild']['guild_active']} 用户数: {retDict['user']['user_total']} cmd: {retDict['cmd_total']}" - ), Module.Divider()) - log_img_src = await bot_upimg.client.create_asset("../screenshot/log.png") - c.append(Module.Container(Element.Image(src=log_img_src))) - c.append( - Module.Section( - Struct.Paragraph(2, Element.Text(f"{res_text['name'][:5000]}", Types.Text.KMD), - Element.Text(f"{res_text['user'][:5000]}", Types.Text.KMD)))) #限制字数才能发出来 - cm.append(c) - await msg.reply(cm) - else: + if msg.author_id != master_id: await msg.reply(f"您没有权限执行此命令!") + return + + retDict = await BotLog.log_bot_list(msg) # 获取用户/服务器列表 + res_text = await BotLog.log_bot_list_text(retDict) # 获取text + + cm = CardMessage() + c = Card( + Module.Header(f"来看看阿狸当前的用户记录吧!"), + Module.Context( + f"服务器总数: {retDict['guild']['guild_total']} 活跃服务器: {retDict['guild']['guild_active']} 用户数: {retDict['user']['user_total']} cmd: {retDict['cmd_total']}" + ), Module.Divider()) + log_img_src = await bot_upimg.client.create_asset("../screenshot/log.png") + c.append(Module.Container(Element.Image(src=log_img_src))) + c.append( + Module.Section( + Struct.Paragraph(2, Element.Text(f"{res_text['name'][:5000]}", Types.Text.KMD), + Element.Text(f"{res_text['user'][:5000]}", Types.Text.KMD)))) #限制字数才能发出来 + cm.append(c) + await msg.reply(cm) except: - _log.exception("Exception occur") - await msg.reply(f"ERR! [{GetTime()}] log_list\n```\n{traceback.format_exc()}\n```") + await BotLog.BaseException_Handler("log-list",traceback.format_exc(),msg) @bot.command(name='mem') @@ -2229,8 +2169,7 @@ async def proc_check(msg: Message, *arg): cm = await BotLog.get_proc_info() await msg.reply(cm) except: - _log.exception("Exception occur") - await msg.reply(f"ERR! [{GetTime()}] mem\n```\n{traceback.format_exc()}\n```") + await BotLog.BaseException_Handler("mem",traceback.format_exc(),msg) #在阿狸开机的时候自动加载所有保存过的cookie @@ -2247,7 +2186,7 @@ async def loading_cache(bot: Bot): os._exit(-1) #出现错误直接退出程序 _log.info("[BOT.TASK] loading cookie start") - global UserAuthDict + global UserAuthCache log_str_success = "[BOT.TASK] load cookie success = Au:" log_str_failed = "[BOT.TASK] load cookie failed! = Au:" log_not_exits = "[BOT.TASK] cookie path not exists = Au:" @@ -2260,14 +2199,15 @@ async def loading_cache(bot: Bot): auth.load_cookies(cookie_path) #加载cookie ret_bool = await auth.reauthorize(exp_print=False) #尝试登录 if ret_bool: # True登陆成功 - UserAuthDict[user] = {"auth": auth, "2fa": False} #将对象插入 + UserAuthCache['kook'][user] = [auth.user_id] + UserAuthCache['data'][auth.user_id] = {"auth": auth, "2fa": False} #将对象插入 log_str_success += f"({user})" else: del auth # 删除对象 - log_str_failed += f"({user}) " + log_str_failed += f"({user})" continue else: - log_not_exits += f"({user}) " + log_not_exits += f"({user})" continue # 结束任务 _log.info("TASK.INFO\n\t" + log_str_success + "\n\t" + log_str_failed + "\n\t" + log_not_exits) @@ -2286,14 +2226,15 @@ async def loading_cache(bot: Bot): auth.load_cookies(cookie_path) #加载cookie ret_bool = await auth.reauthorize(exp_print=False) #尝试登录 if ret_bool: # True登陆成功 - UserAuthDict[user] = {"auth": auth, "2fa": False} #将对象插入 + UserAuthCache['api'][user] = auth.user_id + UserAuthCache['data'][auth.user_id] = {"auth": auth, "2fa": False} #将对象插入 log_str_success += f"({user})" else: del auth # 删除对象 - log_str_failed += f"({user}) " + log_str_failed += f"({user})" continue else: - log_not_exits += f"({user}) " + log_not_exits += f"({user})" continue # 结束任务 _log.info("TASK.INFO\n\t" + log_str_success + "\n\t" + log_str_failed + "\n\t" + log_not_exits) diff --git a/code/utils/FileManage.py b/code/utils/FileManage.py index 249690d..db4e96c 100644 --- a/code/utils/FileManage.py +++ b/code/utils/FileManage.py @@ -122,20 +122,20 @@ async def save_aio(self): ################################################################################################### - +# 配置相关 config = FileManage("./config/config.json", True) # 机器人配置文件 BotUserDict = FileManage("./log/BotUserLog.json") # 机器人用户信息 ApiTokenDict = FileManage("./log/ApiToken.json") # API token ColorIdDict = FileManage("./log/color_idsave.json") # 自动上色 信息保存 EmojiDict = FileManage("./config/color_emoji.json", True) # 自动上色 服务器角色配置 SponsorDict = FileManage("./log/sponsor_roles.json") # 感谢助力者 信息保存 - +# valorant资源相关 ValErrDict = FileManage("./log/ValErrCode.json") # valorant错误码解决办法 ValSkinList = FileManage("./log/ValSkin.json") # valorant皮肤 ValPriceList = FileManage("./log/ValPrice.json") # valorant皮肤价格 ValBundleList = FileManage("./log/ValBundle.json") # valorant捆绑包 ValItersList = FileManage("./log/ValIters.json") # valorant皮肤等级 - +# valorant功能相关 SkinRateDict = FileManage("./log/ValSkinRate.json") # valorant皮肤评分信息 SkinNotifyDict = FileManage("./log/UserSkinNotify.json") # 皮肤提醒 用户记录 GameIdDict = FileManage("./log/game_idsave.json") # 玩家游戏id保存 @@ -143,15 +143,26 @@ async def save_aio(self): UserRiotName = UserAuthID['data'] # riot用户游戏id和uuid UserPwdReauth = UserAuthID['ap_log'] # 账户密码重登记录 ApiAuthLog = UserAuthID['api_log'] # api 缓存用户的account记录 -ApiAuthCache = {'data':{}} # api EzAuth对象缓存 - +# vip相关 VipUuidDict = FileManage("./log/VipUuid.json") # vip uuid文件 VipShopBgDict = FileManage("./log/VipUserShopBg.json") # vip 背景图设置;商店图缓存 VipUser = FileManage("./log/VipUser.json") # vip 用户列表 VipUserDict = VipUser['data'] # vip 用户 VipRollDcit = VipUser['roll'] # vip 抽奖信息 - +# 爱发电webhook AfdWebhook = FileManage("./log/AfdWebhook.json") # 爱发电的wh请求 +# 缓存相关 +Login_Forbidden = False # 403禁止重登 +UserAuthCache = {'api':{},'kook':{},'data':{},'acpw':{},'tfa':{}} +"""{'api':{},'kook':{},'data':{},'acpw':{}}\n +api/bot 公用EzAuth对象缓存: +- api | 用户账户:riot_user_uuid +- kook | kook_user_id:[uuid1,uuid2] 值为list,支持多账户登录 +- data | riot_user_uuid:{"auth": EzAuth Obj, "2fa": EzAuth.is2fa} +- acpw | riot_user_uuid:{'a':账户,'p':密码} 用于bot中的账户密码存储。只存储在全局变量中,不写入磁盘 +- tfa | 用户id:EzAuth对象 临时使用的缓存 +""" +ApiAuthCache = {'data':{}} # api EzAuth对象缓存 # 实例化一个khl的bot,方便其他模组调用 from khl import Bot diff --git a/code/utils/valorant/AuthCache.py b/code/utils/valorant/AuthCache.py new file mode 100644 index 0000000..fc9f4ce --- /dev/null +++ b/code/utils/valorant/AuthCache.py @@ -0,0 +1,41 @@ +# 缓存登录对象 +from .EzAuth import EzAuth +from ..FileManage import UserAuthCache + +Auth2faCache = UserAuthCache['tfa'] + +async def cache_auth_object(platfrom:str,key:str,auth:EzAuth) -> None: + # 如果是2fa用户,且键值不在缓存里面,认为是初次登录,需要提供邮箱验证码 + if auth.is2fa and key not in Auth2faCache: + Auth2faCache[key] = auth + return + # 如果键值存在,认为是tfa登陆成功,删除临时键值 + elif auth.is2fa and key in Auth2faCache: + del Auth2faCache[key] + + # 如果对象没有成功初始化,说明还是有问题;不进行缓存,让用户重登 + if not auth.is_init: return + + # 在data中插入对象 + UserAuthCache['data'][auth.user_id] = {"auth": auth, "2fa": auth.is2fa} + + # 判断缓存的来源 + if platfrom == 'kook': + # 用户id键值不存在,新建key + if key not in UserAuthCache['kook']: + UserAuthCache['kook'][key] = [] + # 如果该账户已经登陆过了,则不进行操作 + if auth.user_id not in UserAuthCache['kook'][key]: + UserAuthCache['kook'][key].append(auth.user_id) # 往用户id缓存list中插入Riot用户的uuid + + elif platfrom == 'api': + # 往缓存键值中插入Riot用户的uuid (api的键值是用户账户,有唯一性,不需弄list) + UserAuthCache['api'][key] = auth.user_id + +async def get_tfa_auth_object(key:str) -> EzAuth | None: + """get 2fa auth obj base on key. Return None if key not in cache + """ + if key not in Auth2faCache: + return None + else: + return Auth2faCache[key] \ No newline at end of file diff --git a/code/utils/valorant/EzAuth.py b/code/utils/valorant/EzAuth.py index 0c09663..90e9d10 100644 --- a/code/utils/valorant/EzAuth.py +++ b/code/utils/valorant/EzAuth.py @@ -317,26 +317,3 @@ def load_cookies(self, path: str) -> None: load_cookies = json.loads(f.read()) self.session.cookies = requests.utils.cookiejar_from_dict(load_cookies) # type: ignore - - - -################################################################################################# -# 缓存登录对象 -from ..FileManage import UserAuthCache - -async def cache_auth_object(platfrom:str,key:str,auth:EzAuth) -> None: - # 在data中插入对象 - UserAuthCache['data'][auth.user_id] = {"auth": auth, "2fa": auth.is2fa} - - # 判断缓存的来源 - if platfrom == 'kook': - # 用户id键值不存在,新建key - if key not in UserAuthCache['kook']: - UserAuthCache['kook'][key] = [] - # 如果该账户已经登陆过了,则不进行操作 - if auth.user_id not in UserAuthCache['kook'][key]: - UserAuthCache['kook'][key].append(auth.user_id) # 往用户id缓存list中插入Riot用户的uuid - - elif platfrom == 'api': - # 往缓存键值中插入Riot用户的uuid (api的键值是用户账户,有唯一性,不需弄list) - UserAuthCache['api'][key] = auth.user_id \ No newline at end of file diff --git a/code/utils/valorant/Reauth.py b/code/utils/valorant/Reauth.py new file mode 100644 index 0000000..c128cd0 --- /dev/null +++ b/code/utils/valorant/Reauth.py @@ -0,0 +1,145 @@ +import traceback +from khl import Message, Channel +from aiohttp import client_exceptions +from .EzAuth import EzAuth, EzAuthExp +from ..FileManage import UserAuthCache, UserRiotName, UserPwdReauth, Login_Forbidden,SkinNotifyDict, bot +from .Val import fetch_valorant_point +from ..log.Logging import _log +from .. import KookApi, Gtime + + +# 检查aiohttp错误的类型 +def client_exceptions_handler(result:str,err_str:str) -> str: + if 'auth.riotgames.com' and '403' in result: + global Login_Forbidden + Login_Forbidden = True + err_str += f"[check_reauth] 403 err! set Login_Forbidden = True" + elif '404' in result: + err_str += f"[check_reauth] 404 err! network err, try again" + else: + err_str += f"[check_reauth] Unkown aiohttp ERR!" + + return err_str + +# 检查是否有私聊错误 +async def check_user_send_err(result:str,kook_user_id:str,is_vip:bool) ->str: + """判断是否出现了无法私聊的问题,返回处理之后的日志""" + text="\n" + if '屏蔽' in result or '无法发起' in result: + global SkinNotifyDict + if not is_vip: # 非vip用户直接粗暴解决,删除用户 + del SkinNotifyDict['data'][kook_user_id] + text+=f"del SkinNotifyDict['data'][{kook_user_id}], " + # 添加到err_user中 + SkinNotifyDict['err_user'][kook_user_id] = Gtime.GetTime() + text+= "add to ['err_user']" + return text + + return "" + +# cookie重新登录 +async def login_reauth(kook_user_id: str, riot_user_id: str) -> bool: + """Return: + - True: reauthorize success + - False: reauthorize failed + """ + base_print = f"Au:{kook_user_id} | Riot:{riot_user_id} | " + _log.info(base_print + "auth_token failure,trying reauthorize()") + global UserAuthCache, UserRiotName + # 这个函数只负责重登录,所以直接找对应的拳头用户id + auth = UserAuthCache['data'][riot_user_id]['auth'] + assert isinstance(auth, EzAuth) + #用cookie重新登录,会返回一个bool是否成功 + ret = await auth.reauthorize() + if ret: #会返回一个bool是否成功,成功了重新赋值 + UserAuthCache['data'][riot_user_id]['auth'] = auth + _log.info(base_print + "reauthorize() Successful!") + else: # cookie重新登录失败 + _log.info(base_print + "reauthorize() Failed! T-T") # 失败打印 + # 有保存账户密码+不是邮箱验证用户 + if riot_user_id in UserAuthCache['acpw'] and (not UserAuthCache[riot_user_id]['2fa']): + auth = EzAuth() # 用账户密码重新登录 + resw = await auth.authorize(UserAuthCache['acpw'][riot_user_id]['a'], + UserAuthCache['acpw'][riot_user_id]['p']) + if not resw['status']: # 需要邮箱验证,那就直接跳出 + _log.info(base_print + "authorize() need 2fa, return False") + return False + # 更新auth对象 + UserAuthCache['data'][riot_user_id]['auth'] = auth + auth.save_cookies(f"./log/cookie/{kook_user_id}.cke") # 保存cookie + # 记录使用账户密码重新登录的时间,和对应的账户 + UserPwdReauth[kook_user_id][Gtime.GetTime()] = f"{auth.Name}#{auth.Tag}" + _log.info(base_print + "authorize by account/passwd") + ret = True + # 正好返回auth.reauthorize()的bool + return ret + + +# 判断是否需要重新获取token +async def check_reauth(def_name: str, + kook_user_id: str, + riot_user_id: str, + debug_ch: Channel, + msg: Message = None) -> bool | dict[str, str]: # type: ignore + """Args: + - def_name: def_name call this def + - kook_user_id: kook_user_id + - riot_user_id: which riot account for reauth + - debug_ch: channel for sending debug info + - msg: khl.Message obj, only send info if msg != None + + Return value: + - True: no need to reauthorize / get `user_id` as params & reauhorize success + - False: unkown err / reauthorize failed + - send_msg(dict): get `Message` as params & reauhorize success + """ + try: + # 1.通过riot用户id获取对象 + auth = UserAuthCache['data'][riot_user_id]['auth'] + assert isinstance(auth, EzAuth) + # 2.直接从对象中获取user的Token,并尝试获取用户的vp和r点 + riotUser = auth.get_riotuser_token() + resp = await fetch_valorant_point(riotUser) + # resp={'httpStatus': 400, 'errorCode': 'BAD_CLAIMS', 'message': 'Failure validating/decoding RSO Access Token'} + # 3.如果没有这个键,会直接报错进except; 如果有这个键,就可以继续执行下面的内容 + test = resp['httpStatus'] + # 3.1 走到这里代表需要重登 + send_msg = {'msg_id': ''} + # 3.2 如果传入params有消息对象msg,则提示用户 + if msg: + text = f"获取「{def_name}」失败!正在尝试重新获取token,您无需操作" + cm = await KookApi.get_card(text, f"{resp['message']}", KookApi.icon_cm.im_good_phoniex) + send_msg = await msg.reply(cm) + + # 4.传入kook id和拳头账户id,进行重登 + ret = await login_reauth(kook_user_id, auth.user_id) + # 4.1 ret为True,正常重新登录,且params有消息对象 + if ret and msg: + return send_msg # 返回发送出去的消息(用于更新) + # ret为False,重登失败,发送提示信息 + elif not ret and msg: + text = f"重新获取token失败,请私聊「/login」重新登录\n" + cm = await KookApi.get_card(text, "Reauthorize Failed!", KookApi.icon_cm.crying_crab) + await KookApi.upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) + return False + + return ret #返回是否成功重登 + # aiohttp网络错误 + except client_exceptions.ClientResponseError as result: + err_str = f"Au:{kook_user_id} | aiohttp ERR!\n```\n{traceback.format_exc()}\n```\n" + err_str = client_exceptions_handler(str(result),err_str) + _log.error(err_str) + await bot.client.send(debug_ch, err_str) + return False + # 用户在EzAuth初始化完毕之前调用了其他命令 + except EzAuthExp.InitError as result: + _log.warning(f"Au:{kook_user_id} | EzAuth used before init") + return False + except Exception as result: + if 'httpStatus' in str(result): + _log.info(f"Au:{kook_user_id} | No need to reauthorize [{result}]") + return True + else: + _log.exception("Unkown Exception occur") + await bot.client.send(debug_ch, f"[check_reauth] Unkown ERR!\n{traceback.format_exc()}") + return False \ No newline at end of file From 5574c7c50a43c36ac93c97c73fc04df63569f2a8 Mon Sep 17 00:00:00 2001 From: musnows Date: Tue, 7 Mar 2023 22:31:00 +0800 Subject: [PATCH 04/31] refactor(main): using bot.on_message to replace regex modify fix(make): modfiy makefile --- code/main.py | 21 +++++++++++---------- code/makefile | 2 +- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/code/main.py b/code/main.py index 8fe0715..afbac20 100644 --- a/code/main.py +++ b/code/main.py @@ -228,14 +228,14 @@ async def translation(msg: Message, *arg): #查看当前占用的实时翻译栏位 @bot.command() -async def CheckTL(msg: Message): +async def TLCheck(msg: Message): BotLog.logMsg(msg) await msg.reply(f"目前已使用栏位:{Translate.checkTL()}/{len(Translate.ListTL)}") # 关闭所有栏位的实时翻译(避免有些人用完不关) -@bot.command(name='ShutdownTL', aliases=['SDTL']) -async def ShutdownTL(msg: Message): +@bot.command(name='ShutdownTL', aliases=['TLSD','tlsd']) +async def TLShutdown(msg: Message): BotLog.logMsg(msg) if msg.author.id != master_id: return #这条命令只有bot的作者可以调用 @@ -243,17 +243,18 @@ async def ShutdownTL(msg: Message): # 通过频道id判断是否实时翻译本频道内容 -@bot.command(regex=r'(.+)') -async def TL_Realtime(msg: Message, *arg): +@bot.on_message() +async def TLRealtime(msg: Message): if msg.ctx.channel.id in Translate.ListTL: #判断频道是否已开启实时翻译 - word = " ".join(arg) + word = msg.content # 不翻译关闭实时翻译的指令 - if word == "/TLOFF" or word == "/tloff" or word == '/tlon' or word == '/TLON': - return + ignore_list = ["/TLOFF","/tloff","/tlon","/TLON"] + for i in ignore_list: + if i in word: + return # 翻译 BotLog.logMsg(msg) - await Translate.translate_main(msg, ' '.join(arg)) - + await Translate.translate_main(msg,word) # 开启实时翻译功能 @bot.command(name='TLON', aliases=['tlon']) diff --git a/code/makefile b/code/makefile index 0356db3..6892c41 100644 --- a/code/makefile +++ b/code/makefile @@ -1,6 +1,6 @@ .PHONY:run run: - nohup py3 -u start.py >> ./log/bot.log 2>&1 & + nohup python3.10 -u start.py >> ./log/out.log 2>&1 & .PHONY:ps ps: From 25f74de16f6717a9d374c5f67db45784a027e10d Mon Sep 17 00:00:00 2001 From: musnows Date: Wed, 8 Mar 2023 15:14:28 +0800 Subject: [PATCH 05/31] feat(main): add /login-l cmd, add init_time in EzAuth --- code/main.py | 41 +++++++++++++++++++++++++++++++++-- code/utils/valorant/EzAuth.py | 3 +++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/code/main.py b/code/main.py index afbac20..27c34d2 100644 --- a/code/main.py +++ b/code/main.py @@ -31,13 +31,14 @@ # 设置全局变量:机器人开发者id/报错频道 master_id = config['master_id'] -#在bot一开机的时候就获取log频道作为全局变量 +# 在bot一开机的时候就获取log频道作为全局变量 debug_ch: Channel cm_send_test: Channel NOTIFY_NUM = 3 # 非vip用户皮肤提醒栏位 VIP_BG_SIZE = 4 # vip用户背景图片数量限制 RATE_LIMITED_TIME = 180 # 全局登录速率超速等待秒数 -#记录开机时间 +LOGIN_LIMITED = 3 # 所有用户最多都只能登录3个riot账户 +# 记录开机时间 start_time = GetTime() @@ -1095,6 +1096,8 @@ async def logout(msg: Message, *arg): @bot.command(name='login-ap') async def login_acpw(msg: Message, *arg): + """获取bot使用riot的账户密码登录的记录(用户自己选择了save账户密码的) + """ BotLog.logMsg(msg) try: if msg.author_id not in UserPwdReauth: @@ -1113,6 +1116,40 @@ async def login_acpw(msg: Message, *arg): await BotLog.BaseException_Handler("login-ap", traceback.format_exc(), msg) +@bot.command(name='login-l',aliases=['login-list'],case_sensitive=False) +async def login_list(msg:Message,*arg): + """获取用户已经登录的账户 + """ + BotLog.logMsg(msg) + cm = CardMessage() + try: + if msg.author_id not in UserAuthCache["kook"]: + await msg.reply(f"您尚未登录任何valorant账户") + return + i = 0 + text="```\n" + for ru in UserAuthCache["kook"][msg.author_id]: + auth = UserAuthCache["data"][ru]["auth"] + assert isinstance(auth, EzAuth) + text+=f"[{i}] {auth.Name}#{auth.Tag} 登陆于 {auth.init_time}\n" + i+=1 + text+="```" + + c = Card() + c.append(Module.Header(f"您当前已登录的riot账户列表")) + c.append(Module.Context(f"您还可以登录 {LOGIN_LIMITED-i} 个账户")) + c.append(Module.Divider()) + c.append(Module.Section(Element.Text(text,Types.Text.KMD))) + c.append(Module.Context("查询商店/夜市时,需要指定账户前的编号,默认为0\n如「/shop 1」查询已登录账户中编号为1的账户")) + cm.append(c) + await msg.reply(cm) + _log.info(f"Au:{msg.author_id} | login-list reply success") + except requester.HTTPRequester.APIRequestFailed as result: + await BotLog.APIRequestFailed_Handler("login-l", traceback.format_exc(), msg,bot,cm) + except Exception as result: + await BotLog.BaseException_Handler("login-l", traceback.format_exc(), msg) + + # 计算当前时间和明天早上8点的差值 def shop_time_remain(): today = datetime.today().strftime("%y-%m-%d %H:%M:%S") #今天日期+时间 diff --git a/code/utils/valorant/EzAuth.py b/code/utils/valorant/EzAuth.py index 90e9d10..1343f38 100644 --- a/code/utils/valorant/EzAuth.py +++ b/code/utils/valorant/EzAuth.py @@ -11,6 +11,7 @@ from . import EzAuthExp from ..log.Logging import _log +from ..Gtime import GetTime # get latest version: https://valorant-api.com/v1/version X_RIOT_CLIENTVERSION = "RiotClient/63.0.9.4909983.4789131" X_RIOT_CLIENTVPLATFROM = "ew0KCSJwbGF0Zm9ybVR5cGUiOiAiUEMiLA0KCSJwbGF0Zm9ybU9TIjogIldpbmRvd3MiLA0KCSJwbGF0Zm9ybU9TVmVyc2lvbiI6ICIxMC4wLjE5MDQyLjEuMjU2LjY0Yml0IiwNCgkicGxhdGZvcm1DaGlwc2V0IjogIlVua25vd24iDQp9" @@ -61,6 +62,7 @@ def __init__(self) -> None: self.session.mount('https://', SSLAdapter()) self.is2fa = False # 2fa set to false self.__mfa_start = 0 # 2fa start time + self.init_time = 0 # when auth init? self.is_init = False # is_init finised? def __set_userinfo(self) -> None: @@ -106,6 +108,7 @@ def __set_info(self, tokens: dict) -> None: self.entitlements_token = self.get_entitlement_token() self.__set_userinfo() self.__set_region() + self.init_time = GetTime() # get current localtime self.is_init = True # set init as finised async def authorize(self, username, password) -> dict: From a9bbbf1af7c93b85748d06a9135bb8d4bcf54a5a Mon Sep 17 00:00:00 2001 From: musnows Date: Wed, 8 Mar 2023 15:32:34 +0800 Subject: [PATCH 06/31] refactor(Gtime): add gettimefromtimestamp, rename GetTime to getTime refactor(EzAuth): modify self.is_init to def, base on self.init_time --- code/api.py | 2 +- code/main.py | 49 ++++++++++++++--------------------- code/utils/BotVip.py | 6 ++--- code/utils/GrantRoles.py | 4 +-- code/utils/Gtime.py | 31 +++++++++++++++++----- code/utils/ShopImg.py | 4 +-- code/utils/ShopRate.py | 2 +- code/utils/api/ApiHandler.py | 2 +- code/utils/log/BotLog.py | 10 +++---- code/utils/valorant/EzAuth.py | 42 ++++++++++++++++++++---------- code/utils/valorant/Reauth.py | 4 +-- 11 files changed, 90 insertions(+), 66 deletions(-) diff --git a/code/api.py b/code/api.py index e83df19..88ea458 100644 --- a/code/api.py +++ b/code/api.py @@ -1,7 +1,7 @@ import json import traceback from aiohttp import web -from utils.Gtime import GetTime +from utils.Gtime import getTime from utils.api import ApiHandler from utils.log.Logging import _log diff --git a/code/main.py b/code/main.py index 27c34d2..5e6d80e 100644 --- a/code/main.py +++ b/code/main.py @@ -21,7 +21,7 @@ get_card) from utils.valorant.Val import * from utils.valorant.EzAuth import EzAuth, EzAuthExp -from utils.Gtime import GetTime, GetTimeStampOf8AM +from utils.Gtime import getTime, getTimeStampOf8AM # bot的token文件 from utils.FileManage import config, bot, ApiAuthLog, Save_All_File, Login_Forbidden @@ -39,7 +39,7 @@ RATE_LIMITED_TIME = 180 # 全局登录速率超速等待秒数 LOGIN_LIMITED = 3 # 所有用户最多都只能登录3个riot账户 # 记录开机时间 -start_time = GetTime() +start_time = getTime() # 向botmarket通信 @@ -57,7 +57,7 @@ async def Save_File_Task(): try: await Save_All_File() except: - err_cur = f"ERR! [{GetTime()}] [Save.File.Task]\n```\n{traceback.format_exc()}\n```" + err_cur = f"ERR! [{getTime()}] [Save.File.Task]\n```\n{traceback.format_exc()}\n```" _log.error(err_cur) await bot.client.send(debug_ch, err_cur) @@ -482,7 +482,7 @@ async def check_vip_img(): bg_test = Image.open(io.BytesIO(await ShopImg.img_requestor(vip_bg["background"][i]))) i += 1 except UnidentifiedImageError as result: - err_str = f"ERR! [{GetTime()}] checking [{vip_user}] img\n```\n{result}\n" + err_str = f"ERR! [{getTime()}] checking [{vip_user}] img\n```\n{result}\n" #把被ban的图片替换成默认的图片,打印url便于日后排错 err_str += f"[UnidentifiedImageError] url={vip_bg['background'][i]}\n```" c.append(Module.Section(Element.Text(err_str, Types.Text.KMD))) @@ -493,7 +493,7 @@ async def check_vip_img(): vip_bg["status"] = False #需要重新加载图片 _log.error(err_str) except Exception as result: - err_str = f"ERR! [{GetTime()}] checking[{vip_user}]img\n```\n{traceback.format_exc()}\n```" + err_str = f"ERR! [{getTime()}] checking[{vip_user}]img\n```\n{traceback.format_exc()}\n```" _log.error(err_str) c.append(Module.Section(Element.Text(err_str, Types.Text.KMD))) cm0.append(c) @@ -507,7 +507,7 @@ async def check_vip_img(): _log.info(log_str_user) _log.info("[BOT.TASK] check_vip_img finished!") except Exception as result: - err_str = f"ERR! [{GetTime()}] check_vip_img\n```\n{traceback.format_exc()}\n```" + err_str = f"ERR! [{getTime()}] check_vip_img\n```\n{traceback.format_exc()}\n```" _log.exception("Exception occur") await bot.client.send(debug_ch, err_str) # 发送消息到debug频道 @@ -564,7 +564,7 @@ async def vip_shop_bg_set(msg: Message, icon: str = "err", *arg): #打开图片(测试) bg_vip = Image.open(io.BytesIO(await ShopImg.img_requestor(x3))) except UnidentifiedImageError as result: - err_str = f"ERR! [{GetTime()}] vip_shop_imgck\n```\n{result}\n```" + err_str = f"ERR! [{getTime()}] vip_shop_imgck\n```\n{result}\n```" _log.error(err_str) await msg.reply(f"图片违规!请重新上传\n{err_str}") return @@ -616,7 +616,7 @@ async def vip_shop_bg_set_s(msg: Message, num: str = "err", *arg): bg_vip = Image.open( io.BytesIO(await ShopImg.img_requestor(VipShopBgDict['bg'][msg.author_id]["background"][num]))) except UnidentifiedImageError as result: - err_str = f"ERR! [{GetTime()}] vip_shop_s_imgck\n```\n{result}\n```" + err_str = f"ERR! [{getTime()}] vip_shop_s_imgck\n```\n{result}\n```" await msg.reply(f"图片违规!请重新上传\n{err_str}") await BotVip.replace_illegal_img(msg.author_id, num) #替换图片 _log.exception("Exception occur") @@ -810,7 +810,7 @@ async def vip_time_add(msg: Message, vday: int = 1, *arg): await msg.reply(f"操作完成,已给所有vip用户增加 `{vday}` 天时长") _log.info(f"[vip_time_add] update VipUserDict") except: - err_str = f"ERR! [{GetTime()}] vip_time_add\n```\n{traceback.format_exc()}\n```" + err_str = f"ERR! [{getTime()}] vip_time_add\n```\n{traceback.format_exc()}\n```" await msg.reply(f"{err_str}") _log.exception("Exception occur") @@ -863,7 +863,7 @@ def isClear_UserShopCache() -> bool: """ # 判断清空的时间戳是否大于当日早上8点时间戳 global UserShopCache - if UserShopCache["clear_time"] >= GetTimeStampOf8AM(): + if UserShopCache["clear_time"] >= getTimeStampOf8AM(): return True else: # 如果不大于,则代表定时任务没有正常执行,清空dict并返回FALSE UserShopCache["data"] = {} @@ -969,7 +969,7 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', cm = await get_card("等待超时", "auth wait overtime", icon_cm.lagging) await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) except EzAuthExp.RatelimitError as result: - err_str = f"ERR! [{GetTime()}] login Au:{msg.author_id} - {result}" + err_str = f"ERR! [{getTime()}] login Au:{msg.author_id} - {result}" # 更新全局速率限制 login_rate_limit = {'limit': True, 'time': time.time()} _log.error(err_str + " set login_rate_limit = True") @@ -977,7 +977,7 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', cm = await get_card(f"登录请求超速!请在{RATE_LIMITED_TIME}s后重试", "RatelimitError,try again later", icon_cm.lagging) await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) except client_exceptions.ClientResponseError as result: - err_str = f"ERR! [{GetTime()}] login Au:{msg.author_id}\n```\n{traceback.format_exc()}\n```\n" + err_str = f"ERR! [{getTime()}] login Au:{msg.author_id}\n```\n{traceback.format_exc()}\n```\n" if 'auth.riotgames.com' and '403' in str(result): Login_Forbidden = True err_str += f"[Login] 403 err! set Login_Forbidden = True" @@ -1027,7 +1027,7 @@ async def tfa_verify(msg: Message, tfa: str, *arg): auth = await AuthCache.get_tfa_auth_object(msg.author_id) assert isinstance(auth, EzAuth) # 1.2 判断这个auth是否已经初始化完毕了,如果是,则不执行后续操作 - if auth.is_init: # 初始化完毕 + if auth.is_init(): # 初始化完毕 await msg.reply(await get_card(f"玩家「{auth.Name}#{auth.Tag}」已登录,无须执行本命令","若有问题,请联系开发者",icon_cm.correct)) return @@ -1150,15 +1150,6 @@ async def login_list(msg:Message,*arg): await BotLog.BaseException_Handler("login-l", traceback.format_exc(), msg) -# 计算当前时间和明天早上8点的差值 -def shop_time_remain(): - today = datetime.today().strftime("%y-%m-%d %H:%M:%S") #今天日期+时间 - tomorow = (datetime.today() + timedelta(days=1)).strftime("%y-%m-%d") #明天日期 - times_tomorow = time.mktime(time.strptime(f"{tomorow} 08:00:00", "%y-%m-%d %H:%M:%S")) #明天早上8点时间戳 - times_now = time.mktime(time.strptime(f"{today}", "%y-%m-%d %H:%M:%S")) #现在的时间戳 - timeout = times_tomorow - times_now #计算差值 - timeout = time.strftime("%H:%M:%S", time.gmtime(timeout)) #转换成可读时间 - return timeout # 判断缓存好的图片是否可用 @@ -1169,7 +1160,7 @@ def is_CacheLatest(kook_user_id: str): is_Status = VipShopBgDict['bg'][kook_user_id]['status'] # 如果有切换登录用户/背景图,此为false # 判断图片是不是今天的(可能出现早八提醒的时候出错,导致缓存没有更新,是昨天的图) if kook_user_id in VipShopBgDict['cache']: - is_Today = (VipShopBgDict['cache'][kook_user_id]['cache_time'] - GetTimeStampOf8AM()) >= 0 + is_Today = (VipShopBgDict['cache'][kook_user_id]['cache_time'] - getTimeStampOf8AM()) >= 0 is_Cache = VipShopBgDict['cache'][kook_user_id]['cache_img'] != None return is_Today and is_Status and is_Cache # 有一个为false,结果就是false else: # 如果不在,初始化为none,时间戳为0 @@ -1327,7 +1318,7 @@ async def get_daily_shop(msg: Message,index:str = "0",*arg): except requester.HTTPRequester.APIRequestFailed as result: #卡片消息发送失败 await BotLog.APIRequestFailed_Handler("shop", traceback.format_exc(), msg, bot, cm, send_msg=send_msg) except Exception as result: - err_str = f"ERR! [{GetTime()}] shop\n```\n{traceback.format_exc()}\n```\n" + err_str = f"ERR! [{getTime()}] shop\n```\n{traceback.format_exc()}\n```\n" if "SkinsPanelLayout" in str(result): _log.error(err_str + resp) btext = f"KeyError:{result}, please re-login\n如果此问题重复出现,请[联系开发者](https://kook.top/gpbTwZ)" @@ -1809,7 +1800,7 @@ async def check_notify_err_user(msg: Message): return False except: err_cur = str(traceback.format_exc()) - err_str = f"ERR![{GetTime()}] err_Au:{msg.author_id} user.send\n```\n{err_cur}\n```" + err_str = f"ERR![{getTime()}] err_Au:{msg.author_id} user.send\n```\n{err_cur}\n```" if '屏蔽' in err_cur or '无法发起' in err_cur: await msg.reply(f"您之前屏蔽了阿狸,或阿狸无法向您发起私信\n您的皮肤提醒信息已经被`删除`,请在解除对阿狸的屏蔽后重新操作!\n{err_str}") else: @@ -1918,7 +1909,7 @@ async def select_skin_notify(msg: Message, n: str = "err", *arg): else: await msg.reply(f"您需要(重新)执行 `/notify-a` 来设置提醒皮肤") except requester.HTTPRequester.APIRequestFailed as result: #消息发送失败 - err_str = f"ERR! [{GetTime()}] sts\n```\n{traceback.format_exc()}\n```\n" + err_str = f"ERR! [{getTime()}] sts\n```\n{traceback.format_exc()}\n```\n" await bot.client.send(debug_ch, err_str) await BotLog.APIRequestFailed_Handler("sts", traceback.format_exc(), msg, bot) except Exception as result: # 其他错误 @@ -2125,7 +2116,7 @@ async def auto_skin_notify(): target_skin = [val for key, val in skin.items() if key in list_shop] for name in target_skin: _log.info(f"Au:{aid} | Riot:{riot_user_id} | skin_notify | {name}") - await user.send(f"[{GetTime()}] 您的每日商店刷出`{name}`了,请上号查看哦!") + await user.send(f"[{getTime()}] 您的每日商店刷出`{name}`了,请上号查看哦!") # 打印这个说明这个用户正常遍历完了 _log.info(f"Au:{aid} | skin_notify finished") @@ -2147,11 +2138,11 @@ async def auto_skin_notify(): _log.info("save SkinNotifyDict") # 打印结束信息 - finish_str = f"[NOTIFY.TASK] Finish at {GetTime()} [ERR {err_count}]" + finish_str = f"[NOTIFY.TASK] Finish at {getTime()} [ERR {err_count}]" _log.info(finish_str) # 正常完成 await bot.client.send(debug_ch, finish_str) #发送消息到debug频道 except Exception as result: - err_str = f"ERR! [{GetTime()}] NOTIFY.TASK\n```\n{traceback.format_exc()}\n```" + err_str = f"ERR! [{getTime()}] NOTIFY.TASK\n```\n{traceback.format_exc()}\n```" await bot.client.send(debug_ch, err_str) # 发送消息到debug频道 _log.exception("Exception occur") diff --git a/code/utils/BotVip.py b/code/utils/BotVip.py index 8231081..47aa381 100644 --- a/code/utils/BotVip.py +++ b/code/utils/BotVip.py @@ -8,7 +8,7 @@ from khl.card import Card, CardMessage, Element, Module, Types from datetime import datetime, timedelta from .KookApi import icon_cm -from .Gtime import GetTime +from .Gtime import getTime from .FileManage import bot,VipShopBgDict,config,_log from .ShopImg import img_requestor @@ -250,7 +250,7 @@ async def replace_illegal_img(user_id: str, num: int): VipShopBgDict['bg'][user_id]["status"] = False #需要重新加载图片 _log.info(f"[Replace_img] Au:{user_id} [{img_str}]") #写入文件后打印log信息 except Exception as result: - err_str = f"ERR! [{GetTime()}] replace_illegal_img\n```\n{traceback.format_exc()}\n```" + err_str = f"ERR! [{getTime()}] replace_illegal_img\n```\n{traceback.format_exc()}\n```" _log.exception("Exception occur") debug_ch = await bot.fetch_public_channel(config['channel']['debug_ch']) await bot.client.send(debug_ch, err_str) #发送消息到debug频道 @@ -297,7 +297,7 @@ async def get_vip_shop_bg_cm(msg: Message) -> CardMessage | str: Element.Image(src=VipShopBgDict['bg'][msg.author_id]["background"][i]))) i += 1 except UnidentifiedImageError as result: - err_str = f"ERR! [{GetTime()}] checking [{msg.author_id}] img\n```\n{result}\n" + err_str = f"ERR! [{getTime()}] checking [{msg.author_id}] img\n```\n{result}\n" #把被ban的图片替换成默认的图片,打印url便于日后排错 await replace_illegal_img(msg.author_id, i) #替换图片 err_str += f"[UnidentifiedImageError] url={VipShopBgDict['bg'][msg.author_id]['background'][i]}\n```" diff --git a/code/utils/GrantRoles.py b/code/utils/GrantRoles.py index 80effc4..4d2b66a 100644 --- a/code/utils/GrantRoles.py +++ b/code/utils/GrantRoles.py @@ -6,7 +6,7 @@ # 预加载文件 from .FileManage import SponsorDict, ColorIdDict, EmojiDict,_log from .KookApi import kook_headers -from .Gtime import GetTime +from .Gtime import getTime # 用于记录使用表情回应获取ID颜色的用户 def save_userid_color(userid: str, emoji: str): @@ -114,5 +114,5 @@ async def THX_Sponser(bot: Bot, kook_header=kook_headers): if check_sponsor(its) == 0: channel = await bot.client.fetch_public_channel("8342620158040885") #发送感谢信息的文字频道 await bot.client.send(channel, f"感谢 (met){its['id']}(met) 对本服务器的助力") - _log.info(f"[%s] 感谢{its['nickname']}对本服务器的助力" % GetTime()) + _log.info(f"[%s] 感谢{its['nickname']}对本服务器的助力" % getTime()) _log.info("[BOT.TASK] thanks_sponser finished!") diff --git a/code/utils/Gtime.py b/code/utils/Gtime.py index 4de5ecf..01cf9f6 100644 --- a/code/utils/Gtime.py +++ b/code/utils/Gtime.py @@ -1,16 +1,33 @@ import time +from datetime import datetime,timedelta -#将获取当前时间封装成函数方便使用 -def GetTime(): +def getTime(): + """获取当前时间,格式为 23-01-01 00:00:00""" return time.strftime("%y-%m-%d %H:%M:%S", time.localtime()) -#将获取当前日期成函数方便使用 -def GetDate(): +def getDate(): + """获取当前日期,格式为 23-01-01""" return time.strftime("%y-%m-%d", time.localtime()) -# 获取当日早上8点的时间戳(用于计算用户的商店图片是否过期) -def GetTimeStampOf8AM(): - return time.mktime(time.strptime(f"{GetDate()} 08:00:00", "%y-%m-%d %H:%M:%S")) +def getTimeStampOf8AM(): + """获取当日早上8点的时间戳(用于计算用户的商店图片是否过期)""" + return time.mktime(time.strptime(f"{getDate()} 08:00:00", "%y-%m-%d %H:%M:%S")) + +def getTimeFromStamp(timestamp:float|int): + """通过时间戳获取当前的本地时间,格式 23-01-01 00:00:00""" + localtime = time.localtime(timestamp) + localtime_str = time.strftime("%y-%m-%d %H:%M:%S", localtime) + return localtime_str + +def shop_time_remain(): + """计算当前时间和明天早上8点的差值,返回值为可读时间 08:00:00""" + today = datetime.today().strftime("%y-%m-%d %H:%M:%S") #今天日期+时间 + tomorow = (datetime.today() + timedelta(days=1)).strftime("%y-%m-%d") #明天日期 + times_tomorow = time.mktime(time.strptime(f"{tomorow} 08:00:00", "%y-%m-%d %H:%M:%S")) #明天早上8点时间戳 + times_now = time.mktime(time.strptime(f"{today}", "%y-%m-%d %H:%M:%S")) #现在的时间戳 + timeout = times_tomorow - times_now #计算差值 + timeout = time.strftime("%H:%M:%S", time.gmtime(timeout)) #转换成可读时间 + return timeout diff --git a/code/utils/ShopImg.py b/code/utils/ShopImg.py index 3f0e7c1..3410397 100644 --- a/code/utils/ShopImg.py +++ b/code/utils/ShopImg.py @@ -295,7 +295,7 @@ async def get_shop_img_169(list_shop: dict, vp: int, rp: int, bg_img_src="err"): try: #打开图片进行测试 bg_img = Image.open(io.BytesIO(await img_requestor(bg_img_src))) except UnidentifiedImageError as result: - err_str = f"ERR! [{GetTime()}] get_shop_img_169 bg_img check\n```\n{result}\n```" + err_str = f"ERR! [{getTime()}] get_shop_img_169 bg_img check\n```\n{result}\n```" _log.exception("Exception in bg_img check") return {"status": False, "value": f"当前使用的图片无法获取!请重新上传您的背景图\n{err_str}"} # 打开成功 @@ -378,7 +378,7 @@ async def get_shop_img_11(list_shop: dict, bg_img_src="err"): try: #打开图片进行测试 bg_img = Image.open(io.BytesIO(await img_requestor(bg_img_src))) except UnidentifiedImageError as result: - err_str = f"ERR! [{GetTime()}] get_shop_img_169 bg_img check\n```\n{result}\n```" + err_str = f"ERR! [{getTime()}] get_shop_img_169 bg_img check\n```\n{result}\n```" _log.exception("Exception in bg_img check") return {"status": False, "value": f"当前使用的图片无法获取!请重新上传您的背景图\n{err_str}"} # 打开成功 diff --git a/code/utils/ShopRate.py b/code/utils/ShopRate.py index e2fb1ba..0705364 100644 --- a/code/utils/ShopRate.py +++ b/code/utils/ShopRate.py @@ -6,7 +6,7 @@ from .valorant import Val from .FileManage import config,SkinRateDict,_log -from .Gtime import GetTime +from .Gtime import getTime PLATFORM = config['platform'] # 平台 # 初始化leancloud diff --git a/code/utils/api/ApiHandler.py b/code/utils/api/ApiHandler.py index 11eb1a0..81b7319 100644 --- a/code/utils/api/ApiHandler.py +++ b/code/utils/api/ApiHandler.py @@ -5,7 +5,7 @@ from utils.valorant.EzAuth import EzAuthExp,EzAuth from utils.api.ApiToken import check_token_rate -from utils.Gtime import GetTime +from utils.Gtime import getTime from utils.KookApi import kook_create_asset from utils.valorant.Val import fetch_daily_shop, fetch_vp_rp_dict from utils import ShopRate,ShopImg diff --git a/code/utils/log/BotLog.py b/code/utils/log/BotLog.py index c3fbd7d..5b8ef5a 100644 --- a/code/utils/log/BotLog.py +++ b/code/utils/log/BotLog.py @@ -8,7 +8,7 @@ # 用户数量的记录文件 from .Logging import _log from ..FileManage import bot, BotUserDict, FileManage -from ..Gtime import GetTime +from ..Gtime import getTime from ..KookApi import guild_list, guild_view, upd_card, get_card, icon_cm # 记录频道/服务器信息的底图 @@ -37,7 +37,7 @@ def log_bot_guild(user_id: str, guild_id: str) -> str: # 先记录用户 log_bot_user(user_id) # 获取当前时间 - time = GetTime() + time = getTime() # 服务器不存在,新的用户/服务器 if guild_id not in BotUserDict['guild']['data']: BotUserDict['guild']['data'][guild_id] = {} #不能连续创建两个键值! @@ -158,7 +158,7 @@ async def APIRequestFailed_Handler(def_name: str, - send_msg: return value of msg.reply or bot.send """ _log.exception(f"APIRequestFailed in {def_name} | Au:{msg.author_id}") - err_str = f"ERR! [{GetTime()}] {def_name} Au:{msg.author_id} APIRequestFailed\n{excp}" + err_str = f"ERR! [{getTime()}] {def_name} Au:{msg.author_id} APIRequestFailed\n{excp}" text = f"啊哦,出现了一些问题\n" + err_str text_sub = 'e' # 如果cm是None,则将cm赋值为空卡片消息 @@ -202,7 +202,7 @@ async def BaseException_Handler(def_name: str, - debug_send: Channel obj for sending err_str, send if not None - help: str for help_info, replyed in msg.reply """ - err_str = f"ERR! [{GetTime()}] {def_name} Au:{msg.author_id}\n```\n{excp}\n```" + err_str = f"ERR! [{getTime()}] {def_name} Au:{msg.author_id}\n```\n{excp}\n```" _log.exception(f"Exception in {def_name} | Au:{msg.author_id}") cm0 = CardMessage() c = Card(color='#fb4b57') @@ -235,7 +235,7 @@ async def get_proc_info() -> CardMessage: text += f"开辟的虚拟内存:{format((p.memory_info().vms / 1024 / 1024), '.4f')} MB\n" text += f"IO信息:\n{p.io_counters()}" cm = CardMessage() - c = Card(Module.Header(f"来看看阿狸当前的负载吧!"), Module.Context(f"记录于 {GetTime()}"), Module.Divider(), + c = Card(Module.Header(f"来看看阿狸当前的负载吧!"), Module.Context(f"记录于 {getTime()}"), Module.Divider(), Module.Section(Element.Text(text, Types.Text.KMD))) cm.append(c) return cm \ No newline at end of file diff --git a/code/utils/valorant/EzAuth.py b/code/utils/valorant/EzAuth.py index 1343f38..ff3fb85 100644 --- a/code/utils/valorant/EzAuth.py +++ b/code/utils/valorant/EzAuth.py @@ -11,7 +11,6 @@ from . import EzAuthExp from ..log.Logging import _log -from ..Gtime import GetTime # get latest version: https://valorant-api.com/v1/version X_RIOT_CLIENTVERSION = "RiotClient/63.0.9.4909983.4789131" X_RIOT_CLIENTVPLATFROM = "ew0KCSJwbGF0Zm9ybVR5cGUiOiAiUEMiLA0KCSJwbGF0Zm9ybU9TIjogIldpbmRvd3MiLA0KCSJwbGF0Zm9ybU9TVmVyc2lvbiI6ICIxMC4wLjE5MDQyLjEuMjU2LjY0Yml0IiwNCgkicGxhdGZvcm1DaGlwc2V0IjogIlVua25vd24iDQp9" @@ -42,7 +41,10 @@ def init_poolmanager(self, *a: Any, **k: Any) -> None: # 用于valorant api调用的UserDict class RiotUserToken: - + """a class contains: + + riot_user_id, access_token, entitlements_token, region + """ def __init__(self, user_id: str, access_token: str, entitlements: str, region: str) -> None: self.user_id = user_id self.access_token = access_token @@ -51,7 +53,7 @@ def __init__(self, user_id: str, access_token: str, entitlements: str, region: s class EzAuth: - + """a class for getting riot auth token""" def __init__(self) -> None: self.session = requests.Session() self.session.headers = OrderedDict({ @@ -60,13 +62,15 @@ def __init__(self) -> None: "Accept": "application/json, text/plain, */*" }) self.session.mount('https://', SSLAdapter()) - self.is2fa = False # 2fa set to false - self.__mfa_start = 0 # 2fa start time - self.init_time = 0 # when auth init? - self.is_init = False # is_init finised? + self.is2fa = False + """is riot account MFA turn-on?""" + self.__mfa_start = 0 + """2fa start time, default to 0""" + self.init_time = 0 + """when auth init? default to 0""" def __set_userinfo(self) -> None: - """set_user_info to value""" + """get and set user_info to self.value""" userinfo = self.get_userinfo() self.user_id = userinfo['sub'] self.Name = userinfo['name'] @@ -75,14 +79,18 @@ def __set_userinfo(self) -> None: self.typeban = userinfo['typeban'] def __set_region(self) -> None: + """get and set account region to `self.Region`""" self.Region_headers = { 'Content-Type': 'application/json', 'Authorization': f'{self.token_type} {self.access_token}' } self.Region = self.get_region(self.Region_headers) - def __set_access_token(self, data: dict) -> dict[str, Any]: - """get access_token from response""" + def __set_access_token(self, data: dict) -> dict[str, str]: + """get access_token from response + + Return: {"access_token": p_data[0], "id_token": p_data[1], "token_type": p_data[2], "expires_in": p_data[3]} + """ pattern = compile( 'access_token=((?:[a-zA-Z]|\d|\.|-|_)*).*id_token=((?:[a-zA-Z]|\d|\.|-|_)*).*token_type=((?:[a-zA-Z]|\d|)*).*expires_in=(\d*)' ) @@ -108,8 +116,14 @@ def __set_info(self, tokens: dict) -> None: self.entitlements_token = self.get_entitlement_token() self.__set_userinfo() self.__set_region() - self.init_time = GetTime() # get current localtime - self.is_init = True # set init as finised + self.init_time = time.time() # get current timestamp + + def is_init(self) -> bool: + """get if obj init finished, base on `self.init_time`, which will be set after init + - False: init_time==0 + - True: init_time!=0 + """ + return not self.init_time async def authorize(self, username, password) -> dict: """Authenticate using username and password.\n @@ -273,6 +287,8 @@ def get_region(self, headers) -> str: return Region def print(self) -> None: + """print self.value + """ print("=" * 50) print(f"Accestoken: {self.access_token}") print("-" * 50) @@ -314,7 +330,7 @@ def save_cookies(self, path: str) -> None: f.write(json.dumps(cookies)) def load_cookies(self, path: str) -> None: - """load cookies_dic from path (rb) + """load cookies_dic from path (r) """ with open(path, "r") as f: load_cookies = json.loads(f.read()) diff --git a/code/utils/valorant/Reauth.py b/code/utils/valorant/Reauth.py index c128cd0..5c8c781 100644 --- a/code/utils/valorant/Reauth.py +++ b/code/utils/valorant/Reauth.py @@ -31,7 +31,7 @@ async def check_user_send_err(result:str,kook_user_id:str,is_vip:bool) ->str: del SkinNotifyDict['data'][kook_user_id] text+=f"del SkinNotifyDict['data'][{kook_user_id}], " # 添加到err_user中 - SkinNotifyDict['err_user'][kook_user_id] = Gtime.GetTime() + SkinNotifyDict['err_user'][kook_user_id] = Gtime.getTime() text+= "add to ['err_user']" return text @@ -68,7 +68,7 @@ async def login_reauth(kook_user_id: str, riot_user_id: str) -> bool: UserAuthCache['data'][riot_user_id]['auth'] = auth auth.save_cookies(f"./log/cookie/{kook_user_id}.cke") # 保存cookie # 记录使用账户密码重新登录的时间,和对应的账户 - UserPwdReauth[kook_user_id][Gtime.GetTime()] = f"{auth.Name}#{auth.Tag}" + UserPwdReauth[kook_user_id][Gtime.getTime()] = f"{auth.Name}#{auth.Tag}" _log.info(base_print + "authorize by account/passwd") ret = True # 正好返回auth.reauthorize()的bool From 51ec894a1305537c2d53a9e862fd6da392104f2a Mon Sep 17 00:00:00 2001 From: musnows Date: Wed, 8 Mar 2023 16:22:15 +0800 Subject: [PATCH 07/31] refactor(main): modify def return value type to pass pylance check --- code/main.py | 47 +++++++++++++++++++------------------- code/utils/ShopRate.py | 11 ++++----- code/utils/valorant/Val.py | 18 ++++++++------- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/code/main.py b/code/main.py index 5e6d80e..07a2b24 100644 --- a/code/main.py +++ b/code/main.py @@ -21,7 +21,7 @@ get_card) from utils.valorant.Val import * from utils.valorant.EzAuth import EzAuth, EzAuthExp -from utils.Gtime import getTime, getTimeStampOf8AM +from utils.Gtime import getTime, getTimeStampOf8AM,shop_time_remain # bot的token文件 from utils.FileManage import config, bot, ApiAuthLog, Save_All_File, Login_Forbidden @@ -38,6 +38,7 @@ VIP_BG_SIZE = 4 # vip用户背景图片数量限制 RATE_LIMITED_TIME = 180 # 全局登录速率超速等待秒数 LOGIN_LIMITED = 3 # 所有用户最多都只能登录3个riot账户 +cm = CardMessage() # 全局空卡片消息,覆盖exception里面的 # 记录开机时间 start_time = getTime() @@ -536,19 +537,19 @@ async def vip_shop_bg_set(msg: Message, icon: str = "err", *arg): await msg.reply(f"请提供正确的图片url!\n当前:`{icon}`") return + x3 = "[None]" try: if not await BotVip.vip_ck(msg): return - - x3 = "[None]" - if icon != 'err': - user_ind = (msg.author_id in VipShopBgDict['bg']) #判断当前用户在不在dict中 + + if icon != 'err': # 不为空且走到这里了,代表通过了对icon参数是否为http链接的检查 + user_ind = (msg.author_id in VipShopBgDict['bg']) # 判断当前用户在不在dict中 if user_ind and len(VipShopBgDict['bg'][msg.author_id]["background"]) >= VIP_BG_SIZE: cm = await get_card(f"当前仅支持保存{VIP_BG_SIZE}个自定义图片", "您可用「/vip-shop-d 图片编号」删除已有图片再添加", icon_cm.that_it) await msg.reply(cm) return - #提取图片url + # 提取图片url x1 = icon.find('](') x2 = icon.find(')', x1 + 2) x3 = icon[x1 + 2:x2] @@ -611,7 +612,8 @@ async def vip_shop_bg_set_s(msg: Message, num: str = "err", *arg): return num = int(num) # type: ignore - if num < len(VipShopBgDict['bg'][msg.author_id]["background"]): # type: ignore + assert isinstance(num,int) + if num < len(VipShopBgDict['bg'][msg.author_id]["background"]): try: #打开用户需要切换的图片 bg_vip = Image.open( io.BytesIO(await ShopImg.img_requestor(VipShopBgDict['bg'][msg.author_id]["background"][num]))) @@ -658,7 +660,8 @@ async def vip_shop_bg_set_d(msg: Message, num: str = "err", *arg): await msg.reply("您尚未自定义商店背景图!") return - num = int(num) + num = int(num) # type: ignore + assert isinstance(num,int) if num < len(VipShopBgDict['bg'][msg.author_id]["background"]) and num > 0: # 删除图片 del_img_url = VipShopBgDict['bg'][msg.author_id]["background"][num] @@ -914,8 +917,8 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', # 1.检查全局登录速率 await check_GloginRate() # 无须接收此函数返回值,直接raise # 2.发送开始登录的提示消息 - cm0 = await get_card("正在尝试获取您的riot账户token", "小憩一下,很快就好啦!", icon_cm.val_logo_gif) - send_msg = await msg.reply(cm0) #记录消息id用于后续更新 + cm = await get_card("正在尝试获取您的riot账户token", "小憩一下,很快就好啦!", icon_cm.val_logo_gif) + send_msg = await msg.reply(cm) #记录消息id用于后续更新 # 3.登录,获取用户的token auth = EzAuth() @@ -924,8 +927,8 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', await AuthCache.cache_auth_object('kook',msg.author_id,auth) # 3.2 没有成功,是2fa用户,需要执行/tfa命令 if not resw['status']: - cm1 = await get_card("请使用「/tfa 验证码」提供邮箱验证码","登录中断,需要提供邮箱验证码",icon_cm.whats_that) - await upd_card(send_msg['msg_id'], cm1, channel_type=msg.channel_type) + cm = await get_card("请使用「/tfa 验证码」提供邮箱验证码","登录中断,需要提供邮箱验证码",icon_cm.whats_that) + await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) _log.info(f"login | 2fa user | Au:{msg.author_id}") # 打印信息 return @@ -1297,10 +1300,10 @@ async def get_daily_shop(msg: Message,index:str = "0",*arg): await ShopRate.update_ShopCache(skinlist=list_shop, img_url=dailyshop_img_src) # 6.结束shop的总计时,结果为浮点数,保留两位小数 - shop_using_time = format(time.perf_counter() - start, '.2f') + end = time.perf_counter() + shop_using_time = format(end - start, '.2f') # 7.商店的图片 卡片 - cm = CardMessage() c = Card(color='#fb4b57') c.append(Module.Header(f"玩家 {player_gamename} 的每日商店!")) c.append(Module.Context(f"失效时间剩余: {timeout} 本次查询用时: {shop_using_time}s")) @@ -1320,7 +1323,7 @@ async def get_daily_shop(msg: Message,index:str = "0",*arg): except Exception as result: err_str = f"ERR! [{getTime()}] shop\n```\n{traceback.format_exc()}\n```\n" if "SkinsPanelLayout" in str(result): - _log.error(err_str + resp) + _log.error(err_str + str(resp)) btext = f"KeyError:{result}, please re-login\n如果此问题重复出现,请[联系开发者](https://kook.top/gpbTwZ)" cm = await get_card(f"键值错误,需要重新登录", btext, icon_cm.whats_that) await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) @@ -1388,20 +1391,19 @@ async def get_night_market(msg: Message,index:str="0", *arg): timeout = resp["BonusStore"]["BonusStoreRemainingDurationInSeconds"] #剩余时间 timeout = time.strftime("%d %H:%M:%S", time.gmtime(timeout)) #将秒数转为标准时间 - cm = CardMessage() c = Card(color='#fb4b57') c.append( Module.Header( f"玩家 {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']} 的夜市!")) for Bonus in resp["BonusStore"]["BonusStoreOffers"]: + # 获取皮肤信息 skin = fetch_skin_bylist(Bonus["Offer"]["OfferID"]) skin_icon = skin["data"]['levels'][0]["displayIcon"] skin_name = skin["data"]["displayName"] - for it in ValSkinList['data']: #查找皮肤的等级 - if it['levels'][0]['uuid'] == Bonus["Offer"]["OfferID"]: - res_iters = fetch_item_iters_bylist(it['contentTierUuid']) - break - iter_emoji = ValItersEmoji[res_iters['data']['devName']] + # 获取皮肤的等级 + res_iters = fetch_skin_iters_bylist(Bonus["Offer"]["OfferID"]) + # 从预先上传的自定义emoji里面,选择一个和皮肤等级对应的emoji + iter_emoji = ValItersEmoji[res_iters['data']['devName']] basePrice = Bonus["Offer"]["Cost"]["85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741"] #原价 discPercent = Bonus["DiscountPercent"] # 打折百分比 discPrice = Bonus["DiscountCosts"]["85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741"] #打折后的价格 @@ -1636,7 +1638,6 @@ async def rate_skin_add(msg: Message, *arg): ret = await ShopRate.get_skinlist_rate_text(retlist, msg.author_id) text = f"```\n{ret['text']}```" - cm = CardMessage() c = Card(Module.Header(f"查询到 {name} 相关皮肤如下"), Module.Section(Element.Text(text, Types.Text.KMD)), Module.Section(Element.Text("请使用以下命令对皮肤进行评分;\n√代表您已评价过该皮肤,+已有玩家评价,-无人评价\n", Types.Text.KMD))) text1 = "```\n/rts 序号 评分 吐槽\n" @@ -1720,7 +1721,6 @@ async def rate_skin_select(msg: Message, index: str = "err", rating: str = "err" text2 += f"您的评分:{_rating}\n" text2 += f"皮肤平均分:{point}\n" text2 += f"您的评语:{comment}" - cm = CardMessage() c = Card(Module.Header(text1), Module.Divider(), Module.Section(Element.Text(text2, Types.Text.KMD))) cm.append(c) # 设置成功并删除list后,再发送提醒事项设置成功的消息 @@ -1749,7 +1749,6 @@ async def show_shoprate(msg: Message): await msg.reply(f"获取昨日天选之子和丐帮帮主出错!请重试或联系开发者") return - cm = CardMessage() c = Card(Module.Header(f"来看看昨日天选之子和丐帮帮主吧!"), Module.Divider()) # best text = "" diff --git a/code/utils/ShopRate.py b/code/utils/ShopRate.py index 0705364..97b5490 100644 --- a/code/utils/ShopRate.py +++ b/code/utils/ShopRate.py @@ -6,7 +6,6 @@ from .valorant import Val from .FileManage import config,SkinRateDict,_log -from .Gtime import getTime PLATFORM = config['platform'] # 平台 # 初始化leancloud @@ -17,7 +16,7 @@ leanAcl = leancloud.ACL() leanAcl.set_public_read_access(True) # 所有用户可读 # 设置当前登录用户的的可写权限 -leanAcl.set_write_access(leancloud.User.get_current().id, True) +leanAcl.set_write_access(leancloud.User.get_current().id, True) #type:ignore # 设置管理员角色写权限 leanAcl.set_role_write_access(leancloud.Role('admin'), True) @@ -215,7 +214,7 @@ async def update_ShopCmp(best:dict,worse:dict,platform:str,resetNo = False): return { "status":False,"info":err} # 获取昨日最好/最差用户 -async def get_ShopCmp(): +async def get_ShopCmp() -> dict: """Return:{ "status": True/False "best":{ @@ -233,7 +232,7 @@ async def get_ShopCmp(): query = leancloud.Query('ShopCmp') query.exists('rating') # 通过键值是否存在,进行查找 objlist = query.find() - ret = {"status":False} + ret = {"status":False,'best':{},'worse':{}} if len(objlist) == 2: # 应该是有两个的 ret['status'] = True for i in objlist: @@ -424,7 +423,7 @@ async def remove_UserRate(skin_uuid:str,user_id:str): import hashlib # 生成字符串的MD5值 -def md5(content:str=None): +def md5(content:str): """generate md5 for string """ if content is None: @@ -437,7 +436,7 @@ def md5(content:str=None): # 生成字符串的SHA256值 -def sha256(content:str=None): +def sha256(content:str): if content is None: return '' sha256gen = hashlib.sha256() diff --git a/code/utils/valorant/Val.py b/code/utils/valorant/Val.py index 9056047..493e502 100644 --- a/code/utils/valorant/Val.py +++ b/code/utils/valorant/Val.py @@ -69,22 +69,23 @@ async def dx123(msg: Message) -> None: #从list中获取价格 -def fetch_item_price_bylist(item_id) -> dict | None: +def fetch_item_price_bylist(item_id) -> dict: for item in ValPriceList['Offers']: #遍历查找指定uuid if item_id == item['OfferID']: return item - + return {} #从list中获取等级(这个需要手动更新) -def fetch_item_iters_bylist(iter_id) -> dict | None: +def fetch_item_iters_bylist(iter_id) -> dict: + res = {} for iter in ValItersList['data']: #遍历查找指定uuid if iter_id == iter['uuid']: res = {'data': iter} #所以要手动创建一个带data的dict作为返回值 - return res + return res #从list中获取皮肤 -def fetch_skin_bylist(item_id) -> dict | None: +def fetch_skin_bylist(item_id) -> dict: res = {} #下面我们要操作的是获取通行证的皮肤,但是因为遍历的时候已经跳过data了,返回的时候就不好返回 for item in ValSkinList['data']: #遍历查找指定uuid if item_id == item['levels'][0]['uuid']: @@ -98,7 +99,7 @@ def fetch_skin_bylist(item_id) -> dict | None: # 没找到,替换成err图片 res['data']['displayIcon'] = SKIN_ICON_ERR - return res + return res #从list中,通过皮肤名字获取皮肤列表 @@ -112,11 +113,12 @@ def fetch_skin_list_byname(name) ->list[dict]: #从list中通过皮肤lv0uuid获取皮肤等级 -def fetch_skin_iters_bylist(item_id) -> dict | None: +def fetch_skin_iters_bylist(item_id) -> dict: + res_iters = {} for it in ValSkinList['data']: if it['levels'][0]['uuid'] == item_id: res_iters = fetch_item_iters_bylist(it['contentTierUuid']) - return res_iters + return res_iters # 用名字查询捆绑包包含什么枪 From 09dc6c49f41ec2c9c3f861663f652941633bd4f5 Mon Sep 17 00:00:00 2001 From: musnows Date: Wed, 8 Mar 2023 17:15:54 +0800 Subject: [PATCH 08/31] fix(EzAuth): fix err in is_init; feat(main): finished motiply account search in /uinfo feat(KookApi): add card reply in get_card --- code/main.py | 133 +++++++++++++++++----------------- code/utils/KookApi.py | 11 ++- code/utils/valorant/EzAuth.py | 6 +- 3 files changed, 79 insertions(+), 71 deletions(-) diff --git a/code/main.py b/code/main.py index 07a2b24..ad237ee 100644 --- a/code/main.py +++ b/code/main.py @@ -1304,6 +1304,7 @@ async def get_daily_shop(msg: Message,index:str = "0",*arg): shop_using_time = format(end - start, '.2f') # 7.商店的图片 卡片 + cm = CardMessage() c = Card(color='#fb4b57') c.append(Module.Header(f"玩家 {player_gamename} 的每日商店!")) c.append(Module.Context(f"失效时间剩余: {timeout} 本次查询用时: {shop_using_time}s")) @@ -1391,6 +1392,7 @@ async def get_night_market(msg: Message,index:str="0", *arg): timeout = resp["BonusStore"]["BonusStoreRemainingDurationInSeconds"] #剩余时间 timeout = time.strftime("%d %H:%M:%S", time.gmtime(timeout)) #将秒数转为标准时间 + cm = CardMessage() c = Card(color='#fb4b57') c.append( Module.Header( @@ -1454,86 +1456,87 @@ async def get_user_card(msg: Message, *arg): return # 初始化变量 send_msg = {'msg_id':''} - cm = CardMessage() try: # 1.判断用户是否登录 if msg.author_id not in UserAuthCache['kook']: await msg.reply(await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that)) return - + # 1.1 发送开始的提示信息 + cm = await get_card("获取您所有账户的 玩家卡面/VP/R点", "阿狸正在施法!很快就好啦~", icon_cm.rgx_card,card_color="#BBFFFF") + send_msg = await msg.reply(cm) # 2.uinfo直接使用for循环来获取不同用户的信息 + cm = CardMessage() for riot_user_id in UserAuthCache['kook'][msg.author_id]: - # 执行cookie重登 - reau = await Reauth.check_reauth("玩家信息",msg.author_id,riot_user_id,debug_ch,msg) - if reau == False: return #如果为假说明重新登录失败 - - cm = await get_card("正在尝试获取您的 玩家卡面/VP/R点", "阿狸正在施法,很快就好啦!", icon_cm.rgx_card) - if isinstance(reau, dict): # 如果传过来的是一个dict,说明重新登录成功且发送了消息 - await upd_card(reau['msg_id'], cm, channel_type=msg.channel_type) - send_msg = reau - else: # 如果不需要重新登录,则直接发消息 - send_msg = await msg.reply(cm) #记录消息id用于后续更新 - - auth = UserAuthCache['data'][riot_user_id]['auth'] - assert isinstance(auth, EzAuth) - riotUser = auth.get_riotuser_token() - resp = await fetch_player_loadout(riotUser) #获取玩家装备栏 - player_card = await fetch_playercard_uuid(resp['Identity']['PlayerCardID']) #玩家卡面id - player_title = await fetch_title_uuid(resp['Identity']['PlayerTitleID']) #玩家称号id - if 'data' not in player_card or player_card['status'] != 200: - player_card = {'data': {'wideArt': 'https://img.kookapp.cn/assets/2022-09/PDlf7DcoUH0ck03k.png'}} - _log.warning(f"player_card | Au:{msg.author_id} | uuid:{resp['Identity']['PlayerCardID']}") - if 'data' not in player_title or player_title['status'] != 200: - player_title = { - 'data': { - "displayName": f"未知玩家卡面uuid!\nUnknow uuid: `{resp['Identity']['PlayerTitleID']}`" + try: + # 执行cookie重登 + reau = await Reauth.check_reauth("玩家信息",msg.author_id,riot_user_id,debug_ch,msg) + if reau == False: return #如果为假说明重新登录失败 + + if isinstance(reau, dict): # 如果传过来的是一个dict,说明重新登录成功且发送了消息 + await upd_card(reau['msg_id'], cm, channel_type=msg.channel_type) + send_msg = reau # 再次覆盖更新消息 + + auth = UserAuthCache['data'][riot_user_id]['auth'] + assert isinstance(auth, EzAuth) + riotUser = auth.get_riotuser_token() + resp = await fetch_player_loadout(riotUser) #获取玩家装备栏 + player_card = await fetch_playercard_uuid(resp['Identity']['PlayerCardID']) #玩家卡面id + player_title = await fetch_title_uuid(resp['Identity']['PlayerTitleID']) #玩家称号id + if 'data' not in player_card or player_card['status'] != 200: + player_card = {'data': {'wideArt': 'https://img.kookapp.cn/assets/2022-09/PDlf7DcoUH0ck03k.png'}} + _log.warning(f"player_card | Au:{msg.author_id} | uuid:{resp['Identity']['PlayerCardID']}") + if 'data' not in player_title or player_title['status'] != 200: + player_title = { + 'data': { + "displayName": f"未知玩家卡面uuid!\nUnknow uuid: `{resp['Identity']['PlayerTitleID']}`" + } } - } - _log.warning(f"player_title | Au:{msg.author_id} | uuid:{resp['Identity']['PlayerTitleID']}") - # 可能遇到全新账户(没打过游戏)的情况 - if resp['Guns'] == None or resp['Sprays'] == None: - cm = await get_card(f"状态错误!您是否登录了一个全新(没上过号)账户?", f"card: `{player_card}`\ntitle: `{player_title}`", - icon_cm.whats_that) - await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) - return - - # 获取玩家等级 - resp = await fetch_player_level(riotUser) - player_level = resp["Progress"]["Level"] # 玩家等级 - player_level_xp = resp["Progress"]["XP"] # 玩家等级经验值 - last_fwin = resp["LastTimeGrantedFirstWin"] # 上次首胜时间 - next_fwin = resp["NextTimeFirstWinAvailable"] # 下次首胜重置 - c = Card(color='#fb4b57') - c.append( - Module.Header( - f"玩家 {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']} 的个人信息")) - c.append(Module.Container(Element.Image(src=player_card['data']['wideArt']))) #将图片插入进去 - text = f"玩家称号:" + player_title['data']['displayName'] + "\n" - text += f"玩家等级:{player_level} - 经验值:{player_level_xp}\n" - text += f"上次首胜:{last_fwin}\n" - text += f"首胜重置:{next_fwin}" - c.append(Module.Section(Element.Text(text, Types.Text.KMD))) - - #获取玩家的vp和r点剩余的text - resp = await fetch_vp_rp_dict(riotUser) - text = f"(emj)r点(emj)[3986996654014459/X3cT7QzNsu03k03k] RP {resp['rp']} " - text += f"(emj)vp(emj)[3986996654014459/qGVLdavCfo03k03k] VP {resp['vp']}\n" - c.append(Module.Section(Element.Text(text, Types.Text.KMD))) - cm.append(c) + _log.warning(f"player_title | Au:{msg.author_id} | uuid:{resp['Identity']['PlayerTitleID']}") + # 可能遇到全新账户(没打过游戏)的情况 + if resp['Guns'] == None or resp['Sprays'] == None: + c = await get_card(f"状态错误!您是否登录了一个全新(没上过号)账户?", + f"card:\n```\n{player_card}\n```\ntitle:\n```\n{player_title}\n```", + icon_cm.whats_that,full_cm=False) + cm.append(c) + continue + + # 获取玩家等级 + resp = await fetch_player_level(riotUser) + player_level = resp["Progress"]["Level"] # 玩家等级 + player_level_xp = resp["Progress"]["XP"] # 玩家等级经验值 + last_fwin = resp["LastTimeGrantedFirstWin"] # 上次首胜时间 + next_fwin = resp["NextTimeFirstWinAvailable"] # 下次首胜重置 + c = Card(color='#fb4b57') + c.append( + Module.Header( + f"玩家 {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']} 的个人信息")) + c.append(Module.Container(Element.Image(src=player_card['data']['wideArt']))) #将图片插入进去 + text = f"玩家称号:" + player_title['data']['displayName'] + "\n" + text += f"玩家等级:{player_level} - 经验值:{player_level_xp}\n" + text += f"上次首胜:{last_fwin}\n" + text += f"首胜重置:{next_fwin}" + c.append(Module.Section(Element.Text(text, Types.Text.KMD))) + + #获取玩家的vp和r点剩余的text + resp = await fetch_vp_rp_dict(riotUser) + text = f"(emj)r点(emj)[3986996654014459/X3cT7QzNsu03k03k] RP {resp['rp']} " + text += f"(emj)vp(emj)[3986996654014459/qGVLdavCfo03k03k] VP {resp['vp']}\n" + c.append(Module.Section(Element.Text(text, Types.Text.KMD))) + cm.append(c) + except KeyError as result: + if "Identity" in str(result) or "Balances" in str(result): + _log.exception(f"KeyErr while Ru:{riot_user_id}") + cm2 = await get_card(f"键值错误,需要重新登录", f"KeyError:{result}, please re-login", icon_cm.lagging) + await upd_card(send_msg['msg_id'], cm2, channel_type=msg.channel_type) - # 多个账户都获取完毕,输出结果 + # 多个账户都获取完毕,发送卡片并输出结果 await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) _log.info(f"Au:{msg.author_id} | uinfo reply successful!") except requester.HTTPRequester.APIRequestFailed as result: # 卡片消息发送失败 await BotLog.APIRequestFailed_Handler("uinfo", traceback.format_exc(), msg, bot, cm, send_msg=send_msg) except Exception as result: - if "Identity" in str(result) or "Balances" in str(result): - _log.exception("Exception occur") - cm2 = await get_card(f"键值错误,需要重新登录", f"KeyError:{result}, please re-login", icon_cm.lagging) - await upd_card(send_msg['msg_id'], cm2, channel_type=msg.channel_type) - else: - await BotLog.BaseException_Handler("uinfo", traceback.format_exc(), msg, send_msg=send_msg) + await BotLog.BaseException_Handler("uinfo", traceback.format_exc(), msg, send_msg=send_msg) # 获取捆绑包信息(无需登录) diff --git a/code/utils/KookApi.py b/code/utils/KookApi.py index a8e05ed..6da7f48 100644 --- a/code/utils/KookApi.py +++ b/code/utils/KookApi.py @@ -152,8 +152,7 @@ async def upd_card(msg_id: str, # 获取常用的卡片消息 -async def get_card(text: str, sub_text='e', img_url='e', card_color='#fb4b57', img_sz='sm'): - cm = CardMessage() +async def get_card(text: str, sub_text='e', img_url='e', card_color='#fb4b57', img_sz='sm',full_cm:bool=True): c = Card(color=card_color) if img_url != 'e': c.append(Module.Section(Element.Text(text, Types.Text.KMD), Element.Image(src=img_url, size=img_sz))) @@ -161,5 +160,9 @@ async def get_card(text: str, sub_text='e', img_url='e', card_color='#fb4b57', i c.append(Module.Section(Element.Text(text, Types.Text.KMD))) if sub_text != 'e': c.append(Module.Context(Element.Text(sub_text, Types.Text.KMD))) - cm.append(c) - return cm \ No newline at end of file + if full_cm: + cm = CardMessage() + cm.append(c) + return cm + else: + return c \ No newline at end of file diff --git a/code/utils/valorant/EzAuth.py b/code/utils/valorant/EzAuth.py index ff3fb85..5f84557 100644 --- a/code/utils/valorant/EzAuth.py +++ b/code/utils/valorant/EzAuth.py @@ -66,7 +66,7 @@ def __init__(self) -> None: """is riot account MFA turn-on?""" self.__mfa_start = 0 """2fa start time, default to 0""" - self.init_time = 0 + self.init_time = 0.0 """when auth init? default to 0""" def __set_userinfo(self) -> None: @@ -123,7 +123,9 @@ def is_init(self) -> bool: - False: init_time==0 - True: init_time!=0 """ - return not self.init_time + if self.init_time == 0: + return False + return True async def authorize(self, username, password) -> dict: """Authenticate using username and password.\n From 368c4ea475f1757ca7163254f8f0439f297f65a7 Mon Sep 17 00:00:00 2001 From: musnows Date: Wed, 8 Mar 2023 17:19:34 +0800 Subject: [PATCH 09/31] fix(main): fix keyerr of username in /logout cmd --- code/main.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/main.py b/code/main.py index ad237ee..de16af5 100644 --- a/code/main.py +++ b/code/main.py @@ -1072,7 +1072,7 @@ async def logout(msg: Message, *arg): await msg.reply(cm) return - log_text = f"[Logout] Au:{msg.author_id} - {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" + log_text = f"Logout | Au:{msg.author_id}" # 2.如果id存在,删除auth对象; 删除UserRiotName里面存放的用户游戏名/uuid # 2.1 删除对象 riot_user_id_list = UserAuthCache['kook'][msg.author_id] @@ -1086,9 +1086,9 @@ async def logout(msg: Message, *arg): # 3.1 判断路径是否存在,存在直接删除 if os.path.exists(cookie_path): os.remove(cookie_path) # 删除文件 - log_text += " - rm cookie file" + log_text += " | rm cookie file" # 4.成功,发提示信息 - text = f"已退出登录!下次再见,{UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" + text = f"已退出所有账户的登录!下次再见~" cm = await get_card(text, "你会回来的,对吗?", icon_cm.crying_crab) await msg.reply(cm) _log.info(log_text) From caac1605a30bca9f560649ad2554687a9d0edb10 Mon Sep 17 00:00:00 2001 From: musnows Date: Wed, 8 Mar 2023 17:20:35 +0800 Subject: [PATCH 10/31] fix(makefile): >> /dev/null fix(main): log.fatch in startup task --- code/main.py | 2 +- code/makefile | 4 ++-- code/utils/log/BotLog.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/main.py b/code/main.py index de16af5..90f1211 100644 --- a/code/main.py +++ b/code/main.py @@ -2236,7 +2236,7 @@ async def loading_cache(bot: Bot): debug_ch = await bot.client.fetch_public_channel(config['channel']['debug_ch']) _log.info("[BOT.TASK] fetch_public_channel success") except: - _log.error("[BOT.TASK] fetch_public_channel failed") + _log.fatal("[BOT.TASK] fetch_public_channel failed") _log.exception("Exception occur") os._exit(-1) #出现错误直接退出程序 diff --git a/code/makefile b/code/makefile index 6892c41..6e2127d 100644 --- a/code/makefile +++ b/code/makefile @@ -1,7 +1,7 @@ .PHONY:run run: - nohup python3.10 -u start.py >> ./log/out.log 2>&1 & - + nohup python3.10 -u start.py >> /dev/null 2>&1 & +# 包含khl输出结果的信息里面会有用户的账户密码,重定向到黑洞,避免打印账户密码 .PHONY:ps ps: ps jax | head -1 && ps jax | grep start.py | grep -v grep \ No newline at end of file diff --git a/code/utils/log/BotLog.py b/code/utils/log/BotLog.py index 5b8ef5a..bb5275b 100644 --- a/code/utils/log/BotLog.py +++ b/code/utils/log/BotLog.py @@ -124,7 +124,7 @@ async def log_bot_list(msg: Message) -> FileManage: # 通过log_bot_list分选出两列服务器名和服务器用户数 -async def log_bot_list_text(logDict: dict) -> dict[str, str]: +async def log_bot_list_text(logDict: dict|FileManage) -> dict[str, str]: i = 1 text_name = "No 服务器名\n" text_user = "用户数\n" From 95f0afd5f4201ec2f2f22d0c39350f95d162f4dd Mon Sep 17 00:00:00 2001 From: musnows Date: Wed, 8 Mar 2023 18:09:14 +0800 Subject: [PATCH 11/31] feat(main): update VipShopBg['cache'] for caching riot_user_id --- code/config/color_emoji.json | 4 +- code/main.py | 89 +++++++++++++++--------------------- 2 files changed, 40 insertions(+), 53 deletions(-) diff --git a/code/config/color_emoji.json b/code/config/color_emoji.json index ecc95d7..82205bc 100644 --- a/code/config/color_emoji.json +++ b/code/config/color_emoji.json @@ -17,6 +17,8 @@ "Premium": "3986996654014459/ZT2et4zNSa074074", "Select": "3986996654014459/HOGPjGnwoT074074", "Ultra": "3986996654014459/5MPICFpxsa074074", - "Exclusive": "3986996654014459/5pj9z3T8sL074074" + "Exclusive": "3986996654014459/5pj9z3T8sL074074", + "vp":"3986996654014459/qGVLdavCfo03k03k", + "rp":"3986996654014459/X3cT7QzNsu03k03k" } } \ No newline at end of file diff --git a/code/main.py b/code/main.py index 90f1211..fa5d861 100644 --- a/code/main.py +++ b/code/main.py @@ -424,8 +424,6 @@ async def buy_vip_uuid(msg: Message, uuid: str = 'err', *arg): try: #把bot传过去是为了让阿狸在有人成兑换激活码之后发送消息到log频道 ret = await BotVip.using_vip_uuid(msg, uuid, bot, debug_ch) - global VipShopBgDict #在用户兑换vip的时候就创建此键值 - VipShopBgDict['cache'][msg.author_id] = {'cache_time': 0, 'cache_img': None} except Exception as result: await BotLog.BaseException_Handler("vip-u", traceback.format_exc(), msg, debug_send=debug_ch) @@ -839,26 +837,11 @@ async def vip_time_add(msg: Message, vday: int = 1, *arg): def check_rate_err_user(kook_user_id: str)-> bool: """检查皮肤评分的错误用户(违规用户) - - Return: - kook_user_id in SkinRateDict['err_user'] """ return (kook_user_id in SkinRateDict['err_user']) -def isSame_Authuuid(kook_user_id:str) -> bool: - """判断UserShopCache["data"]商店缓存中的riot用户uuid是否相等。如果不相等,需要获取新商店 - - Return: - - False: kook_user_id not in UserShopCache["data"] - - UserShopCache["data"][kook_user_id]["auth_user_id"] == UserRiotName[kook_user_id]["auth_user_id"] - """ - # 用户不在缓存中,也是错误的 - if kook_user_id not in UserShopCache["data"]: - return False - # 用户在,则判断uuid是否相等 - return UserShopCache["data"][kook_user_id]["auth_user_id"] == UserRiotName[kook_user_id]["auth_user_id"] - def isClear_UserShopCache() -> bool: """判断UserShopCache["data"]是否在当日早八被清空(避免定时任务没有正常执行) - True: 如果已经清空,则返回True且啥都不做 @@ -872,6 +855,24 @@ def isClear_UserShopCache() -> bool: UserShopCache["data"] = {} return False +def is_CacheLatest(kook_user_id: str,riot_user_id:str) -> bool: + """判断vip用户缓存好的图片是否可用,需要满足几个条件: + - vip用户有配置自定义背景图 + - vip用户没有切换登录账户/切换背景图 + - 当前需要获取商店的拳头用户id在缓存中 + """ + is_Status = False + # 1.判断vip用户是否在背景图配置中,且没有切换登录用户/切换背景图 + if kook_user_id in VipShopBgDict['bg']: + is_Status = VipShopBgDict['bg'][kook_user_id]['status'] # 如果有切换登录用户/背景图,此为false + # 2.拳头用户在vip缓存中 + if riot_user_id in VipShopBgDict['cache']: + # 判断图片是不是今天的(可能出现早八提醒的时候出错,导致缓存没有更新,是昨天的图) + is_Today = (VipShopBgDict['cache'][riot_user_id]['cache_time'] - getTimeStampOf8AM()) > 0 + return is_Today and is_Status # 有一个为false,结果就是false + + return False + # 检查全局用户登录速率 async def check_GloginRate(): @@ -1153,24 +1154,6 @@ async def login_list(msg:Message,*arg): await BotLog.BaseException_Handler("login-l", traceback.format_exc(), msg) - - -# 判断缓存好的图片是否可用 -def is_CacheLatest(kook_user_id: str): - # 判断vip用户是否在背景图中,且没有 切换登录用户/切换背景图 - is_Status = False - if kook_user_id in VipShopBgDict['bg']: - is_Status = VipShopBgDict['bg'][kook_user_id]['status'] # 如果有切换登录用户/背景图,此为false - # 判断图片是不是今天的(可能出现早八提醒的时候出错,导致缓存没有更新,是昨天的图) - if kook_user_id in VipShopBgDict['cache']: - is_Today = (VipShopBgDict['cache'][kook_user_id]['cache_time'] - getTimeStampOf8AM()) >= 0 - is_Cache = VipShopBgDict['cache'][kook_user_id]['cache_img'] != None - return is_Today and is_Status and is_Cache # 有一个为false,结果就是false - else: # 如果不在,初始化为none,时间戳为0 - VipShopBgDict['cache'][kook_user_id] = {'cache_time': 0, 'cache_img': None} - return False - - # 获取每日商店的命令 @bot.command(name='shop', aliases=['SHOP']) async def get_daily_shop(msg: Message,index:str = "0",*arg): @@ -1226,8 +1209,8 @@ async def get_daily_shop(msg: Message,index:str = "0",*arg): a_time = time.time() global UserShopCache, VipShopBgDict # 4.3.1 UserShopDict每天早八会被清空,如果用户在里面且玩家id一样,那么说明已经获取过当日商店了 - if isClear_UserShopCache() and isSame_Authuuid(msg.author_id): # 直接使用本地已有的当日商店 - list_shop = UserShopCache["data"][msg.author_id]["SkinsPanelLayout"]["SingleItemOffers"] # 商店刷出来的4把枪 + if isClear_UserShopCache() and auth.user_id in UserShopCache["data"]: # 直接使用本地已有的当日商店 + list_shop = UserShopCache["data"][auth.user_id]["SkinsPanelLayout"]["SingleItemOffers"] # 商店刷出来的4把枪 timeout = shop_time_remain() # 通过当前时间计算商店剩余时间 log_time += f"[Dict_shop] {format(time.time()-a_time,'.4f')} " # 4.3.2 本地没有,api获取每日商店 @@ -1237,8 +1220,8 @@ async def get_daily_shop(msg: Message,index:str = "0",*arg): timeout = resp["SkinsPanelLayout"]["SingleItemOffersRemainingDurationInSeconds"] # 剩余时间 timeout = time.strftime("%H:%M:%S", time.gmtime(timeout)) # 将秒数转为标准时间 # 需要设置uuid来保证是同一个用户,方便同日的下次查询 - UserShopCache["data"][msg.author_id] = { - "auth_user_id":UserRiotName[msg.author_id]["auth_user_id"], + UserShopCache["data"][auth.user_id] = { + "kook_user_id": msg.author_id, "SkinsPanelLayout":resp["SkinsPanelLayout"] } log_time += f"[Api_shop] {format(time.time()-a_time,'.4f')} " @@ -1247,14 +1230,15 @@ async def get_daily_shop(msg: Message,index:str = "0",*arg): draw_time = time.time() # 计算画图需要的时间 is_vip = await BotVip.vip_ck(msg.author_id) # 判断用户是否为VIP img_ret = {'status': True, 'value': None} - upload_flag = True + upload_flag = True # 是否有缓存(无须上传图片) # 5.1 初始化商店图片的url为一个展示错误的图片 dailyshop_img_src = "https://img.kookapp.cn/assets/2023-02/5UxA8W06B70e803m.png" # 5.1.1 如果是vip而且path存在,背景图/登录用户没有更改过,图片缓存时间正确 - if is_vip and is_CacheLatest(msg.author_id): + if is_vip and is_CacheLatest(msg.author_id,auth.user_id): upload_flag = False # 有缓存图,直接使用本地已有链接 - dailyshop_img_src = VipShopBgDict['cache'][msg.author_id]['cache_img'] - elif is_vip: # 5.1.2 本地缓存路径不存在,或者缓存过期 + dailyshop_img_src = VipShopBgDict['cache'][auth.user_id]['cache_img'] + # 5.1.2 本地缓存路径不存在,或者缓存过期 + elif is_vip: play_currency = await fetch_vp_rp_dict(riotUser) # 获取用户的vp和rp # 如果没有设置背景图,那就设置为err background_img = ('err' if msg.author_id not in VipShopBgDict['bg'] else @@ -1263,7 +1247,7 @@ async def get_daily_shop(msg: Message,index:str = "0",*arg): vp=play_currency['vp'], rp=play_currency['rp'], bg_img_src=background_img) - else: # 5.1.3 普通用户 + else: # 5.1.3 普通用户 # 判断是否有缓存命中 cache_ret = await ShopRate.query_ShopCache(skinlist=list_shop) if not cache_ret['status']: # 缓存没有命中 @@ -1295,7 +1279,7 @@ async def get_daily_shop(msg: Message,index:str = "0",*arg): if msg.author_id in VipShopBgDict['bg']: VipShopBgDict['bg'][msg.author_id]['status'] = True # 设置商店图片缓存+图片缓存的时间 - VipShopBgDict['cache'][msg.author_id] = {'cache_img': dailyshop_img_src, 'cache_time': time.time()} + VipShopBgDict['cache'][auth.user_id] = {'cache_img': dailyshop_img_src, 'cache_time': time.time()} else: # 非vip,更新缓存 await ShopRate.update_ShopCache(skinlist=list_shop, img_url=dailyshop_img_src) @@ -2018,10 +2002,11 @@ async def auto_skin_notify(): timeout = time.strftime("%H:%M:%S", time.gmtime(timeout)) #将秒数转为标准时间 log_time = f"[Api_shop] {format(time.time()-a_time,'.4f')} " await ShopRate.check_shop_rate(vip, list_shop) #计算用户商店得分 - #vip用户会提前缓存当日商店,需要设置uuid来保证是同一个游戏用户 - UserShopCache["data"][vip] = {} - UserShopCache["data"][vip]["auth_user_id"] = UserRiotName[vip]["auth_user_id"] - UserShopCache["data"][vip]["SkinsPanelLayout"] = resp["SkinsPanelLayout"] + # vip用户会提前缓存当日商店,需要设置uuid来保证是同一个游戏用户 + UserShopCache["data"][auth.user_id] = { + "kook_user_id": vip, + "SkinsPanelLayout":resp["SkinsPanelLayout"] + } #直接获取商店图片 draw_time = time.time() #开始计算画图需要的时间 img_shop_path = f"./log/img_temp_vip/shop/{vip}.png" @@ -2042,7 +2027,7 @@ async def auto_skin_notify(): _log.info(log_time) dailyshop_img_src = await bot_upimg.client.create_asset(img_shop_path) # 上传图片 # 缓存图片的url+设置图片缓存的时间 - VipShopBgDict['cache'][vip] = { 'cache_img': dailyshop_img_src,'cache_time': time.time()} + VipShopBgDict['cache'][auth.user_id] = { 'cache_img': dailyshop_img_src,'cache_time': time.time()} # 更新商店图片status为True,代表用户当天执行/shop命令不需再画图 if vip in VipShopBgDict['bg']: VipShopBgDict['bg'][vip]['status'] = True else: # 如果图片没有正常返回,那就发送文字版本 @@ -2106,8 +2091,8 @@ async def auto_skin_notify(): assert isinstance(auth, EzAuth) riotUser = auth.get_riotuser_token() # vip用户在前面已经获取过商店了,直接在缓存里面取 - if await BotVip.vip_ck(aid): - list_shop = UserShopCache["data"][aid]["SkinsPanelLayout"]["SingleItemOffers"] + if await BotVip.vip_ck(aid) and auth.user_id in UserShopCache["data"]: + list_shop = UserShopCache["data"][auth.user_id]["SkinsPanelLayout"]["SingleItemOffers"] else: # 非vip用户,调用api获取每日商店 resp = await fetch_daily_shop(riotUser) # 获取每日商店 list_shop = resp["SkinsPanelLayout"]["SingleItemOffers"] # 商店刷出来的4把枪 From 5220b9835da4391ee523c02cfb18497b943818cc Mon Sep 17 00:00:00 2001 From: musnows Date: Wed, 8 Mar 2023 18:41:42 +0800 Subject: [PATCH 12/31] feat(main): add LOGIN_LIMITED in /login --- code/main.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/main.py b/code/main.py index fa5d861..f883155 100644 --- a/code/main.py +++ b/code/main.py @@ -21,7 +21,7 @@ get_card) from utils.valorant.Val import * from utils.valorant.EzAuth import EzAuth, EzAuthExp -from utils.Gtime import getTime, getTimeStampOf8AM,shop_time_remain +from utils.Gtime import getTime, getTimeStampOf8AM,shop_time_remain,getTimeFromStamp # bot的token文件 from utils.FileManage import config, bot, ApiAuthLog, Save_All_File, Login_Forbidden @@ -917,6 +917,11 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', try: # 1.检查全局登录速率 await check_GloginRate() # 无须接收此函数返回值,直接raise + # 1.1 检查当前已经登录的用户数量,超过限制直接提示并返回 + if msg.author_id in UserAuthCache["kook"] and len(UserAuthCache["kook"][msg.author_id]) >= LOGIN_LIMITED: + await msg.reply(get_card("您当前已经登录了3个拳头账户!", + "为避免后台缓存压力过大,您最多只能登录3个Riot账户",icon_cm.im_good_phoniex)) + return # 2.发送开始登录的提示消息 cm = await get_card("正在尝试获取您的riot账户token", "小憩一下,很快就好啦!", icon_cm.val_logo_gif) send_msg = await msg.reply(cm) #记录消息id用于后续更新 @@ -1135,7 +1140,7 @@ async def login_list(msg:Message,*arg): for ru in UserAuthCache["kook"][msg.author_id]: auth = UserAuthCache["data"][ru]["auth"] assert isinstance(auth, EzAuth) - text+=f"[{i}] {auth.Name}#{auth.Tag} 登陆于 {auth.init_time}\n" + text+=f"[{i}] {auth.Name}#{auth.Tag} 登陆于 {getTimeFromStamp(auth.init_time)}\n" i+=1 text+="```" From a0c0428a1c55417a94f142283fae103e890249f2 Mon Sep 17 00:00:00 2001 From: musnows Date: Wed, 8 Mar 2023 19:53:18 +0800 Subject: [PATCH 13/31] feat(file): add utils.file.Files for all files init refactor(utils): using file.Files to replace file.FileManage --- code/api.py | 2 +- code/main.py | 103 +++++++++--------- code/utils/BotVip.py | 6 +- code/utils/FileManage.py | 170 ------------------------------ code/utils/GrantRoles.py | 2 +- code/utils/Help.py | 2 +- code/utils/KookApi.py | 4 +- code/utils/ShopRate.py | 2 +- code/utils/Translate.py | 2 +- code/utils/api/ApiHandler.py | 7 +- code/utils/api/ApiToken.py | 2 +- code/utils/file/FileManage.py | 122 +++++++++++++++++++++ code/utils/file/Files.py | 95 +++++++++++++++++ code/utils/log/BotLog.py | 2 +- code/utils/valorant/AuthCache.py | 2 +- code/utils/valorant/Reauth.py | 8 +- code/utils/valorant/Val.py | 2 +- code/utils/valorant/ValFileUpd.py | 2 +- 18 files changed, 289 insertions(+), 246 deletions(-) delete mode 100644 code/utils/FileManage.py create mode 100644 code/utils/file/FileManage.py create mode 100644 code/utils/file/Files.py diff --git a/code/api.py b/code/api.py index 88ea458..d2186de 100644 --- a/code/api.py +++ b/code/api.py @@ -193,7 +193,7 @@ async def post_shop_cmp(request): # 爱发电的wh -from utils.FileManage import bot +from utils.file.Files import bot @routes.post('/afd') async def aifadian_webhook(request): _log.info(f"request | /afd") diff --git a/code/main.py b/code/main.py index f883155..d4e9bd6 100644 --- a/code/main.py +++ b/code/main.py @@ -24,7 +24,8 @@ from utils.Gtime import getTime, getTimeStampOf8AM,shop_time_remain,getTimeFromStamp # bot的token文件 -from utils.FileManage import config, bot, ApiAuthLog, Save_All_File, Login_Forbidden +from utils.file.FileManage import FileManage,save_all_file +from utils.file.Files import config, bot, ApiAuthLog, LoginForbidden # 只用来上传图片的bot bot_upimg = Bot(token=config['token']['img_upload_token']) @@ -33,14 +34,19 @@ # 在bot一开机的时候就获取log频道作为全局变量 debug_ch: Channel +"""发送错误信息的日志频道""" cm_send_test: Channel -NOTIFY_NUM = 3 # 非vip用户皮肤提醒栏位 -VIP_BG_SIZE = 4 # vip用户背景图片数量限制 -RATE_LIMITED_TIME = 180 # 全局登录速率超速等待秒数 -LOGIN_LIMITED = 3 # 所有用户最多都只能登录3个riot账户 -cm = CardMessage() # 全局空卡片消息,覆盖exception里面的 -# 记录开机时间 +"""进行卡片消息发送测试的频道""" +NOTIFY_NUM = 3 +"""非vip用户皮肤提醒栏位""" +VIP_BG_SIZE = 4 +"""vip用户背景图片数量限制""" +RATE_LIMITED_TIME = 180 +"""全局登录速率超速等待秒数""" +LOGIN_LIMITED = 3 +"""所有用户最多都只能登录3个riot账户""" start_time = getTime() +"""记录开机时间""" # 向botmarket通信 @@ -56,25 +62,28 @@ async def botmarket(): @bot.task.add_interval(minutes=5) async def Save_File_Task(): try: - await Save_All_File() + await save_all_file() except: err_cur = f"ERR! [{getTime()}] [Save.File.Task]\n```\n{traceback.format_exc()}\n```" - _log.error(err_cur) + _log.exception("ERR in Save_File_Task") await bot.client.send(debug_ch, err_cur) @bot.command(name='kill') async def KillBot(msg: Message, num: str = '124124', *arg): BotLog.logMsg(msg) - if msg.author_id == master_id and int(num) == config['no']: - # 保存所有文件 - await Save_All_File(False) - await msg.reply(f"[KILL] 保存全局变量成功,bot下线") - res = await bot_offline() # 调用接口下线bot - _log.info(f"KILL | bot-off: {res}\n") - os._exit(0) # 退出程序 - else: - await msg.reply(f"您没有权限或参数错误!\n本Bot编号为:{config['no']}") + try: + if msg.author_id == master_id and int(num) == config['no']: + # 保存所有文件 + await save_all_file(False) + await msg.reply(f"[KILL] 保存全局变量成功,bot下线") + res = await bot_offline() # 调用接口下线bot + _log.info(f"KILL | bot-off: {res}\n") + os._exit(0) # 退出程序 + else: + await msg.reply(f"您没有权限或参数错误!\n本Bot编号为:{config['no']}") + except: + await BotLog.BaseException_Handler("kill",traceback.format_exc(),msg) ########################################################################################## @@ -315,7 +324,7 @@ async def sleeping(msg: Message, d: int = 1): # 拳头api调用被禁止的时候用这个变量取消所有相关命令 -async def Login_Forbidden_send(msg: Message): +async def LoginForbidden_send(msg: Message): _log.info(f"Au:{msg.author_id} Command Failed") await msg.reply( f"拳头api登录接口出现了一些错误,开发者已禁止所有相关功能的使用\n[https://img.kookapp.cn/assets/2022-09/oj33pNtVpi1ee0eh.png](https://img.kookapp.cn/assets/2022-09/oj33pNtVpi1ee0eh.png)" @@ -324,16 +333,16 @@ async def Login_Forbidden_send(msg: Message): # 手动设置禁止登录的全局变量状态 @bot.command(name='lf') -async def Login_Forbidden_Change(msg: Message): +async def LoginForbidden_Change(msg: Message): BotLog.logMsg(msg) if msg.author_id == master_id: - global Login_Forbidden - if Login_Forbidden: - Login_Forbidden = False + global LoginForbidden + if LoginForbidden: + LoginForbidden = False else: - Login_Forbidden = True + LoginForbidden = True - await msg.reply(f"Update Login_Forbidden status: {Login_Forbidden}") + await msg.reply(f"Update LoginForbidden status: {LoginForbidden}") # 存储用户游戏id @@ -390,7 +399,7 @@ async def dx(msg: Message): ###########################################vip###################################################### #用来存放roll的频道/服务器/回应用户的dict -from utils.FileManage import VipShopBgDict, VipRollDcit, UserPwdReauth, VipUserDict +from utils.file.Files import VipShopBgDict, VipRollDcit, VipUserDict # 新建vip的uuid,第一个参数是天数,第二个参数是数量 @@ -819,21 +828,8 @@ async def vip_time_add(msg: Message, vday: int = 1, *arg): ##################################################################################### # 预加载用户的riot游戏id和玩家uuid(登录后Api获取) -from utils.FileManage import UserRiotName, SkinNotifyDict, EmojiDict, SkinRateDict, ValBundleList,UserAuthCache - -# 判断夜市有没有开 -NightMarketOff = False -# 全局的速率限制,如果触发了速率限制的err,则阻止所有用户login -login_rate_limit = {'limit': False, 'time': time.time()} -# 用来存放用户每天的商店(早八会清空) -UserShopCache = { 'clear_time':time.time(),'data':{}} -# 用户皮肤评分选择列表 -UserRtsDict = {} -# 用户皮肤提醒选择列表 -UserStsDict = {} -# valorant皮肤等级对应的kook自定义表情 -ValItersEmoji = EmojiDict['val_iters_emoji'] - +from utils.file.Files import (UserRiotName, SkinNotifyDict, SkinRateDict, ValBundleList,UserAuthCache,UserPwdReauth,ValItersEmoji, + UserStsDict,UserRtsDict) def check_rate_err_user(kook_user_id: str)-> bool: """检查皮肤评分的错误用户(违规用户) @@ -902,15 +898,15 @@ async def check_UserAuthCache_len(msg: Message): async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', *arg): _log.info(f"Au:{msg.author_id} {msg.author.username}#{msg.author.identify_num} | /login {apSave}") BotLog.log_bot_user(msg.author_id) #这个操作只是用来记录用户和cmd总数的 - global Login_Forbidden, login_rate_limit, UserRiotName, UserAuthCache + global LoginForbidden, login_rate_limit, UserRiotName, UserAuthCache if not isinstance(msg, PrivateMessage): # 不是私聊的话,禁止调用本命令 await msg.reply(f"为了避免您的账户信息泄漏,请「私聊」使用本命令!\n用法:`/login 账户 密码`") return elif passwd == 'err' or user == 'err': await msg.reply(f"参数不完整,请提供您的账户密码!\naccount: `{user}` passwd: `{passwd}`\n正确用法:`/login 账户 密码`") return - elif Login_Forbidden: - await Login_Forbidden_send(msg) + elif LoginForbidden: + await LoginForbidden_send(msg) return # 提前定义,避免报错 send_msg = {'msg_id':''} @@ -988,8 +984,8 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', except client_exceptions.ClientResponseError as result: err_str = f"ERR! [{getTime()}] login Au:{msg.author_id}\n```\n{traceback.format_exc()}\n```\n" if 'auth.riotgames.com' and '403' in str(result): - Login_Forbidden = True - err_str += f"[Login] 403 err! set Login_Forbidden = True" + LoginForbidden = True + err_str += f"[Login] 403 err! set LoginForbidden = True" elif '404' in str(result): err_str += f"[Login] 404 err! network err, try again" else: @@ -1163,8 +1159,8 @@ async def login_list(msg:Message,*arg): @bot.command(name='shop', aliases=['SHOP']) async def get_daily_shop(msg: Message,index:str = "0",*arg): BotLog.logMsg(msg) - if Login_Forbidden: - await Login_Forbidden_send(msg) + if LoginForbidden: + await LoginForbidden_send(msg) return # index参数是下标,应该为一个正整数 elif "-" in index or "." in index: @@ -1329,8 +1325,8 @@ async def get_night_market(msg: Message,index:str="0", *arg): if "-" in index or "." in index: await msg.reply(f"index 参数错误,请使用「/login-l」查看您需要查询的账户,并指定正确的编号(默认为0,即第一个账户)") return - elif Login_Forbidden: - await Login_Forbidden_send(msg) + elif LoginForbidden: + await LoginForbidden_send(msg) return elif NightMarketOff: await msg.reply(f"夜市暂未开放!请等开放了之后再使用本命令哦~") @@ -1440,8 +1436,8 @@ async def open_night_market(msg: Message, *arg): @bot.command(name='uinfo', aliases=['point', 'UINFO', 'POINT']) async def get_user_card(msg: Message, *arg): BotLog.logMsg(msg) - if Login_Forbidden: - await Login_Forbidden_send(msg) + if LoginForbidden: + await LoginForbidden_send(msg) return # 初始化变量 send_msg = {'msg_id':''} @@ -1630,6 +1626,7 @@ async def rate_skin_add(msg: Message, *arg): ret = await ShopRate.get_skinlist_rate_text(retlist, msg.author_id) text = f"```\n{ret['text']}```" + cm = CardMessage() c = Card(Module.Header(f"查询到 {name} 相关皮肤如下"), Module.Section(Element.Text(text, Types.Text.KMD)), Module.Section(Element.Text("请使用以下命令对皮肤进行评分;\n√代表您已评价过该皮肤,+已有玩家评价,-无人评价\n", Types.Text.KMD))) text1 = "```\n/rts 序号 评分 吐槽\n" @@ -1664,6 +1661,7 @@ async def rate_skin_select(msg: Message, index: str = "err", rating: str = "err" elif arg == (): await msg.reply(f"您似乎没有评论此皮肤呢,多少说点什么吧~\n正确用法:`/rts 序号 评分 吐槽`") return + cm = CardMessage() try: if msg.author_id in UserRtsDict: _index = int(index) #转成int下标(不能处理负数) @@ -1734,6 +1732,7 @@ async def show_shoprate(msg: Message): if check_rate_err_user(msg.author_id): await msg.reply(f"您有过不良评论记录,阿狸现已不允许您使用相关功能\n后台存放了所有用户的评论内容和评论时间。在此提醒,请不要在评论的时候发送不雅言论!") return + cm = CardMessage() try: # 从数据库中获取 cmpRet = await ShopRate.get_ShopCmp() diff --git a/code/utils/BotVip.py b/code/utils/BotVip.py index 47aa381..cf1bf59 100644 --- a/code/utils/BotVip.py +++ b/code/utils/BotVip.py @@ -9,7 +9,8 @@ from datetime import datetime, timedelta from .KookApi import icon_cm from .Gtime import getTime -from .FileManage import bot,VipShopBgDict,config,_log +from .log.Logging import _log +from .file.Files import bot,config,VipShopBgDict,VipUserDict, VipUuidDict from .ShopImg import img_requestor @@ -25,9 +26,6 @@ def get_uuid(): ################################################################################ -# 成功兑换vip的用户+vip的uuid -from utils.FileManage import VipUserDict, VipUuidDict - # 计算时间戳,用于给用户设置vip时间 def vip_time_stamp(kook_user_id: str, day: int = 0): diff --git a/code/utils/FileManage.py b/code/utils/FileManage.py deleted file mode 100644 index db4e96c..0000000 --- a/code/utils/FileManage.py +++ /dev/null @@ -1,170 +0,0 @@ -import json -import aiofiles -import traceback -from .log.Logging import _log - -FileList = [] # 用于保存需要写入到磁盘的文件 - -def open_file(path): - with open(path, 'r', encoding='utf-8') as f: - tmp = json.load(f) - return tmp - - -async def write_file_aio(path: str, value): - async with aiofiles.open(path, 'w', encoding='utf-8') as f: - await f.write(json.dumps(value, indent=2, sort_keys=True, ensure_ascii=False)) - - -def write_file(path: str, value): - with open(path, 'w', encoding='utf-8') as fw2: - json.dump(value, fw2, indent=2, sort_keys=True, ensure_ascii=False) - - -# 保存所有文件 -async def Save_All_File(is_Aio=True): - for i in FileList: - try: - if is_Aio: - await i.save_aio() - else: - i.save() - except: - _log.exception(f"Save.All.File | {i.path}") - - _log.info(f"Save.All.File | save finished") - - -# 文件管理类 -class FileManage: - # 初始化构造 - def __init__(self, path: str, read_only: bool = False) -> None: - with open(path, 'r', encoding='utf-8') as f: - tmp = json.load(f) - self.value = tmp # 值 - self.type = type(tmp) # 值的类型 - self.path = path # 值的文件路径 - self.Ronly = read_only # 是否只读 - #将自己存全局变量里面 - if not read_only: - global FileList # 如果不是只读,那就存list里面 - FileList.append(self) - - # []操作符重载 - def __getitem__(self, index): - return self.value[index] - - # 打印重载 - def __str__(self) -> str: - return str(self.value) - - # 删除成员 - def __delitem__(self, index): - del self.value[index] - - # 长度 - def __len__(self): - return len(self.value) - - # 索引赋值 x[i] = 1 - def __setitem__(self, index, value): - self.value[index] = value - - # 迭代 - def __iter__(self): - return self.value.__iter__() - - def __next__(self): - return self.value.__next__() - - # 比较== - def __eq__(self, i): - if isinstance(i, FileManage): - return self.value.__eq__(i.value) - else: - return self.value.__eq__(i) - - # 比较!= - def __ne__(self, i): - if isinstance(i, FileManage): - return self.value.__ne__(i.value) - else: - return self.value.__ne__(i) - - # 获取成员 - def get_instance(self): - return self.value - - # 遍历dict - def items(self): - return self.value.items() - - # 追加 - def append(self, i): - self.value.append(i) - - # list的删除 - def remove(self, i): - self.value.remove(i) - - def keys(self): - return self.value.keys() - - # 保存 - def save(self): - with open(self.path, 'w', encoding='utf-8') as fw: - json.dump(self.value, fw, indent=2, sort_keys=True, ensure_ascii=False) - - # 异步保存 - async def save_aio(self): - async with aiofiles.open(self.path, 'w', encoding='utf-8') as f: #这里必须用dumps - await f.write(json.dumps(self.value, indent=2, sort_keys=True, ensure_ascii=False)) - - -################################################################################################### -# 配置相关 -config = FileManage("./config/config.json", True) # 机器人配置文件 -BotUserDict = FileManage("./log/BotUserLog.json") # 机器人用户信息 -ApiTokenDict = FileManage("./log/ApiToken.json") # API token -ColorIdDict = FileManage("./log/color_idsave.json") # 自动上色 信息保存 -EmojiDict = FileManage("./config/color_emoji.json", True) # 自动上色 服务器角色配置 -SponsorDict = FileManage("./log/sponsor_roles.json") # 感谢助力者 信息保存 -# valorant资源相关 -ValErrDict = FileManage("./log/ValErrCode.json") # valorant错误码解决办法 -ValSkinList = FileManage("./log/ValSkin.json") # valorant皮肤 -ValPriceList = FileManage("./log/ValPrice.json") # valorant皮肤价格 -ValBundleList = FileManage("./log/ValBundle.json") # valorant捆绑包 -ValItersList = FileManage("./log/ValIters.json") # valorant皮肤等级 -# valorant功能相关 -SkinRateDict = FileManage("./log/ValSkinRate.json") # valorant皮肤评分信息 -SkinNotifyDict = FileManage("./log/UserSkinNotify.json") # 皮肤提醒 用户记录 -GameIdDict = FileManage("./log/game_idsave.json") # 玩家游戏id保存 -UserAuthID = FileManage("./log/UserAuthID.json") # 用户游戏id/uuid,账户密码重登记录 -UserRiotName = UserAuthID['data'] # riot用户游戏id和uuid -UserPwdReauth = UserAuthID['ap_log'] # 账户密码重登记录 -ApiAuthLog = UserAuthID['api_log'] # api 缓存用户的account记录 -# vip相关 -VipUuidDict = FileManage("./log/VipUuid.json") # vip uuid文件 -VipShopBgDict = FileManage("./log/VipUserShopBg.json") # vip 背景图设置;商店图缓存 -VipUser = FileManage("./log/VipUser.json") # vip 用户列表 -VipUserDict = VipUser['data'] # vip 用户 -VipRollDcit = VipUser['roll'] # vip 抽奖信息 -# 爱发电webhook -AfdWebhook = FileManage("./log/AfdWebhook.json") # 爱发电的wh请求 -# 缓存相关 -Login_Forbidden = False # 403禁止重登 -UserAuthCache = {'api':{},'kook':{},'data':{},'acpw':{},'tfa':{}} -"""{'api':{},'kook':{},'data':{},'acpw':{}}\n -api/bot 公用EzAuth对象缓存: -- api | 用户账户:riot_user_uuid -- kook | kook_user_id:[uuid1,uuid2] 值为list,支持多账户登录 -- data | riot_user_uuid:{"auth": EzAuth Obj, "2fa": EzAuth.is2fa} -- acpw | riot_user_uuid:{'a':账户,'p':密码} 用于bot中的账户密码存储。只存储在全局变量中,不写入磁盘 -- tfa | 用户id:EzAuth对象 临时使用的缓存 -""" -ApiAuthCache = {'data':{}} # api EzAuth对象缓存 - -# 实例化一个khl的bot,方便其他模组调用 -from khl import Bot -bot = Bot(token=config['token']['bot']) -_log.info(f"Loading all files") # 走到这里代表所有文件都打开了 \ No newline at end of file diff --git a/code/utils/GrantRoles.py b/code/utils/GrantRoles.py index 4d2b66a..2383da9 100644 --- a/code/utils/GrantRoles.py +++ b/code/utils/GrantRoles.py @@ -4,7 +4,7 @@ from khl.card import Card, CardMessage, Element, Module, Types # 预加载文件 -from .FileManage import SponsorDict, ColorIdDict, EmojiDict,_log +from .file.Files import SponsorDict, ColorIdDict, EmojiDict,_log from .KookApi import kook_headers from .Gtime import getTime diff --git a/code/utils/Help.py b/code/utils/Help.py index e7bad4d..9c1c129 100644 --- a/code/utils/Help.py +++ b/code/utils/Help.py @@ -99,7 +99,7 @@ def help_develop(): text += f"[/open-nm] 打开/关闭夜市\n" text += f"[/ban-r 用户id] 禁止用户使用rate相关功能\n" text += f"[/notify-test] 执行遍历用户皮肤notify列表\n" - text += f"[/lf] 实际上是Login_Forbidden的缩写,在login函数403时屏蔽所有需要login的命令\n" + text += f"[/lf] 实际上是LoginForbidden的缩写,在login函数403时屏蔽所有需要login的命令\n" text += f"[/log] 显示当前阿狸加入的服务器以及用户数量\n" text += f"[/mem] 显示当前阿狸进程的内存占用和cpu占用\n```" return text \ No newline at end of file diff --git a/code/utils/KookApi.py b/code/utils/KookApi.py index 6da7f48..37b8b76 100644 --- a/code/utils/KookApi.py +++ b/code/utils/KookApi.py @@ -1,10 +1,10 @@ import json import aiohttp import io -from khl import Bot, ChannelPrivacyTypes +from khl import ChannelPrivacyTypes from khl.card import Card, CardMessage, Module, Element, Types -from .FileManage import config,bot,_log +from .file.Files import config,bot,_log # kook的base_url和headers kook_base_url = "https://www.kookapp.cn" kook_headers = {f'Authorization': f"Bot {config['token']['bot']}"} diff --git a/code/utils/ShopRate.py b/code/utils/ShopRate.py index 97b5490..725706d 100644 --- a/code/utils/ShopRate.py +++ b/code/utils/ShopRate.py @@ -5,7 +5,7 @@ from khl.card import Card, CardMessage, Module, Element, Types from .valorant import Val -from .FileManage import config,SkinRateDict,_log +from .file.Files import config,SkinRateDict,_log PLATFORM = config['platform'] # 平台 # 初始化leancloud diff --git a/code/utils/Translate.py b/code/utils/Translate.py index 41f337c..66cf08d 100644 --- a/code/utils/Translate.py +++ b/code/utils/Translate.py @@ -6,7 +6,7 @@ from khl.card import Card, CardMessage, Element, Module, Types # 读取彩云的key -from .FileManage import config,_log +from .file.Files import config,_log # 彩云key CyKey = config['caiyun'] diff --git a/code/utils/api/ApiHandler.py b/code/utils/api/ApiHandler.py index 81b7319..96fac38 100644 --- a/code/utils/api/ApiHandler.py +++ b/code/utils/api/ApiHandler.py @@ -1,8 +1,9 @@ import json import time -import threading import traceback +from khl.card import CardMessage, Card, Module, Types, Element + from utils.valorant.EzAuth import EzAuthExp,EzAuth from utils.api.ApiToken import check_token_rate from utils.Gtime import getTime @@ -11,7 +12,7 @@ from utils import ShopRate,ShopImg # bot的配置文件 -from utils.FileManage import config,ApiAuthCache,ApiAuthLog,_log +from ..file.Files import config,ApiAuthCache,ApiAuthLog,AfdWebhook,_log # 用来给kook上传文件的bot token api_bot_token = config['token']['api_bot_token'] # 默认的背景图 @@ -281,8 +282,6 @@ async def shop_cmp_request(request): return ret -from utils.FileManage import AfdWebhook -from khl.card import CardMessage, Card, Module, Types, Element # 爱发电webhook diff --git a/code/utils/api/ApiToken.py b/code/utils/api/ApiToken.py index 1fb5880..a28e942 100644 --- a/code/utils/api/ApiToken.py +++ b/code/utils/api/ApiToken.py @@ -2,7 +2,7 @@ import time # 所有token -from utils.FileManage import ApiTokenDict,_log +from ..file.Files import ApiTokenDict,_log # token速率限制为10,检测周期为60s TOKEN_RATE_LIMITED = 10 TOKEN_RATE_TIME = 60 diff --git a/code/utils/file/FileManage.py b/code/utils/file/FileManage.py new file mode 100644 index 0000000..c18b5c1 --- /dev/null +++ b/code/utils/file/FileManage.py @@ -0,0 +1,122 @@ +import json +import aiofiles +from ..log.Logging import _log + +FileList = [] +"""files need to write into storage""" + +def open_file(path): + with open(path, 'r', encoding='utf-8') as f: + tmp = json.load(f) + return tmp + + +async def write_file_aio(path: str, value): + async with aiofiles.open(path, 'w', encoding='utf-8') as f: + await f.write(json.dumps(value, indent=2, sort_keys=True, ensure_ascii=False)) + + +def write_file(path: str, value): + with open(path, 'w', encoding='utf-8') as fw2: + json.dump(value, fw2, indent=2, sort_keys=True, ensure_ascii=False) + + +async def save_all_file(is_Aio=True): + """save all file in FileList + """ + for i in FileList: + try: + if is_Aio: + await i.save_aio() + else: + i.save() + except: + _log.exception(f"Save.All.File | {i.path}") + + _log.info(f"Save.All.File | save finished") + + +# 文件管理类 +class FileManage: + # 初始化构造 + def __init__(self, path: str, read_only: bool = False) -> None: + with open(path, 'r', encoding='utf-8') as f: + tmp = json.load(f) + self.value = tmp # 值 + self.type = type(tmp) # 值的类型 + self.path = path # 值的文件路径 + self.Ronly = read_only # 是否只读 + #将自己存全局变量里面 + if not read_only: + global FileList # 如果不是只读,那就存list里面 + FileList.append(self) + + # []操作符重载 + def __getitem__(self, index): + return self.value[index] + + # 打印重载 + def __str__(self) -> str: + return str(self.value) + + # 删除成员 + def __delitem__(self, index): + del self.value[index] + + # 长度 + def __len__(self): + return len(self.value) + + # 索引赋值 x[i] = 1 + def __setitem__(self, index, value): + self.value[index] = value + + # 迭代 + def __iter__(self): + return self.value.__iter__() + + def __next__(self): + return self.value.__next__() + + # 比较== + def __eq__(self, i): + if isinstance(i, FileManage): + return self.value.__eq__(i.value) + else: + return self.value.__eq__(i) + + # 比较!= + def __ne__(self, i): + if isinstance(i, FileManage): + return self.value.__ne__(i.value) + else: + return self.value.__ne__(i) + + # 获取成员 + def get_instance(self): + return self.value + + # 遍历dict + def items(self): + return self.value.items() + + # 追加 + def append(self, i): + self.value.append(i) + + # list的删除 + def remove(self, i): + self.value.remove(i) + + def keys(self): + return self.value.keys() + + # 保存 + def save(self): + with open(self.path, 'w', encoding='utf-8') as fw: + json.dump(self.value, fw, indent=2, sort_keys=True, ensure_ascii=False) + + # 异步保存 + async def save_aio(self): + async with aiofiles.open(self.path, 'w', encoding='utf-8') as f: #这里必须用dumps + await f.write(json.dumps(self.value, indent=2, sort_keys=True, ensure_ascii=False)) \ No newline at end of file diff --git a/code/utils/file/Files.py b/code/utils/file/Files.py new file mode 100644 index 0000000..7476007 --- /dev/null +++ b/code/utils/file/Files.py @@ -0,0 +1,95 @@ +from time import time +from .FileManage import FileManage +from ..log.Logging import _log + +# 配置相关 +config = FileManage("./config/config.json", True) +"""机器人配置文件""" +BotUserDict = FileManage("./log/BotUserLog.json") +"""机器人用户信息记录""" +ApiTokenDict = FileManage("./log/ApiToken.json") +"""API token""" +ColorIdDict = FileManage("./log/color_idsave.json") +"""自动上色的信息保存""" +EmojiDict = FileManage("./config/color_emoji.json", True) +"""自动上色 服务器角色配置""" +SponsorDict = FileManage("./log/sponsor_roles.json") +"""感谢助力者 信息保存""" +AfdWebhook = FileManage("./log/AfdWebhook.json") +"""爱发电的wh请求""" + +# valorant资源相关 +ValErrDict = FileManage("./log/ValErrCode.json") +"""valorant错误码解决办法""" +ValSkinList = FileManage("./log/ValSkin.json") +"""valorant皮肤""" +ValPriceList = FileManage("./log/ValPrice.json") +"""valorant皮肤价格""" +ValBundleList = FileManage("./log/ValBundle.json") +"""valorant皮肤捆绑包""" +ValItersList = FileManage("./log/ValIters.json") +"""valorant皮肤等级""" + +# valorant功能相关 +GameIdDict = FileManage("./log/game_idsave.json") +"""玩家游戏id保存""" +SkinRateDict = FileManage("./log/ValSkinRate.json") +"""valorant皮肤评分信息""" +SkinNotifyDict = FileManage("./log/UserSkinNotify.json") +"""皮肤提醒 用户记录""" +UserAuthID = FileManage("./log/UserAuthID.json") +"""用户游戏id/uuid,账户密码重登记录""" +UserRiotName = UserAuthID['data'] +"""riot用户游戏id和uuid""" +UserPwdReauth = UserAuthID['ap_log'] +"""riot账户密码重登记录""" +ApiAuthLog = UserAuthID['api_log'] +"""api 缓存用户的account记录""" + +# vip相关 +VipUuidDict = FileManage("./log/VipUuid.json") +"""vip uuid文件""" +VipShopBgDict = FileManage("./log/VipUserShopBg.json") +"""vip 背景图设置;商店图缓存""" +VipUser = FileManage("./log/VipUser.json") +"""vip 用户列表/抽奖记录""" +VipUserDict = VipUser['data'] +"""vip 用户列表""" +VipRollDcit = VipUser['roll'] +"""vip 抽奖记录""" + +# 缓存相关 +LoginForbidden = False +"""出现403错误,禁止重登""" +NightMarket = False +"""夜市是否开启?False没开,True开""" +UserAuthCache = {'api':{},'kook':{},'data':{},'acpw':{},'tfa':{}} +"""api/bot 公用EzAuth对象缓存: +- api | 用户账户:riot_user_uuid +- kook | kook_user_id:[uuid1,uuid2] 值为list,支持多账户登录 +- data | riot_user_uuid:{"auth": EzAuth Obj, "2fa": EzAuth.is2fa} +- acpw | riot_user_uuid:{'a':账户,'p':密码} 用于bot中的账户密码存储。只存储在全局变量中,不写入磁盘 +- tfa | 用户id:EzAuth对象 临时使用的缓存 +""" +ApiAuthCache = {'data':{}} +"""api EzAuth对象缓存""" +login_rate_limit = {'limit': False, 'time': time()} +"""全局的速率限制,如果触发了速率限制的err,则阻止所有用户login +- {'limit': False, 'time': time()} +""" +UserShopCache = { 'clear_time':time(),'data':{}} +"""用来存放用户每天的商店(早八会清空) +- { 'clear_time':time(),'data':{}} +""" +UserRtsDict = {} +"""用户皮肤评分rate选择列表""" +UserStsDict = {} +"""用户商店皮肤提醒notify功能选择列表""" +ValItersEmoji = EmojiDict['val_iters_emoji'] +"""valorant皮肤等级对应的kook自定义表情""" + +# 实例化一个khl的bot,方便其他模组调用 +from khl import Bot +bot = Bot(token=config['token']['bot']) +"""main bot""" +_log.info(f"Loading all files") # 走到这里代表所有文件都打开了 \ No newline at end of file diff --git a/code/utils/log/BotLog.py b/code/utils/log/BotLog.py index bb5275b..6f6f8e7 100644 --- a/code/utils/log/BotLog.py +++ b/code/utils/log/BotLog.py @@ -7,7 +7,7 @@ # 用户数量的记录文件 from .Logging import _log -from ..FileManage import bot, BotUserDict, FileManage +from ..file.Files import bot, BotUserDict,FileManage from ..Gtime import getTime from ..KookApi import guild_list, guild_view, upd_card, get_card, icon_cm diff --git a/code/utils/valorant/AuthCache.py b/code/utils/valorant/AuthCache.py index fc9f4ce..de5117f 100644 --- a/code/utils/valorant/AuthCache.py +++ b/code/utils/valorant/AuthCache.py @@ -1,6 +1,6 @@ # 缓存登录对象 from .EzAuth import EzAuth -from ..FileManage import UserAuthCache +from ..file.Files import UserAuthCache Auth2faCache = UserAuthCache['tfa'] diff --git a/code/utils/valorant/Reauth.py b/code/utils/valorant/Reauth.py index 5c8c781..f59d304 100644 --- a/code/utils/valorant/Reauth.py +++ b/code/utils/valorant/Reauth.py @@ -2,7 +2,7 @@ from khl import Message, Channel from aiohttp import client_exceptions from .EzAuth import EzAuth, EzAuthExp -from ..FileManage import UserAuthCache, UserRiotName, UserPwdReauth, Login_Forbidden,SkinNotifyDict, bot +from ..file.Files import UserAuthCache, UserRiotName, UserPwdReauth, LoginForbidden,SkinNotifyDict, bot from .Val import fetch_valorant_point from ..log.Logging import _log from .. import KookApi, Gtime @@ -11,9 +11,9 @@ # 检查aiohttp错误的类型 def client_exceptions_handler(result:str,err_str:str) -> str: if 'auth.riotgames.com' and '403' in result: - global Login_Forbidden - Login_Forbidden = True - err_str += f"[check_reauth] 403 err! set Login_Forbidden = True" + global LoginForbidden + LoginForbidden = True + err_str += f"[check_reauth] 403 err! set LoginForbidden = True" elif '404' in result: err_str += f"[check_reauth] 404 err! network err, try again" else: diff --git a/code/utils/valorant/Val.py b/code/utils/valorant/Val.py index 493e502..e5eaeae 100644 --- a/code/utils/valorant/Val.py +++ b/code/utils/valorant/Val.py @@ -6,7 +6,7 @@ # 预加载文件 from .EzAuth import X_RIOT_CLIENTVERSION,X_RIOT_CLIENTVPLATFROM,RiotUserToken -from ..FileManage import GameIdDict, ValErrDict, ValItersList, ValPriceList, ValSkinList +from ..file.Files import GameIdDict, ValErrDict, ValItersList, ValPriceList, ValSkinList SKIN_ICON_ERR = "https://img.kookapp.cn/assets/2023-02/ekwdy7PiQC0e803m.png" ####################################保存用户的游戏ID操作####################################### diff --git a/code/utils/valorant/ValFileUpd.py b/code/utils/valorant/ValFileUpd.py index a17ad82..417fda8 100644 --- a/code/utils/valorant/ValFileUpd.py +++ b/code/utils/valorant/ValFileUpd.py @@ -3,7 +3,7 @@ from khl import Message, Bot from PIL import Image from ..ShopImg import img_requestor -from ..FileManage import ValBundleList +from ..file.Files import ValBundleList from .Val import fetch_skins_all, fetch_item_price_all, fetch_bundles_all, ValSkinList, ValPriceList from ..log.Logging import _log From eeaf8edd29bf2a6409b190dcacc944850698f1f1 Mon Sep 17 00:00:00 2001 From: musnows Date: Wed, 8 Mar 2023 20:12:03 +0800 Subject: [PATCH 14/31] refactor(main): using ValItersEmoji for vp & rp --- code/main.py | 10 +++++----- code/utils/file/Files.py | 5 ++++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/code/main.py b/code/main.py index d4e9bd6..0b5d881 100644 --- a/code/main.py +++ b/code/main.py @@ -28,9 +28,9 @@ from utils.file.Files import config, bot, ApiAuthLog, LoginForbidden # 只用来上传图片的bot bot_upimg = Bot(token=config['token']['img_upload_token']) - -# 设置全局变量:机器人开发者id/报错频道 +"""用来上传图片的bot""" master_id = config['master_id'] +"""机器人开发者用户id""" # 在bot一开机的时候就获取log频道作为全局变量 debug_ch: Channel @@ -1395,7 +1395,7 @@ async def get_night_market(msg: Message,index:str="0", *arg): discPercent = Bonus["DiscountPercent"] # 打折百分比 discPrice = Bonus["DiscountCosts"]["85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741"] #打折后的价格 text = f"(emj){res_iters['data']['uuid']}(emj)[{iter_emoji}] {skin_name}\n" - text += f"(emj)vp(emj)[3986996654014459/qGVLdavCfo03k03k] {discPrice} ~~{basePrice}~~ {discPercent}%Off" + text += f"(emj)vp(emj)[{ValItersEmoji['vp']}] {discPrice} ~~{basePrice}~~ {discPercent}%Off" #c.append(Module.Section(Element.Text(text, Types.Text.KMD), Element.Image(src=skin_icon, size='sm'))) c.append(Module.Section(Element.Text(text, Types.Text.KMD))) @@ -1504,8 +1504,8 @@ async def get_user_card(msg: Message, *arg): #获取玩家的vp和r点剩余的text resp = await fetch_vp_rp_dict(riotUser) - text = f"(emj)r点(emj)[3986996654014459/X3cT7QzNsu03k03k] RP {resp['rp']} " - text += f"(emj)vp(emj)[3986996654014459/qGVLdavCfo03k03k] VP {resp['vp']}\n" + text = f"(emj)r点(emj)[{ValItersEmoji['rp']}] RP {resp['rp']} " + text += f"(emj)vp(emj)[{ValItersEmoji['vp']}] VP {resp['vp']}\n" c.append(Module.Section(Element.Text(text, Types.Text.KMD))) cm.append(c) except KeyError as result: diff --git a/code/utils/file/Files.py b/code/utils/file/Files.py index 7476007..d875938 100644 --- a/code/utils/file/Files.py +++ b/code/utils/file/Files.py @@ -86,7 +86,10 @@ UserStsDict = {} """用户商店皮肤提醒notify功能选择列表""" ValItersEmoji = EmojiDict['val_iters_emoji'] -"""valorant皮肤等级对应的kook自定义表情""" +"""valorant皮肤等级对应的kook自定义表情。 + +对应配置文件`./config/color_emoji.json`中的 `val_iters_emoji` 键值 +""" # 实例化一个khl的bot,方便其他模组调用 from khl import Bot From 49a9c6dc59d0d21eb31d287df3436219849cc4a4 Mon Sep 17 00:00:00 2001 From: musnows Date: Wed, 8 Mar 2023 20:12:03 +0800 Subject: [PATCH 15/31] refactor(main): using ValItersEmoji for vp & rp --- code/main.py | 12 ++++++------ code/utils/KookApi.py | 8 ++++---- code/utils/file/Files.py | 5 ++++- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/code/main.py b/code/main.py index d4e9bd6..51dc8c7 100644 --- a/code/main.py +++ b/code/main.py @@ -28,9 +28,9 @@ from utils.file.Files import config, bot, ApiAuthLog, LoginForbidden # 只用来上传图片的bot bot_upimg = Bot(token=config['token']['img_upload_token']) - -# 设置全局变量:机器人开发者id/报错频道 +"""用来上传图片的bot""" master_id = config['master_id'] +"""机器人开发者用户id""" # 在bot一开机的时候就获取log频道作为全局变量 debug_ch: Channel @@ -829,7 +829,7 @@ async def vip_time_add(msg: Message, vday: int = 1, *arg): # 预加载用户的riot游戏id和玩家uuid(登录后Api获取) from utils.file.Files import (UserRiotName, SkinNotifyDict, SkinRateDict, ValBundleList,UserAuthCache,UserPwdReauth,ValItersEmoji, - UserStsDict,UserRtsDict) + UserStsDict,UserRtsDict,UserShopCache) def check_rate_err_user(kook_user_id: str)-> bool: """检查皮肤评分的错误用户(违规用户) @@ -1395,7 +1395,7 @@ async def get_night_market(msg: Message,index:str="0", *arg): discPercent = Bonus["DiscountPercent"] # 打折百分比 discPrice = Bonus["DiscountCosts"]["85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741"] #打折后的价格 text = f"(emj){res_iters['data']['uuid']}(emj)[{iter_emoji}] {skin_name}\n" - text += f"(emj)vp(emj)[3986996654014459/qGVLdavCfo03k03k] {discPrice} ~~{basePrice}~~ {discPercent}%Off" + text += f"(emj)vp(emj)[{ValItersEmoji['vp']}] {discPrice} ~~{basePrice}~~ {discPercent}%Off" #c.append(Module.Section(Element.Text(text, Types.Text.KMD), Element.Image(src=skin_icon, size='sm'))) c.append(Module.Section(Element.Text(text, Types.Text.KMD))) @@ -1504,8 +1504,8 @@ async def get_user_card(msg: Message, *arg): #获取玩家的vp和r点剩余的text resp = await fetch_vp_rp_dict(riotUser) - text = f"(emj)r点(emj)[3986996654014459/X3cT7QzNsu03k03k] RP {resp['rp']} " - text += f"(emj)vp(emj)[3986996654014459/qGVLdavCfo03k03k] VP {resp['vp']}\n" + text = f"(emj)r点(emj)[{ValItersEmoji['rp']}] RP {resp['rp']} " + text += f"(emj)vp(emj)[{ValItersEmoji['vp']}] VP {resp['vp']}\n" c.append(Module.Section(Element.Text(text, Types.Text.KMD))) cm.append(c) except KeyError as result: diff --git a/code/utils/KookApi.py b/code/utils/KookApi.py index 37b8b76..6c42a56 100644 --- a/code/utils/KookApi.py +++ b/code/utils/KookApi.py @@ -37,7 +37,6 @@ async def status_delete(d: int): async with aiohttp.ClientSession() as session: async with session.post(url, data=params, headers=kook_headers) as response: return json.loads(await response.text()) - #_log.debug(ret) # 获取服务器用户数量用于更新(现在已经移植到了另外一个bot上) @@ -47,7 +46,7 @@ async def guild_userlist(Guild_ID: str = "3566823018281801"): async with aiohttp.ClientSession() as session: async with session.get(url, params=params, headers=kook_headers) as response: ret1 = json.loads(await response.text()) - #_log.debug(ret1) + _log.debug(ret1) return ret1 @@ -57,7 +56,7 @@ async def guild_list(): async with aiohttp.ClientSession() as session: async with session.get(url, headers=kook_headers) as response: ret1 = json.loads(await response.text()) - #_log.debug(ret1) + _log.debug(ret1) return ret1 @@ -68,7 +67,7 @@ async def guild_view(Guild_ID: str): async with aiohttp.ClientSession() as session: async with session.get(url, params=params, headers=kook_headers) as response: ret1 = json.loads(await response.text()) - #_log.debug(ret1) + _log.debug(ret1) return ret1 @@ -94,6 +93,7 @@ async def bot_offline(): async with aiohttp.ClientSession() as session: async with session.post(url, headers=kook_headers) as response: res = json.loads(await response.text()) + _log.debug(res) return res diff --git a/code/utils/file/Files.py b/code/utils/file/Files.py index 7476007..d875938 100644 --- a/code/utils/file/Files.py +++ b/code/utils/file/Files.py @@ -86,7 +86,10 @@ UserStsDict = {} """用户商店皮肤提醒notify功能选择列表""" ValItersEmoji = EmojiDict['val_iters_emoji'] -"""valorant皮肤等级对应的kook自定义表情""" +"""valorant皮肤等级对应的kook自定义表情。 + +对应配置文件`./config/color_emoji.json`中的 `val_iters_emoji` 键值 +""" # 实例化一个khl的bot,方便其他模组调用 from khl import Bot From e5bf32352e72e3cc8283e89d09e7a79ba8e67322 Mon Sep 17 00:00:00 2001 From: musnows Date: Thu, 9 Mar 2023 08:51:10 +0800 Subject: [PATCH 16/31] feat(api): update auth obj cache in api, base on riot_user_id --- code/utils/api/ApiHandler.py | 72 ++++++++++++-------------------- code/utils/file/Files.py | 10 ++--- code/utils/valorant/AuthCache.py | 50 +++++++++++++++++++--- code/utils/valorant/EzAuth.py | 2 +- 4 files changed, 76 insertions(+), 58 deletions(-) diff --git a/code/utils/api/ApiHandler.py b/code/utils/api/ApiHandler.py index 96fac38..19a907d 100644 --- a/code/utils/api/ApiHandler.py +++ b/code/utils/api/ApiHandler.py @@ -4,15 +4,16 @@ from khl.card import CardMessage, Card, Module, Types, Element -from utils.valorant.EzAuth import EzAuthExp,EzAuth -from utils.api.ApiToken import check_token_rate -from utils.Gtime import getTime -from utils.KookApi import kook_create_asset -from utils.valorant.Val import fetch_daily_shop, fetch_vp_rp_dict -from utils import ShopRate,ShopImg +from .ApiToken import check_token_rate +from ..Gtime import getTime +from ..KookApi import kook_create_asset +from .. import ShopRate,ShopImg +from ..valorant import AuthCache +from ..valorant.Val import fetch_daily_shop, fetch_vp_rp_dict +from ..valorant.EzAuth import EzAuthExp,EzAuth # bot的配置文件 -from ..file.Files import config,ApiAuthCache,ApiAuthLog,AfdWebhook,_log +from ..file.Files import config,UserAuthCache,ApiAuthLog,AfdWebhook,_log # 用来给kook上传文件的bot token api_bot_token = config['token']['api_bot_token'] # 默认的背景图 @@ -20,31 +21,6 @@ img_bak_11 = 'https://img.kookapp.cn/assets/2023-01/lzRKEApuEP0rs0rs.jpg' -# # 上传到lsky (这个上传很麻烦,lsky只认open打开的图片) -# gLock = asyncio.Lock() # 创建一把锁,用于保存文件 -# async def lsky_upload(bg): -# await gLock.acquire()# 上锁 -# path = "./log/api_img_temp.png" -# bg.save(path, format='PNG') -# img = open(path,'rb') -# gLock.release() # 释放锁 -# # lsky的连接和token写入配置文件,方便修改 -# url = f"{config['lsky']['url']}/api/v1/upload" -# header = { -# "Authorization": f"Bearer {config['lsky']['token']}", -# "Accept": "application/json" -# } -# params = {'strategy_id':3} -# myfiles = {'file': img} -# ret = requests.post(url, headers=header, params=params,files=myfiles) # 请求api -# ret = ret.json() -# _log.debug(ret) -# if ret['status']: # 上传成功 -# return {'code':0,'data':ret['data']['links'],'message':ret['message']} -# # 上传失败 -# return {'code':200,'data':ret['data'],'message':ret['message']} - - # 基本画图操作 async def base_img_request(params, list_shop, vp1=0, rp1=0): # 自定义背景 @@ -139,11 +115,13 @@ async def shop_get_request(params,account:str): isRaw = ('raw' in params and str(params['raw']) != '0') # 用户需要原始uuid isimgRatio = ( 'img_ratio' not in params or str(params['img_ratio']) != '1') # 判断是否有指定图片比例 # 2.获取缓存中的auth对象 - if account not in ApiAuthCache['data']: - return { "code":200,"message":"account不在ApiAuthCache缓存中,请先调用/login接口", - "info":"account not in ApiAuthCache['data']" } + if account not in UserAuthCache["api"]: + return { "code":200,"message":"account不在已登录用户的缓存中,请先POST调用/login接口", + "info":"account not in Cache, please POST /login" } # 2.1 判断通过,获取auth - auth = ApiAuthCache['data'][account]['auth'] + authlist = await AuthCache.get_auth_object("api",account) + assert isinstance(authlist,list) + auth = authlist[0]["auth"] assert isinstance(auth,EzAuth) # 2.2 重新登录 ret = await auth.reauthorize() @@ -192,7 +170,8 @@ async def login_request(request,method = "GET"): # 登录,获取用户的token auth = EzAuth() resw = await auth.authorize(account,passwd) - ApiAuthCache['data'][account] = {"auth": auth, "2fa": auth.is2fa } # 将对象插入 + # 缓存 + await AuthCache.cache_auth_object('api',account,auth) # 没有成功,是2fa用户,需要执行/tfa if not resw['status']: return {'code': 0, 'message': "need provide email verify code", 'info': '2fa用户,请使用/tfa接口提供邮箱验证码'} @@ -209,7 +188,7 @@ async def login_request(request,method = "GET"): # 保存cookie到本地 if account not in ApiAuthLog: ApiAuthLog.append(account) # 记录已缓存的用户账户(方便开机加载) - auth.save_cookies(f"./log/cookie/api/{account}.cke") + auth.save_cookies(f"./log/cookie/{account}.cke") return {'code': 0, 'message': "auth success", 'info': '登录成功!'} @@ -230,14 +209,14 @@ async def tfa_code_requeset(request): vcode = params['vcode'] token = params['token'] - global ApiAuthCache - if account not in ApiAuthCache['data']: - return { 'code': 200,'message': 'Riot account not in ApiAuthCache', - 'info': '拳头账户不在dict中,请先请求/shop-img或/login接口' } try: - auth = ApiAuthCache['data'][account]['auth'] + auth = await AuthCache.get_tfa_auth_object(account) assert isinstance(auth,EzAuth) res = await auth.email_verfiy(vcode) + except AssertionError as result: + _log.exception("Api tfa | AssertionError") + return { 'code': 200,'message': 'Riot account not in tfa auth cache', + 'info': '拳头账户不在缓存中,请先请求/shop-img或/login接口','vcode': vcode } except EzAuthExp.MultifactorError as result: _log.exception("Api tfa | MultifactorError") if "multifactor_attempt_failed" in str(result): @@ -246,11 +225,12 @@ async def tfa_code_requeset(request): # 其他情况 return {'code': 200,'message': '2fa auth_failure','info': '两步验证登陆错误,请重新操作','vcode': vcode} # 走到这里,代表是2fa用户,且登陆成功 + await AuthCache.cache_auth_object('api',account,auth) _log.info("Api tfa | 2fa user auth success") # 保存cookie到本地 - if account not in ApiAuthLog: - ApiAuthLog.append(account) # 记录已缓存的用户账户(方便开机加载) - auth.save_cookies(f"./log/cookie/api/{account}.cke") + if auth.user_id not in ApiAuthLog: + ApiAuthLog.append(auth.user_id) # 记录已缓存的用户账户(方便开机加载) + auth.save_cookies(f"./log/cookie/{auth.user_id}.cke") return {'code': 0, 'message': "2fa auth success", 'info': '2fa用户登录成功!'} diff --git a/code/utils/file/Files.py b/code/utils/file/Files.py index d875938..43ddc2d 100644 --- a/code/utils/file/Files.py +++ b/code/utils/file/Files.py @@ -43,8 +43,8 @@ """riot用户游戏id和uuid""" UserPwdReauth = UserAuthID['ap_log'] """riot账户密码重登记录""" -ApiAuthLog = UserAuthID['api_log'] -"""api 缓存用户的account记录""" +ApiAuthLog:list = UserAuthID['api_log'] +"""api 缓存用户的riot_user_uuid记录""" # vip相关 VipUuidDict = FileManage("./log/VipUuid.json") @@ -59,9 +59,9 @@ """vip 抽奖记录""" # 缓存相关 -LoginForbidden = False +LoginForbidden:bool = False """出现403错误,禁止重登""" -NightMarket = False +NightMarket:bool = False """夜市是否开启?False没开,True开""" UserAuthCache = {'api':{},'kook':{},'data':{},'acpw':{},'tfa':{}} """api/bot 公用EzAuth对象缓存: @@ -71,8 +71,6 @@ - acpw | riot_user_uuid:{'a':账户,'p':密码} 用于bot中的账户密码存储。只存储在全局变量中,不写入磁盘 - tfa | 用户id:EzAuth对象 临时使用的缓存 """ -ApiAuthCache = {'data':{}} -"""api EzAuth对象缓存""" login_rate_limit = {'limit': False, 'time': time()} """全局的速率限制,如果触发了速率限制的err,则阻止所有用户login - {'limit': False, 'time': time()} diff --git a/code/utils/valorant/AuthCache.py b/code/utils/valorant/AuthCache.py index de5117f..d0d96b2 100644 --- a/code/utils/valorant/AuthCache.py +++ b/code/utils/valorant/AuthCache.py @@ -1,20 +1,28 @@ # 缓存登录对象 from .EzAuth import EzAuth -from ..file.Files import UserAuthCache +from ..file.Files import UserAuthCache,_log Auth2faCache = UserAuthCache['tfa'] async def cache_auth_object(platfrom:str,key:str,auth:EzAuth) -> None: + """cache auth obj base on platform and key + - platfrom: kook or api + - key: kook_user_id or api-account + - auth: EzAuth obj + """ + _log.debug(f"enter def | {UserAuthCache}") # 如果是2fa用户,且键值不在缓存里面,认为是初次登录,需要提供邮箱验证码 if auth.is2fa and key not in Auth2faCache: - Auth2faCache[key] = auth + Auth2faCache[key] = auth # 将对象插入2fa的缓存 return # 如果键值存在,认为是tfa登陆成功,删除临时键值 elif auth.is2fa and key in Auth2faCache: del Auth2faCache[key] # 如果对象没有成功初始化,说明还是有问题;不进行缓存,让用户重登 - if not auth.is_init: return + if not auth.is_init(): + _log.warning(f"key:{key} | auth obj not init!") + return # 在data中插入对象 UserAuthCache['data'][auth.user_id] = {"auth": auth, "2fa": auth.is2fa} @@ -32,10 +40,42 @@ async def cache_auth_object(platfrom:str,key:str,auth:EzAuth) -> None: # 往缓存键值中插入Riot用户的uuid (api的键值是用户账户,有唯一性,不需弄list) UserAuthCache['api'][key] = auth.user_id + _log.debug(f"exit def | {UserAuthCache}") + async def get_tfa_auth_object(key:str) -> EzAuth | None: - """get 2fa auth obj base on key. Return None if key not in cache + """get auth obj (need 2fa verify code) base on key. Return None if key not in cache """ + _log.debug(f"enter def | {Auth2faCache}") if key not in Auth2faCache: return None else: - return Auth2faCache[key] \ No newline at end of file + return Auth2faCache[key] + +async def get_auth_object(platfrom:str,key:str) -> list[dict[str,EzAuth]]|None: + """get auth obj base on key. Return None if key not in cache + - platfrom: kook or api + """ + ret = list() + if platfrom=="kook": + _log.debug(f"enter def | {UserAuthCache}") + if key not in UserAuthCache["kook"]: + _log.info(f"platfrom: {platfrom} | key:{key} not in cache") + return ret + + riot_user_id_list = UserAuthCache["kook"][key] + for ru in riot_user_id_list: + ret.append(UserAuthCache["data"][ru]) + + return ret + elif platfrom=="api": + _log.debug(f"enter def | {UserAuthCache}") + if key not in UserAuthCache["api"]: + _log.info(f"platfrom: {platfrom} | key:{key} not in cache") + return ret + + riot_user_id = UserAuthCache["api"][key] + ret.append(UserAuthCache["data"][riot_user_id]) + return ret + else: + _log.error(f"platfrom '{platfrom}' invalid") + return ret \ No newline at end of file diff --git a/code/utils/valorant/EzAuth.py b/code/utils/valorant/EzAuth.py index 5f84557..72a3bd6 100644 --- a/code/utils/valorant/EzAuth.py +++ b/code/utils/valorant/EzAuth.py @@ -133,7 +133,7 @@ async def authorize(self, username, password) -> dict: Return: - {"status":True,"auth":self,"2fa":self.is2fa} - {"status":False,"auth":self,"2fa_status":self.is2fa} - if False, using email_verify() to send verify code + - if False, using email_verify() to send verify code """ if username and password: self.session.cookies.clear() # not reauth, clear cookie From 8e2ac10c35f2b9fe24c84ccbc5fb015b15d19970 Mon Sep 17 00:00:00 2001 From: musnows Date: Thu, 9 Mar 2023 08:56:46 +0800 Subject: [PATCH 17/31] feat(authcache): add cookie save for api --- code/utils/api/ApiHandler.py | 10 ++-------- code/utils/valorant/AuthCache.py | 10 ++++++++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/code/utils/api/ApiHandler.py b/code/utils/api/ApiHandler.py index 19a907d..cce3192 100644 --- a/code/utils/api/ApiHandler.py +++ b/code/utils/api/ApiHandler.py @@ -184,11 +184,9 @@ async def login_request(request,method = "GET"): _log.info(f"Api login | user auth success") # 如果是GET方法,直接调用获取商店的操作 if method == "GET": # /shop-img 接口是get的 + _log.debug(f"Api login | enter def shop_get_request") return await shop_get_request(params,account) - # 保存cookie到本地 - if account not in ApiAuthLog: - ApiAuthLog.append(account) # 记录已缓存的用户账户(方便开机加载) - auth.save_cookies(f"./log/cookie/{account}.cke") + return {'code': 0, 'message': "auth success", 'info': '登录成功!'} @@ -227,10 +225,6 @@ async def tfa_code_requeset(request): # 走到这里,代表是2fa用户,且登陆成功 await AuthCache.cache_auth_object('api',account,auth) _log.info("Api tfa | 2fa user auth success") - # 保存cookie到本地 - if auth.user_id not in ApiAuthLog: - ApiAuthLog.append(auth.user_id) # 记录已缓存的用户账户(方便开机加载) - auth.save_cookies(f"./log/cookie/{auth.user_id}.cke") return {'code': 0, 'message': "2fa auth success", 'info': '2fa用户登录成功!'} diff --git a/code/utils/valorant/AuthCache.py b/code/utils/valorant/AuthCache.py index d0d96b2..25a0f43 100644 --- a/code/utils/valorant/AuthCache.py +++ b/code/utils/valorant/AuthCache.py @@ -1,6 +1,6 @@ # 缓存登录对象 from .EzAuth import EzAuth -from ..file.Files import UserAuthCache,_log +from ..file.Files import UserAuthCache,ApiAuthLog,_log Auth2faCache = UserAuthCache['tfa'] @@ -39,7 +39,13 @@ async def cache_auth_object(platfrom:str,key:str,auth:EzAuth) -> None: elif platfrom == 'api': # 往缓存键值中插入Riot用户的uuid (api的键值是用户账户,有唯一性,不需弄list) UserAuthCache['api'][key] = auth.user_id - + # 记录已缓存的用户账户(方便开机加载) + if auth.user_id not in ApiAuthLog: + ApiAuthLog.append(auth.user_id) + # 保存cookie到本地 + auth.save_cookies(f"./log/cookie/{auth.user_id}.cke") + _log.info(f"save cookies | './log/cookie/{auth.user_id}.cke'") + _log.debug(f"exit def | {UserAuthCache}") async def get_tfa_auth_object(key:str) -> EzAuth | None: From 40bdffdf778e761d47e6a9b07f7569d26a713633 Mon Sep 17 00:00:00 2001 From: musnows Date: Thu, 9 Mar 2023 08:58:20 +0800 Subject: [PATCH 18/31] fix(api): update docs url in return refactor(file): rename nightmarket, import to main --- code/api.py | 4 ++-- code/main.py | 2 +- code/utils/api/ApiHandler.py | 10 +++++----- code/utils/file/Files.py | 4 ++-- docs/init-bot.md | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/code/api.py b/code/api.py index d2186de..1f89c7b 100644 --- a/code/api.py +++ b/code/api.py @@ -19,7 +19,7 @@ async def hello_world(request): # put application's code here 'message': 'Hello! Use path /shop or /shop-img to get valorant daily shop', 'info': '在path后添加/shop-img或者/shop来获取每日商店,前者会直接跳转,后者返回一个带图片url的json。示例: /shop?account=Riot账户&passwd=Riot密码&img_src=可选参数,自定义背景图', - 'docs': 'https://github.com/Aewait/Kook-Valorant-Bot/blob/main/docs/valorant-shop-img-api.md' + 'docs': 'https://github.com/Valorant-Shop-CN/Kook-Valorant-Bot/blob/main/docs/valorant-shop-img-api.md' }, indent=2, sort_keys=True, @@ -142,7 +142,7 @@ async def post_shop(request): 'code': 400, 'message': 'params needed: token/account/passwd', 'info': '缺少参数!示例: /shop-img?token=api凭证&account=Riot账户&passwd=Riot密码&img_src=自定义背景图(可选)', - 'docs': 'https://github.com/Aewait/Kook-Valorant-Bot/blob/main/docs/valorant-shop-img-api.md' + 'docs': 'https://github.com/Valorant-Shop-CN/Kook-Valorant-Bot/blob/main/docs/valorant-shop-img-api.md' } return web.Response(body=json.dumps(ret, indent=2, sort_keys=True, ensure_ascii=False), content_type='application/json',status=200) diff --git a/code/main.py b/code/main.py index 51dc8c7..31bc480 100644 --- a/code/main.py +++ b/code/main.py @@ -25,7 +25,7 @@ # bot的token文件 from utils.file.FileManage import FileManage,save_all_file -from utils.file.Files import config, bot, ApiAuthLog, LoginForbidden +from utils.file.Files import config, bot, ApiAuthLog, LoginForbidden,NightMarketOff # 只用来上传图片的bot bot_upimg = Bot(token=config['token']['img_upload_token']) """用来上传图片的bot""" diff --git a/code/utils/api/ApiHandler.py b/code/utils/api/ApiHandler.py index cce3192..c6f42f8 100644 --- a/code/utils/api/ApiHandler.py +++ b/code/utils/api/ApiHandler.py @@ -13,7 +13,7 @@ from ..valorant.EzAuth import EzAuthExp,EzAuth # bot的配置文件 -from ..file.Files import config,UserAuthCache,ApiAuthLog,AfdWebhook,_log +from ..file.Files import config,UserAuthCache,AfdWebhook,_log # 用来给kook上传文件的bot token api_bot_token = config['token']['api_bot_token'] # 默认的背景图 @@ -86,7 +86,7 @@ async def img_draw_request(request): 'code': 400, 'message': 'params needed: token/list_shop', 'info': '缺少参数!示例: /shop-draw?token=api凭证&list_shop=四个皮肤uuid的list&vp=vp(可选)&rp=rp(可选)&img_src=自定义背景图(可选)', - 'docs': 'https://github.com/Aewait/Kook-Valorant-Bot/blob/main/docs/valorant-shop-img-api.md' + 'docs': 'https://github.com/Valorant-Shop-CN/Kook-Valorant-Bot/blob/main/docs/valorant-shop-img-api.md' } # params是multidict,传入的list_shop被拆分成了多个键值,需要合并 @@ -155,7 +155,7 @@ async def login_request(request,method = "GET"): 'code': 400, 'message': 'params needed: token/account/passwd', 'info': '缺少参数!示例: /shop-img?token=api凭证&account=Riot账户&passwd=Riot密码&img_src=自定义背景图(可选)', - 'docs': 'https://github.com/Aewait/Kook-Valorant-Bot/blob/main/docs/valorant-shop-img-api.md' + 'docs': 'https://github.com/Valorant-Shop-CN/Kook-Valorant-Bot/blob/main/docs/valorant-shop-img-api.md' } account = params['account'] @@ -200,7 +200,7 @@ async def tfa_code_requeset(request): 'code': 400, 'message': 'params needed: token/account/vcode', 'info': '缺少参数!示例: /tfa?token=api凭证&account=Riot账户&vcode=邮箱验证码', - 'docs': 'https://github.com/Aewait/Kook-Valorant-Bot/blob/main/docs/valorant-shop-img-api.md' + 'docs': 'https://github.com/Valorant-Shop-CN/Kook-Valorant-Bot/blob/main/docs/valorant-shop-img-api.md' } account = params['account'] @@ -239,7 +239,7 @@ async def shop_cmp_request(request): 'code': 400, 'message': 'params needed: token/best/worse/platform', 'info': '缺少参数!请参考api文档,正确设置您的参数', - 'docs': 'https://github.com/Aewait/Kook-Valorant-Bot/blob/main/docs/valorant-shop-img-api.md' + 'docs': 'https://github.com/Valorant-Shop-CN/Kook-Valorant-Bot/blob/main/docs/valorant-shop-img-api.md' } best = params['best'] diff --git a/code/utils/file/Files.py b/code/utils/file/Files.py index 43ddc2d..3536ed0 100644 --- a/code/utils/file/Files.py +++ b/code/utils/file/Files.py @@ -61,8 +61,8 @@ # 缓存相关 LoginForbidden:bool = False """出现403错误,禁止重登""" -NightMarket:bool = False -"""夜市是否开启?False没开,True开""" +NightMarketOff:bool = True +"""夜市是否关闭?False (on,夜市开着) | True (off,夜市关闭)""" UserAuthCache = {'api':{},'kook':{},'data':{},'acpw':{},'tfa':{}} """api/bot 公用EzAuth对象缓存: - api | 用户账户:riot_user_uuid diff --git a/docs/init-bot.md b/docs/init-bot.md index 7b1ae13..70f49e2 100644 --- a/docs/init-bot.md +++ b/docs/init-bot.md @@ -57,7 +57,7 @@ pip3 install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple | 文件路径 | 功能 | | --------------------------- | ------------------------------------------------------------ | | code/config/config.json | 存放本机器人的基本配置:[KOOK开发者页面](https://developer.kaiheila.cn/doc/intro) | -| [code/config/color_emoji.json](https://github.com/Aewait/Kook-Valorant-Bot/blob/develop/code/config/color_emoji.json) | 存放`code/main.py`中自动给用户上角色功能相关的emoji以及`msg_id/guild_id` | +| [code/config/color_emoji.json](https://github.com/Valorant-Shop-CN/Kook-Valorant-Bot/blob/develop/code/config/color_emoji.json) | 存放`code/main.py`中自动给用户上角色功能相关的emoji以及`msg_id/guild_id` | | ~code/config/valorant.json~ | ~存放拳头开发者api-key:[Roit Develop](https://developer.riotgames.com/)~ 目前需要使用该api的代码都已被删除 | | ~code/config/caiyun.json~ | ~存放彩云小译的api-key:[彩云](https://docs.caiyunapp.com/blog/2018/09/03/lingocloud-api/#python-%E8%B0%83%E7%94%A8)~ 已使用`config.json`代替 | From f25be04383eefa0fa763c369119208540a77d04a Mon Sep 17 00:00:00 2001 From: musnows Date: Thu, 9 Mar 2023 09:26:15 +0800 Subject: [PATCH 19/31] fix(main): fix user name err in uinfo cmd fix(main): add tfa cookie save for vip user --- code/main.py | 58 ++++++++++++++++++++++++---------------- code/utils/KookApi.py | 1 + code/utils/file/Files.py | 8 +++--- 3 files changed, 41 insertions(+), 26 deletions(-) diff --git a/code/main.py b/code/main.py index 31bc480..0ee3102 100644 --- a/code/main.py +++ b/code/main.py @@ -399,7 +399,7 @@ async def dx(msg: Message): ###########################################vip###################################################### #用来存放roll的频道/服务器/回应用户的dict -from utils.file.Files import VipShopBgDict, VipRollDcit, VipUserDict +from utils.file.Files import VipShopBgDict, VipRollDcit, VipUserDict, VipAuthLog # 新建vip的uuid,第一个参数是天数,第二个参数是数量 @@ -553,7 +553,7 @@ async def vip_shop_bg_set(msg: Message, icon: str = "err", *arg): user_ind = (msg.author_id in VipShopBgDict['bg']) # 判断当前用户在不在dict中 if user_ind and len(VipShopBgDict['bg'][msg.author_id]["background"]) >= VIP_BG_SIZE: cm = await get_card(f"当前仅支持保存{VIP_BG_SIZE}个自定义图片", "您可用「/vip-shop-d 图片编号」删除已有图片再添加", icon_cm.that_it) - await msg.reply(cm) + await msg.reply(cm)# type:ignore return # 提取图片url @@ -829,7 +829,7 @@ async def vip_time_add(msg: Message, vday: int = 1, *arg): # 预加载用户的riot游戏id和玩家uuid(登录后Api获取) from utils.file.Files import (UserRiotName, SkinNotifyDict, SkinRateDict, ValBundleList,UserAuthCache,UserPwdReauth,ValItersEmoji, - UserStsDict,UserRtsDict,UserShopCache) + UserStsDict,UserRtsDict,UserShopCache,login_rate_limit) def check_rate_err_user(kook_user_id: str)-> bool: """检查皮肤评分的错误用户(违规用户) @@ -880,6 +880,17 @@ async def check_GloginRate(): raise EzAuthExp.RatelimitError return True +# 缓存vip用户的信息 +async def cache_vip_auth(kook_user_id:str,auth:EzAuth): + global VipShopBgDict,VipAuthLog + # 因为换了用户,所以需要修改状态码重新获取商店 + if kook_user_id in VipShopBgDict['bg']: + VipShopBgDict['bg'][kook_user_id]['status'] = False + # 用于保存cookie的路径,保存vip用户登录信息 + if kook_user_id not in VipAuthLog: VipAuthLog[kook_user_id] = [] + VipAuthLog[kook_user_id].append(auth.user_id) # 插入键值 + auth.save_cookies(f"./log/cookie/{auth.user_id}.cke") + _log.info(f"save cookies | './log/cookie/{auth.user_id}.cke'") #查询当前有多少用户登录了 @bot.command(name="ckau") @@ -916,7 +927,7 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', # 1.1 检查当前已经登录的用户数量,超过限制直接提示并返回 if msg.author_id in UserAuthCache["kook"] and len(UserAuthCache["kook"][msg.author_id]) >= LOGIN_LIMITED: await msg.reply(get_card("您当前已经登录了3个拳头账户!", - "为避免后台缓存压力过大,您最多只能登录3个Riot账户",icon_cm.im_good_phoniex)) + "为避免后台缓存压力过大,您最多只能登录3个Riot账户",icon_cm.im_good_phoniex))# type:ignore return # 2.发送开始登录的提示消息 cm = await get_card("正在尝试获取您的riot账户token", "小憩一下,很快就好啦!", icon_cm.val_logo_gif) @@ -942,17 +953,13 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', # 5.如果是vip用户,则执行下面的代码 if await BotVip.vip_ck(msg.author_id): - global VipShopBgDict #因为换了用户,所以需要修改状态码重新获取商店 - if msg.author_id in VipShopBgDict['bg']: - VipShopBgDict['bg'][msg.author_id]['status'] = False - # 用于保存cookie的路径,保存vip用户登录信息 - auth.save_cookies(f"./log/cookie/{msg.author_id}.cke") + await cache_vip_auth(msg.author_id,auth) # 6.用户自己选择是否保存账户密码,默认是不保存的;2fa用户也不会保存 if apSave == 'save' and (not auth.is2fa): - # 不在dict里面,再新建(用于保存阿狸使用账户密码重登的时间,告知用户) - if msg.author_id not in UserPwdReauth: + if msg.author_id not in UserPwdReauth:# 不在dict里面,再新建 UserPwdReauth[msg.author_id] = {} + # 新增账户密码的键值 UserAuthCache['acpw'][auth.user_id] = {'a': user, 'p': passwd} info_text += "\n您选择了保存账户密码,cookie失效后将使用账户密码重登" @@ -1033,24 +1040,29 @@ async def tfa_verify(msg: Message, tfa: str, *arg): assert isinstance(auth, EzAuth) # 1.2 判断这个auth是否已经初始化完毕了,如果是,则不执行后续操作 if auth.is_init(): # 初始化完毕 - await msg.reply(await get_card(f"玩家「{auth.Name}#{auth.Tag}」已登录,无须执行本命令","若有问题,请联系开发者",icon_cm.correct)) + await msg.reply(await get_card(f"玩家「{auth.Name}#{auth.Tag}」已登录,无须执行本命令","若有问题,请联系开发者",icon_cm.correct))# type:ignore return # 2.发送提示信息 - cm0 = await get_card(f"两步验证码「{tfa}」获取成功", "小憩一下,很快就好啦!", icon_cm.val_logo_gif) + cm0 = await get_card(f"两步验证码「{tfa}」获取成功", "小憩一下,很快就好啦!", icon_cm.no_time) send_msg = await msg.reply(cm0) #记录消息id用于后续更新 # 3.进行邮箱验证 await auth.email_verfiy(tfa) # 3.1 验证成功,进行缓存 await AuthCache.cache_auth_object('kook',msg.author_id,auth) + # 3.2 如果是vip用户,则执行下面的代码 + if await BotVip.vip_ck(msg.author_id): + await cache_vip_auth(msg.author_id,auth) # 4.成功 UserRiotName[msg.author_id] = {'auth_user_id': auth.user_id, 'GameName': auth.Name, 'TagLine': auth.Tag} text = f"登陆成功!欢迎回来,{UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" info_text = "当前cookie有效期为2~3天,有任何问题请[点我](https://kook.top/gpbTwZ)" cm = await get_card(text, info_text, icon_cm.correct) await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) - + _log.info( + f"tfa | Au:{msg.author_id} | {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" + ) except EzAuthExp.MultifactorError as result: if "multifactor_attempt_failed" in str(result): cm = await get_card("两步验证码错误,请重试", str(result), icon_cm.lagging) @@ -1092,7 +1104,7 @@ async def logout(msg: Message, *arg): # 4.成功,发提示信息 text = f"已退出所有账户的登录!下次再见~" cm = await get_card(text, "你会回来的,对吗?", icon_cm.crying_crab) - await msg.reply(cm) + await msg.reply(cm) # type:ignore _log.info(log_text) except Exception as result: # 其他错误 @@ -1172,14 +1184,14 @@ async def get_daily_shop(msg: Message,index:str = "0",*arg): try: # 1.如果用户不在Authdict里面,代表没有登录,直接退出 if msg.author_id not in UserAuthCache['kook']: - await msg.reply(await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that)) + await msg.reply(await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that)) # type:ignore return # 2.判断下标是否合法,默认下标为0 _index = int(index) # 2.2 下标非法(越界),发送报错信息 if _index >= len(UserAuthCache['kook'][msg.author_id]): - await msg.reply(await get_card("您提供的下标超出范围!请检查您的输入,或不提供本参数","使用「/login-l」查看您当前登录的账户",icon_cm.dont_do_that)) + await msg.reply(await get_card("您提供的下标超出范围!请检查您的输入,或不提供本参数","使用「/login-l」查看您当前登录的账户",icon_cm.dont_do_that)) # type:ignore return # 2.2 下标合法,获取需要进行操作的Riot用户id riot_user_id = UserAuthCache['kook'][msg.author_id][_index] @@ -1336,14 +1348,14 @@ async def get_night_market(msg: Message,index:str="0", *arg): try: # 1.判断是否已经登录 if msg.author_id not in UserAuthCache['kook']: - await msg.reply(await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that)) + await msg.reply(await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that))# type:ignore return # 2.判断下标是否合法,默认下标为0 _index = int(index) # 2.2 下标非法(越界),发送报错信息 if _index >= len(UserAuthCache['kook'][msg.author_id]): - await msg.reply(await get_card("您提供的下标超出范围!请检查您的输入,或不提供本参数","使用「/login-l」查看您当前登录的账户",icon_cm.dont_do_that)) + await msg.reply(await get_card("您提供的下标超出范围!请检查您的输入,或不提供本参数","使用「/login-l」查看您当前登录的账户",icon_cm.dont_do_that))# type:ignore return # 2.2 下标合法,获取需要进行操作的Riot用户id riot_user_id = UserAuthCache['kook'][msg.author_id][_index] @@ -1444,7 +1456,7 @@ async def get_user_card(msg: Message, *arg): try: # 1.判断用户是否登录 if msg.author_id not in UserAuthCache['kook']: - await msg.reply(await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that)) + await msg.reply(await get_card("您尚未登陆!请「私聊」使用login命令进行登录操作", f"「/login 账户 密码」请确认您知晓这是一个风险操作", icon_cm.whats_that))# type:ignore return # 1.1 发送开始的提示信息 cm = await get_card("获取您所有账户的 玩家卡面/VP/R点", "阿狸正在施法!很快就好啦~", icon_cm.rgx_card,card_color="#BBFFFF") @@ -1479,8 +1491,8 @@ async def get_user_card(msg: Message, *arg): _log.warning(f"player_title | Au:{msg.author_id} | uuid:{resp['Identity']['PlayerTitleID']}") # 可能遇到全新账户(没打过游戏)的情况 if resp['Guns'] == None or resp['Sprays'] == None: - c = await get_card(f"状态错误!您是否登录了一个全新(没上过号)账户?", - f"card:\n```\n{player_card}\n```\ntitle:\n```\n{player_title}\n```", + c = await get_card(f"玩家「{auth.Name}#{auth.Tag}」状态错误!", + f"您可能登录了一个全新账户(没打过瓦)\ncard:\n```\n{player_card}\n```\ntitle:\n```\n{player_title}\n```", icon_cm.whats_that,full_cm=False) cm.append(c) continue @@ -1494,7 +1506,7 @@ async def get_user_card(msg: Message, *arg): c = Card(color='#fb4b57') c.append( Module.Header( - f"玩家 {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']} 的个人信息")) + f"玩家「{auth.Name}#{auth.Tag}」的个人信息")) c.append(Module.Container(Element.Image(src=player_card['data']['wideArt']))) #将图片插入进去 text = f"玩家称号:" + player_title['data']['displayName'] + "\n" text += f"玩家等级:{player_level} - 经验值:{player_level_xp}\n" diff --git a/code/utils/KookApi.py b/code/utils/KookApi.py index 6c42a56..1f841d5 100644 --- a/code/utils/KookApi.py +++ b/code/utils/KookApi.py @@ -112,6 +112,7 @@ class icon_cm: correct = "https://img.kookapp.cn/assets/2022-09/DknXSpwrlQ0e80e8.gif" duck = "https://img.kookapp.cn/assets/2022-09/qARsaxW6lp0e80e8.gif" that_it = "https://img.kookapp.cn/assets/2022-09/LqD0pQY2P70e80e8.png" + no_time = "https://img.kookapp.cn/assets/2023-03/hNrtZg68pZ03k03k.png" to_much_money = "https://img.kookapp.cn/assets/2022-09/y17ZhjjaVf0e80e8.png" shaka = "https://img.kookapp.cn/assets/2022-09/kMWT5AoEic0e80e8.png" say_hello_to_camera = "https://img.kookapp.cn/assets/2022-09/sHh8VJrMp20e80e8.png" diff --git a/code/utils/file/Files.py b/code/utils/file/Files.py index 3536ed0..4cce96f 100644 --- a/code/utils/file/Files.py +++ b/code/utils/file/Files.py @@ -38,13 +38,15 @@ SkinNotifyDict = FileManage("./log/UserSkinNotify.json") """皮肤提醒 用户记录""" UserAuthID = FileManage("./log/UserAuthID.json") -"""用户游戏id/uuid,账户密码重登记录""" +"""用户游戏id/uuid,账户密码重登记录,api/vip登录用户记录""" UserRiotName = UserAuthID['data'] """riot用户游戏id和uuid""" UserPwdReauth = UserAuthID['ap_log'] -"""riot账户密码重登记录""" -ApiAuthLog:list = UserAuthID['api_log'] +"""riot账户密码重登记录。如果机器人有使用过账户密码进行重登,会在这里记录""" +ApiAuthLog:list = UserAuthID['api_auth_log'] """api 缓存用户的riot_user_uuid记录""" +VipAuthLog:dict = UserAuthID["vip_auth_log"] +"""vip 已登录用户的记录。格式 vip_userid:[uuid1,uuid2]""" # vip相关 VipUuidDict = FileManage("./log/VipUuid.json") From ad58b58da5e4c8bc5f221e582d6dfcb53fb3363c Mon Sep 17 00:00:00 2001 From: musnows Date: Thu, 9 Mar 2023 09:44:19 +0800 Subject: [PATCH 20/31] feat(main): add motiply user cookie load in startup task --- code/main.py | 58 ++++++++++++++++++-------------- code/utils/file/Files.py | 16 ++++----- code/utils/valorant/AuthCache.py | 3 +- 3 files changed, 41 insertions(+), 36 deletions(-) diff --git a/code/main.py b/code/main.py index 0ee3102..fd53044 100644 --- a/code/main.py +++ b/code/main.py @@ -2246,25 +2246,27 @@ async def loading_cache(bot: Bot): log_str_success = "[BOT.TASK] load cookie success = Au:" log_str_failed = "[BOT.TASK] load cookie failed! = Au:" log_not_exits = "[BOT.TASK] cookie path not exists = Au:" - # 遍历用户列表 - for user, uinfo in VipUserDict.items(): - cookie_path = f"./log/cookie/{user}.cke" - #如果路径存在,那么说明已经保存了这个vip用户的cookie - if os.path.exists(cookie_path): - auth = EzAuth() - auth.load_cookies(cookie_path) #加载cookie - ret_bool = await auth.reauthorize(exp_print=False) #尝试登录 - if ret_bool: # True登陆成功 - UserAuthCache['kook'][user] = [auth.user_id] - UserAuthCache['data'][auth.user_id] = {"auth": auth, "2fa": False} #将对象插入 - log_str_success += f"({user})" + # 遍历vip的用户dict + for user, uinfo in VipAuthLog.items(): + UserAuthCache['kook'][user] = [] + for ru in uinfo: # 遍历该用户已登录账户的uuid列表 + cookie_path = f"./log/cookie/{ru}.cke" + # 如果路径存在,那么说明已经保存了这个vip用户的cookie + if os.path.exists(cookie_path): + auth = EzAuth() + auth.load_cookies(cookie_path) # 加载cookie + ret_bool = await auth.reauthorize(exp_print=False) # 尝试登录 + if ret_bool: # True登陆成功 + UserAuthCache['kook'][user].append(auth.user_id) + UserAuthCache['data'][auth.user_id] = {"auth": auth, "2fa": False} #将对象插入 + log_str_success += f"({user},{ru})" + else: + del auth # 删除对象 + log_str_failed += f"({user},{ru})" + continue else: - del auth # 删除对象 - log_str_failed += f"({user})" + log_not_exits += f"({user},{ru})" continue - else: - log_not_exits += f"({user})" - continue # 结束任务 _log.info("TASK.INFO\n\t" + log_str_success + "\n\t" + log_str_failed + "\n\t" + log_not_exits) _log.info(f"[BOT.TASK] loading user cookie finished") @@ -2273,24 +2275,28 @@ async def loading_cache(bot: Bot): log_str_success = "[BOT.TASK] api load cookie success = Au:" log_str_failed = "[BOT.TASK] api load cookie failed! = Au:" log_not_exits = "[BOT.TASK] api cookie path not exists = Au:" - # 遍历api用户列表 - for user in ApiAuthLog: - cookie_path = f"./log/cookie/api/{user}.cke" - #如果路径存在,那么说明已经保存了这个vip用户的cookie - if os.path.exists(cookie_path): + # 遍历api用户列表,对应的是account:uuid + for acc,ru in ApiAuthLog.items(): + cookie_path = f"./log/cookie/{ru}.cke" + # 如果uuid存在,代表之前vip用户里面有这个对象,直接插入 + if ru in UserAuthCache['data']: + UserAuthCache['api'][acc] = ru + log_str_success += f"({acc},v)" + # 如果路径存在,那么说明已经保存了这个vip用户的cookie + elif os.path.exists(cookie_path): auth = EzAuth() auth.load_cookies(cookie_path) #加载cookie ret_bool = await auth.reauthorize(exp_print=False) #尝试登录 if ret_bool: # True登陆成功 - UserAuthCache['api'][user] = auth.user_id + UserAuthCache['api'][acc] = auth.user_id UserAuthCache['data'][auth.user_id] = {"auth": auth, "2fa": False} #将对象插入 - log_str_success += f"({user})" + log_str_success += f"({acc})" else: del auth # 删除对象 - log_str_failed += f"({user})" + log_str_failed += f"({acc})" continue else: - log_not_exits += f"({user})" + log_not_exits += f"({acc})" continue # 结束任务 _log.info("TASK.INFO\n\t" + log_str_success + "\n\t" + log_str_failed + "\n\t" + log_not_exits) diff --git a/code/utils/file/Files.py b/code/utils/file/Files.py index 4cce96f..5b0f5ee 100644 --- a/code/utils/file/Files.py +++ b/code/utils/file/Files.py @@ -43,10 +43,10 @@ """riot用户游戏id和uuid""" UserPwdReauth = UserAuthID['ap_log'] """riot账户密码重登记录。如果机器人有使用过账户密码进行重登,会在这里记录""" -ApiAuthLog:list = UserAuthID['api_auth_log'] -"""api 缓存用户的riot_user_uuid记录""" +ApiAuthLog:dict = UserAuthID['api_auth_log'] +"""api 缓存用户的riot_user_uuid记录。格式 `account:uuid`""" VipAuthLog:dict = UserAuthID["vip_auth_log"] -"""vip 已登录用户的记录。格式 vip_userid:[uuid1,uuid2]""" +"""vip 已登录用户的记录。格式 `vip_userid:[uuid1,uuid2]`""" # vip相关 VipUuidDict = FileManage("./log/VipUuid.json") @@ -67,11 +67,11 @@ """夜市是否关闭?False (on,夜市开着) | True (off,夜市关闭)""" UserAuthCache = {'api':{},'kook':{},'data':{},'acpw':{},'tfa':{}} """api/bot 公用EzAuth对象缓存: -- api | 用户账户:riot_user_uuid -- kook | kook_user_id:[uuid1,uuid2] 值为list,支持多账户登录 -- data | riot_user_uuid:{"auth": EzAuth Obj, "2fa": EzAuth.is2fa} -- acpw | riot_user_uuid:{'a':账户,'p':密码} 用于bot中的账户密码存储。只存储在全局变量中,不写入磁盘 -- tfa | 用户id:EzAuth对象 临时使用的缓存 +- api | `用户账户:riot_user_uuid` +- kook | `kook_user_id:[uuid1,uuid2]` 值为list,支持多账户登录 +- data | `riot_user_uuid:{"auth": EzAuth Obj, "2fa": EzAuth.is2fa}` +- acpw | `riot_user_uuid:{'a':账户,'p':密码}` 用于bot中的账户密码存储。只存储在全局变量中,不写入磁盘 +- tfa | `用户id:EzAuth Obj` 临时使用的缓存 """ login_rate_limit = {'limit': False, 'time': time()} """全局的速率限制,如果触发了速率限制的err,则阻止所有用户login diff --git a/code/utils/valorant/AuthCache.py b/code/utils/valorant/AuthCache.py index 25a0f43..702984f 100644 --- a/code/utils/valorant/AuthCache.py +++ b/code/utils/valorant/AuthCache.py @@ -40,8 +40,7 @@ async def cache_auth_object(platfrom:str,key:str,auth:EzAuth) -> None: # 往缓存键值中插入Riot用户的uuid (api的键值是用户账户,有唯一性,不需弄list) UserAuthCache['api'][key] = auth.user_id # 记录已缓存的用户账户(方便开机加载) - if auth.user_id not in ApiAuthLog: - ApiAuthLog.append(auth.user_id) + ApiAuthLog[key] = auth.user_id # 保存cookie到本地 auth.save_cookies(f"./log/cookie/{auth.user_id}.cke") _log.info(f"save cookies | './log/cookie/{auth.user_id}.cke'") From 7162fab9f9ff2d078ba9b7676828ea44fd0648bc Mon Sep 17 00:00:00 2001 From: musnow Date: Thu, 9 Mar 2023 12:06:03 +0800 Subject: [PATCH 21/31] fix(main): rm UserRiotName, using auth obj self.value --- code/main.py | 28 ++++++++++++---------------- code/utils/file/Files.py | 2 -- code/utils/valorant/Reauth.py | 4 ++-- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/code/main.py b/code/main.py index fd53044..f4e1749 100644 --- a/code/main.py +++ b/code/main.py @@ -828,7 +828,7 @@ async def vip_time_add(msg: Message, vday: int = 1, *arg): ##################################################################################### # 预加载用户的riot游戏id和玩家uuid(登录后Api获取) -from utils.file.Files import (UserRiotName, SkinNotifyDict, SkinRateDict, ValBundleList,UserAuthCache,UserPwdReauth,ValItersEmoji, +from utils.file.Files import (SkinNotifyDict, SkinRateDict, ValBundleList,UserAuthCache,UserPwdReauth,ValItersEmoji, UserStsDict,UserRtsDict,UserShopCache,login_rate_limit) def check_rate_err_user(kook_user_id: str)-> bool: @@ -909,7 +909,7 @@ async def check_UserAuthCache_len(msg: Message): async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', *arg): _log.info(f"Au:{msg.author_id} {msg.author.username}#{msg.author.identify_num} | /login {apSave}") BotLog.log_bot_user(msg.author_id) #这个操作只是用来记录用户和cmd总数的 - global LoginForbidden, login_rate_limit, UserRiotName, UserAuthCache + global LoginForbidden, login_rate_limit, UserAuthCache if not isinstance(msg, PrivateMessage): # 不是私聊的话,禁止调用本命令 await msg.reply(f"为了避免您的账户信息泄漏,请「私聊」使用本命令!\n用法:`/login 账户 密码`") return @@ -946,9 +946,7 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', return # 4.如果没有抛出异常,那就是完成登录了,设置用户的玩家uuid+昵称 - UserRiotName[msg.author_id] = {'auth_user_id': auth.user_id, 'GameName': auth.Name, 'TagLine': auth.Tag} - # 设置基础打印信息 - text = f"登陆成功!欢迎回来,{UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" + text = f"登陆成功!欢迎回来,{auth.Name}#{auth.Tag}" info_text = "当前cookie有效期为2~3天,有任何问题请[点我](https://kook.top/gpbTwZ)" # 5.如果是vip用户,则执行下面的代码 @@ -969,7 +967,7 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', # 8.全部都搞定了,打印登录信息日志 _log.info( - f"Login | Au:{msg.author_id} | {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" + f"Login | Au:{msg.author_id} | {auth.Name}#{auth.Tag}" ) except EzAuthExp.AuthenticationError as result: _log.error(f"login AuthenticationError | Au:{msg.author_id} | {result}") @@ -1055,13 +1053,12 @@ async def tfa_verify(msg: Message, tfa: str, *arg): if await BotVip.vip_ck(msg.author_id): await cache_vip_auth(msg.author_id,auth) # 4.成功 - UserRiotName[msg.author_id] = {'auth_user_id': auth.user_id, 'GameName': auth.Name, 'TagLine': auth.Tag} - text = f"登陆成功!欢迎回来,{UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" + text = f"登陆成功!欢迎回来,{auth.Name}#{auth.Tag}" info_text = "当前cookie有效期为2~3天,有任何问题请[点我](https://kook.top/gpbTwZ)" cm = await get_card(text, info_text, icon_cm.correct) await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) _log.info( - f"tfa | Au:{msg.author_id} | {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" + f"tfa | Au:{msg.author_id} | {auth.Name}#{auth.Tag}" ) except EzAuthExp.MultifactorError as result: if "multifactor_attempt_failed" in str(result): @@ -1079,7 +1076,7 @@ async def tfa_verify(msg: Message, tfa: str, *arg): async def logout(msg: Message, *arg): BotLog.logMsg(msg) try: - global UserRiotName, UserAuthCache + global UserAuthCache # 1.用户如果没有登录,那也没必要logout if msg.author_id not in UserAuthCache['kook']: cm = await get_card("您尚未登陆!无须logout", "阿巴阿巴?", icon_cm.whats_that) @@ -1087,13 +1084,12 @@ async def logout(msg: Message, *arg): return log_text = f"Logout | Au:{msg.author_id}" - # 2.如果id存在,删除auth对象; 删除UserRiotName里面存放的用户游戏名/uuid + # 2.如果id存在,删除auth对象 # 2.1 删除对象 riot_user_id_list = UserAuthCache['kook'][msg.author_id] for u in riot_user_id_list: del UserAuthCache['data'][u] # 2.2 删除键值 - del UserRiotName[msg.author_id] del UserAuthCache['kook'][msg.author_id] # 3.如果是vip用户,删除本地保存的cookie cookie_path = f"./log/cookie/{msg.author_id}.cke" @@ -1198,8 +1194,6 @@ async def get_daily_shop(msg: Message,index:str = "0",*arg): # 3.执行cookie重登 reau = await Reauth.check_reauth("每日商店",msg.author_id,riot_user_id,debug_ch,msg) if reau == False: return # 如果为假说明重新登录失败,退出 - # 3.1 重新获取token成功,从dict中获取玩家id - player_gamename = f"{UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']}" # 3.2 获取玩家id成功了,再提示正在获取商店 cm = await get_card("正在尝试获取您的每日商店", "阿狸正在施法,很快就好啦!", icon_cm.duck) # 3.2.1 如果reauth函数return的是dict,说明重新登录成功且发送了消息,则更新卡片 @@ -1218,6 +1212,8 @@ async def get_daily_shop(msg: Message,index:str = "0",*arg): auth = UserAuthCache['data'][riot_user_id]['auth'] assert isinstance(auth, EzAuth) riotUser = auth.get_riotuser_token() + # 4.2.1 从dict中获取玩家id + player_gamename = f"{auth.Name}#{auth.Tag}" # 4.3 开始判断是否需要获取商店(是否有缓存) a_time = time.time() global UserShopCache, VipShopBgDict @@ -1393,7 +1389,7 @@ async def get_night_market(msg: Message,index:str="0", *arg): c = Card(color='#fb4b57') c.append( Module.Header( - f"玩家 {UserRiotName[msg.author_id]['GameName']}#{UserRiotName[msg.author_id]['TagLine']} 的夜市!")) + f"玩家「{auth.Name}#{auth.Tag}」的夜市!")) for Bonus in resp["BonusStore"]["BonusStoreOffers"]: # 获取皮肤信息 skin = fetch_skin_bylist(Bonus["Offer"]["OfferID"]) @@ -2059,7 +2055,7 @@ async def auto_skin_notify(): # 卡片消息发送图片或者text c = Card(color='#fb4b57') c.append(Module.Header( - f"早安!玩家 {UserRiotName[vip]['GameName']}#{UserRiotName[vip]['TagLine']} 的每日商店")) + f"早安!玩家 {auth.Name}#{auth.Tag} 的每日商店")) c.append(Module.Context(f"失效时间剩余: {timeout} 本次查询用时: {using_time}s")) # 如果字符串不为空,代表图片获取失败,需要进行文字提醒 if not shop_text: diff --git a/code/utils/file/Files.py b/code/utils/file/Files.py index 5b0f5ee..d705afc 100644 --- a/code/utils/file/Files.py +++ b/code/utils/file/Files.py @@ -39,8 +39,6 @@ """皮肤提醒 用户记录""" UserAuthID = FileManage("./log/UserAuthID.json") """用户游戏id/uuid,账户密码重登记录,api/vip登录用户记录""" -UserRiotName = UserAuthID['data'] -"""riot用户游戏id和uuid""" UserPwdReauth = UserAuthID['ap_log'] """riot账户密码重登记录。如果机器人有使用过账户密码进行重登,会在这里记录""" ApiAuthLog:dict = UserAuthID['api_auth_log'] diff --git a/code/utils/valorant/Reauth.py b/code/utils/valorant/Reauth.py index f59d304..3b742c3 100644 --- a/code/utils/valorant/Reauth.py +++ b/code/utils/valorant/Reauth.py @@ -2,7 +2,7 @@ from khl import Message, Channel from aiohttp import client_exceptions from .EzAuth import EzAuth, EzAuthExp -from ..file.Files import UserAuthCache, UserRiotName, UserPwdReauth, LoginForbidden,SkinNotifyDict, bot +from ..file.Files import UserAuthCache, UserPwdReauth, LoginForbidden,SkinNotifyDict, bot from .Val import fetch_valorant_point from ..log.Logging import _log from .. import KookApi, Gtime @@ -45,7 +45,7 @@ async def login_reauth(kook_user_id: str, riot_user_id: str) -> bool: """ base_print = f"Au:{kook_user_id} | Riot:{riot_user_id} | " _log.info(base_print + "auth_token failure,trying reauthorize()") - global UserAuthCache, UserRiotName + global UserAuthCache # 这个函数只负责重登录,所以直接找对应的拳头用户id auth = UserAuthCache['data'][riot_user_id]['auth'] assert isinstance(auth, EzAuth) From 9375592a422279da9fbc1bd25668205e61460b02 Mon Sep 17 00:00:00 2001 From: musnow Date: Fri, 10 Mar 2023 12:02:37 +0800 Subject: [PATCH 22/31] feat(api): return user name in login/tfa fix(api): return 503 when err occur --- code/api.py | 19 ++++++++++--------- code/utils/api/ApiHandler.py | 32 ++++++++++++++++++++++++++------ 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/code/api.py b/code/api.py index 1f89c7b..b384b43 100644 --- a/code/api.py +++ b/code/api.py @@ -49,7 +49,7 @@ async def get_shop_draw(request): indent=2, sort_keys=True, ensure_ascii=False), - status=200, + status=503, content_type='application/json') @@ -77,7 +77,7 @@ async def get_shop_img(request): indent=2, sort_keys=True, ensure_ascii=False), - status=200, + status=503, content_type='application/json') @@ -102,7 +102,7 @@ async def post_login(request): indent=2, sort_keys=True, ensure_ascii=False), - status=200, + status=503, content_type='application/json') # 邮箱验证登录 @@ -126,7 +126,7 @@ async def post_tfa_code(request): indent=2, sort_keys=True, ensure_ascii=False), - status=200, + status=503, content_type='application/json') @routes.post('/shop') @@ -137,11 +137,11 @@ async def post_shop(request): params = json.loads(body.decode('UTF8')) # 判断必须要的参数是否齐全 if 'account' not in params or 'token' not in params: # 不全,报错 - _log.error(f"params needed: token/account/passwd") + _log.error(f"params needed: token/account") ret = { 'code': 400, - 'message': 'params needed: token/account/passwd', - 'info': '缺少参数!示例: /shop-img?token=api凭证&account=Riot账户&passwd=Riot密码&img_src=自定义背景图(可选)', + 'message': 'params needed: token/account', + 'info': '缺少参数!请参考docs文档里面的参数表', 'docs': 'https://github.com/Valorant-Shop-CN/Kook-Valorant-Bot/blob/main/docs/valorant-shop-img-api.md' } return web.Response(body=json.dumps(ret, indent=2, sort_keys=True, ensure_ascii=False), @@ -163,7 +163,7 @@ async def post_shop(request): indent=2, sort_keys=True, ensure_ascii=False), - status=200, + status=503, content_type='application/json') # 用于控制db中ShopCmp的更新 @@ -187,7 +187,7 @@ async def post_shop_cmp(request): indent=2, sort_keys=True, ensure_ascii=False), - status=200, + status=503, content_type='application/json') @@ -207,6 +207,7 @@ async def aifadian_webhook(request): "ec": 0, "em": "err ouccer" }, indent=2, sort_keys=True, ensure_ascii=False), + status=503, content_type='application/json') diff --git a/code/utils/api/ApiHandler.py b/code/utils/api/ApiHandler.py index c6f42f8..17db0f3 100644 --- a/code/utils/api/ApiHandler.py +++ b/code/utils/api/ApiHandler.py @@ -14,12 +14,12 @@ # bot的配置文件 from ..file.Files import config,UserAuthCache,AfdWebhook,_log -# 用来给kook上传文件的bot token api_bot_token = config['token']['api_bot_token'] -# 默认的背景图 +"""用来给kook上传文件的bot token""" img_bak_169 = 'https://img.kookapp.cn/assets/2022-10/KcN5YoR5hC0zk0k0.jpg' +"""默认的16-9背景图""" img_bak_11 = 'https://img.kookapp.cn/assets/2023-01/lzRKEApuEP0rs0rs.jpg' - +"""默认的1-1背景图""" # 基本画图操作 async def base_img_request(params, list_shop, vp1=0, rp1=0): @@ -186,8 +186,18 @@ async def login_request(request,method = "GET"): if method == "GET": # /shop-img 接口是get的 _log.debug(f"Api login | enter def shop_get_request") return await shop_get_request(params,account) - - return {'code': 0, 'message': "auth success", 'info': '登录成功!'} + # 返回用户信息 + return { + 'code': 0, + 'message': "auth success", + 'info': '登录成功!', + "user":{ + "uuid": auth.user_id, + "name": auth.Name, + "tag": auth.Tag, + "region": auth.Region + } + } # 邮箱验证的post @@ -225,7 +235,17 @@ async def tfa_code_requeset(request): # 走到这里,代表是2fa用户,且登陆成功 await AuthCache.cache_auth_object('api',account,auth) _log.info("Api tfa | 2fa user auth success") - return {'code': 0, 'message': "2fa auth success", 'info': '2fa用户登录成功!'} + return { + 'code': 0, + 'message': "2fa auth success", + 'info': '2fa用户登录成功!', + "user":{ + "uuid": auth.user_id, + "name": auth.Name, + "tag": auth.Tag, + "region": auth.Region + } + } # 更新leancloud From 8ef9b1354c072038efcc00989b474dd1f4a1ae80 Mon Sep 17 00:00:00 2001 From: musnow Date: Sat, 11 Mar 2023 11:33:50 +0800 Subject: [PATCH 23/31] fix(reauth): fix keyerr in reauthorize --- code/main.py | 10 +--------- code/utils/valorant/Reauth.py | 4 ++-- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/code/main.py b/code/main.py index f4e1749..69e95bd 100644 --- a/code/main.py +++ b/code/main.py @@ -988,16 +988,8 @@ async def login(msg: Message, user: str = 'err', passwd: str = 'err', apSave='', await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) except client_exceptions.ClientResponseError as result: err_str = f"ERR! [{getTime()}] login Au:{msg.author_id}\n```\n{traceback.format_exc()}\n```\n" - if 'auth.riotgames.com' and '403' in str(result): - LoginForbidden = True - err_str += f"[Login] 403 err! set LoginForbidden = True" - elif '404' in str(result): - err_str += f"[Login] 404 err! network err, try again" - else: - err_str += f"[Login] Unkown aiohttp ERR!" - # 打印+发送消息 + Reauth.client_exceptions_handler(str(result),err_str) _log.exception("Exception occur in login") - await bot.client.send(debug_ch, err_str) cm = await get_card(err_str) await upd_card(send_msg['msg_id'], cm, channel_type=msg.channel_type) except KeyError as result: diff --git a/code/utils/valorant/Reauth.py b/code/utils/valorant/Reauth.py index 3b742c3..8387217 100644 --- a/code/utils/valorant/Reauth.py +++ b/code/utils/valorant/Reauth.py @@ -57,7 +57,7 @@ async def login_reauth(kook_user_id: str, riot_user_id: str) -> bool: else: # cookie重新登录失败 _log.info(base_print + "reauthorize() Failed! T-T") # 失败打印 # 有保存账户密码+不是邮箱验证用户 - if riot_user_id in UserAuthCache['acpw'] and (not UserAuthCache[riot_user_id]['2fa']): + if riot_user_id in UserAuthCache['acpw'] and (not auth.is2fa): auth = EzAuth() # 用账户密码重新登录 resw = await auth.authorize(UserAuthCache['acpw'][riot_user_id]['a'], UserAuthCache['acpw'][riot_user_id]['p']) @@ -66,7 +66,7 @@ async def login_reauth(kook_user_id: str, riot_user_id: str) -> bool: return False # 更新auth对象 UserAuthCache['data'][riot_user_id]['auth'] = auth - auth.save_cookies(f"./log/cookie/{kook_user_id}.cke") # 保存cookie + auth.save_cookies(f"./log/cookie/{riot_user_id}.cke") # 保存cookie # 记录使用账户密码重新登录的时间,和对应的账户 UserPwdReauth[kook_user_id][Gtime.getTime()] = f"{auth.Name}#{auth.Tag}" _log.info(base_print + "authorize by account/passwd") From 41ce794d65f9a74bbb5b952bd4f91dc6cb4bfec4 Mon Sep 17 00:00:00 2001 From: musnow Date: Sun, 12 Mar 2023 09:50:50 +0800 Subject: [PATCH 24/31] fix(EzAuth): add resp_type == 'error' handler --- code/utils/valorant/EzAuth.py | 102 +++++++++++++++++-------------- code/utils/valorant/EzAuthExp.py | 6 +- code/utils/valorant/Reauth.py | 2 +- 3 files changed, 61 insertions(+), 49 deletions(-) diff --git a/code/utils/valorant/EzAuth.py b/code/utils/valorant/EzAuth.py index 72a3bd6..2c54a92 100644 --- a/code/utils/valorant/EzAuth.py +++ b/code/utils/valorant/EzAuth.py @@ -135,54 +135,66 @@ async def authorize(self, username, password) -> dict: - {"status":False,"auth":self,"2fa_status":self.is2fa} - if False, using email_verify() to send verify code """ - if username and password: - self.session.cookies.clear() # not reauth, clear cookie - - token = {"access_token": "", "id_token": "", "token_type": "Bearer", "expires_in": '0'} - body = { - "acr_values": "urn:riot:bronze", - "claims": "", - "client_id": "riot-client", - "nonce": "oYnVwCSrlS5IHKh7iI16oQ", - "redirect_uri": "http://localhost/redirect", - "response_type": "token id_token", - "scope": "openid link ban lol_region", - } - r = self.session.post(url=URLS.AUTH_URL, json=body) - data = r.json() - resp_type = data["type"] - - if resp_type != "response": # not reauth - body = {"language": "en_US", "password": password, "remember": "true", "type": "auth", "username": username} - r = self.session.put(url=URLS.AUTH_URL, json=body) + try: + if username and password: + self.session.cookies.clear() # not reauth, clear cookie + + token = {"access_token": "", "id_token": "", "token_type": "Bearer", "expires_in": '0'} + body = { + "acr_values": "urn:riot:bronze", + "claims": "", + "client_id": "riot-client", + "nonce": "oYnVwCSrlS5IHKh7iI16oQ", + "redirect_uri": "http://localhost/redirect", + "response_type": "token id_token", + "scope": "openid link ban lol_region", + } + r = self.session.post(url=URLS.AUTH_URL, json=body) data = r.json() - - if data["type"] == "response": - pass - - elif "auth_failure" in r.text: - raise EzAuthExp.AuthenticationError("auth_failure, user not exist") - - elif 'rate_limited' in r.text: - raise EzAuthExp.RatelimitError("auth_failure, rate_limited") - - # 2fa auth - elif 'multifactor' in r.text: - self.is2fa = True # is 2fa user - self.__mfa_start = time.time() - return {"status": False, "auth": self, "2fa_status": self.is2fa} + resp_type = data["type"] + + # 这种情况一般是在reauthorize里面出现的 + # {"type":"error","error":"invalid_request","country":"chn"} + if resp_type == "error": + _log.debug(r.text) + raise EzAuthExp.AuthenticationError(r.text) + + elif resp_type != "response": # not reauth + body = {"language": "en_US", "password": password, "remember": "true", "type": "auth", "username": username} + r = self.session.put(url=URLS.AUTH_URL, json=body) + data = r.json() + + if data["type"] == "response": + pass + + elif "auth_failure" in r.text: + raise EzAuthExp.AuthenticationError("auth_failure, user not exist") + + elif 'rate_limited' in r.text: + raise EzAuthExp.RatelimitError("auth_failure, rate_limited") + + # 2fa auth + elif 'multifactor' in r.text: + self.is2fa = True # is 2fa user + self.__mfa_start = time.time() + return {"status": False, "auth": self, "2fa_status": self.is2fa} + else: + raise EzAuthExp.UnkownError(r.text) + + # get access_token from response + if "access_token" in r.text: + token = self.__set_access_token(data) + # auth/reauth success + self.__set_info(tokens=token) else: raise EzAuthExp.UnkownError(r.text) - # get access_token from response - if "access_token" in r.text: - token = self.__set_access_token(data) - # auth/reauth success - self.__set_info(tokens=token) - else: - raise EzAuthExp.UnkownError(r.text) - - return {"status": True, "auth": self, "2fa_status": self.is2fa} + return {"status": True, "auth": self, "2fa_status": self.is2fa} + + except requests.exceptions.JSONDecodeError as result: + # 出现这个错误,一般都是连不上服务器导致返回的结果并不是json格式的,直接返回假即可 + _log.warning(f"requests.exceptions.JSONDecodeError: {result}") + return {"status": False, "auth": self, "2fa_status": self.is2fa} async def email_verfiy(self, vcode: str) -> dict: """email_verfiy after trying authorize @@ -322,7 +334,7 @@ def get_riotuser_token(self) -> RiotUserToken: region=self.Region) return ret else: - raise EzAuthExp.InitError("EzAuth Obj not initialized") + raise EzAuthExp.InitNotFinishError("EzAuth Obj not initialized") def save_cookies(self, path: str) -> None: """dump cookies_dict to path (w+) diff --git a/code/utils/valorant/EzAuthExp.py b/code/utils/valorant/EzAuthExp.py index 7cea6c8..381b9a1 100644 --- a/code/utils/valorant/EzAuthExp.py +++ b/code/utils/valorant/EzAuthExp.py @@ -4,7 +4,7 @@ "MultifactorError", "WaitOvertimeError", "RatelimitError", - "InitError", + "InitNotFinishError", "UnkownError" ) @@ -30,8 +30,8 @@ class RatelimitError(EzAuthError): class MultifactorError(EzAuthError): """Error related to multi-factor authentication.""" -class InitError(EzAuthError): - """Error related to init EzAuth self value.""" +class InitNotFinishError(EzAuthError): + """Error related to use before init EzAuth self value.""" class WaitOvertimeError(EzAuthError): diff --git a/code/utils/valorant/Reauth.py b/code/utils/valorant/Reauth.py index 8387217..ab78fea 100644 --- a/code/utils/valorant/Reauth.py +++ b/code/utils/valorant/Reauth.py @@ -132,7 +132,7 @@ async def check_reauth(def_name: str, await bot.client.send(debug_ch, err_str) return False # 用户在EzAuth初始化完毕之前调用了其他命令 - except EzAuthExp.InitError as result: + except EzAuthExp.InitNotFinishError as result: _log.warning(f"Au:{kook_user_id} | EzAuth used before init") return False except Exception as result: From 7f69d5ae6d2652ca4a20134a60fe3742e38a3a14 Mon Sep 17 00:00:00 2001 From: musnow Date: Sun, 12 Mar 2023 11:33:42 +0800 Subject: [PATCH 25/31] =?UTF-8?q?fix(BotLog):=20add=20json=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E4=B8=8D=E6=AD=A3=E7=A1=AE=20handler=20in=20APIReques?= =?UTF-8?q?tFailed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/utils/log/BotLog.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/utils/log/BotLog.py b/code/utils/log/BotLog.py index 6f6f8e7..aa24634 100644 --- a/code/utils/log/BotLog.py +++ b/code/utils/log/BotLog.py @@ -173,9 +173,9 @@ async def APIRequestFailed_Handler(def_name: str, await bot.send(cur_ch, cm) _log.error(f"Au:{msg.author_id} | 引用不存在, 直接发送cm") return - elif "json没有通过验证" in excp: + elif "json没有通过验证" in excp or "json格式不正确" in excp: _log.error(f"Au:{msg.author_id} | json.dumps: {json.dumps(cm)}") - text_sub = f"卡片消息json没有通过验证或者不存在" + text_sub = f"卡片消息json没有通过验证或格式不正确" elif "屏蔽" in excp: _log.error(f"Au:{msg.author_id} | 用户屏蔽或权限不足") text_sub = f"阿狸无法向您发出私信,请检查你的隐私设置" From bd80aa7727361361096c01cd77aecbdd182e2b71 Mon Sep 17 00:00:00 2001 From: musnow Date: Sun, 12 Mar 2023 19:40:05 +0800 Subject: [PATCH 26/31] docs(log.example): update example files --- docs/log.example/BotUserLog.json | 2 +- docs/log.example/UserAuthID.json | 6 +- docs/log.example/ValBundle.json | 39 + docs/log.example/ValPrice.json | 1316 +++++---- docs/log.example/ValSkin.json | 4401 ++++++++++++++++++----------- docs/log.example/ValSkinRate.json | 8 +- 6 files changed, 3625 insertions(+), 2147 deletions(-) diff --git a/docs/log.example/BotUserLog.json b/docs/log.example/BotUserLog.json index b792472..3bf1e34 100644 --- a/docs/log.example/BotUserLog.json +++ b/docs/log.example/BotUserLog.json @@ -7,6 +7,6 @@ }, "user": { "data": {}, - "user_total": 974 + "user_total": 0 } } \ No newline at end of file diff --git a/docs/log.example/UserAuthID.json b/docs/log.example/UserAuthID.json index babb399..be47c6c 100644 --- a/docs/log.example/UserAuthID.json +++ b/docs/log.example/UserAuthID.json @@ -1,4 +1,6 @@ { + "ap_log": {}, + "api_auth_log": {}, "data": {}, - "ap_log": {} -} \ No newline at end of file + "vip_auth_log": {} + } \ No newline at end of file diff --git a/docs/log.example/ValBundle.json b/docs/log.example/ValBundle.json index ea27e4f..79a11eb 100644 --- a/docs/log.example/ValBundle.json +++ b/docs/log.example/ValBundle.json @@ -986,5 +986,44 @@ "useAdditionalContext": false, "uuid": "ef488eb7-4405-3b3f-7fd1-63af0824a639", "verticalPromoImage": "https://media.valorant-api.com/bundles/ef488eb7-4405-3b3f-7fd1-63af0824a639/verticalpromoimage.png" + }, + { + "assetPath": "ShooterGame/Content/UI/OutOfGame/MainMenu/Store/Bundles/StorefrontItem_EsportsInvitationalThemeBundle_DataAsset", + "description": "VCT LOCK//IN", + "displayIcon": "https://media.valorant-api.com/bundles/2654d506-4d05-e7e9-c996-63ac6fdaf767/displayicon.png", + "displayIcon2": "https://img.kookapp.cn/attachments/2023-02/09/Rx7doR3LXs19s0mc.png", + "displayName": "VCT LOCK//IN", + "displayNameSubText": "膠囊系列", + "extraDescription": "2月8日至3月7日期間,此商品系列收入50%的淨收益將會平均分配給合作隊伍。組合包內商品無法單獨購買,且活動結束後就無法購買,也不會在夜市回歸。", + "promoDescription": "2月8日至3月7日期間,此商品系列收入50%的淨收益將會平均分配給合作隊伍。組合包內商品無法單獨購買,且活動結束後就無法購買,也不會在夜市回歸。", + "useAdditionalContext": true, + "uuid": "2654d506-4d05-e7e9-c996-63ac6fdaf767", + "verticalPromoImage": "https://media.valorant-api.com/bundles/2654d506-4d05-e7e9-c996-63ac6fdaf767/verticalpromoimage.png" + }, + { + "assetPath": "ShooterGame/Content/UI/OutOfGame/MainMenu/Store/Bundles/StorefrontItem_Oni2ThemeBundle_DataAsset", + "description": "惡鬼", + "displayIcon": "https://media.valorant-api.com/bundles/b7d754d4-44aa-4663-afc3-84a5cccc3c9d/displayicon.png", + "displayIcon2": "https://img.kookapp.cn/attachments/2023-03/08/H0XjCqBXSQ19s0mc.png", + "displayName": "惡鬼", + "displayNameSubText": null, + "extraDescription": null, + "promoDescription": null, + "useAdditionalContext": false, + "uuid": "b7d754d4-44aa-4663-afc3-84a5cccc3c9d", + "verticalPromoImage": "https://media.valorant-api.com/bundles/b7d754d4-44aa-4663-afc3-84a5cccc3c9d/verticalpromoimage.png" + }, + { + "assetPath": "ShooterGame/Content/UI/OutOfGame/MainMenu/Store/Bundles/StorefrontItem_StainedGlassThemeBundle_DataAsset", + "description": "彩拼幻想", + "displayIcon": "https://media.valorant-api.com/bundles/9a4ad6ad-4aa9-695a-b73e-cf874223db0c/displayicon.png", + "displayIcon2": "https://img.kookapp.cn/attachments/2023-02/24/BPrd7c4Vwe19s0mc.png", + "displayName": "彩拼幻想", + "displayNameSubText": null, + "extraDescription": null, + "promoDescription": null, + "useAdditionalContext": false, + "uuid": "9a4ad6ad-4aa9-695a-b73e-cf874223db0c", + "verticalPromoImage": "https://media.valorant-api.com/bundles/9a4ad6ad-4aa9-695a-b73e-cf874223db0c/verticalpromoimage.png" } ] \ No newline at end of file diff --git a/docs/log.example/ValPrice.json b/docs/log.example/ValPrice.json index d59aa1b..2a4a6d7 100644 --- a/docs/log.example/ValPrice.json +++ b/docs/log.example/ValPrice.json @@ -13,7 +13,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025728736Z" + "StartDate": "2023-03-09T22:37:43.552899085Z" }, { "Cost": { @@ -28,7 +28,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025729664Z" + "StartDate": "2023-03-09T22:37:43.552900044Z" }, { "Cost": { @@ -43,7 +43,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025729878Z" + "StartDate": "2023-03-09T22:37:43.552900503Z" }, { "Cost": { @@ -58,7 +58,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025730063Z" + "StartDate": "2023-03-09T22:37:43.552900735Z" }, { "Cost": { @@ -73,7 +73,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025730329Z" + "StartDate": "2023-03-09T22:37:43.552900949Z" }, { "Cost": { @@ -88,7 +88,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02573051Z" + "StartDate": "2023-03-09T22:37:43.552901175Z" }, { "Cost": { @@ -103,7 +103,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025730712Z" + "StartDate": "2023-03-09T22:37:43.552901314Z" }, { "Cost": { @@ -118,7 +118,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025730881Z" + "StartDate": "2023-03-09T22:37:43.55290147Z" }, { "Cost": { @@ -133,7 +133,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025731049Z" + "StartDate": "2023-03-09T22:37:43.552901604Z" }, { "Cost": { @@ -148,7 +148,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025731217Z" + "StartDate": "2023-03-09T22:37:43.552901738Z" }, { "Cost": { @@ -163,7 +163,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025731384Z" + "StartDate": "2023-03-09T22:37:43.552901874Z" }, { "Cost": { @@ -178,7 +178,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025731552Z" + "StartDate": "2023-03-09T22:37:43.552902006Z" }, { "Cost": { @@ -193,7 +193,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02573172Z" + "StartDate": "2023-03-09T22:37:43.55290217Z" }, { "Cost": { @@ -208,7 +208,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025731889Z" + "StartDate": "2023-03-09T22:37:43.552902322Z" }, { "Cost": { @@ -223,7 +223,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025732058Z" + "StartDate": "2023-03-09T22:37:43.552902481Z" }, { "Cost": { @@ -238,7 +238,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025732225Z" + "StartDate": "2023-03-09T22:37:43.552902634Z" }, { "Cost": { @@ -253,7 +253,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025732393Z" + "StartDate": "2023-03-09T22:37:43.552902798Z" }, { "Cost": { @@ -268,7 +268,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025732561Z" + "StartDate": "2023-03-09T22:37:43.552902965Z" }, { "Cost": { @@ -283,7 +283,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025732729Z" + "StartDate": "2023-03-09T22:37:43.5529031Z" }, { "Cost": { @@ -298,7 +298,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025732899Z" + "StartDate": "2023-03-09T22:37:43.552903236Z" }, { "Cost": { @@ -313,7 +313,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025733069Z" + "StartDate": "2023-03-09T22:37:43.552903372Z" }, { "Cost": { @@ -328,7 +328,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025733235Z" + "StartDate": "2023-03-09T22:37:43.552903504Z" }, { "Cost": { @@ -343,7 +343,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025733407Z" + "StartDate": "2023-03-09T22:37:43.55290364Z" }, { "Cost": { @@ -358,7 +358,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025733576Z" + "StartDate": "2023-03-09T22:37:43.55290377Z" }, { "Cost": { @@ -373,7 +373,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025733759Z" + "StartDate": "2023-03-09T22:37:43.5529039Z" }, { "Cost": { @@ -388,7 +388,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025733928Z" + "StartDate": "2023-03-09T22:37:43.552904063Z" }, { "Cost": { @@ -403,7 +403,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025734099Z" + "StartDate": "2023-03-09T22:37:43.552904196Z" }, { "Cost": { @@ -418,7 +418,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025734275Z" + "StartDate": "2023-03-09T22:37:43.552904337Z" }, { "Cost": { @@ -433,7 +433,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025734445Z" + "StartDate": "2023-03-09T22:37:43.55290447Z" }, { "Cost": { @@ -448,7 +448,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025734613Z" + "StartDate": "2023-03-09T22:37:43.552904601Z" }, { "Cost": { @@ -463,7 +463,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025734781Z" + "StartDate": "2023-03-09T22:37:43.55290473Z" }, { "Cost": { @@ -478,7 +478,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025734949Z" + "StartDate": "2023-03-09T22:37:43.552904861Z" }, { "Cost": { @@ -493,7 +493,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025735116Z" + "StartDate": "2023-03-09T22:37:43.552904992Z" }, { "Cost": { @@ -508,7 +508,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025735283Z" + "StartDate": "2023-03-09T22:37:43.552905124Z" }, { "Cost": { @@ -523,7 +523,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025735451Z" + "StartDate": "2023-03-09T22:37:43.552905254Z" }, { "Cost": { @@ -538,7 +538,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025735619Z" + "StartDate": "2023-03-09T22:37:43.552905383Z" }, { "Cost": { @@ -553,7 +553,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025735789Z" + "StartDate": "2023-03-09T22:37:43.552905514Z" }, { "Cost": { @@ -568,7 +568,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025735956Z" + "StartDate": "2023-03-09T22:37:43.552905672Z" }, { "Cost": { @@ -583,7 +583,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025736123Z" + "StartDate": "2023-03-09T22:37:43.552905803Z" }, { "Cost": { @@ -598,7 +598,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02573629Z" + "StartDate": "2023-03-09T22:37:43.552905934Z" }, { "Cost": { @@ -613,7 +613,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025736458Z" + "StartDate": "2023-03-09T22:37:43.552906064Z" }, { "Cost": { @@ -628,7 +628,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025736624Z" + "StartDate": "2023-03-09T22:37:43.552906194Z" }, { "Cost": { @@ -643,7 +643,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025736797Z" + "StartDate": "2023-03-09T22:37:43.552906324Z" }, { "Cost": { @@ -658,7 +658,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025736972Z" + "StartDate": "2023-03-09T22:37:43.552906536Z" }, { "Cost": { @@ -673,7 +673,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025737151Z" + "StartDate": "2023-03-09T22:37:43.552906732Z" }, { "Cost": { @@ -688,7 +688,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025737334Z" + "StartDate": "2023-03-09T22:37:43.552906861Z" }, { "Cost": { @@ -703,7 +703,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025737515Z" + "StartDate": "2023-03-09T22:37:43.552907089Z" }, { "Cost": { @@ -718,7 +718,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025737695Z" + "StartDate": "2023-03-09T22:37:43.552907217Z" }, { "Cost": { @@ -733,7 +733,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025737879Z" + "StartDate": "2023-03-09T22:37:43.552907449Z" }, { "Cost": { @@ -748,7 +748,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025738045Z" + "StartDate": "2023-03-09T22:37:43.552907596Z" }, { "Cost": { @@ -763,7 +763,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025738213Z" + "StartDate": "2023-03-09T22:37:43.552907724Z" }, { "Cost": { @@ -778,7 +778,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025738379Z" + "StartDate": "2023-03-09T22:37:43.552907853Z" }, { "Cost": { @@ -793,7 +793,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025738544Z" + "StartDate": "2023-03-09T22:37:43.552907982Z" }, { "Cost": { @@ -808,7 +808,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02573871Z" + "StartDate": "2023-03-09T22:37:43.55290811Z" }, { "Cost": { @@ -823,7 +823,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025738879Z" + "StartDate": "2023-03-09T22:37:43.552908244Z" }, { "Cost": { @@ -838,7 +838,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025739045Z" + "StartDate": "2023-03-09T22:37:43.552908372Z" }, { "Cost": { @@ -853,7 +853,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025739211Z" + "StartDate": "2023-03-09T22:37:43.552908502Z" }, { "Cost": { @@ -868,7 +868,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025739377Z" + "StartDate": "2023-03-09T22:37:43.552908634Z" }, { "Cost": { @@ -883,7 +883,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025739543Z" + "StartDate": "2023-03-09T22:37:43.552908768Z" }, { "Cost": { @@ -898,7 +898,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025739711Z" + "StartDate": "2023-03-09T22:37:43.552908929Z" }, { "Cost": { @@ -913,7 +913,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025739879Z" + "StartDate": "2023-03-09T22:37:43.55290906Z" }, { "Cost": { @@ -928,7 +928,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025740045Z" + "StartDate": "2023-03-09T22:37:43.552909189Z" }, { "Cost": { @@ -943,7 +943,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025740211Z" + "StartDate": "2023-03-09T22:37:43.55290932Z" }, { "Cost": { @@ -958,7 +958,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025740388Z" + "StartDate": "2023-03-09T22:37:43.552909468Z" }, { "Cost": { @@ -973,7 +973,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025740556Z" + "StartDate": "2023-03-09T22:37:43.5529096Z" }, { "Cost": { @@ -988,7 +988,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025740722Z" + "StartDate": "2023-03-09T22:37:43.552909729Z" }, { "Cost": { @@ -1003,7 +1003,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025740889Z" + "StartDate": "2023-03-09T22:37:43.55290986Z" }, { "Cost": { @@ -1018,7 +1018,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025741057Z" + "StartDate": "2023-03-09T22:37:43.552909987Z" }, { "Cost": { @@ -1033,7 +1033,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025741224Z" + "StartDate": "2023-03-09T22:37:43.552910116Z" }, { "Cost": { @@ -1048,7 +1048,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025741392Z" + "StartDate": "2023-03-09T22:37:43.552910276Z" }, { "Cost": { @@ -1063,7 +1063,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025741559Z" + "StartDate": "2023-03-09T22:37:43.552910404Z" }, { "Cost": { @@ -1078,7 +1078,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025741727Z" + "StartDate": "2023-03-09T22:37:43.552910534Z" }, { "Cost": { @@ -1093,7 +1093,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025741893Z" + "StartDate": "2023-03-09T22:37:43.552910664Z" }, { "Cost": { @@ -1108,7 +1108,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025742059Z" + "StartDate": "2023-03-09T22:37:43.552910794Z" }, { "Cost": { @@ -1123,7 +1123,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025742225Z" + "StartDate": "2023-03-09T22:37:43.552910924Z" }, { "Cost": { @@ -1138,7 +1138,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025742393Z" + "StartDate": "2023-03-09T22:37:43.552911057Z" }, { "Cost": { @@ -1153,7 +1153,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025742561Z" + "StartDate": "2023-03-09T22:37:43.55291123Z" }, { "Cost": { @@ -1168,7 +1168,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025742727Z" + "StartDate": "2023-03-09T22:37:43.552911364Z" }, { "Cost": { @@ -1183,7 +1183,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025742892Z" + "StartDate": "2023-03-09T22:37:43.552911491Z" }, { "Cost": { @@ -1198,7 +1198,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025743058Z" + "StartDate": "2023-03-09T22:37:43.552911621Z" }, { "Cost": { @@ -1213,7 +1213,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025743223Z" + "StartDate": "2023-03-09T22:37:43.552911749Z" }, { "Cost": { @@ -1228,7 +1228,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025743401Z" + "StartDate": "2023-03-09T22:37:43.552911924Z" }, { "Cost": { @@ -1243,7 +1243,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025743566Z" + "StartDate": "2023-03-09T22:37:43.552912054Z" }, { "Cost": { @@ -1258,7 +1258,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025743733Z" + "StartDate": "2023-03-09T22:37:43.552912183Z" }, { "Cost": { @@ -1273,7 +1273,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025743898Z" + "StartDate": "2023-03-09T22:37:43.552912312Z" }, { "Cost": { @@ -1288,7 +1288,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025744061Z" + "StartDate": "2023-03-09T22:37:43.552912444Z" }, { "Cost": { @@ -1303,7 +1303,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025744295Z" + "StartDate": "2023-03-09T22:37:43.552912657Z" }, { "Cost": { @@ -1318,7 +1318,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025744467Z" + "StartDate": "2023-03-09T22:37:43.552912855Z" }, { "Cost": { @@ -1333,7 +1333,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025744649Z" + "StartDate": "2023-03-09T22:37:43.552913074Z" }, { "Cost": { @@ -1348,7 +1348,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025744827Z" + "StartDate": "2023-03-09T22:37:43.552913234Z" }, { "Cost": { @@ -1363,7 +1363,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025745006Z" + "StartDate": "2023-03-09T22:37:43.552913443Z" }, { "Cost": { @@ -1378,7 +1378,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02574518Z" + "StartDate": "2023-03-09T22:37:43.552913569Z" }, { "Cost": { @@ -1393,7 +1393,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025745345Z" + "StartDate": "2023-03-09T22:37:43.552913697Z" }, { "Cost": { @@ -1408,7 +1408,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025745511Z" + "StartDate": "2023-03-09T22:37:43.552913823Z" }, { "Cost": { @@ -1423,7 +1423,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025745677Z" + "StartDate": "2023-03-09T22:37:43.55291395Z" }, { "Cost": { @@ -1438,7 +1438,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025745842Z" + "StartDate": "2023-03-09T22:37:43.552914083Z" }, { "Cost": { @@ -1453,7 +1453,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025746009Z" + "StartDate": "2023-03-09T22:37:43.552914212Z" }, { "Cost": { @@ -1468,7 +1468,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025746175Z" + "StartDate": "2023-03-09T22:37:43.552914343Z" }, { "Cost": { @@ -1483,7 +1483,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025746343Z" + "StartDate": "2023-03-09T22:37:43.55291447Z" }, { "Cost": { @@ -1498,7 +1498,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025746509Z" + "StartDate": "2023-03-09T22:37:43.552914594Z" }, { "Cost": { @@ -1513,7 +1513,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025746683Z" + "StartDate": "2023-03-09T22:37:43.55291472Z" }, { "Cost": { @@ -1528,7 +1528,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025746847Z" + "StartDate": "2023-03-09T22:37:43.552914849Z" }, { "Cost": { @@ -1543,7 +1543,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025747013Z" + "StartDate": "2023-03-09T22:37:43.55291498Z" }, { "Cost": { @@ -1558,7 +1558,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025747179Z" + "StartDate": "2023-03-09T22:37:43.552915124Z" }, { "Cost": { @@ -1573,7 +1573,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025747342Z" + "StartDate": "2023-03-09T22:37:43.552915256Z" }, { "Cost": { @@ -1588,7 +1588,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025747508Z" + "StartDate": "2023-03-09T22:37:43.552915387Z" }, { "Cost": { @@ -1603,7 +1603,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025747674Z" + "StartDate": "2023-03-09T22:37:43.552915518Z" }, { "Cost": { @@ -1618,7 +1618,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025747837Z" + "StartDate": "2023-03-09T22:37:43.552915646Z" }, { "Cost": { @@ -1633,7 +1633,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025748003Z" + "StartDate": "2023-03-09T22:37:43.552915779Z" }, { "Cost": { @@ -1648,7 +1648,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025748167Z" + "StartDate": "2023-03-09T22:37:43.552915907Z" }, { "Cost": { @@ -1663,7 +1663,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025748331Z" + "StartDate": "2023-03-09T22:37:43.552916038Z" }, { "Cost": { @@ -1678,7 +1678,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025748497Z" + "StartDate": "2023-03-09T22:37:43.552916168Z" }, { "Cost": { @@ -1693,7 +1693,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025748661Z" + "StartDate": "2023-03-09T22:37:43.552916298Z" }, { "Cost": { @@ -1708,7 +1708,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025748826Z" + "StartDate": "2023-03-09T22:37:43.552916431Z" }, { "Cost": { @@ -1723,7 +1723,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02574899Z" + "StartDate": "2023-03-09T22:37:43.552916562Z" }, { "Cost": { @@ -1738,7 +1738,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025749154Z" + "StartDate": "2023-03-09T22:37:43.552916694Z" }, { "Cost": { @@ -1753,7 +1753,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025749318Z" + "StartDate": "2023-03-09T22:37:43.55291685Z" }, { "Cost": { @@ -1768,7 +1768,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025749483Z" + "StartDate": "2023-03-09T22:37:43.552916978Z" }, { "Cost": { @@ -1783,7 +1783,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025749648Z" + "StartDate": "2023-03-09T22:37:43.55291714Z" }, { "Cost": { @@ -1798,7 +1798,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025749821Z" + "StartDate": "2023-03-09T22:37:43.55291727Z" }, { "Cost": { @@ -1813,7 +1813,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025749986Z" + "StartDate": "2023-03-09T22:37:43.552917404Z" }, { "Cost": { @@ -1828,7 +1828,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025750151Z" + "StartDate": "2023-03-09T22:37:43.55291753Z" }, { "Cost": { @@ -1843,7 +1843,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025750316Z" + "StartDate": "2023-03-09T22:37:43.552917658Z" }, { "Cost": { @@ -1858,7 +1858,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025750483Z" + "StartDate": "2023-03-09T22:37:43.552917789Z" }, { "Cost": { @@ -1873,7 +1873,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025750648Z" + "StartDate": "2023-03-09T22:37:43.552917938Z" }, { "Cost": { @@ -1888,7 +1888,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025750812Z" + "StartDate": "2023-03-09T22:37:43.552918067Z" }, { "Cost": { @@ -1903,7 +1903,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025750976Z" + "StartDate": "2023-03-09T22:37:43.552918197Z" }, { "Cost": { @@ -1918,7 +1918,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025751142Z" + "StartDate": "2023-03-09T22:37:43.552918327Z" }, { "Cost": { @@ -1933,7 +1933,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025751317Z" + "StartDate": "2023-03-09T22:37:43.552918546Z" }, { "Cost": { @@ -1948,7 +1948,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025751496Z" + "StartDate": "2023-03-09T22:37:43.552918675Z" }, { "Cost": { @@ -1963,7 +1963,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025751729Z" + "StartDate": "2023-03-09T22:37:43.552919005Z" }, { "Cost": { @@ -1978,7 +1978,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025751967Z" + "StartDate": "2023-03-09T22:37:43.552919133Z" }, { "Cost": { @@ -1993,7 +1993,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025752143Z" + "StartDate": "2023-03-09T22:37:43.552919351Z" }, { "Cost": { @@ -2008,7 +2008,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025752323Z" + "StartDate": "2023-03-09T22:37:43.552919481Z" }, { "Cost": { @@ -2023,7 +2023,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025752502Z" + "StartDate": "2023-03-09T22:37:43.552919698Z" }, { "Cost": { @@ -2038,7 +2038,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025752671Z" + "StartDate": "2023-03-09T22:37:43.552919836Z" }, { "Cost": { @@ -2053,7 +2053,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025752835Z" + "StartDate": "2023-03-09T22:37:43.552919968Z" }, { "Cost": { @@ -2068,7 +2068,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025753Z" + "StartDate": "2023-03-09T22:37:43.552920117Z" }, { "Cost": { @@ -2083,7 +2083,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025753165Z" + "StartDate": "2023-03-09T22:37:43.552920246Z" }, { "Cost": { @@ -2098,7 +2098,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02575333Z" + "StartDate": "2023-03-09T22:37:43.552920377Z" }, { "Cost": { @@ -2113,7 +2113,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025753495Z" + "StartDate": "2023-03-09T22:37:43.552920507Z" }, { "Cost": { @@ -2128,7 +2128,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02575367Z" + "StartDate": "2023-03-09T22:37:43.55292064Z" }, { "Cost": { @@ -2143,7 +2143,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025753837Z" + "StartDate": "2023-03-09T22:37:43.55292077Z" }, { "Cost": { @@ -2158,7 +2158,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025754003Z" + "StartDate": "2023-03-09T22:37:43.5529209Z" }, { "Cost": { @@ -2173,7 +2173,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025754167Z" + "StartDate": "2023-03-09T22:37:43.552921032Z" }, { "Cost": { @@ -2188,7 +2188,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025754333Z" + "StartDate": "2023-03-09T22:37:43.5529212Z" }, { "Cost": { @@ -2203,7 +2203,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025754499Z" + "StartDate": "2023-03-09T22:37:43.552921329Z" }, { "Cost": { @@ -2218,7 +2218,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025754664Z" + "StartDate": "2023-03-09T22:37:43.552921457Z" }, { "Cost": { @@ -2233,7 +2233,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025754831Z" + "StartDate": "2023-03-09T22:37:43.552921589Z" }, { "Cost": { @@ -2248,7 +2248,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025754999Z" + "StartDate": "2023-03-09T22:37:43.552921719Z" }, { "Cost": { @@ -2263,7 +2263,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025755165Z" + "StartDate": "2023-03-09T22:37:43.552921852Z" }, { "Cost": { @@ -2278,7 +2278,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025755331Z" + "StartDate": "2023-03-09T22:37:43.552921983Z" }, { "Cost": { @@ -2293,7 +2293,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025755493Z" + "StartDate": "2023-03-09T22:37:43.552922115Z" }, { "Cost": { @@ -2308,7 +2308,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025755659Z" + "StartDate": "2023-03-09T22:37:43.552922247Z" }, { "Cost": { @@ -2323,7 +2323,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025755824Z" + "StartDate": "2023-03-09T22:37:43.552922376Z" }, { "Cost": { @@ -2338,7 +2338,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025755989Z" + "StartDate": "2023-03-09T22:37:43.552922535Z" }, { "Cost": { @@ -2353,7 +2353,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025756156Z" + "StartDate": "2023-03-09T22:37:43.552922667Z" }, { "Cost": { @@ -2368,7 +2368,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02575632Z" + "StartDate": "2023-03-09T22:37:43.552922796Z" }, { "Cost": { @@ -2383,7 +2383,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025756483Z" + "StartDate": "2023-03-09T22:37:43.552922927Z" }, { "Cost": { @@ -2398,7 +2398,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025756649Z" + "StartDate": "2023-03-09T22:37:43.552923094Z" }, { "Cost": { @@ -2413,7 +2413,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02575681Z" + "StartDate": "2023-03-09T22:37:43.552923226Z" }, { "Cost": { @@ -2428,7 +2428,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025756975Z" + "StartDate": "2023-03-09T22:37:43.552923355Z" }, { "Cost": { @@ -2443,7 +2443,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025757139Z" + "StartDate": "2023-03-09T22:37:43.552923487Z" }, { "Cost": { @@ -2458,7 +2458,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025757301Z" + "StartDate": "2023-03-09T22:37:43.552923612Z" }, { "Cost": { @@ -2473,7 +2473,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025757479Z" + "StartDate": "2023-03-09T22:37:43.552923742Z" }, { "Cost": { @@ -2488,7 +2488,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025757643Z" + "StartDate": "2023-03-09T22:37:43.552923869Z" }, { "Cost": { @@ -2503,7 +2503,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025757808Z" + "StartDate": "2023-03-09T22:37:43.552923999Z" }, { "Cost": { @@ -2518,7 +2518,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025757973Z" + "StartDate": "2023-03-09T22:37:43.552924129Z" }, { "Cost": { @@ -2533,7 +2533,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025758138Z" + "StartDate": "2023-03-09T22:37:43.552924261Z" }, { "Cost": { @@ -2548,7 +2548,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025758303Z" + "StartDate": "2023-03-09T22:37:43.55292439Z" }, { "Cost": { @@ -2563,7 +2563,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025758467Z" + "StartDate": "2023-03-09T22:37:43.55292452Z" }, { "Cost": { @@ -2578,7 +2578,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025758643Z" + "StartDate": "2023-03-09T22:37:43.552924735Z" }, { "Cost": { @@ -2593,7 +2593,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025758925Z" + "StartDate": "2023-03-09T22:37:43.552924933Z" }, { "Cost": { @@ -2608,7 +2608,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025759103Z" + "StartDate": "2023-03-09T22:37:43.552925063Z" }, { "Cost": { @@ -2623,7 +2623,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025759397Z" + "StartDate": "2023-03-09T22:37:43.552925285Z" }, { "Cost": { @@ -2638,7 +2638,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025759571Z" + "StartDate": "2023-03-09T22:37:43.552925416Z" }, { "Cost": { @@ -2653,7 +2653,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025759749Z" + "StartDate": "2023-03-09T22:37:43.552925627Z" }, { "Cost": { @@ -2668,7 +2668,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025759913Z" + "StartDate": "2023-03-09T22:37:43.552925757Z" }, { "Cost": { @@ -2683,7 +2683,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025760079Z" + "StartDate": "2023-03-09T22:37:43.552925887Z" }, { "Cost": { @@ -2698,7 +2698,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025760243Z" + "StartDate": "2023-03-09T22:37:43.552926021Z" }, { "Cost": { @@ -2713,7 +2713,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025760417Z" + "StartDate": "2023-03-09T22:37:43.552926152Z" }, { "Cost": { @@ -2728,7 +2728,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025760582Z" + "StartDate": "2023-03-09T22:37:43.552926283Z" }, { "Cost": { @@ -2743,7 +2743,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025760746Z" + "StartDate": "2023-03-09T22:37:43.552926429Z" }, { "Cost": { @@ -2758,7 +2758,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02576091Z" + "StartDate": "2023-03-09T22:37:43.552926559Z" }, { "Cost": { @@ -2773,7 +2773,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025761077Z" + "StartDate": "2023-03-09T22:37:43.552926692Z" }, { "Cost": { @@ -2788,7 +2788,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025761242Z" + "StartDate": "2023-03-09T22:37:43.552926818Z" }, { "Cost": { @@ -2803,7 +2803,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025761405Z" + "StartDate": "2023-03-09T22:37:43.552926952Z" }, { "Cost": { @@ -2818,7 +2818,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025761569Z" + "StartDate": "2023-03-09T22:37:43.552927084Z" }, { "Cost": { @@ -2833,7 +2833,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025761733Z" + "StartDate": "2023-03-09T22:37:43.552927212Z" }, { "Cost": { @@ -2848,7 +2848,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025761903Z" + "StartDate": "2023-03-09T22:37:43.552927354Z" }, { "Cost": { @@ -2863,7 +2863,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025762069Z" + "StartDate": "2023-03-09T22:37:43.552927484Z" }, { "Cost": { @@ -2878,7 +2878,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025762235Z" + "StartDate": "2023-03-09T22:37:43.552927616Z" }, { "Cost": { @@ -2893,7 +2893,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025762399Z" + "StartDate": "2023-03-09T22:37:43.552927745Z" }, { "Cost": { @@ -2908,7 +2908,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025762563Z" + "StartDate": "2023-03-09T22:37:43.552927874Z" }, { "Cost": { @@ -2923,7 +2923,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025762729Z" + "StartDate": "2023-03-09T22:37:43.552928004Z" }, { "Cost": { @@ -2938,7 +2938,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025762897Z" + "StartDate": "2023-03-09T22:37:43.552928134Z" }, { "Cost": { @@ -2953,7 +2953,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025763062Z" + "StartDate": "2023-03-09T22:37:43.552928265Z" }, { "Cost": { @@ -2968,7 +2968,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025763229Z" + "StartDate": "2023-03-09T22:37:43.552928394Z" }, { "Cost": { @@ -2983,7 +2983,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025763393Z" + "StartDate": "2023-03-09T22:37:43.552928523Z" }, { "Cost": { @@ -2998,7 +2998,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025763557Z" + "StartDate": "2023-03-09T22:37:43.552928649Z" }, { "Cost": { @@ -3013,7 +3013,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025763725Z" + "StartDate": "2023-03-09T22:37:43.55292878Z" }, { "Cost": { @@ -3028,7 +3028,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025763891Z" + "StartDate": "2023-03-09T22:37:43.552928909Z" }, { "Cost": { @@ -3043,7 +3043,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025764056Z" + "StartDate": "2023-03-09T22:37:43.552929041Z" }, { "Cost": { @@ -3058,7 +3058,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025764221Z" + "StartDate": "2023-03-09T22:37:43.552929173Z" }, { "Cost": { @@ -3073,7 +3073,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025764387Z" + "StartDate": "2023-03-09T22:37:43.552929303Z" }, { "Cost": { @@ -3088,7 +3088,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025764552Z" + "StartDate": "2023-03-09T22:37:43.552929434Z" }, { "Cost": { @@ -3103,7 +3103,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025764715Z" + "StartDate": "2023-03-09T22:37:43.552929565Z" }, { "Cost": { @@ -3118,7 +3118,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025764879Z" + "StartDate": "2023-03-09T22:37:43.552929725Z" }, { "Cost": { @@ -3133,7 +3133,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025765043Z" + "StartDate": "2023-03-09T22:37:43.552929855Z" }, { "Cost": { @@ -3148,7 +3148,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025765207Z" + "StartDate": "2023-03-09T22:37:43.552929987Z" }, { "Cost": { @@ -3163,7 +3163,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025765373Z" + "StartDate": "2023-03-09T22:37:43.552930117Z" }, { "Cost": { @@ -3178,7 +3178,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025765542Z" + "StartDate": "2023-03-09T22:37:43.552930244Z" }, { "Cost": { @@ -3193,7 +3193,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025765707Z" + "StartDate": "2023-03-09T22:37:43.552930377Z" }, { "Cost": { @@ -3208,7 +3208,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025765875Z" + "StartDate": "2023-03-09T22:37:43.552930506Z" }, { "Cost": { @@ -3223,7 +3223,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025766055Z" + "StartDate": "2023-03-09T22:37:43.552930718Z" }, { "Cost": { @@ -3238,7 +3238,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025766237Z" + "StartDate": "2023-03-09T22:37:43.552930849Z" }, { "Cost": { @@ -3253,7 +3253,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025766425Z" + "StartDate": "2023-03-09T22:37:43.552931076Z" }, { "Cost": { @@ -3268,7 +3268,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025766602Z" + "StartDate": "2023-03-09T22:37:43.552931207Z" }, { "Cost": { @@ -3283,7 +3283,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025766777Z" + "StartDate": "2023-03-09T22:37:43.55293142Z" }, { "Cost": { @@ -3298,7 +3298,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02576707Z" + "StartDate": "2023-03-09T22:37:43.552931637Z" }, { "Cost": { @@ -3313,7 +3313,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025767239Z" + "StartDate": "2023-03-09T22:37:43.552931767Z" }, { "Cost": { @@ -3328,7 +3328,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025767405Z" + "StartDate": "2023-03-09T22:37:43.5529319Z" }, { "Cost": { @@ -3343,7 +3343,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025767573Z" + "StartDate": "2023-03-09T22:37:43.55293205Z" }, { "Cost": { @@ -3358,7 +3358,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025767741Z" + "StartDate": "2023-03-09T22:37:43.552932179Z" }, { "Cost": { @@ -3373,7 +3373,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025767908Z" + "StartDate": "2023-03-09T22:37:43.552932309Z" }, { "Cost": { @@ -3388,7 +3388,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025768075Z" + "StartDate": "2023-03-09T22:37:43.552932438Z" }, { "Cost": { @@ -3403,7 +3403,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025768243Z" + "StartDate": "2023-03-09T22:37:43.552932569Z" }, { "Cost": { @@ -3418,7 +3418,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025768413Z" + "StartDate": "2023-03-09T22:37:43.5529327Z" }, { "Cost": { @@ -3433,7 +3433,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025768583Z" + "StartDate": "2023-03-09T22:37:43.552932863Z" }, { "Cost": { @@ -3448,7 +3448,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.02576875Z" + "StartDate": "2023-03-09T22:37:43.552932996Z" }, { "Cost": { @@ -3463,7 +3463,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025768918Z" + "StartDate": "2023-03-09T22:37:43.552933127Z" }, { "Cost": { @@ -3478,7 +3478,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025769085Z" + "StartDate": "2023-03-09T22:37:43.552933254Z" }, { "Cost": { @@ -3493,7 +3493,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025769253Z" + "StartDate": "2023-03-09T22:37:43.552933384Z" }, { "Cost": { @@ -3508,7 +3508,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025769421Z" + "StartDate": "2023-03-09T22:37:43.552933513Z" }, { "Cost": { @@ -3523,7 +3523,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025769589Z" + "StartDate": "2023-03-09T22:37:43.552933643Z" }, { "Cost": { @@ -3538,7 +3538,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025769756Z" + "StartDate": "2023-03-09T22:37:43.552933773Z" }, { "Cost": { @@ -3553,7 +3553,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025769925Z" + "StartDate": "2023-03-09T22:37:43.552933905Z" }, { "Cost": { @@ -3568,7 +3568,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025770093Z" + "StartDate": "2023-03-09T22:37:43.552934037Z" }, { "Cost": { @@ -3583,7 +3583,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025770263Z" + "StartDate": "2023-03-09T22:37:43.552934167Z" }, { "Cost": { @@ -3598,7 +3598,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025770431Z" + "StartDate": "2023-03-09T22:37:43.552934298Z" }, { "Cost": { @@ -3613,7 +3613,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025770599Z" + "StartDate": "2023-03-09T22:37:43.552934439Z" }, { "Cost": { @@ -3628,7 +3628,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025770763Z" + "StartDate": "2023-03-09T22:37:43.552934572Z" }, { "Cost": { @@ -3643,7 +3643,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025770929Z" + "StartDate": "2023-03-09T22:37:43.552934702Z" }, { "Cost": { @@ -3658,7 +3658,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025771101Z" + "StartDate": "2023-03-09T22:37:43.55293484Z" }, { "Cost": { @@ -3673,7 +3673,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025771265Z" + "StartDate": "2023-03-09T22:37:43.552934967Z" }, { "Cost": { @@ -3688,7 +3688,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025771432Z" + "StartDate": "2023-03-09T22:37:43.552935094Z" }, { "Cost": { @@ -3703,7 +3703,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025771599Z" + "StartDate": "2023-03-09T22:37:43.552935224Z" }, { "Cost": { @@ -3718,7 +3718,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025771765Z" + "StartDate": "2023-03-09T22:37:43.552935354Z" }, { "Cost": { @@ -3733,7 +3733,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025771934Z" + "StartDate": "2023-03-09T22:37:43.552935485Z" }, { "Cost": { @@ -3748,7 +3748,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025772103Z" + "StartDate": "2023-03-09T22:37:43.552935616Z" }, { "Cost": { @@ -3763,7 +3763,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025772268Z" + "StartDate": "2023-03-09T22:37:43.552935745Z" }, { "Cost": { @@ -3778,7 +3778,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025772434Z" + "StartDate": "2023-03-09T22:37:43.552935871Z" }, { "Cost": { @@ -3793,7 +3793,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025772599Z" + "StartDate": "2023-03-09T22:37:43.552936019Z" }, { "Cost": { @@ -3808,7 +3808,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025772766Z" + "StartDate": "2023-03-09T22:37:43.552936149Z" }, { "Cost": { @@ -3823,7 +3823,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025772931Z" + "StartDate": "2023-03-09T22:37:43.552936278Z" }, { "Cost": { @@ -3838,7 +3838,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025773105Z" + "StartDate": "2023-03-09T22:37:43.552936407Z" }, { "Cost": { @@ -3853,7 +3853,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025773346Z" + "StartDate": "2023-03-09T22:37:43.552936616Z" }, { "Cost": { @@ -3868,7 +3868,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025773522Z" + "StartDate": "2023-03-09T22:37:43.552936744Z" }, { "Cost": { @@ -3883,7 +3883,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025773706Z" + "StartDate": "2023-03-09T22:37:43.552936961Z" }, { "Cost": { @@ -3898,7 +3898,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025773887Z" + "StartDate": "2023-03-09T22:37:43.552937092Z" }, { "Cost": { @@ -3913,7 +3913,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025774065Z" + "StartDate": "2023-03-09T22:37:43.5529373Z" }, { "Cost": { @@ -3928,7 +3928,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025774239Z" + "StartDate": "2023-03-09T22:37:43.552937462Z" }, { "Cost": { @@ -3943,7 +3943,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025774423Z" + "StartDate": "2023-03-09T22:37:43.55293767Z" }, { "Cost": { @@ -3958,7 +3958,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025774587Z" + "StartDate": "2023-03-09T22:37:43.552937797Z" }, { "Cost": { @@ -3973,7 +3973,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025774753Z" + "StartDate": "2023-03-09T22:37:43.552937925Z" }, { "Cost": { @@ -3988,7 +3988,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025774918Z" + "StartDate": "2023-03-09T22:37:43.552938054Z" }, { "Cost": { @@ -4003,7 +4003,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025775083Z" + "StartDate": "2023-03-09T22:37:43.552938186Z" }, { "Cost": { @@ -4018,7 +4018,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025775249Z" + "StartDate": "2023-03-09T22:37:43.55293835Z" }, { "Cost": { @@ -4033,7 +4033,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025775415Z" + "StartDate": "2023-03-09T22:37:43.55293848Z" }, { "Cost": { @@ -4048,7 +4048,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025775582Z" + "StartDate": "2023-03-09T22:37:43.552938607Z" }, { "Cost": { @@ -4063,7 +4063,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025775749Z" + "StartDate": "2023-03-09T22:37:43.552938736Z" }, { "Cost": { @@ -4078,7 +4078,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025775913Z" + "StartDate": "2023-03-09T22:37:43.552938865Z" }, { "Cost": { @@ -4093,7 +4093,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025776078Z" + "StartDate": "2023-03-09T22:37:43.552939027Z" }, { "Cost": { @@ -4108,7 +4108,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025776243Z" + "StartDate": "2023-03-09T22:37:43.552939159Z" }, { "Cost": { @@ -4123,7 +4123,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025776411Z" + "StartDate": "2023-03-09T22:37:43.552939289Z" }, { "Cost": { @@ -4138,7 +4138,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025776577Z" + "StartDate": "2023-03-09T22:37:43.552939416Z" }, { "Cost": { @@ -4153,7 +4153,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025776744Z" + "StartDate": "2023-03-09T22:37:43.552939545Z" }, { "Cost": { @@ -4168,7 +4168,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025776909Z" + "StartDate": "2023-03-09T22:37:43.552939674Z" }, { "Cost": { @@ -4183,7 +4183,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025777076Z" + "StartDate": "2023-03-09T22:37:43.55293984Z" }, { "Cost": { @@ -4198,7 +4198,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025777245Z" + "StartDate": "2023-03-09T22:37:43.552939972Z" }, { "Cost": { @@ -4213,7 +4213,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025777411Z" + "StartDate": "2023-03-09T22:37:43.552940102Z" }, { "Cost": { @@ -4228,7 +4228,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025777579Z" + "StartDate": "2023-03-09T22:37:43.552940229Z" }, { "Cost": { @@ -4243,7 +4243,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025777746Z" + "StartDate": "2023-03-09T22:37:43.552940388Z" }, { "Cost": { @@ -4258,7 +4258,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025777913Z" + "StartDate": "2023-03-09T22:37:43.552940518Z" }, { "Cost": { @@ -4273,7 +4273,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02577808Z" + "StartDate": "2023-03-09T22:37:43.552940647Z" }, { "Cost": { @@ -4288,7 +4288,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02577825Z" + "StartDate": "2023-03-09T22:37:43.552940776Z" }, { "Cost": { @@ -4303,7 +4303,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025778419Z" + "StartDate": "2023-03-09T22:37:43.552940904Z" }, { "Cost": { @@ -4318,7 +4318,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025778583Z" + "StartDate": "2023-03-09T22:37:43.552941032Z" }, { "Cost": { @@ -4333,7 +4333,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.02577875Z" + "StartDate": "2023-03-09T22:37:43.552941191Z" }, { "Cost": { @@ -4348,7 +4348,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025778917Z" + "StartDate": "2023-03-09T22:37:43.552941319Z" }, { "Cost": { @@ -4363,7 +4363,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025779085Z" + "StartDate": "2023-03-09T22:37:43.552941448Z" }, { "Cost": { @@ -4378,7 +4378,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025779251Z" + "StartDate": "2023-03-09T22:37:43.552941577Z" }, { "Cost": { @@ -4393,7 +4393,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025779432Z" + "StartDate": "2023-03-09T22:37:43.552941707Z" }, { "Cost": { @@ -4408,7 +4408,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025779601Z" + "StartDate": "2023-03-09T22:37:43.552941836Z" }, { "Cost": { @@ -4423,7 +4423,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025779769Z" + "StartDate": "2023-03-09T22:37:43.552941967Z" }, { "Cost": { @@ -4438,7 +4438,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025779938Z" + "StartDate": "2023-03-09T22:37:43.552942097Z" }, { "Cost": { @@ -4453,7 +4453,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025780106Z" + "StartDate": "2023-03-09T22:37:43.552942228Z" }, { "Cost": { @@ -4468,7 +4468,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025780282Z" + "StartDate": "2023-03-09T22:37:43.552942371Z" }, { "Cost": { @@ -4483,7 +4483,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025780451Z" + "StartDate": "2023-03-09T22:37:43.5529425Z" }, { "Cost": { @@ -4498,7 +4498,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025780633Z" + "StartDate": "2023-03-09T22:37:43.552942707Z" }, { "Cost": { @@ -4513,7 +4513,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025780874Z" + "StartDate": "2023-03-09T22:37:43.552942906Z" }, { "Cost": { @@ -4528,7 +4528,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025781121Z" + "StartDate": "2023-03-09T22:37:43.552943034Z" }, { "Cost": { @@ -4543,7 +4543,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025781303Z" + "StartDate": "2023-03-09T22:37:43.552943256Z" }, { "Cost": { @@ -4558,7 +4558,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025781604Z" + "StartDate": "2023-03-09T22:37:43.552943387Z" }, { "Cost": { @@ -4573,7 +4573,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02578185Z" + "StartDate": "2023-03-09T22:37:43.552943601Z" }, { "Cost": { @@ -4588,7 +4588,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025782146Z" + "StartDate": "2023-03-09T22:37:43.552943762Z" }, { "Cost": { @@ -4603,7 +4603,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02578245Z" + "StartDate": "2023-03-09T22:37:43.552943889Z" }, { "Cost": { @@ -4618,7 +4618,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.0257827Z" + "StartDate": "2023-03-09T22:37:43.552944017Z" }, { "Cost": { @@ -4633,7 +4633,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025782959Z" + "StartDate": "2023-03-09T22:37:43.552944146Z" }, { "Cost": { @@ -4648,7 +4648,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025783212Z" + "StartDate": "2023-03-09T22:37:43.552944274Z" }, { "Cost": { @@ -4663,7 +4663,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025783489Z" + "StartDate": "2023-03-09T22:37:43.552944407Z" }, { "Cost": { @@ -4678,7 +4678,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02578378Z" + "StartDate": "2023-03-09T22:37:43.552944569Z" }, { "Cost": { @@ -4693,7 +4693,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025784303Z" + "StartDate": "2023-03-09T22:37:43.552944697Z" }, { "Cost": { @@ -4708,7 +4708,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02578456Z" + "StartDate": "2023-03-09T22:37:43.552944825Z" }, { "Cost": { @@ -4723,7 +4723,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025784825Z" + "StartDate": "2023-03-09T22:37:43.552944954Z" }, { "Cost": { @@ -4738,7 +4738,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025785135Z" + "StartDate": "2023-03-09T22:37:43.552945081Z" }, { "Cost": { @@ -4753,7 +4753,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025785464Z" + "StartDate": "2023-03-09T22:37:43.552945211Z" }, { "Cost": { @@ -4768,7 +4768,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025785772Z" + "StartDate": "2023-03-09T22:37:43.552945339Z" }, { "Cost": { @@ -4783,7 +4783,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025786085Z" + "StartDate": "2023-03-09T22:37:43.5529455Z" }, { "Cost": { @@ -4798,7 +4798,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025786413Z" + "StartDate": "2023-03-09T22:37:43.55294563Z" }, { "Cost": { @@ -4813,7 +4813,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025786726Z" + "StartDate": "2023-03-09T22:37:43.552945761Z" }, { "Cost": { @@ -4828,7 +4828,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025787049Z" + "StartDate": "2023-03-09T22:37:43.55294589Z" }, { "Cost": { @@ -4843,7 +4843,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025787373Z" + "StartDate": "2023-03-09T22:37:43.552946018Z" }, { "Cost": { @@ -4858,7 +4858,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025787666Z" + "StartDate": "2023-03-09T22:37:43.552946145Z" }, { "Cost": { @@ -4873,7 +4873,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025787938Z" + "StartDate": "2023-03-09T22:37:43.552946277Z" }, { "Cost": { @@ -4888,7 +4888,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025788219Z" + "StartDate": "2023-03-09T22:37:43.552946406Z" }, { "Cost": { @@ -4903,7 +4903,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025788489Z" + "StartDate": "2023-03-09T22:37:43.552946534Z" }, { "Cost": { @@ -4918,7 +4918,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025788731Z" + "StartDate": "2023-03-09T22:37:43.552946664Z" }, { "Cost": { @@ -4933,7 +4933,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025789016Z" + "StartDate": "2023-03-09T22:37:43.552946793Z" }, { "Cost": { @@ -4948,7 +4948,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02578932Z" + "StartDate": "2023-03-09T22:37:43.552946922Z" }, { "Cost": { @@ -4963,7 +4963,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025789615Z" + "StartDate": "2023-03-09T22:37:43.55294705Z" }, { "Cost": { @@ -4978,7 +4978,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02578991Z" + "StartDate": "2023-03-09T22:37:43.552947178Z" }, { "Cost": { @@ -4993,7 +4993,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025790199Z" + "StartDate": "2023-03-09T22:37:43.552947307Z" }, { "Cost": { @@ -5008,7 +5008,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025790484Z" + "StartDate": "2023-03-09T22:37:43.552947436Z" }, { "Cost": { @@ -5023,7 +5023,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025790797Z" + "StartDate": "2023-03-09T22:37:43.552947565Z" }, { "Cost": { @@ -5038,7 +5038,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025791102Z" + "StartDate": "2023-03-09T22:37:43.552947692Z" }, { "Cost": { @@ -5053,7 +5053,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025791375Z" + "StartDate": "2023-03-09T22:37:43.552947819Z" }, { "Cost": { @@ -5068,7 +5068,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025791656Z" + "StartDate": "2023-03-09T22:37:43.552947947Z" }, { "Cost": { @@ -5083,7 +5083,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025791954Z" + "StartDate": "2023-03-09T22:37:43.552948077Z" }, { "Cost": { @@ -5098,7 +5098,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025792248Z" + "StartDate": "2023-03-09T22:37:43.552948207Z" }, { "Cost": { @@ -5113,7 +5113,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025792536Z" + "StartDate": "2023-03-09T22:37:43.552948337Z" }, { "Cost": { @@ -5128,7 +5128,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025792837Z" + "StartDate": "2023-03-09T22:37:43.552948467Z" }, { "Cost": { @@ -5143,7 +5143,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02579313Z" + "StartDate": "2023-03-09T22:37:43.552948683Z" }, { "Cost": { @@ -5158,7 +5158,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025793419Z" + "StartDate": "2023-03-09T22:37:43.552948814Z" }, { "Cost": { @@ -5173,7 +5173,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025793737Z" + "StartDate": "2023-03-09T22:37:43.552949052Z" }, { "Cost": { @@ -5188,7 +5188,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025794072Z" + "StartDate": "2023-03-09T22:37:43.552949184Z" }, { "Cost": { @@ -5203,7 +5203,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025794367Z" + "StartDate": "2023-03-09T22:37:43.552949393Z" }, { "Cost": { @@ -5218,7 +5218,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02579491Z" + "StartDate": "2023-03-09T22:37:43.552949523Z" }, { "Cost": { @@ -5233,7 +5233,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025795244Z" + "StartDate": "2023-03-09T22:37:43.552949652Z" }, { "Cost": { @@ -5248,7 +5248,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025795433Z" + "StartDate": "2023-03-09T22:37:43.552949781Z" }, { "Cost": { @@ -5263,7 +5263,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025795607Z" + "StartDate": "2023-03-09T22:37:43.552949914Z" }, { "Cost": { @@ -5278,7 +5278,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025795786Z" + "StartDate": "2023-03-09T22:37:43.552950054Z" }, { "Cost": { @@ -5293,7 +5293,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025795957Z" + "StartDate": "2023-03-09T22:37:43.552950183Z" }, { "Cost": { @@ -5308,7 +5308,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025796125Z" + "StartDate": "2023-03-09T22:37:43.552950313Z" }, { "Cost": { @@ -5323,7 +5323,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025796291Z" + "StartDate": "2023-03-09T22:37:43.552950443Z" }, { "Cost": { @@ -5338,7 +5338,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025796459Z" + "StartDate": "2023-03-09T22:37:43.552950574Z" }, { "Cost": { @@ -5353,7 +5353,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025796626Z" + "StartDate": "2023-03-09T22:37:43.552950707Z" }, { "Cost": { @@ -5368,7 +5368,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025796794Z" + "StartDate": "2023-03-09T22:37:43.55295084Z" }, { "Cost": { @@ -5383,7 +5383,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025796961Z" + "StartDate": "2023-03-09T22:37:43.552950971Z" }, { "Cost": { @@ -5398,7 +5398,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02579713Z" + "StartDate": "2023-03-09T22:37:43.552951103Z" }, { "Cost": { @@ -5413,7 +5413,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025797296Z" + "StartDate": "2023-03-09T22:37:43.552951234Z" }, { "Cost": { @@ -5428,7 +5428,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025797469Z" + "StartDate": "2023-03-09T22:37:43.552951364Z" }, { "Cost": { @@ -5443,7 +5443,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025797635Z" + "StartDate": "2023-03-09T22:37:43.552951495Z" }, { "Cost": { @@ -5458,7 +5458,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025797803Z" + "StartDate": "2023-03-09T22:37:43.552951628Z" }, { "Cost": { @@ -5473,7 +5473,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02579797Z" + "StartDate": "2023-03-09T22:37:43.55295179Z" }, { "Cost": { @@ -5488,7 +5488,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025798138Z" + "StartDate": "2023-03-09T22:37:43.552951923Z" }, { "Cost": { @@ -5503,7 +5503,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025798303Z" + "StartDate": "2023-03-09T22:37:43.552952054Z" }, { "Cost": { @@ -5518,7 +5518,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025798467Z" + "StartDate": "2023-03-09T22:37:43.552952187Z" }, { "Cost": { @@ -5533,7 +5533,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025798634Z" + "StartDate": "2023-03-09T22:37:43.552952317Z" }, { "Cost": { @@ -5548,7 +5548,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025798798Z" + "StartDate": "2023-03-09T22:37:43.552952444Z" }, { "Cost": { @@ -5563,7 +5563,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025798963Z" + "StartDate": "2023-03-09T22:37:43.552952576Z" }, { "Cost": { @@ -5578,7 +5578,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025799126Z" + "StartDate": "2023-03-09T22:37:43.55295272Z" }, { "Cost": { @@ -5593,7 +5593,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025799291Z" + "StartDate": "2023-03-09T22:37:43.552952847Z" }, { "Cost": { @@ -5608,7 +5608,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025799454Z" + "StartDate": "2023-03-09T22:37:43.552952979Z" }, { "Cost": { @@ -5623,7 +5623,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025799619Z" + "StartDate": "2023-03-09T22:37:43.552953112Z" }, { "Cost": { @@ -5638,7 +5638,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025799784Z" + "StartDate": "2023-03-09T22:37:43.55295324Z" }, { "Cost": { @@ -5653,7 +5653,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025799947Z" + "StartDate": "2023-03-09T22:37:43.552953371Z" }, { "Cost": { @@ -5668,7 +5668,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02580012Z" + "StartDate": "2023-03-09T22:37:43.552953501Z" }, { "Cost": { @@ -5683,7 +5683,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025800285Z" + "StartDate": "2023-03-09T22:37:43.552953634Z" }, { "Cost": { @@ -5698,7 +5698,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025800448Z" + "StartDate": "2023-03-09T22:37:43.552953794Z" }, { "Cost": { @@ -5713,7 +5713,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02580061Z" + "StartDate": "2023-03-09T22:37:43.552953926Z" }, { "Cost": { @@ -5728,7 +5728,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025800775Z" + "StartDate": "2023-03-09T22:37:43.552954056Z" }, { "Cost": { @@ -5743,7 +5743,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025800938Z" + "StartDate": "2023-03-09T22:37:43.552954186Z" }, { "Cost": { @@ -5758,7 +5758,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025801102Z" + "StartDate": "2023-03-09T22:37:43.552954317Z" }, { "Cost": { @@ -5773,7 +5773,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025801281Z" + "StartDate": "2023-03-09T22:37:43.552954532Z" }, { "Cost": { @@ -5788,7 +5788,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025801457Z" + "StartDate": "2023-03-09T22:37:43.55295466Z" }, { "Cost": { @@ -5803,7 +5803,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025801634Z" + "StartDate": "2023-03-09T22:37:43.552954877Z" }, { "Cost": { @@ -5818,7 +5818,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025801823Z" + "StartDate": "2023-03-09T22:37:43.552955004Z" }, { "Cost": { @@ -5833,7 +5833,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025802001Z" + "StartDate": "2023-03-09T22:37:43.552955212Z" }, { "Cost": { @@ -5848,7 +5848,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02580224Z" + "StartDate": "2023-03-09T22:37:43.552955638Z" }, { "Cost": { @@ -5863,7 +5863,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025802472Z" + "StartDate": "2023-03-09T22:37:43.55295579Z" }, { "Cost": { @@ -5878,7 +5878,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025802635Z" + "StartDate": "2023-03-09T22:37:43.552955916Z" }, { "Cost": { @@ -5893,7 +5893,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025802802Z" + "StartDate": "2023-03-09T22:37:43.552956044Z" }, { "Cost": { @@ -5908,7 +5908,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025802966Z" + "StartDate": "2023-03-09T22:37:43.55295617Z" }, { "Cost": { @@ -5923,7 +5923,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02580313Z" + "StartDate": "2023-03-09T22:37:43.552956299Z" }, { "Cost": { @@ -5938,7 +5938,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025803294Z" + "StartDate": "2023-03-09T22:37:43.552956426Z" }, { "Cost": { @@ -5953,7 +5953,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025803462Z" + "StartDate": "2023-03-09T22:37:43.552956554Z" }, { "Cost": { @@ -5968,7 +5968,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025803626Z" + "StartDate": "2023-03-09T22:37:43.552956681Z" }, { "Cost": { @@ -5983,7 +5983,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02580379Z" + "StartDate": "2023-03-09T22:37:43.55295681Z" }, { "Cost": { @@ -5998,7 +5998,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025803957Z" + "StartDate": "2023-03-09T22:37:43.552956938Z" }, { "Cost": { @@ -6013,7 +6013,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025804125Z" + "StartDate": "2023-03-09T22:37:43.552957068Z" }, { "Cost": { @@ -6028,7 +6028,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02580429Z" + "StartDate": "2023-03-09T22:37:43.552957197Z" }, { "Cost": { @@ -6043,7 +6043,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025804454Z" + "StartDate": "2023-03-09T22:37:43.552957329Z" }, { "Cost": { @@ -6058,7 +6058,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02580462Z" + "StartDate": "2023-03-09T22:37:43.552957454Z" }, { "Cost": { @@ -6073,7 +6073,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025804788Z" + "StartDate": "2023-03-09T22:37:43.552957583Z" }, { "Cost": { @@ -6088,7 +6088,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02580496Z" + "StartDate": "2023-03-09T22:37:43.552957718Z" }, { "Cost": { @@ -6103,7 +6103,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025805128Z" + "StartDate": "2023-03-09T22:37:43.552957848Z" }, { "Cost": { @@ -6118,7 +6118,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025805299Z" + "StartDate": "2023-03-09T22:37:43.552957975Z" }, { "Cost": { @@ -6133,7 +6133,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025805466Z" + "StartDate": "2023-03-09T22:37:43.552958105Z" }, { "Cost": { @@ -6148,7 +6148,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025805634Z" + "StartDate": "2023-03-09T22:37:43.552958232Z" }, { "Cost": { @@ -6163,7 +6163,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025805799Z" + "StartDate": "2023-03-09T22:37:43.55295836Z" }, { "Cost": { @@ -6178,7 +6178,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025805983Z" + "StartDate": "2023-03-09T22:37:43.552958489Z" }, { "Cost": { @@ -6193,7 +6193,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025806148Z" + "StartDate": "2023-03-09T22:37:43.552958616Z" }, { "Cost": { @@ -6208,7 +6208,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025806319Z" + "StartDate": "2023-03-09T22:37:43.552958744Z" }, { "Cost": { @@ -6223,7 +6223,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025806486Z" + "StartDate": "2023-03-09T22:37:43.552958904Z" }, { "Cost": { @@ -6238,7 +6238,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025806654Z" + "StartDate": "2023-03-09T22:37:43.552959033Z" }, { "Cost": { @@ -6253,7 +6253,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02580682Z" + "StartDate": "2023-03-09T22:37:43.552959162Z" }, { "Cost": { @@ -6268,7 +6268,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02580699Z" + "StartDate": "2023-03-09T22:37:43.552959294Z" }, { "Cost": { @@ -6283,7 +6283,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025807158Z" + "StartDate": "2023-03-09T22:37:43.552959425Z" }, { "Cost": { @@ -6298,7 +6298,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025807326Z" + "StartDate": "2023-03-09T22:37:43.552959556Z" }, { "Cost": { @@ -6313,7 +6313,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025807492Z" + "StartDate": "2023-03-09T22:37:43.552959685Z" }, { "Cost": { @@ -6328,7 +6328,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025807658Z" + "StartDate": "2023-03-09T22:37:43.552959814Z" }, { "Cost": { @@ -6343,7 +6343,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025807824Z" + "StartDate": "2023-03-09T22:37:43.552959983Z" }, { "Cost": { @@ -6358,7 +6358,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025807991Z" + "StartDate": "2023-03-09T22:37:43.552960111Z" }, { "Cost": { @@ -6373,7 +6373,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025808156Z" + "StartDate": "2023-03-09T22:37:43.55296024Z" }, { "Cost": { @@ -6388,7 +6388,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025808322Z" + "StartDate": "2023-03-09T22:37:43.552960372Z" }, { "Cost": { @@ -6403,7 +6403,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025808487Z" + "StartDate": "2023-03-09T22:37:43.5529605Z" }, { "Cost": { @@ -6418,7 +6418,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025808664Z" + "StartDate": "2023-03-09T22:37:43.552960702Z" }, { "Cost": { @@ -6433,7 +6433,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025808843Z" + "StartDate": "2023-03-09T22:37:43.552960936Z" }, { "Cost": { @@ -6448,7 +6448,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02580914Z" + "StartDate": "2023-03-09T22:37:43.552961064Z" }, { "Cost": { @@ -6463,7 +6463,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025809426Z" + "StartDate": "2023-03-09T22:37:43.552961285Z" }, { "Cost": { @@ -6478,7 +6478,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.0258096Z" + "StartDate": "2023-03-09T22:37:43.552961414Z" }, { "Cost": { @@ -6493,7 +6493,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025809778Z" + "StartDate": "2023-03-09T22:37:43.552961627Z" }, { "Cost": { @@ -6508,7 +6508,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025809944Z" + "StartDate": "2023-03-09T22:37:43.552961755Z" }, { "Cost": { @@ -6523,7 +6523,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025810111Z" + "StartDate": "2023-03-09T22:37:43.552961885Z" }, { "Cost": { @@ -6538,7 +6538,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025810277Z" + "StartDate": "2023-03-09T22:37:43.552962013Z" }, { "Cost": { @@ -6553,7 +6553,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025810444Z" + "StartDate": "2023-03-09T22:37:43.552962141Z" }, { "Cost": { @@ -6568,7 +6568,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02581061Z" + "StartDate": "2023-03-09T22:37:43.552962271Z" }, { "Cost": { @@ -6583,7 +6583,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025810778Z" + "StartDate": "2023-03-09T22:37:43.552962398Z" }, { "Cost": { @@ -6598,7 +6598,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025810944Z" + "StartDate": "2023-03-09T22:37:43.552962526Z" }, { "Cost": { @@ -6613,7 +6613,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025811111Z" + "StartDate": "2023-03-09T22:37:43.552962656Z" }, { "Cost": { @@ -6628,7 +6628,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025811279Z" + "StartDate": "2023-03-09T22:37:43.552962786Z" }, { "Cost": { @@ -6643,7 +6643,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025811444Z" + "StartDate": "2023-03-09T22:37:43.552962917Z" }, { "Cost": { @@ -6658,7 +6658,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025811614Z" + "StartDate": "2023-03-09T22:37:43.552963044Z" }, { "Cost": { @@ -6673,7 +6673,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025811783Z" + "StartDate": "2023-03-09T22:37:43.552963177Z" }, { "Cost": { @@ -6688,7 +6688,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02581195Z" + "StartDate": "2023-03-09T22:37:43.552963306Z" }, { "Cost": { @@ -6703,7 +6703,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02581212Z" + "StartDate": "2023-03-09T22:37:43.552963438Z" }, { "Cost": { @@ -6718,7 +6718,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025812289Z" + "StartDate": "2023-03-09T22:37:43.552963568Z" }, { "Cost": { @@ -6733,7 +6733,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025812466Z" + "StartDate": "2023-03-09T22:37:43.552963698Z" }, { "Cost": { @@ -6748,7 +6748,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025812636Z" + "StartDate": "2023-03-09T22:37:43.552963829Z" }, { "Cost": { @@ -6763,7 +6763,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025812804Z" + "StartDate": "2023-03-09T22:37:43.552963958Z" }, { "Cost": { @@ -6778,7 +6778,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025812973Z" + "StartDate": "2023-03-09T22:37:43.552964086Z" }, { "Cost": { @@ -6793,7 +6793,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02581314Z" + "StartDate": "2023-03-09T22:37:43.552964214Z" }, { "Cost": { @@ -6808,7 +6808,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025813305Z" + "StartDate": "2023-03-09T22:37:43.552964373Z" }, { "Cost": { @@ -6823,7 +6823,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025813472Z" + "StartDate": "2023-03-09T22:37:43.552964503Z" }, { "Cost": { @@ -6838,7 +6838,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025813637Z" + "StartDate": "2023-03-09T22:37:43.552964632Z" }, { "Cost": { @@ -6853,7 +6853,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.0258138Z" + "StartDate": "2023-03-09T22:37:43.552964761Z" }, { "Cost": { @@ -6868,7 +6868,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025813968Z" + "StartDate": "2023-03-09T22:37:43.552964891Z" }, { "Cost": { @@ -6883,7 +6883,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02581413Z" + "StartDate": "2023-03-09T22:37:43.55296502Z" }, { "Cost": { @@ -6898,7 +6898,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.0258143Z" + "StartDate": "2023-03-09T22:37:43.552965154Z" }, { "Cost": { @@ -6913,7 +6913,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025814468Z" + "StartDate": "2023-03-09T22:37:43.552965283Z" }, { "Cost": { @@ -6928,7 +6928,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025814634Z" + "StartDate": "2023-03-09T22:37:43.55296541Z" }, { "Cost": { @@ -6943,7 +6943,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025814801Z" + "StartDate": "2023-03-09T22:37:43.552965538Z" }, { "Cost": { @@ -6958,7 +6958,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025814965Z" + "StartDate": "2023-03-09T22:37:43.552965664Z" }, { "Cost": { @@ -6973,7 +6973,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025815129Z" + "StartDate": "2023-03-09T22:37:43.552965794Z" }, { "Cost": { @@ -6988,7 +6988,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025815294Z" + "StartDate": "2023-03-09T22:37:43.552965919Z" }, { "Cost": { @@ -7003,7 +7003,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02581546Z" + "StartDate": "2023-03-09T22:37:43.552966047Z" }, { "Cost": { @@ -7018,7 +7018,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025815626Z" + "StartDate": "2023-03-09T22:37:43.552966174Z" }, { "Cost": { @@ -7033,7 +7033,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025815791Z" + "StartDate": "2023-03-09T22:37:43.552966317Z" }, { "Cost": { @@ -7048,7 +7048,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025815955Z" + "StartDate": "2023-03-09T22:37:43.552966446Z" }, { "Cost": { @@ -7063,7 +7063,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025816132Z" + "StartDate": "2023-03-09T22:37:43.552966674Z" }, { "Cost": { @@ -7078,7 +7078,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025816312Z" + "StartDate": "2023-03-09T22:37:43.5529668Z" }, { "Cost": { @@ -7093,7 +7093,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02581649Z" + "StartDate": "2023-03-09T22:37:43.552967023Z" }, { "Cost": { @@ -7108,7 +7108,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025816668Z" + "StartDate": "2023-03-09T22:37:43.55296715Z" }, { "Cost": { @@ -7123,7 +7123,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025816846Z" + "StartDate": "2023-03-09T22:37:43.55296736Z" }, { "Cost": { @@ -7138,7 +7138,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025817028Z" + "StartDate": "2023-03-09T22:37:43.552967487Z" }, { "Cost": { @@ -7153,7 +7153,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025817194Z" + "StartDate": "2023-03-09T22:37:43.552967614Z" }, { "Cost": { @@ -7168,7 +7168,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025817362Z" + "StartDate": "2023-03-09T22:37:43.55296774Z" }, { "Cost": { @@ -7183,7 +7183,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025817528Z" + "StartDate": "2023-03-09T22:37:43.552967871Z" }, { "Cost": { @@ -7198,7 +7198,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025817694Z" + "StartDate": "2023-03-09T22:37:43.552968Z" }, { "Cost": { @@ -7213,7 +7213,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025817859Z" + "StartDate": "2023-03-09T22:37:43.552968133Z" }, { "Cost": { @@ -7228,7 +7228,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025818027Z" + "StartDate": "2023-03-09T22:37:43.552968261Z" }, { "Cost": { @@ -7243,7 +7243,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025818194Z" + "StartDate": "2023-03-09T22:37:43.552968389Z" }, { "Cost": { @@ -7258,7 +7258,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025818361Z" + "StartDate": "2023-03-09T22:37:43.552968514Z" }, { "Cost": { @@ -7273,7 +7273,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025818529Z" + "StartDate": "2023-03-09T22:37:43.552968643Z" }, { "Cost": { @@ -7288,7 +7288,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025818695Z" + "StartDate": "2023-03-09T22:37:43.552968768Z" }, { "Cost": { @@ -7303,7 +7303,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025818864Z" + "StartDate": "2023-03-09T22:37:43.552968897Z" }, { "Cost": { @@ -7318,7 +7318,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025819032Z" + "StartDate": "2023-03-09T22:37:43.552969025Z" }, { "Cost": { @@ -7333,7 +7333,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025819209Z" + "StartDate": "2023-03-09T22:37:43.552969155Z" }, { "Cost": { @@ -7348,7 +7348,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02581938Z" + "StartDate": "2023-03-09T22:37:43.552969283Z" }, { "Cost": { @@ -7363,7 +7363,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025819548Z" + "StartDate": "2023-03-09T22:37:43.552969411Z" }, { "Cost": { @@ -7378,7 +7378,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025819716Z" + "StartDate": "2023-03-09T22:37:43.552969565Z" }, { "Cost": { @@ -7393,7 +7393,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025819886Z" + "StartDate": "2023-03-09T22:37:43.552969696Z" }, { "Cost": { @@ -7408,7 +7408,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025820052Z" + "StartDate": "2023-03-09T22:37:43.552969824Z" }, { "Cost": { @@ -7423,7 +7423,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.02582022Z" + "StartDate": "2023-03-09T22:37:43.552969953Z" }, { "Cost": { @@ -7438,7 +7438,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025820384Z" + "StartDate": "2023-03-09T22:37:43.552970082Z" }, { "Cost": { @@ -7453,7 +7453,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025820551Z" + "StartDate": "2023-03-09T22:37:43.55297021Z" }, { "Cost": { @@ -7468,7 +7468,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025820718Z" + "StartDate": "2023-03-09T22:37:43.552970341Z" }, { "Cost": { @@ -7483,7 +7483,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025820884Z" + "StartDate": "2023-03-09T22:37:43.55297047Z" }, { "Cost": { @@ -7498,7 +7498,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02582105Z" + "StartDate": "2023-03-09T22:37:43.552970601Z" }, { "Cost": { @@ -7513,7 +7513,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02582122Z" + "StartDate": "2023-03-09T22:37:43.552970732Z" }, { "Cost": { @@ -7528,7 +7528,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025821386Z" + "StartDate": "2023-03-09T22:37:43.552970863Z" }, { "Cost": { @@ -7543,7 +7543,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025821552Z" + "StartDate": "2023-03-09T22:37:43.552970992Z" }, { "Cost": { @@ -7558,7 +7558,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02582172Z" + "StartDate": "2023-03-09T22:37:43.55297112Z" }, { "Cost": { @@ -7573,7 +7573,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025821885Z" + "StartDate": "2023-03-09T22:37:43.55297125Z" }, { "Cost": { @@ -7588,7 +7588,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025822048Z" + "StartDate": "2023-03-09T22:37:43.552971378Z" }, { "Cost": { @@ -7603,7 +7603,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025822214Z" + "StartDate": "2023-03-09T22:37:43.552971507Z" }, { "Cost": { @@ -7618,7 +7618,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025822378Z" + "StartDate": "2023-03-09T22:37:43.552971636Z" }, { "Cost": { @@ -7633,7 +7633,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025822542Z" + "StartDate": "2023-03-09T22:37:43.552971767Z" }, { "Cost": { @@ -7648,7 +7648,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025822706Z" + "StartDate": "2023-03-09T22:37:43.552971894Z" }, { "Cost": { @@ -7663,7 +7663,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02582287Z" + "StartDate": "2023-03-09T22:37:43.552972021Z" }, { "Cost": { @@ -7678,7 +7678,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025823034Z" + "StartDate": "2023-03-09T22:37:43.552972149Z" }, { "Cost": { @@ -7693,7 +7693,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025823331Z" + "StartDate": "2023-03-09T22:37:43.55297236Z" }, { "Cost": { @@ -7708,7 +7708,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025823505Z" + "StartDate": "2023-03-09T22:37:43.55297249Z" }, { "Cost": { @@ -7723,7 +7723,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025823809Z" + "StartDate": "2023-03-09T22:37:43.552972732Z" }, { "Cost": { @@ -7738,7 +7738,7 @@ "Quantity": 2 } ], - "StartDate": "2023-01-25T03:31:10.025823984Z" + "StartDate": "2023-03-09T22:37:43.552972862Z" }, { "Cost": { @@ -7753,7 +7753,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025824165Z" + "StartDate": "2023-03-09T22:37:43.5529731Z" }, { "Cost": { @@ -7768,7 +7768,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025824344Z" + "StartDate": "2023-03-09T22:37:43.552973228Z" }, { "Cost": { @@ -7783,7 +7783,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025824525Z" + "StartDate": "2023-03-09T22:37:43.552973447Z" }, { "Cost": { @@ -7798,7 +7798,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025824694Z" + "StartDate": "2023-03-09T22:37:43.552973574Z" }, { "Cost": { @@ -7813,7 +7813,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.02582486Z" + "StartDate": "2023-03-09T22:37:43.552973812Z" }, { "Cost": { @@ -7828,7 +7828,7 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025825027Z" + "StartDate": "2023-03-09T22:37:43.55297394Z" }, { "Cost": { @@ -7843,7 +7843,277 @@ "Quantity": 1 } ], - "StartDate": "2023-01-25T03:31:10.025825196Z" + "StartDate": "2023-03-09T22:37:43.552974071Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 375 + }, + "IsDirectPurchase": true, + "OfferID": "d3c65faf-49c2-9861-cccd-f3b5428c64da", + "Rewards": [ + { + "ItemID": "d3c65faf-49c2-9861-cccd-f3b5428c64da", + "ItemTypeID": "3f296c07-64c3-494c-923b-fe692a4fa1bd", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.552974202Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 375 + }, + "IsDirectPurchase": true, + "OfferID": "d824f9c8-48fd-f56c-5669-5680a7a10031", + "Rewards": [ + { + "ItemID": "d824f9c8-48fd-f56c-5669-5680a7a10031", + "ItemTypeID": "3f296c07-64c3-494c-923b-fe692a4fa1bd", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.552974332Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 375 + }, + "IsDirectPurchase": true, + "OfferID": "068e78f6-4d12-7e0a-76ec-3cb80e157d76", + "Rewards": [ + { + "ItemID": "068e78f6-4d12-7e0a-76ec-3cb80e157d76", + "ItemTypeID": "3f296c07-64c3-494c-923b-fe692a4fa1bd", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.55297446Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 325 + }, + "IsDirectPurchase": true, + "OfferID": "506bdf48-4d1b-87a7-6f02-eeb9ee9dadff", + "Rewards": [ + { + "ItemID": "506bdf48-4d1b-87a7-6f02-eeb9ee9dadff", + "ItemTypeID": "d5f120f8-ff8c-4aac-92ea-f2b5acbe9475", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.552974587Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 5350 + }, + "IsDirectPurchase": true, + "OfferID": "e98461ab-4e29-3bbe-513b-0b82f3013050", + "Rewards": [ + { + "ItemID": "e98461ab-4e29-3bbe-513b-0b82f3013050", + "ItemTypeID": "e7c63390-eda7-46e0-bb7a-a6abdacd2433", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.552974717Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 875 + }, + "IsDirectPurchase": true, + "OfferID": "475ff2f2-4a02-1334-c1bf-d5b82fd3af3d", + "Rewards": [ + { + "ItemID": "475ff2f2-4a02-1334-c1bf-d5b82fd3af3d", + "ItemTypeID": "e7c63390-eda7-46e0-bb7a-a6abdacd2433", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.552974876Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 875 + }, + "IsDirectPurchase": true, + "OfferID": "14f9e351-4809-932c-e5b0-09899fa9017f", + "Rewards": [ + { + "ItemID": "14f9e351-4809-932c-e5b0-09899fa9017f", + "ItemTypeID": "e7c63390-eda7-46e0-bb7a-a6abdacd2433", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.552975007Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 875 + }, + "IsDirectPurchase": true, + "OfferID": "a2145fdb-44c3-6b7e-fa45-01a07272a2ce", + "Rewards": [ + { + "ItemID": "a2145fdb-44c3-6b7e-fa45-01a07272a2ce", + "ItemTypeID": "e7c63390-eda7-46e0-bb7a-a6abdacd2433", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.552975135Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 875 + }, + "IsDirectPurchase": true, + "OfferID": "d24023ad-4689-6273-5a37-f6bd0ab2932b", + "Rewards": [ + { + "ItemID": "d24023ad-4689-6273-5a37-f6bd0ab2932b", + "ItemTypeID": "e7c63390-eda7-46e0-bb7a-a6abdacd2433", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.552975264Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 1750 + }, + "IsDirectPurchase": true, + "OfferID": "a8485a93-48fa-a301-a3f2-dca0175580df", + "Rewards": [ + { + "ItemID": "a8485a93-48fa-a301-a3f2-dca0175580df", + "ItemTypeID": "e7c63390-eda7-46e0-bb7a-a6abdacd2433", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.55297539Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 475 + }, + "IsDirectPurchase": true, + "OfferID": "0aea9d2b-44e4-4ec1-5ea5-9da2e11586c8", + "Rewards": [ + { + "ItemID": "0aea9d2b-44e4-4ec1-5ea5-9da2e11586c8", + "ItemTypeID": "dd3bf334-87f3-40bd-b043-682a57a8dc3a", + "Quantity": 2 + } + ], + "StartDate": "2023-03-09T22:37:43.552975519Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 375 + }, + "IsDirectPurchase": true, + "OfferID": "b06a92e4-48ab-81f5-244b-9987534a8603", + "Rewards": [ + { + "ItemID": "b06a92e4-48ab-81f5-244b-9987534a8603", + "ItemTypeID": "3f296c07-64c3-494c-923b-fe692a4fa1bd", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.552975651Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 325 + }, + "IsDirectPurchase": true, + "OfferID": "bc34230c-48be-a8da-16c0-63abe07d3887", + "Rewards": [ + { + "ItemID": "bc34230c-48be-a8da-16c0-63abe07d3887", + "ItemTypeID": "d5f120f8-ff8c-4aac-92ea-f2b5acbe9475", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.55297578Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 1775 + }, + "IsDirectPurchase": true, + "OfferID": "8b829b66-44ad-c5d3-4e03-f5bc3c6f5d12", + "Rewards": [ + { + "ItemID": "8b829b66-44ad-c5d3-4e03-f5bc3c6f5d12", + "ItemTypeID": "e7c63390-eda7-46e0-bb7a-a6abdacd2433", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.552975908Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 1775 + }, + "IsDirectPurchase": true, + "OfferID": "9246f649-40b1-4077-31d1-be856acf5dd9", + "Rewards": [ + { + "ItemID": "9246f649-40b1-4077-31d1-be856acf5dd9", + "ItemTypeID": "e7c63390-eda7-46e0-bb7a-a6abdacd2433", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.552976034Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 1775 + }, + "IsDirectPurchase": true, + "OfferID": "94456e3a-459f-4447-cc0d-7e9b5d01b81e", + "Rewards": [ + { + "ItemID": "94456e3a-459f-4447-cc0d-7e9b5d01b81e", + "ItemTypeID": "e7c63390-eda7-46e0-bb7a-a6abdacd2433", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.552976164Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 1775 + }, + "IsDirectPurchase": true, + "OfferID": "4add59eb-41f6-4184-3cb6-c89a81b6739b", + "Rewards": [ + { + "ItemID": "4add59eb-41f6-4184-3cb6-c89a81b6739b", + "ItemTypeID": "e7c63390-eda7-46e0-bb7a-a6abdacd2433", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.552976308Z" + }, + { + "Cost": { + "85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741": 5350 + }, + "IsDirectPurchase": true, + "OfferID": "901abab9-4a44-09f1-b892-9887a587f079", + "Rewards": [ + { + "ItemID": "901abab9-4a44-09f1-b892-9887a587f079", + "ItemTypeID": "e7c63390-eda7-46e0-bb7a-a6abdacd2433", + "Quantity": 1 + } + ], + "StartDate": "2023-03-09T22:37:43.55297644Z" }, { "Cost": { diff --git a/docs/log.example/ValSkin.json b/docs/log.example/ValSkin.json index 646eab7..9d97f26 100644 --- a/docs/log.example/ValSkin.json +++ b/docs/log.example/ValSkin.json @@ -22,7 +22,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/89baf0f4-4648-69fc-f0af-2fbc69b97b80/displayicon.png", "displayName": "異星獵人 奧丁", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/32f7797f-4491-e21f-e40b-cfb639df3c97_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/32f7797f-4491-e21f-e40b-cfb639df3c97_default_universal.mp4", "uuid": "89baf0f4-4648-69fc-f0af-2fbc69b97b80" }, { @@ -30,7 +30,7 @@ "displayIcon": null, "displayName": "異星獵人 奧丁 等級2", "levelItem": "EEquippableSkinLevelItem::HeartbeatAndMapSensor", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bd9d37c4-4f6f-3766-c134-30b6782e714f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bd9d37c4-4f6f-3766-c134-30b6782e714f_default_universal.mp4", "uuid": "289d7473-472b-68da-9019-da9594a8a127" } ], @@ -117,7 +117,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/549b06bb-4704-25ce-19d5-c9b70b10de19/displayicon.png", "displayName": "電幻普普 奧丁", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/72c8af91-f9f9-4044-801c-3e73ee2f2aa1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/72c8af91-f9f9-4044-801c-3e73ee2f2aa1_default_universal.mp4", "uuid": "549b06bb-4704-25ce-19d5-c9b70b10de19" }, { @@ -125,7 +125,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/3e7d08f9-4067-1abe-8159-87b8e31fc463/displayicon.png", "displayName": "電幻普普 奧丁 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/92c68b11-5e4c-48a7-acdd-32cd8dca7f01_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/92c68b11-5e4c-48a7-acdd-32cd8dca7f01_default_universal.mp4", "uuid": "3e7d08f9-4067-1abe-8159-87b8e31fc463" }, { @@ -133,7 +133,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ca91d540-4d2d-4946-70bd-97aae8117306/displayicon.png", "displayName": "電幻普普 奧丁 等級3", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/18da6f4b-bb95-4158-9e8e-b785e4ba25d0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/18da6f4b-bb95-4158-9e8e-b785e4ba25d0_default_universal.mp4", "uuid": "ca91d540-4d2d-4946-70bd-97aae8117306" }, { @@ -141,7 +141,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/8c95559d-44fb-544d-00d7-8192ed38b17a/displayicon.png", "displayName": "電幻普普 奧丁 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1f8a6fe7-06a4-4cf4-8d1a-e4db58a0f700_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1f8a6fe7-06a4-4cf4-8d1a-e4db58a0f700_default_universal.mp4", "uuid": "8c95559d-44fb-544d-00d7-8192ed38b17a" } ], @@ -179,6 +179,36 @@ "uuid": "2715f184-46cc-bec1-dd7c-e7b4d1aeb625", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/Flyer/HMG_Flyer_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/Flyer/Chromas/Standard/HMG_Flyer_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/2aa6e3af-424e-1278-e317-1faa895ab33c/displayicon.png", + "displayName": "空翼幾何 奧丁", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/2aa6e3af-424e-1278-e317-1faa895ab33c/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "2aa6e3af-424e-1278-e317-1faa895ab33c" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/85c76090-4de5-3a3a-a763-f4a7b779e8ed/displayicon.png", + "displayName": "空翼幾何 奧丁", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/Flyer/Levels/HMG_Flyer_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/bdd376fa-42df-b1a3-dff5-df8c201ce53e/displayicon.png", + "displayName": "空翼幾何 奧丁", + "levelItem": null, + "streamedVideo": null, + "uuid": "bdd376fa-42df-b1a3-dff5-df8c201ce53e" + } + ], + "themeUuid": "418542b0-4f5c-3f37-4f5a-ecb1d3bc04ce", + "uuid": "85c76090-4de5-3a3a-a763-f4a7b779e8ed", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/Grid/HeavyMachineGun_Grid_PrimaryAsset", "chromas": [ @@ -258,7 +288,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ef564ec3-497c-3038-543e-eb94bbe46437/displayicon.png", "displayName": "紫金狂潮//2.0 奧丁", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/07c47f26-4dd6-fe8f-bcdc-18b9c1425667_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/07c47f26-4dd6-fe8f-bcdc-18b9c1425667_default_universal.mp4", "uuid": "ef564ec3-497c-3038-543e-eb94bbe46437" }, { @@ -266,7 +296,7 @@ "displayIcon": null, "displayName": "紫金狂潮//2.0 奧丁 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3ed8e0ec-48d9-5e12-58a7-9d9ea5e4fe4f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3ed8e0ec-48d9-5e12-58a7-9d9ea5e4fe4f_default_universal.mp4", "uuid": "ab04093d-489f-27f3-9e1b-1589db2185c8" }, { @@ -274,7 +304,7 @@ "displayIcon": null, "displayName": "紫金狂潮//2.0 奧丁 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f5aad4e7-437b-cb06-8cef-01b3dc04db72_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f5aad4e7-437b-cb06-8cef-01b3dc04db72_default_universal.mp4", "uuid": "7ca4b0b7-4ba5-9fc9-218c-0b8c865edaad" }, { @@ -282,7 +312,7 @@ "displayIcon": null, "displayName": "紫金狂潮//2.0 奧丁 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2ff2f95b-4199-a00a-08b7-df8a3a564d00_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2ff2f95b-4199-a00a-08b7-df8a3a564d00_default_universal.mp4", "uuid": "4f3eea45-4e3e-026f-66c9-658906a52d0b" } ], @@ -434,6 +464,63 @@ "uuid": "5c13101a-45e4-d568-aade-d6b0dadedcd1", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/RGB/HMG_RGB_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/RGB/Chromas/Standard/HMG_RGB_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/156158a5-4eb2-79ef-49e9-16a680fe93a9/displayicon.png", + "displayName": "炫彩光譜 奧丁", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/156158a5-4eb2-79ef-49e9-16a680fe93a9/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/156158a5-4eb2-79ef-49e9-16a680fe93a9/swatch.png", + "uuid": "156158a5-4eb2-79ef-49e9-16a680fe93a9" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/RGB/Chromas/v1/HMG_RGB_v1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/a5a25319-4159-072f-5555-48824316ef00/displayicon.png", + "displayName": "炫彩光譜 奧丁\n(幻彩1 藍色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/a5a25319-4159-072f-5555-48824316ef00/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/a5a25319-4159-072f-5555-48824316ef00/swatch.png", + "uuid": "a5a25319-4159-072f-5555-48824316ef00" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/RGB/Chromas/v2/HMG_RGB_v2_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/4609dfdc-4d4e-463f-8fc9-c8a4c83369ce/displayicon.png", + "displayName": "炫彩光譜 奧丁\n(幻彩2 紅色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/4609dfdc-4d4e-463f-8fc9-c8a4c83369ce/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/4609dfdc-4d4e-463f-8fc9-c8a4c83369ce/swatch.png", + "uuid": "4609dfdc-4d4e-463f-8fc9-c8a4c83369ce" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/RGB/Chromas/v3/HMG_RGB_v3_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/488f90c1-47e2-84dc-586d-609e53b5fe5b/displayicon.png", + "displayName": "炫彩光譜 奧丁\n(幻彩3 灰色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/488f90c1-47e2-84dc-586d-609e53b5fe5b/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/488f90c1-47e2-84dc-586d-609e53b5fe5b/swatch.png", + "uuid": "488f90c1-47e2-84dc-586d-609e53b5fe5b" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/57523cf0-4574-968b-9f17-168e3bdb6d0d/displayicon.png", + "displayName": "炫彩光譜 奧丁", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/RGB/Levels/HMG_RGB_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/162beb92-4ab7-4383-da51-4b94ba90bd5d/displayicon.png", + "displayName": "炫彩光譜 奧丁", + "levelItem": null, + "streamedVideo": null, + "uuid": "162beb92-4ab7-4383-da51-4b94ba90bd5d" + } + ], + "themeUuid": "f9fb29bd-4592-ee49-0e2a-93a925d7332e", + "uuid": "57523cf0-4574-968b-9f17-168e3bdb6d0d", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/Rainbow/HMG_Rainbow_PrimaryAsset", "chromas": [ @@ -494,63 +581,6 @@ "uuid": "9c134f41-4c29-1bd8-682e-178e7f349c9b", "wallpaper": null }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/RGB/HMG_RGB_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/RGB/Chromas/Standard/HMG_RGB_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/156158a5-4eb2-79ef-49e9-16a680fe93a9/displayicon.png", - "displayName": "炫彩光譜 奧丁", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/156158a5-4eb2-79ef-49e9-16a680fe93a9/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/156158a5-4eb2-79ef-49e9-16a680fe93a9/swatch.png", - "uuid": "156158a5-4eb2-79ef-49e9-16a680fe93a9" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/RGB/Chromas/v1/HMG_RGB_v1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/a5a25319-4159-072f-5555-48824316ef00/displayicon.png", - "displayName": "炫彩光譜 奧丁\n(幻彩1 藍色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/a5a25319-4159-072f-5555-48824316ef00/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/a5a25319-4159-072f-5555-48824316ef00/swatch.png", - "uuid": "a5a25319-4159-072f-5555-48824316ef00" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/RGB/Chromas/v2/HMG_RGB_v2_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/4609dfdc-4d4e-463f-8fc9-c8a4c83369ce/displayicon.png", - "displayName": "炫彩光譜 奧丁\n(幻彩2 紅色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/4609dfdc-4d4e-463f-8fc9-c8a4c83369ce/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/4609dfdc-4d4e-463f-8fc9-c8a4c83369ce/swatch.png", - "uuid": "4609dfdc-4d4e-463f-8fc9-c8a4c83369ce" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/RGB/Chromas/v3/HMG_RGB_v3_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/488f90c1-47e2-84dc-586d-609e53b5fe5b/displayicon.png", - "displayName": "炫彩光譜 奧丁\n(幻彩3 灰色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/488f90c1-47e2-84dc-586d-609e53b5fe5b/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/488f90c1-47e2-84dc-586d-609e53b5fe5b/swatch.png", - "uuid": "488f90c1-47e2-84dc-586d-609e53b5fe5b" - } - ], - "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", - "displayIcon": "https://media.valorant-api.com/weaponskins/57523cf0-4574-968b-9f17-168e3bdb6d0d/displayicon.png", - "displayName": "炫彩光譜 奧丁", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/RGB/Levels/HMG_RGB_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/162beb92-4ab7-4383-da51-4b94ba90bd5d/displayicon.png", - "displayName": "炫彩光譜 奧丁", - "levelItem": null, - "streamedVideo": null, - "uuid": "162beb92-4ab7-4383-da51-4b94ba90bd5d" - } - ], - "themeUuid": "f9fb29bd-4592-ee49-0e2a-93a925d7332e", - "uuid": "57523cf0-4574-968b-9f17-168e3bdb6d0d", - "wallpaper": null - }, { "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/HMG/Schema/HMG_Schema_PrimaryAsset", "chromas": [ @@ -628,7 +658,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/0c643904-4cbc-8806-3198-eb86c22472bf/displayicon.png", "displayName": "掠奪印象 奧丁 等級4\n(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/0c643904-4cbc-8806-3198-eb86c22472bf/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3a4dd823-4d9f-2532-3932-50a3ec401de9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3a4dd823-4d9f-2532-3932-50a3ec401de9_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/0c643904-4cbc-8806-3198-eb86c22472bf/swatch.png", "uuid": "0c643904-4cbc-8806-3198-eb86c22472bf" }, @@ -637,7 +667,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c8a7b6ae-4aaa-ba5b-9fad-0da1c8b25f9e/displayicon.png", "displayName": "掠奪印象 奧丁 等級4\n(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/c8a7b6ae-4aaa-ba5b-9fad-0da1c8b25f9e/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c15396a1-4cec-a6f6-fc2f-eaa4dec7d389_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c15396a1-4cec-a6f6-fc2f-eaa4dec7d389_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/c8a7b6ae-4aaa-ba5b-9fad-0da1c8b25f9e/swatch.png", "uuid": "c8a7b6ae-4aaa-ba5b-9fad-0da1c8b25f9e" }, @@ -646,7 +676,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/2f6c84b9-40dd-4c58-8f29-a6af6a31a09f/displayicon.png", "displayName": "掠奪印象 奧丁 等級4\n(幻彩3 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/2f6c84b9-40dd-4c58-8f29-a6af6a31a09f/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/71a30e7e-46bd-d89a-d48d-3b9f2918912a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/71a30e7e-46bd-d89a-d48d-3b9f2918912a_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/2f6c84b9-40dd-4c58-8f29-a6af6a31a09f/swatch.png", "uuid": "2f6c84b9-40dd-4c58-8f29-a6af6a31a09f" } @@ -660,7 +690,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f5ce6297-4cd4-4b09-3931-5f8b20a4317d/displayicon.png", "displayName": "掠奪印象 奧丁", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2ca99b17-4868-78b5-e68d-7aa0fd27a8fd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2ca99b17-4868-78b5-e68d-7aa0fd27a8fd_default_universal.mp4", "uuid": "f5ce6297-4cd4-4b09-3931-5f8b20a4317d" }, { @@ -668,7 +698,7 @@ "displayIcon": null, "displayName": "掠奪印象 奧丁 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/df2bbfb2-4217-d364-98f2-deaca3b1edb7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/df2bbfb2-4217-d364-98f2-deaca3b1edb7_default_universal.mp4", "uuid": "2bb3b930-48d4-c32a-2972-6ba60f1e3d96" }, { @@ -676,7 +706,7 @@ "displayIcon": null, "displayName": "掠奪印象 奧丁 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c2989dc2-4841-07eb-aa99-ce87bd7aafa2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c2989dc2-4841-07eb-aa99-ce87bd7aafa2_default_universal.mp4", "uuid": "2a4c3d8a-44ec-0097-5afc-1bb1044605b4" }, { @@ -684,7 +714,7 @@ "displayIcon": null, "displayName": "掠奪印象 奧丁 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3edd48db-4518-e422-8cb6-869d243690a4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3edd48db-4518-e422-8cb6-869d243690a4_default_universal.mp4", "uuid": "606a2388-440f-7858-e5e3-5a94d7aeb64f" } ], @@ -801,7 +831,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5123ed96-48de-aeab-eaea-2b8ea689f5a2/displayicon.png", "displayName": "咻咻X 奧丁", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/943c425e-4b3d-0d29-15d7-8d88d95b886e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/943c425e-4b3d-0d29-15d7-8d88d95b886e_default_universal.mp4", "uuid": "5123ed96-48de-aeab-eaea-2b8ea689f5a2" }, { @@ -809,7 +839,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/35e89d1a-477c-3d54-82aa-3599a832fe0b/displayicon.png", "displayName": "咻咻X 奧丁 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3d8cc4ea-4de2-4863-4c9c-c3b86cc6884c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3d8cc4ea-4de2-4863-4c9c-c3b86cc6884c_default_universal.mp4", "uuid": "35e89d1a-477c-3d54-82aa-3599a832fe0b" }, { @@ -817,7 +847,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/31201e02-4873-a6db-1ce6-6e93a620370c/displayicon.png", "displayName": "咻咻X 奧丁 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c3008423-4a36-7d58-51f8-81a2eea188c3_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c3008423-4a36-7d58-51f8-81a2eea188c3_default_universal.mp4", "uuid": "31201e02-4873-a6db-1ce6-6e93a620370c" }, { @@ -825,7 +855,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/7637fff1-4275-590a-6181-be95eae8786a/displayicon.png", "displayName": "咻咻X 奧丁 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/463b382a-4a76-4eb3-a699-bc8e856335c4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/463b382a-4a76-4eb3-a699-bc8e856335c4_default_universal.mp4", "uuid": "7637fff1-4275-590a-6181-be95eae8786a" } ], @@ -970,7 +1000,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 戰神 等級2\n(幻彩1 戰術夥伴)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/22e563d3-4a87-bb96-dcd8-fc92bc76aa07/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e533e91b-4383-907f-67ed-36a9f197be29_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e533e91b-4383-907f-67ed-36a9f197be29_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/22e563d3-4a87-bb96-dcd8-fc92bc76aa07/swatch.png", "uuid": "22e563d3-4a87-bb96-dcd8-fc92bc76aa07" }, @@ -979,7 +1009,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 戰神 等級2\n(幻彩2 英雄聯盟)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/2c372b76-480b-c619-cce2-399790ff0254/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e631a14c-4d9f-efeb-b249-e6b53f36b628_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e631a14c-4d9f-efeb-b249-e6b53f36b628_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/2c372b76-480b-c619-cce2-399790ff0254/swatch.png", "uuid": "2c372b76-480b-c619-cce2-399790ff0254" } @@ -993,7 +1023,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/8e0c9fac-4d40-0a04-cf4a-4bb553952164/displayicon.png", "displayName": "魔術塗鴉 戰神", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/69653ad7-481f-9601-e3af-38b6dc7ec566_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/69653ad7-481f-9601-e3af-38b6dc7ec566_default_universal.mp4", "uuid": "8e0c9fac-4d40-0a04-cf4a-4bb553952164" }, { @@ -1001,7 +1031,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 戰神 等級2", "levelItem": "EEquippableSkinLevelItem::KillEffect", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e0c5665a-49d3-3525-2749-609b7835825b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e0c5665a-49d3-3525-2749-609b7835825b_default_universal.mp4", "uuid": "700f9bc6-448d-1159-64ad-ea98035581d1" } ], @@ -1058,7 +1088,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/642ee168-4f9e-1f5f-be72-01b3a41ac086/displayicon.png", "displayName": "奇點 戰神", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/31277939-4cc5-0346-a8f3-8396a4428a71_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/31277939-4cc5-0346-a8f3-8396a4428a71_default_universal.mp4", "uuid": "642ee168-4f9e-1f5f-be72-01b3a41ac086" }, { @@ -1066,7 +1096,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/485df72f-423e-4e53-51a2-68a3c2a929db/displayicon.png", "displayName": "奇點 戰神 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4d76b9a6-4c2d-c5f7-07e7-8d9667d9e879_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4d76b9a6-4c2d-c5f7-07e7-8d9667d9e879_default_universal.mp4", "uuid": "485df72f-423e-4e53-51a2-68a3c2a929db" }, { @@ -1074,7 +1104,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/b080be2c-457a-61a2-d3b2-429b32e62345/displayicon.png", "displayName": "奇點 戰神 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2c8179c3-42fd-0d26-8fde-c595200c99d8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2c8179c3-42fd-0d26-8fde-c595200c99d8_default_universal.mp4", "uuid": "b080be2c-457a-61a2-d3b2-429b32e62345" }, { @@ -1082,7 +1112,7 @@ "displayIcon": null, "displayName": "奇點 戰神 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/cbf3d0f1-468e-cba8-d9ea-dd8420de12b6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/cbf3d0f1-468e-cba8-d9ea-dd8420de12b6_default_universal.mp4", "uuid": "6b12682c-4813-d34f-322d-67b0211e1e6d" } ], @@ -1317,7 +1347,7 @@ "displayIcon": null, "displayName": "永垂不朽 戰神\n(幻彩1 此生)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/5766206f-4a89-9c66-f8b9-5abfdfed2375/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c55913f7-4aca-b0b2-6d69-7699b7a92d8a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c55913f7-4aca-b0b2-6d69-7699b7a92d8a_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/5766206f-4a89-9c66-f8b9-5abfdfed2375/swatch.png", "uuid": "5766206f-4a89-9c66-f8b9-5abfdfed2375" }, @@ -1326,7 +1356,7 @@ "displayIcon": null, "displayName": "永垂不朽 戰神\n(幻彩2 永恆)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e30a5369-477a-7b23-ef1f-1ea04f3ff15d/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f87ebaa7-4f89-ae16-c1bb-53ab91963305_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f87ebaa7-4f89-ae16-c1bb-53ab91963305_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e30a5369-477a-7b23-ef1f-1ea04f3ff15d/swatch.png", "uuid": "e30a5369-477a-7b23-ef1f-1ea04f3ff15d" } @@ -1340,7 +1370,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/0dc1eefc-4b8f-e4c5-0c71-d680abcf73e7/displayicon.png", "displayName": "永垂不朽 戰神", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/16db0918-4eac-5377-fddc-ac83ef5916d7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/16db0918-4eac-5377-fddc-ac83ef5916d7_default_universal.mp4", "uuid": "0dc1eefc-4b8f-e4c5-0c71-d680abcf73e7" } ], @@ -1395,7 +1425,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/2645c6cd-45e2-623e-4c42-c2baaf398127/displayicon.png", "displayName": "奇幻龐克 戰神 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/2645c6cd-45e2-623e-4c42-c2baaf398127/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b77cb701-4b7a-58a8-6c19-7192cf7c1e1e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b77cb701-4b7a-58a8-6c19-7192cf7c1e1e_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/2645c6cd-45e2-623e-4c42-c2baaf398127/swatch.png", "uuid": "2645c6cd-45e2-623e-4c42-c2baaf398127" }, @@ -1404,7 +1434,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c058a9cb-42a9-4477-aca7-088fe6564398/displayicon.png", "displayName": "奇幻龐克 戰神 等級4\n(幻彩2 粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/c058a9cb-42a9-4477-aca7-088fe6564398/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/12678498-45a8-3a3e-916b-a6a805f6effa_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/12678498-45a8-3a3e-916b-a6a805f6effa_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/c058a9cb-42a9-4477-aca7-088fe6564398/swatch.png", "uuid": "c058a9cb-42a9-4477-aca7-088fe6564398" }, @@ -1413,7 +1443,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/d9eb669a-422b-20f0-4708-c39fd340d340/displayicon.png", "displayName": "奇幻龐克 戰神 等級4\n(幻彩3 橘色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/d9eb669a-422b-20f0-4708-c39fd340d340/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/715bc922-47ae-515d-6594-a78e728c9b13_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/715bc922-47ae-515d-6594-a78e728c9b13_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/d9eb669a-422b-20f0-4708-c39fd340d340/swatch.png", "uuid": "d9eb669a-422b-20f0-4708-c39fd340d340" } @@ -1427,7 +1457,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/857ad950-486a-d199-7bf2-7092aaf88ae2/displayicon.png", "displayName": "奇幻龐克 戰神", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d827980e-4bf2-b29f-aed4-ccadfd64d25d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d827980e-4bf2-b29f-aed4-ccadfd64d25d_default_universal.mp4", "uuid": "857ad950-486a-d199-7bf2-7092aaf88ae2" }, { @@ -1435,7 +1465,7 @@ "displayIcon": null, "displayName": "奇幻龐克 戰神 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e76757d7-471d-6be1-3bb3-e2b4996caefe_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e76757d7-471d-6be1-3bb3-e2b4996caefe_default_universal.mp4", "uuid": "8be22b38-4655-5c1c-4235-2f96a85ddf4c" }, { @@ -1443,7 +1473,7 @@ "displayIcon": null, "displayName": "奇幻龐克 戰神 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0898b8b7-4e37-49fb-3e43-fab0749c1f7b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0898b8b7-4e37-49fb-3e43-fab0749c1f7b_default_universal.mp4", "uuid": "0d2861a4-495b-4f66-c416-f78605ecc9aa" }, { @@ -1451,7 +1481,7 @@ "displayIcon": null, "displayName": "奇幻龐克 戰神 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7f82d2a7-47dd-bb81-10fe-678e90897e69_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7f82d2a7-47dd-bb81-10fe-678e90897e69_default_universal.mp4", "uuid": "ddc01ea7-4ecc-617e-da04-2491064e592b" } ], @@ -1506,7 +1536,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/ecc43648-49ba-f0d7-8981-e1ab4f7cd192/displayicon.png", "displayName": "離子聖芒 戰神 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/ecc43648-49ba-f0d7-8981-e1ab4f7cd192/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5f3fc4f9-48f4-2bb6-53e1-1c8bcbed19f5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5f3fc4f9-48f4-2bb6-53e1-1c8bcbed19f5_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/ecc43648-49ba-f0d7-8981-e1ab4f7cd192/swatch.png", "uuid": "ecc43648-49ba-f0d7-8981-e1ab4f7cd192" }, @@ -1515,7 +1545,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/5ec7b626-4789-f017-d7d7-dfb5980e0418/displayicon.png", "displayName": "離子聖芒 戰神 等級4\n(幻彩2 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/5ec7b626-4789-f017-d7d7-dfb5980e0418/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5f9afc3f-4b08-8971-2766-0fab6ed29fcc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5f9afc3f-4b08-8971-2766-0fab6ed29fcc_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/5ec7b626-4789-f017-d7d7-dfb5980e0418/swatch.png", "uuid": "5ec7b626-4789-f017-d7d7-dfb5980e0418" }, @@ -1524,7 +1554,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/267ac45e-471b-c985-47e3-2995fa1294bb/displayicon.png", "displayName": "離子聖芒 戰神 等級4\n(幻彩3 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/267ac45e-471b-c985-47e3-2995fa1294bb/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/973996b9-4036-65b9-f750-43a27d413474_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/973996b9-4036-65b9-f750-43a27d413474_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/267ac45e-471b-c985-47e3-2995fa1294bb/swatch.png", "uuid": "267ac45e-471b-c985-47e3-2995fa1294bb" } @@ -1538,7 +1568,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c6c7ffc4-4892-6393-38b3-1b92837a8038/displayicon.png", "displayName": "離子聖芒 戰神", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a101e4fa-4736-dad6-9de3-4dad9c86e37c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a101e4fa-4736-dad6-9de3-4dad9c86e37c_default_universal.mp4", "uuid": "c6c7ffc4-4892-6393-38b3-1b92837a8038" }, { @@ -1546,7 +1576,7 @@ "displayIcon": null, "displayName": "離子聖芒 戰神 等級2", "levelItem": "EEquippableSkinLevelItem::SoundEffects", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1aa1ca6d-4dd3-89fb-0206-4ba5b53a8523_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1aa1ca6d-4dd3-89fb-0206-4ba5b53a8523_default_universal.mp4", "uuid": "c36fda0b-4ea8-9052-d6e4-4298a213154d" }, { @@ -1554,7 +1584,7 @@ "displayIcon": null, "displayName": "離子聖芒 戰神 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f99ca418-4e9e-2950-ce6f-03a0fa020b54_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f99ca418-4e9e-2950-ce6f-03a0fa020b54_default_universal.mp4", "uuid": "8710d3a0-4c50-9f52-5076-f78418701e57" }, { @@ -1562,7 +1592,7 @@ "displayIcon": null, "displayName": "離子聖芒 戰神 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/03947d97-42bb-35eb-97d5-b2b7efd88631_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/03947d97-42bb-35eb-97d5-b2b7efd88631_default_universal.mp4", "uuid": "5d746e26-4d66-a65f-1364-0e8cd49eae72" } ], @@ -1570,6 +1600,87 @@ "uuid": "0f4b0478-4759-911d-c44b-2a907534789d", "wallpaper": "https://media.valorant-api.com/weaponskins/0f4b0478-4759-911d-c44b-2a907534789d/wallpaper.png" }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Oni2/LMG_Oni2_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Oni2/Chromas/Standard/LMG_Oni2_Standard_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 戰神", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/17834ae1-4dd6-315e-b94e-038689d2e45f/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/17834ae1-4dd6-315e-b94e-038689d2e45f/swatch.png", + "uuid": "17834ae1-4dd6-315e-b94e-038689d2e45f" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Oni2/Chromas/v1/LMG_Oni2_v1_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 戰神 等級4\n(幻彩1 浮雲)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/049b342d-4e47-0554-e866-ec96ff0a55e8/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/18fa5c04-40f0-1128-043b-85af7ba43508_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/049b342d-4e47-0554-e866-ec96ff0a55e8/swatch.png", + "uuid": "049b342d-4e47-0554-e866-ec96ff0a55e8" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Oni2/Chromas/v2/LMG_Oni2_v2_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 戰神 等級4\n(幻彩2 落花)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/15c92b4c-4e17-1c49-64b7-608a886e435a/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c4b41fe0-4143-6ba8-7d28-fc984e05e1b9_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/15c92b4c-4e17-1c49-64b7-608a886e435a/swatch.png", + "uuid": "15c92b4c-4e17-1c49-64b7-608a886e435a" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Oni2/Chromas/v3/LMG_Oni2_v3_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 戰神 等級4\n(幻彩3 飛燕)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/cc1c3f90-43d5-5675-72d4-fb8e50b488a6/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b8640e76-4a67-ab8a-06da-a79eba95b62e_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/cc1c3f90-43d5-5675-72d4-fb8e50b488a6/swatch.png", + "uuid": "cc1c3f90-43d5-5675-72d4-fb8e50b488a6" + } + ], + "contentTierUuid": "60bca009-4182-7998-dee7-b8a2558dc369", + "displayIcon": "https://media.valorant-api.com/weaponskins/759bca71-4764-19f8-8890-239eedb78fa3/displayicon.png", + "displayName": "惡鬼 戰神", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Oni2/Levels/LMG_Oni2_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/8b829b66-44ad-c5d3-4e03-f5bc3c6f5d12/displayicon.png", + "displayName": "惡鬼 戰神", + "levelItem": null, + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/87e1b81d-443d-1ca7-cd87-0fb3e8509ab3_default_universal.mp4", + "uuid": "8b829b66-44ad-c5d3-4e03-f5bc3c6f5d12" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Oni2/Levels/LMG_Oni2_Lv2_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 戰神 等級2", + "levelItem": "EEquippableSkinLevelItem::SoundEffects", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/18999c09-436e-fa23-c1fd-f3aed91a19fc_default_universal.mp4", + "uuid": "beb8982e-4a8b-080c-fb3b-f7b0892cc81a" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Oni2/Levels/LMG_Oni2_Lv3_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 戰神 等級3", + "levelItem": "EEquippableSkinLevelItem::VFX", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/240685da-4692-5945-91b7-35940b9d3d90_default_universal.mp4", + "uuid": "42953fea-4360-3026-5c01-96817e765505" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Oni2/Levels/LMG_Oni2_Lv4_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 戰神 等級4", + "levelItem": "EEquippableSkinLevelItem::Finisher", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a09ff036-4289-0e59-36e8-8c9b7e777727_default_universal.mp4", + "uuid": "6d39bae9-4077-6d39-6a13-b4a98f9b4630" + } + ], + "themeUuid": "a547897d-4bd4-7c77-f5e6-55973f0e89ef", + "uuid": "759bca71-4764-19f8-8890-239eedb78fa3", + "wallpaper": "https://media.valorant-api.com/weaponskins/759bca71-4764-19f8-8890-239eedb78fa3/wallpaper.png" + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Pets/LMG_Pets_PrimaryAsset", "chromas": [ @@ -1804,66 +1915,6 @@ "uuid": "acccab4a-4093-8a4a-f1d3-299071d763d3", "wallpaper": null }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Sakura/LightMachineGun_Sakura_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Sakura/Chromas/Standard/LightMachineGun_Sakura_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e6444ff5-4466-5468-be0a-aa997a688422/displayicon.png", - "displayName": "櫻花 戰神", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/e6444ff5-4466-5468-be0a-aa997a688422/fullrender.png", - "streamedVideo": null, - "swatch": null, - "uuid": "e6444ff5-4466-5468-be0a-aa997a688422" - } - ], - "contentTierUuid": "0cebb8be-46d7-c12a-d306-e9907bfc5a25", - "displayIcon": "https://media.valorant-api.com/weaponskins/2666f98d-4f88-8cb9-4927-629d75a6a7ad/displayicon.png", - "displayName": "櫻花 戰神", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Sakura/Levels/LightMachineGun_Sakura_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/9fbe39c6-42d7-b1db-9048-f0951ce2ff94/displayicon.png", - "displayName": "櫻花 戰神", - "levelItem": null, - "streamedVideo": null, - "uuid": "9fbe39c6-42d7-b1db-9048-f0951ce2ff94" - } - ], - "themeUuid": "3807f2f2-40c3-0fce-49cc-708961b60c75", - "uuid": "2666f98d-4f88-8cb9-4927-629d75a6a7ad", - "wallpaper": null - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Snowglobe/LMG_Snowglobe_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Snowglobe/Chromas/Standard/LMG_Snowglobe_Standard_PrimaryAsset", - "displayIcon": null, - "displayName": "Standard", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/84410f60-427f-bdbf-713f-15a115d97a44/fullrender.png", - "streamedVideo": null, - "swatch": null, - "uuid": "84410f60-427f-bdbf-713f-15a115d97a44" - } - ], - "contentTierUuid": "0cebb8be-46d7-c12a-d306-e9907bfc5a25", - "displayIcon": null, - "displayName": "魔幻冬雪 戰神", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Snowglobe/Levels/LMG_Snowglobe_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f8295d0b-4378-f4ff-342d-178f6d86ac88/displayicon.png", - "displayName": "魔幻冬雪 戰神", - "levelItem": null, - "streamedVideo": null, - "uuid": "f8295d0b-4378-f4ff-342d-178f6d86ac88" - } - ], - "themeUuid": "58df025f-4077-9764-20ec-76a73df87b44", - "uuid": "43538e40-48bf-0262-d4a7-bbba3c56df77", - "wallpaper": null - }, { "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/SOL/LMG_SOL_PrimaryAsset", "chromas": [ @@ -1881,7 +1932,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/b4b0d84e-4947-6078-abcb-82b354549fc7/displayicon.png", "displayName": "光之哨兵 戰神 等級4\n(幻彩1 粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/b4b0d84e-4947-6078-abcb-82b354549fc7/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a3459330-494d-0add-8e33-f5b32236f4fc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a3459330-494d-0add-8e33-f5b32236f4fc_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/b4b0d84e-4947-6078-abcb-82b354549fc7/swatch.png", "uuid": "b4b0d84e-4947-6078-abcb-82b354549fc7" }, @@ -1890,7 +1941,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/39ed0f62-4d30-6fae-b8d7-9c943d6984cb/displayicon.png", "displayName": "光之哨兵 戰神 等級4\n(幻彩2 紅/綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/39ed0f62-4d30-6fae-b8d7-9c943d6984cb/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/091737cb-48af-3486-c830-828fef1a8f18_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/091737cb-48af-3486-c830-828fef1a8f18_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/39ed0f62-4d30-6fae-b8d7-9c943d6984cb/swatch.png", "uuid": "39ed0f62-4d30-6fae-b8d7-9c943d6984cb" }, @@ -1899,7 +1950,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/ab9a4b7b-4037-c491-093d-e99e8070031f/displayicon.png", "displayName": "光之哨兵 戰神 等級4\n(幻彩3 藍/紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/ab9a4b7b-4037-c491-093d-e99e8070031f/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4f345ed4-485f-803b-08d8-0eb5c935601b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4f345ed4-485f-803b-08d8-0eb5c935601b_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/ab9a4b7b-4037-c491-093d-e99e8070031f/swatch.png", "uuid": "ab9a4b7b-4037-c491-093d-e99e8070031f" } @@ -1913,7 +1964,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/0ddbdf8c-43b0-e2f1-94f8-d6be9d2a2110/displayicon.png", "displayName": "光之哨兵 戰神", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8f8dc86f-4e93-8499-addf-75867750e397_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8f8dc86f-4e93-8499-addf-75867750e397_default_universal.mp4", "uuid": "0ddbdf8c-43b0-e2f1-94f8-d6be9d2a2110" }, { @@ -1921,7 +1972,7 @@ "displayIcon": null, "displayName": "光之哨兵 戰神 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/684aace3-4f49-0658-d003-0caeeef28f95_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/684aace3-4f49-0658-d003-0caeeef28f95_default_universal.mp4", "uuid": "ba3ee5c5-478f-6a30-aa0c-85942ba2a7c0" }, { @@ -1929,7 +1980,7 @@ "displayIcon": null, "displayName": "光之哨兵 戰神 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3bf2a87b-4382-5c71-5c21-cb9cc0cd1826_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3bf2a87b-4382-5c71-5c21-cb9cc0cd1826_default_universal.mp4", "uuid": "a92fc69d-4be1-74f5-938b-e0b27b2bb929" }, { @@ -1937,7 +1988,7 @@ "displayIcon": null, "displayName": "光之哨兵 戰神 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9744862e-4779-60df-a8d1-31914ba691b4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9744862e-4779-60df-a8d1-31914ba691b4_default_universal.mp4", "uuid": "0725b4f4-44eb-5297-9ea2-18a333a95087" } ], @@ -1946,37 +1997,97 @@ "wallpaper": "https://media.valorant-api.com/weaponskins/9f3e2ba6-428f-c635-67e0-b8b7d9e3c2fc/wallpaper.png" }, { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Spikes/LMG_Spikes_PrimaryAsset", + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Sakura/LightMachineGun_Sakura_PrimaryAsset", "chromas": [ { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Spikes/Chromas/Standard/LMG_Spikes_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/3288078d-415c-8611-3ac6-eebdc4f579d3/displayicon.png", - "displayName": "泰坦刺甲 戰神", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/3288078d-415c-8611-3ac6-eebdc4f579d3/fullrender.png", + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Sakura/Chromas/Standard/LightMachineGun_Sakura_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e6444ff5-4466-5468-be0a-aa997a688422/displayicon.png", + "displayName": "櫻花 戰神", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/e6444ff5-4466-5468-be0a-aa997a688422/fullrender.png", "streamedVideo": null, "swatch": null, - "uuid": "3288078d-415c-8611-3ac6-eebdc4f579d3" + "uuid": "e6444ff5-4466-5468-be0a-aa997a688422" } ], "contentTierUuid": "0cebb8be-46d7-c12a-d306-e9907bfc5a25", - "displayIcon": "https://media.valorant-api.com/weaponskins/d29d764d-41ce-5a4d-0a96-7b8b91da16fd/displayicon.png", - "displayName": "泰坦刺甲 戰神", + "displayIcon": "https://media.valorant-api.com/weaponskins/2666f98d-4f88-8cb9-4927-629d75a6a7ad/displayicon.png", + "displayName": "櫻花 戰神", "levels": [ { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Spikes/Levels/LMG_Spikes_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/2317e839-44cd-2301-80a8-c4ac63c626ac/displayicon.png", - "displayName": "泰坦刺甲 戰神", + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Sakura/Levels/LightMachineGun_Sakura_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/9fbe39c6-42d7-b1db-9048-f0951ce2ff94/displayicon.png", + "displayName": "櫻花 戰神", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a310c7ba-4321-425f-0079-c8a07dab15b5_default_universal.mp4", - "uuid": "2317e839-44cd-2301-80a8-c4ac63c626ac" + "streamedVideo": null, + "uuid": "9fbe39c6-42d7-b1db-9048-f0951ce2ff94" } ], - "themeUuid": "85c47e07-405d-9104-7462-a1b226532bc7", - "uuid": "d29d764d-41ce-5a4d-0a96-7b8b91da16fd", + "themeUuid": "3807f2f2-40c3-0fce-49cc-708961b60c75", + "uuid": "2666f98d-4f88-8cb9-4927-629d75a6a7ad", "wallpaper": null }, { - "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Standard/LightMachineGun_Standard_PrimaryAsset", + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Snowglobe/LMG_Snowglobe_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Snowglobe/Chromas/Standard/LMG_Snowglobe_Standard_PrimaryAsset", + "displayIcon": null, + "displayName": "Standard", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/84410f60-427f-bdbf-713f-15a115d97a44/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "84410f60-427f-bdbf-713f-15a115d97a44" + } + ], + "contentTierUuid": "0cebb8be-46d7-c12a-d306-e9907bfc5a25", + "displayIcon": null, + "displayName": "魔幻冬雪 戰神", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Snowglobe/Levels/LMG_Snowglobe_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f8295d0b-4378-f4ff-342d-178f6d86ac88/displayicon.png", + "displayName": "魔幻冬雪 戰神", + "levelItem": null, + "streamedVideo": null, + "uuid": "f8295d0b-4378-f4ff-342d-178f6d86ac88" + } + ], + "themeUuid": "58df025f-4077-9764-20ec-76a73df87b44", + "uuid": "43538e40-48bf-0262-d4a7-bbba3c56df77", + "wallpaper": null + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Spikes/LMG_Spikes_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Spikes/Chromas/Standard/LMG_Spikes_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/3288078d-415c-8611-3ac6-eebdc4f579d3/displayicon.png", + "displayName": "泰坦刺甲 戰神", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/3288078d-415c-8611-3ac6-eebdc4f579d3/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "3288078d-415c-8611-3ac6-eebdc4f579d3" + } + ], + "contentTierUuid": "0cebb8be-46d7-c12a-d306-e9907bfc5a25", + "displayIcon": "https://media.valorant-api.com/weaponskins/d29d764d-41ce-5a4d-0a96-7b8b91da16fd/displayicon.png", + "displayName": "泰坦刺甲 戰神", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Spikes/Levels/LMG_Spikes_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/2317e839-44cd-2301-80a8-c4ac63c626ac/displayicon.png", + "displayName": "泰坦刺甲 戰神", + "levelItem": null, + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a310c7ba-4321-425f-0079-c8a07dab15b5_default_universal.mp4", + "uuid": "2317e839-44cd-2301-80a8-c4ac63c626ac" + } + ], + "themeUuid": "85c47e07-405d-9104-7462-a1b226532bc7", + "uuid": "d29d764d-41ce-5a4d-0a96-7b8b91da16fd", + "wallpaper": null + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Standard/LightMachineGun_Standard_PrimaryAsset", "chromas": [ { "assetPath": "ShooterGame/Content/Equippables/Guns/HvyMachineGuns/LMG/Standard/Chromas/Standard/LightMachineGun_Standard_Standard_PrimaryAsset", @@ -2079,7 +2190,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 暴徒 等級5\n(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/700f04e0-41dd-7e10-4103-ab9af60d3447/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/965ea110-4b39-29f7-e986-58bcbf7bfeb6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/965ea110-4b39-29f7-e986-58bcbf7bfeb6_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/700f04e0-41dd-7e10-4103-ab9af60d3447/swatch.png", "uuid": "700f04e0-41dd-7e10-4103-ab9af60d3447" }, @@ -2088,7 +2199,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 暴徒 等級5\n(幻彩2 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/4df3ba9f-4f72-dea8-c8d3-05a0dc1b7b58/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d12ea5b8-4a76-f370-5e10-07859b7cca81_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d12ea5b8-4a76-f370-5e10-07859b7cca81_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/4df3ba9f-4f72-dea8-c8d3-05a0dc1b7b58/swatch.png", "uuid": "4df3ba9f-4f72-dea8-c8d3-05a0dc1b7b58" }, @@ -2097,7 +2208,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 暴徒 等級5\n(幻彩3 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/038c6a4d-4fc5-5886-492c-ff8269661bf9/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/af3db52b-491c-f4dd-3fe0-bba2bab65c70_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/af3db52b-491c-f4dd-3fe0-bba2bab65c70_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/038c6a4d-4fc5-5886-492c-ff8269661bf9/swatch.png", "uuid": "038c6a4d-4fc5-5886-492c-ff8269661bf9" } @@ -2111,7 +2222,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4e435234-49a2-1444-4640-908692c855b8/displayicon.png", "displayName": "RGX 11z Pro 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/197511ac-4d5a-97fc-78f8-feb5d090dd20_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/197511ac-4d5a-97fc-78f8-feb5d090dd20_default_universal.mp4", "uuid": "4e435234-49a2-1444-4640-908692c855b8" }, { @@ -2119,7 +2230,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ca980cdd-4248-f81c-ad08-9fb8c4725eba_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ca980cdd-4248-f81c-ad08-9fb8c4725eba_default_universal.mp4", "uuid": "524ebe7d-4a3b-cf50-ed55-1092d82cebf9" }, { @@ -2127,7 +2238,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 暴徒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/cc5c3f84-492a-ed13-17f3-70a014351158_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/cc5c3f84-492a-ed13-17f3-70a014351158_default_universal.mp4", "uuid": "1561075c-4fe9-882e-39fb-eca6eeab924c" }, { @@ -2135,7 +2246,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 暴徒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/45344553-4490-d3aa-d10a-22b023135cbc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/45344553-4490-d3aa-d10a-22b023135cbc_default_universal.mp4", "uuid": "f435e745-462b-c4bd-7ddf-a99ea33a0f16" }, { @@ -2143,7 +2254,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 暴徒 等級5", "levelItem": "EEquippableSkinLevelItem::KillCounter", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e6f5c644-49df-90e0-69f0-b9b6d33cd9a0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e6f5c644-49df-90e0-69f0-b9b6d33cd9a0_default_universal.mp4", "uuid": "796cf1d2-4893-fee7-3401-beb277c726c8" } ], @@ -2198,7 +2309,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/03d3ef6f-42b9-234d-d89e-fd938511ed31/displayicon.png", "displayName": "異星霸主 暴徒 等級4\n(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/03d3ef6f-42b9-234d-d89e-fd938511ed31/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/200a15a4-4cb2-58ce-e6b1-98b86065a1fa_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/200a15a4-4cb2-58ce-e6b1-98b86065a1fa_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/03d3ef6f-42b9-234d-d89e-fd938511ed31/swatch.png", "uuid": "03d3ef6f-42b9-234d-d89e-fd938511ed31" }, @@ -2207,7 +2318,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e3fca4fe-4617-8367-6738-9f92a89c3ba1/displayicon.png", "displayName": "異星霸主 暴徒 等級4\n(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e3fca4fe-4617-8367-6738-9f92a89c3ba1/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/adc82709-4788-a801-39f6-bf8e1aecb2f1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/adc82709-4788-a801-39f6-bf8e1aecb2f1_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e3fca4fe-4617-8367-6738-9f92a89c3ba1/swatch.png", "uuid": "e3fca4fe-4617-8367-6738-9f92a89c3ba1" }, @@ -2216,7 +2327,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/6610c5f5-490b-e3a6-dca3-a8b21dcb3196/displayicon.png", "displayName": "異星霸主 暴徒 等級4\n(幻彩3 銀色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/6610c5f5-490b-e3a6-dca3-a8b21dcb3196/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d669a219-4162-7275-df02-bcabeed9652d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d669a219-4162-7275-df02-bcabeed9652d_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/6610c5f5-490b-e3a6-dca3-a8b21dcb3196/swatch.png", "uuid": "6610c5f5-490b-e3a6-dca3-a8b21dcb3196" } @@ -2230,7 +2341,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/a3dba920-44ee-d7c5-5227-99a80aee3bd9/displayicon.png", "displayName": "異星霸主 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1eb8c9a9-4cce-4497-c438-d5a630bb144f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1eb8c9a9-4cce-4497-c438-d5a630bb144f_default_universal.mp4", "uuid": "a3dba920-44ee-d7c5-5227-99a80aee3bd9" }, { @@ -2238,7 +2349,7 @@ "displayIcon": null, "displayName": "異星霸主 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::SoundEffects", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b4cc610c-46b6-6d16-f7d2-a2ac0ebc636c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b4cc610c-46b6-6d16-f7d2-a2ac0ebc636c_default_universal.mp4", "uuid": "6ecbed4a-4df2-cbac-ef9c-05b89e542224" }, { @@ -2246,7 +2357,7 @@ "displayIcon": null, "displayName": "異星霸主 暴徒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/584a45c2-4db7-99a2-4d8a-fe8e38c67b2a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/584a45c2-4db7-99a2-4d8a-fe8e38c67b2a_default_universal.mp4", "uuid": "09c0d1f4-4f53-71ea-29ef-6d91719f8ae0" }, { @@ -2254,7 +2365,7 @@ "displayIcon": null, "displayName": "異星霸主 暴徒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fd6d375d-49a9-4b51-9f2a-ef8a30585b54_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fd6d375d-49a9-4b51-9f2a-ef8a30585b54_default_universal.mp4", "uuid": "cf641af3-477a-b7da-b996-089d6168f3d1" } ], @@ -2279,7 +2390,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/ffc33c1e-473a-6609-3996-a787615ef467/displayicon.png", "displayName": "海洋星球 暴徒 等級3\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/ffc33c1e-473a-6609-3996-a787615ef467/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/14af9135-4815-4084-2880-0f904c915459_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/14af9135-4815-4084-2880-0f904c915459_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/ffc33c1e-473a-6609-3996-a787615ef467/swatch.png", "uuid": "ffc33c1e-473a-6609-3996-a787615ef467" } @@ -2293,7 +2404,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/49cea67c-4552-13c2-6b4b-8ba07761504e/displayicon.png", "displayName": "海洋星球 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c554cfcb-4fcb-de12-428a-46bb8cdfe6dc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c554cfcb-4fcb-de12-428a-46bb8cdfe6dc_default_universal.mp4", "uuid": "49cea67c-4552-13c2-6b4b-8ba07761504e" }, { @@ -2301,7 +2412,7 @@ "displayIcon": null, "displayName": "海洋星球 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::FishAnimation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5e9ff67a-4252-d007-8f41-1484ccc84be8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5e9ff67a-4252-d007-8f41-1484ccc84be8_default_universal.mp4", "uuid": "24e39414-4a8e-e800-1242-08bd94b5e3c4" }, { @@ -2309,7 +2420,7 @@ "displayIcon": null, "displayName": "海洋星球 暴徒 等級3", "levelItem": "EEquippableSkinLevelItem::KillBanner", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/48511c6c-4875-db6c-fad1-f0b8f2500c6d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/48511c6c-4875-db6c-fad1-f0b8f2500c6d_default_universal.mp4", "uuid": "7b2826b6-4771-7529-b656-b89b9c1d86b6" } ], @@ -2364,7 +2475,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/ee020712-4e21-2d01-8ec7-5281fbc3489a/displayicon.png", "displayName": "蓋亞復仇 暴徒 等級4\n(幻彩1 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/ee020712-4e21-2d01-8ec7-5281fbc3489a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/69519a76-4b2a-768e-aae1-31a70eca9907_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/69519a76-4b2a-768e-aae1-31a70eca9907_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/ee020712-4e21-2d01-8ec7-5281fbc3489a/swatch.png", "uuid": "ee020712-4e21-2d01-8ec7-5281fbc3489a" }, @@ -2373,7 +2484,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/947f3bf8-4187-b89f-01ab-be97f949ac72/displayicon.png", "displayName": "蓋亞復仇 暴徒 等級4\n(幻彩2 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/947f3bf8-4187-b89f-01ab-be97f949ac72/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5aa8b241-4251-2409-0e6f-3db324f769f4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5aa8b241-4251-2409-0e6f-3db324f769f4_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/947f3bf8-4187-b89f-01ab-be97f949ac72/swatch.png", "uuid": "947f3bf8-4187-b89f-01ab-be97f949ac72" }, @@ -2382,7 +2493,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c12e2ea7-49b3-1871-99ac-8f8385d78ed5/displayicon.png", "displayName": "蓋亞復仇 暴徒 等級4\n(幻彩3 橘色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/c12e2ea7-49b3-1871-99ac-8f8385d78ed5/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a5d3a14f-4e1f-2844-a513-4da8ea3eab3f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a5d3a14f-4e1f-2844-a513-4da8ea3eab3f_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/c12e2ea7-49b3-1871-99ac-8f8385d78ed5/swatch.png", "uuid": "c12e2ea7-49b3-1871-99ac-8f8385d78ed5" } @@ -2396,7 +2507,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c4422d16-4cb1-75d5-fd18-dda0bb05f46b/displayicon.png", "displayName": "蓋亞復仇 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/dcd97281-48d6-00a3-769b-058e6eecfb69_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/dcd97281-48d6-00a3-769b-058e6eecfb69_default_universal.mp4", "uuid": "c4422d16-4cb1-75d5-fd18-dda0bb05f46b" }, { @@ -2404,7 +2515,7 @@ "displayIcon": null, "displayName": "蓋亞復仇 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/50d55ef8-4eae-c04f-f640-17bc3fd6f48a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/50d55ef8-4eae-c04f-f640-17bc3fd6f48a_default_universal.mp4", "uuid": "0832fe9d-43bf-38bf-df60-9dac91449997" }, { @@ -2412,7 +2523,7 @@ "displayIcon": null, "displayName": "蓋亞復仇 暴徒 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0d126328-4769-64ea-58cc-62bc2614ec8d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0d126328-4769-64ea-58cc-62bc2614ec8d_default_universal.mp4", "uuid": "d5c3e32c-4d18-7608-2bab-21851f4036e3" }, { @@ -2420,7 +2531,7 @@ "displayIcon": null, "displayName": "蓋亞復仇 暴徒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8eec3b5a-40dd-395d-7140-1db9bf0af4fb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8eec3b5a-40dd-395d-7140-1db9bf0af4fb_default_universal.mp4", "uuid": "4c4b080d-4b05-65e8-a9c1-6d90aafa7347" } ], @@ -2480,7 +2591,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/9f51da57-4623-415a-6313-f49588297d0e/displayicon.png", "displayName": "2021冠軍賽 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c85b2f7b-4d60-af7c-23a9-41a876ad5810_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c85b2f7b-4d60-af7c-23a9-41a876ad5810_default_universal.mp4", "uuid": "9f51da57-4623-415a-6313-f49588297d0e" }, { @@ -2488,7 +2599,7 @@ "displayIcon": null, "displayName": "2021冠軍賽 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::InspectAndKill", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/761eeafc-489b-81c4-dc64-2cbd85be44ce_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/761eeafc-489b-81c4-dc64-2cbd85be44ce_default_universal.mp4", "uuid": "f96ed262-4280-2363-2542-38b5620bfbb5" }, { @@ -2496,7 +2607,7 @@ "displayIcon": null, "displayName": "2021冠軍賽 暴徒 等級3", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4336c6f3-40fb-dac7-4bc1-c3802cc53fdd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4336c6f3-40fb-dac7-4bc1-c3802cc53fdd_default_universal.mp4", "uuid": "78c44470-4dd0-eb4c-72f6-86961be3d856" }, { @@ -2504,7 +2615,7 @@ "displayIcon": null, "displayName": "2021冠軍賽 暴徒 等級4(在對戰中取得最多擊殺時才會顯示光環)", "levelItem": "EEquippableSkinLevelItem::TopFrag", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/568aec84-438e-2ad0-ea67-2f8ed0ae401d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/568aec84-438e-2ad0-ea67-2f8ed0ae401d_default_universal.mp4", "uuid": "4c8a49bd-4118-9523-6612-4a924651b4a9" } ], @@ -2520,7 +2631,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/de2a2b29-4a65-459e-a822-ccacbff53d46/displayicon.png", "displayName": "起源 暴徒", "fullRender": "https://media.valorant-api.com/weaponskinchromas/de2a2b29-4a65-459e-a822-ccacbff53d46/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fa057e7c-47d9-7e93-3660-bc868752d220_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fa057e7c-47d9-7e93-3660-bc868752d220_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/de2a2b29-4a65-459e-a822-ccacbff53d46/swatch.png", "uuid": "de2a2b29-4a65-459e-a822-ccacbff53d46" }, @@ -2529,7 +2640,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/11406ee3-472c-dc1a-98f7-bfa8f2e3658b/displayicon.png", "displayName": "起源 暴徒 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/11406ee3-472c-dc1a-98f7-bfa8f2e3658b/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/880bf4e8-41bd-3c51-8594-82bd231f2527_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/880bf4e8-41bd-3c51-8594-82bd231f2527_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/11406ee3-472c-dc1a-98f7-bfa8f2e3658b/swatch.png", "uuid": "11406ee3-472c-dc1a-98f7-bfa8f2e3658b" }, @@ -2538,7 +2649,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/6153bc01-4807-c705-e576-63beb9c8e930/displayicon.png", "displayName": "起源 暴徒 等級4\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/6153bc01-4807-c705-e576-63beb9c8e930/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/062b5169-49b1-4807-5c7d-faafbb730b02_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/062b5169-49b1-4807-5c7d-faafbb730b02_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/6153bc01-4807-c705-e576-63beb9c8e930/swatch.png", "uuid": "6153bc01-4807-c705-e576-63beb9c8e930" }, @@ -2547,7 +2658,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/0e16ba9e-48d4-85fd-3b76-84abc19932a0/displayicon.png", "displayName": "起源 暴徒 等級4\n(幻彩3 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/0e16ba9e-48d4-85fd-3b76-84abc19932a0/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/cb00905d-4cd0-06cb-da34-10a2bfb9a263_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/cb00905d-4cd0-06cb-da34-10a2bfb9a263_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/0e16ba9e-48d4-85fd-3b76-84abc19932a0/swatch.png", "uuid": "0e16ba9e-48d4-85fd-3b76-84abc19932a0" } @@ -2561,7 +2672,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/1969e379-40ae-b28a-6fb3-819873a24fb9/displayicon.png", "displayName": "起源 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/11e35445-4975-1581-bfc4-bb801829f5ef_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/11e35445-4975-1581-bfc4-bb801829f5ef_default_universal.mp4", "uuid": "1969e379-40ae-b28a-6fb3-819873a24fb9" }, { @@ -2569,7 +2680,7 @@ "displayIcon": null, "displayName": "起源 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e5a31b3b-47a6-a3f6-938d-09b3706bd0fd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e5a31b3b-47a6-a3f6-938d-09b3706bd0fd_default_universal.mp4", "uuid": "2ee1c6e6-4213-723f-1fd8-c9a76c00ff72" }, { @@ -2577,7 +2688,7 @@ "displayIcon": null, "displayName": "起源 暴徒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0359b063-473d-6d2c-57eb-87a1e6d5dfdc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0359b063-473d-6d2c-57eb-87a1e6d5dfdc_default_universal.mp4", "uuid": "43e8a873-4ddf-1c73-6d91-3786b9fb3145" }, { @@ -2585,7 +2696,7 @@ "displayIcon": null, "displayName": "起源 暴徒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fa057e7c-47d9-7e93-3660-bc868752d220_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fa057e7c-47d9-7e93-3660-bc868752d220_default_universal.mp4", "uuid": "66c8a651-4a8c-aa44-1af0-088118b9a975" } ], @@ -2699,7 +2810,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/7e44fc1b-44fa-cdda-8491-f8a5bca1cfa3/displayicon.png", "displayName": "電幻普普 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/dfd6f8c8-43b5-2f8b-410e-278a1491c768_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/dfd6f8c8-43b5-2f8b-410e-278a1491c768_default_universal.mp4", "uuid": "7e44fc1b-44fa-cdda-8491-f8a5bca1cfa3" }, { @@ -2707,7 +2818,7 @@ "displayIcon": null, "displayName": "電幻普普 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/307efc8f-4994-5cb5-41f7-9eb7c3ab8988_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/307efc8f-4994-5cb5-41f7-9eb7c3ab8988_default_universal.mp4", "uuid": "c01d91bb-4203-4f78-0b6a-1aae9abb458b" }, { @@ -2715,7 +2826,7 @@ "displayIcon": null, "displayName": "電幻普普 暴徒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ab475181-4799-3545-54aa-e18e1615f2ba_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ab475181-4799-3545-54aa-e18e1615f2ba_default_universal.mp4", "uuid": "084e16e5-4340-618f-09ba-128331f9b8cc" }, { @@ -2723,7 +2834,7 @@ "displayIcon": null, "displayName": "電幻普普 暴徒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/50d495f7-4b39-e737-cd70-448a7316fbfc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/50d495f7-4b39-e737-cd70-448a7316fbfc_default_universal.mp4", "uuid": "7a322cff-4acb-15c4-5006-049655bfa22f" } ], @@ -2748,7 +2859,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/44ecb28b-4e9b-5a0c-336e-66939aed72b1/displayicon.png", "displayName": "虛無時界 暴徒 等級4\n(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/44ecb28b-4e9b-5a0c-336e-66939aed72b1/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/346a84f8-414f-3ea6-b5bb-cabd83d0c419_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/346a84f8-414f-3ea6-b5bb-cabd83d0c419_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/44ecb28b-4e9b-5a0c-336e-66939aed72b1/swatch.png", "uuid": "44ecb28b-4e9b-5a0c-336e-66939aed72b1" }, @@ -2757,7 +2868,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/95246972-4a7c-01f9-16dc-d3aab7cc1b45/displayicon.png", "displayName": "虛無時界 暴徒 等級4\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/95246972-4a7c-01f9-16dc-d3aab7cc1b45/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/729420c3-4605-9f1e-1b05-e2880dbde580_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/729420c3-4605-9f1e-1b05-e2880dbde580_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/95246972-4a7c-01f9-16dc-d3aab7cc1b45/swatch.png", "uuid": "95246972-4a7c-01f9-16dc-d3aab7cc1b45" }, @@ -2766,7 +2877,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/57892cff-49ce-a57e-e657-faa1226b587c/displayicon.png", "displayName": "虛無時界 暴徒 等級4\n(幻彩3 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/57892cff-49ce-a57e-e657-faa1226b587c/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f2cbc664-4db8-2bf9-f98c-9aa9e5a004bc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f2cbc664-4db8-2bf9-f98c-9aa9e5a004bc_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/57892cff-49ce-a57e-e657-faa1226b587c/swatch.png", "uuid": "57892cff-49ce-a57e-e657-faa1226b587c" } @@ -2780,7 +2891,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/59d61899-4573-65ea-0e42-2ea6d324d32b/displayicon.png", "displayName": "虛無時界 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/be38814b-4845-83c0-3e43-d2aa45d3e465_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/be38814b-4845-83c0-3e43-d2aa45d3e465_default_universal.mp4", "uuid": "59d61899-4573-65ea-0e42-2ea6d324d32b" }, { @@ -2788,7 +2899,7 @@ "displayIcon": null, "displayName": "虛無時界 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::SoundEffects", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ca373acf-41a6-f896-da35-4388efe701ce_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ca373acf-41a6-f896-da35-4388efe701ce_default_universal.mp4", "uuid": "6553ba0a-4d44-799e-69cc-a89aae212409" }, { @@ -2796,7 +2907,7 @@ "displayIcon": null, "displayName": "虛無時界 暴徒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d72f024a-4bbc-a2d4-b0ee-6d9e14c90927_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d72f024a-4bbc-a2d4-b0ee-6d9e14c90927_default_universal.mp4", "uuid": "bd2d47b0-42f8-6684-bf01-6c886faff0c8" }, { @@ -2804,7 +2915,7 @@ "displayIcon": null, "displayName": "虛無時界 暴徒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/082fe9c3-4fb8-9b23-b79a-fda02ebd310f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/082fe9c3-4fb8-9b23-b79a-fda02ebd310f_default_universal.mp4", "uuid": "a722bac4-457a-959b-3770-e0b3eaf6528e" } ], @@ -2829,7 +2940,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/eef9e539-48dc-f161-a608-ecb1634d3b6b/displayicon.png", "displayName": "混沌序幕 暴徒 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/eef9e539-48dc-f161-a608-ecb1634d3b6b/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5efd808b-4c7e-fd03-a50e-3094d8a52843_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5efd808b-4c7e-fd03-a50e-3094d8a52843_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/eef9e539-48dc-f161-a608-ecb1634d3b6b/swatch.png", "uuid": "eef9e539-48dc-f161-a608-ecb1634d3b6b" }, @@ -2838,7 +2949,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/9c6107f4-4fbf-0b77-c291-1da85c76894b/displayicon.png", "displayName": "混沌序幕 暴徒 等級4\n(幻彩2 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/9c6107f4-4fbf-0b77-c291-1da85c76894b/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6c05ad00-43f6-9087-56be-3e9d618263ac_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6c05ad00-43f6-9087-56be-3e9d618263ac_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/9c6107f4-4fbf-0b77-c291-1da85c76894b/swatch.png", "uuid": "9c6107f4-4fbf-0b77-c291-1da85c76894b" }, @@ -2847,7 +2958,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/fa0a3567-4a25-1a13-b078-3c97265e3adc/displayicon.png", "displayName": "混沌序幕 暴徒 等級4\n(幻彩3 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/fa0a3567-4a25-1a13-b078-3c97265e3adc/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bb94afe6-462d-938f-f9de-8b85b7511f18_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bb94afe6-462d-938f-f9de-8b85b7511f18_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/fa0a3567-4a25-1a13-b078-3c97265e3adc/swatch.png", "uuid": "fa0a3567-4a25-1a13-b078-3c97265e3adc" } @@ -2861,7 +2972,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/1010fb40-4344-6ec8-2a8a-33bf076339b6/displayicon.png", "displayName": "混沌序幕 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7fa57a20-417f-e674-90e3-c7b359f1aa9f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7fa57a20-417f-e674-90e3-c7b359f1aa9f_default_universal.mp4", "uuid": "1010fb40-4344-6ec8-2a8a-33bf076339b6" }, { @@ -2869,7 +2980,7 @@ "displayIcon": null, "displayName": "混沌序幕 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/72cecd6d-4f72-c3a2-f2f9-3590d2f8fc5a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/72cecd6d-4f72-c3a2-f2f9-3590d2f8fc5a_default_universal.mp4", "uuid": "273db50c-41fd-99eb-89fa-d0969ef739bb" }, { @@ -2877,7 +2988,7 @@ "displayIcon": null, "displayName": "混沌序幕 暴徒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/adc204d6-43c2-4f87-f0d7-e28ffc24cb17_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/adc204d6-43c2-4f87-f0d7-e28ffc24cb17_default_universal.mp4", "uuid": "0b2b3fb5-415d-ed9e-d865-5aa90a28894e" }, { @@ -2885,7 +2996,7 @@ "displayIcon": null, "displayName": "混沌序幕 暴徒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c55cd24b-4e51-cf85-7c5d-75a66c6612bb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c55cd24b-4e51-cf85-7c5d-75a66c6612bb_default_universal.mp4", "uuid": "a4021006-49be-e1f3-b2e1-cc8635694d0c" } ], @@ -2942,7 +3053,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/b3d3ff38-4202-20d8-2f41-c783477e5636/displayicon.png", "displayName": "至尊龍燄 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7cf0f6c2-af1e-47db-9d85-f1a130267cc7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7cf0f6c2-af1e-47db-9d85-f1a130267cc7_default_universal.mp4", "uuid": "b3d3ff38-4202-20d8-2f41-c783477e5636" }, { @@ -2950,7 +3061,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d86e4684-47d3-9a2f-9bd4-01ae3fd3e183/displayicon.png", "displayName": "至尊龍燄 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/05c87353-f55c-4ad6-aa65-f3335dbf3a5a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/05c87353-f55c-4ad6-aa65-f3335dbf3a5a_default_universal.mp4", "uuid": "d86e4684-47d3-9a2f-9bd4-01ae3fd3e183" }, { @@ -2958,7 +3069,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/77569f90-4e7f-7d91-bd18-2aa12bdba709/displayicon.png", "displayName": "至尊龍燄 暴徒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f41600f0-4e3b-40f8-88cd-605cc2d00354_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f41600f0-4e3b-40f8-88cd-605cc2d00354_default_universal.mp4", "uuid": "77569f90-4e7f-7d91-bd18-2aa12bdba709" }, { @@ -2966,7 +3077,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4fb025db-471f-3891-6e30-b98866abb2f9/displayicon.png", "displayName": "至尊龍燄 暴徒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/71127731-9ce5-4f7a-b9ae-dc55dfe7d9b4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/71127731-9ce5-4f7a-b9ae-dc55dfe7d9b4_default_universal.mp4", "uuid": "4fb025db-471f-3891-6e30-b98866abb2f9" } ], @@ -2996,7 +3107,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/becdafdf-4d4b-0a8c-75d1-b8908db15ce5/displayicon.png", "displayName": "永恆之沙 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/feff3154-42a2-bcbb-0baf-a694c7ca36f0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/feff3154-42a2-bcbb-0baf-a694c7ca36f0_default_universal.mp4", "uuid": "becdafdf-4d4b-0a8c-75d1-b8908db15ce5" } ], @@ -3111,7 +3222,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/5d94fbe1-434e-990d-1d51-2ca483c3abe4/displayicon.png", "displayName": "棄王遺思 暴徒 等級4\n(幻彩1 金色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/5d94fbe1-434e-990d-1d51-2ca483c3abe4/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c083e056-42ff-b651-9a38-53a0dce9c3ff_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c083e056-42ff-b651-9a38-53a0dce9c3ff_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/5d94fbe1-434e-990d-1d51-2ca483c3abe4/swatch.png", "uuid": "5d94fbe1-434e-990d-1d51-2ca483c3abe4" } @@ -3125,7 +3236,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/851b390a-4852-66bd-8b72-4f96f0919710/displayicon.png", "displayName": "棄王遺思 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b785acbe-4c0b-a603-788f-6bac0184de67_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b785acbe-4c0b-a603-788f-6bac0184de67_default_universal.mp4", "uuid": "851b390a-4852-66bd-8b72-4f96f0919710" }, { @@ -3133,7 +3244,7 @@ "displayIcon": null, "displayName": "棄王遺思 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/99b2d177-4fbe-d72c-58d7-e3a64036154b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/99b2d177-4fbe-d72c-58d7-e3a64036154b_default_universal.mp4", "uuid": "bf44b39a-4f54-a919-6ed8-b5b016cf16f2" }, { @@ -3141,7 +3252,7 @@ "displayIcon": null, "displayName": "棄王遺思 暴徒 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/094abe84-4667-403b-f11a-3e80f45a6c0e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/094abe84-4667-403b-f11a-3e80f45a6c0e_default_universal.mp4", "uuid": "e578e7ca-4066-331e-fd72-80855afa9f1f" }, { @@ -3149,7 +3260,7 @@ "displayIcon": null, "displayName": "棄王遺思 暴徒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ed8f7031-42d2-3eac-75c4-4fac5a8096b5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ed8f7031-42d2-3eac-75c4-4fac5a8096b5_default_universal.mp4", "uuid": "9ed2bd1c-46b9-fdf5-b445-5f91d82fc441" } ], @@ -3356,7 +3467,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c9678d8c-4327-f397-b0ec-dca3c3d6fb15/displayicon.png", "displayName": "紫金狂潮 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d9fe3b9b-6d9e-451f-84bd-b85d7f91a106_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d9fe3b9b-6d9e-451f-84bd-b85d7f91a106_default_universal.mp4", "uuid": "c9678d8c-4327-f397-b0ec-dca3c3d6fb15" }, { @@ -3364,7 +3475,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c6f9c7ef-4a35-fa14-c9ed-bd80e37be826/displayicon.png", "displayName": "紫金狂潮 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b3ac314b-100a-4822-8464-e0c861ca9171_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b3ac314b-100a-4822-8464-e0c861ca9171_default_universal.mp4", "uuid": "c6f9c7ef-4a35-fa14-c9ed-bd80e37be826" }, { @@ -3372,7 +3483,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/fc332008-475f-5555-0155-4cb3bce714ff/displayicon.png", "displayName": "紫金狂潮 暴徒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3dce5c84-8554-4fba-aaa1-af725779014c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3dce5c84-8554-4fba-aaa1-af725779014c_default_universal.mp4", "uuid": "fc332008-475f-5555-0155-4cb3bce714ff" }, { @@ -3380,7 +3491,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/22821a32-4e04-ad4a-1893-95904c08b264/displayicon.png", "displayName": "紫金狂潮 暴徒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/97f7aa62-ede2-4e34-b5f8-efa798be6e86_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/97f7aa62-ede2-4e34-b5f8-efa798be6e86_default_universal.mp4", "uuid": "22821a32-4e04-ad4a-1893-95904c08b264" } ], @@ -3495,7 +3606,7 @@ "displayIcon": null, "displayName": "永垂不朽 暴徒\n(幻彩1 此生)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/f66a6f0f-4047-3f33-4af5-cea637485304/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6957b4ef-49cd-aab2-5a46-a99a93cec612_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6957b4ef-49cd-aab2-5a46-a99a93cec612_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/f66a6f0f-4047-3f33-4af5-cea637485304/swatch.png", "uuid": "f66a6f0f-4047-3f33-4af5-cea637485304" }, @@ -3504,7 +3615,7 @@ "displayIcon": null, "displayName": "永垂不朽 暴徒\n(幻彩2 永恆)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/9a387542-4b89-e61d-b9d2-c99c44995b71/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/10a8f2da-4afa-4b83-c87c-4fb5773bcf72_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/10a8f2da-4afa-4b83-c87c-4fb5773bcf72_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/9a387542-4b89-e61d-b9d2-c99c44995b71/swatch.png", "uuid": "9a387542-4b89-e61d-b9d2-c99c44995b71" } @@ -3518,7 +3629,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/a2a15c4e-4102-41bd-102d-378dec6cee7f/displayicon.png", "displayName": "永垂不朽 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4fbb153c-48a9-01ea-d18c-a39f53a26e4b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4fbb153c-48a9-01ea-d18c-a39f53a26e4b_default_universal.mp4", "uuid": "a2a15c4e-4102-41bd-102d-378dec6cee7f" } ], @@ -3608,7 +3719,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/aae492eb-4d6d-097d-1d47-4fa31ced9751/displayicon.png", "displayName": "紅蓮猛獸 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f8b021a4-49ae-375c-19f9-cda78c945c40_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f8b021a4-49ae-375c-19f9-cda78c945c40_default_universal.mp4", "uuid": "aae492eb-4d6d-097d-1d47-4fa31ced9751" }, { @@ -3616,7 +3727,7 @@ "displayIcon": null, "displayName": "紅蓮猛獸 暴徒 等級2:每次擊殺敵人時,都會播放專屬視覺特效及音效。", "levelItem": "EEquippableSkinLevelItem::KillEffect", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5be39822-4027-8a35-009d-4ab6709c578a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5be39822-4027-8a35-009d-4ab6709c578a_default_universal.mp4", "uuid": "7c3e8050-40ce-9a75-c1ef-7fa270990ceb" } ], @@ -3641,7 +3752,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e4726462-4cae-b5ba-efe3-21bed0890ecd/displayicon.png", "displayName": "離子聖芒 暴徒 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e4726462-4cae-b5ba-efe3-21bed0890ecd/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1cfb464c-4714-ac0c-df42-45ab73d613c4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1cfb464c-4714-ac0c-df42-45ab73d613c4_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e4726462-4cae-b5ba-efe3-21bed0890ecd/swatch.png", "uuid": "e4726462-4cae-b5ba-efe3-21bed0890ecd" }, @@ -3650,7 +3761,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e58db59a-43ec-36dc-a646-98a932ed6094/displayicon.png", "displayName": "離子聖芒 暴徒 等級4\n(幻彩2 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e58db59a-43ec-36dc-a646-98a932ed6094/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6f47ccae-4c11-e8bc-dc42-c3b6a4c48c47_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6f47ccae-4c11-e8bc-dc42-c3b6a4c48c47_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e58db59a-43ec-36dc-a646-98a932ed6094/swatch.png", "uuid": "e58db59a-43ec-36dc-a646-98a932ed6094" }, @@ -3659,7 +3770,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/a7bd562d-4a2c-b272-f46b-f5892745a38f/displayicon.png", "displayName": "離子聖芒 暴徒 等級4\n(幻彩3 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/a7bd562d-4a2c-b272-f46b-f5892745a38f/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b722f294-41aa-054e-9ead-c5be5a2b9c3c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b722f294-41aa-054e-9ead-c5be5a2b9c3c_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/a7bd562d-4a2c-b272-f46b-f5892745a38f/swatch.png", "uuid": "a7bd562d-4a2c-b272-f46b-f5892745a38f" } @@ -3673,7 +3784,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/a8c10620-46a8-794e-be55-a0a13edb8d44/displayicon.png", "displayName": "離子聖芒 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0293205a-464d-7780-1136-f2bed7147318_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0293205a-464d-7780-1136-f2bed7147318_default_universal.mp4", "uuid": "a8c10620-46a8-794e-be55-a0a13edb8d44" }, { @@ -3681,7 +3792,7 @@ "displayIcon": null, "displayName": "離子聖芒 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::SoundEffects", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/138ccbe6-4797-445d-c827-58bfd3099b07_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/138ccbe6-4797-445d-c827-58bfd3099b07_default_universal.mp4", "uuid": "3db5cce4-41e7-b538-4d0d-82bd64362480" }, { @@ -3689,7 +3800,7 @@ "displayIcon": null, "displayName": "離子聖芒 暴徒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a4700f38-4f53-b976-903c-8d9fdee3fea1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a4700f38-4f53-b976-903c-8d9fdee3fea1_default_universal.mp4", "uuid": "fefee60e-4270-0ea8-6187-3aaf57196b05" }, { @@ -3697,7 +3808,7 @@ "displayIcon": null, "displayName": "離子聖芒 暴徒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e493f4db-4dce-f9e1-fdbb-4d8123bcbd85_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e493f4db-4dce-f9e1-fdbb-4d8123bcbd85_default_universal.mp4", "uuid": "cc63e209-471d-26e8-4b8c-b9aba3bb1b32" } ], @@ -3705,6 +3816,87 @@ "uuid": "596ce51d-40e3-dc21-b02d-b08d070a7883", "wallpaper": "https://media.valorant-api.com/weaponskins/596ce51d-40e3-dc21-b02d-b08d070a7883/wallpaper.png" }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/Oni2/AK_Oni2_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/Oni2/Chromas/Standard/AK_Oni2_Standard_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 暴徒", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/7bd85530-4a2a-a463-733c-47a4daac3e91/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/7bd85530-4a2a-a463-733c-47a4daac3e91/swatch.png", + "uuid": "7bd85530-4a2a-a463-733c-47a4daac3e91" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/Oni2/Chromas/v1/AK_Oni2_v1_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 暴徒 等級4\n(幻彩1 浮雲)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/3720bc69-4135-e77a-2e44-b4ad3cae425e/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/189a79ca-4e5f-0e05-08f2-5fa4c097a37c_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/3720bc69-4135-e77a-2e44-b4ad3cae425e/swatch.png", + "uuid": "3720bc69-4135-e77a-2e44-b4ad3cae425e" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/Oni2/Chromas/v2/AK_Oni2_v2_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 暴徒 等級4\n(幻彩2 落花)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/95bae138-42c7-7ba8-bf72-c58e546cb96a/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/39e0a90c-4753-4556-b199-2783940be716_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/95bae138-42c7-7ba8-bf72-c58e546cb96a/swatch.png", + "uuid": "95bae138-42c7-7ba8-bf72-c58e546cb96a" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/Oni2/Chromas/v3/AK_Oni2_v3_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 暴徒 等級4\n(幻彩3 飛燕)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/5164e868-4da5-8278-1f37-c18719981c84/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/570459a5-4ed5-2ea8-3f52-8e9c67f6ceba_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/5164e868-4da5-8278-1f37-c18719981c84/swatch.png", + "uuid": "5164e868-4da5-8278-1f37-c18719981c84" + } + ], + "contentTierUuid": "60bca009-4182-7998-dee7-b8a2558dc369", + "displayIcon": "https://media.valorant-api.com/weaponskins/7156c2ee-41fc-f8f4-d457-ebb287965c08/displayicon.png", + "displayName": "惡鬼 暴徒", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/Oni2/Levels/AK_Oni2_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/9246f649-40b1-4077-31d1-be856acf5dd9/displayicon.png", + "displayName": "惡鬼 暴徒", + "levelItem": null, + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9f465527-4e35-f7e1-e878-c6a01dd255d8_default_universal.mp4", + "uuid": "9246f649-40b1-4077-31d1-be856acf5dd9" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/Oni2/Levels/AK_Oni2_Lv2_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 暴徒 等級2", + "levelItem": "EEquippableSkinLevelItem::SoundEffects", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3d92dbfe-47d1-d043-0b69-ea8c9e6b35fa_default_universal.mp4", + "uuid": "497c9950-4a72-462f-201e-aba4f9590cfd" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/Oni2/Levels/AK_Oni2_Lv3_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 暴徒 等級3", + "levelItem": "EEquippableSkinLevelItem::VFX", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f2a3d1ea-43bf-2380-28d2-3da195d309ad_default_universal.mp4", + "uuid": "6e47ea5c-4b5c-bfc9-daed-c2a3094b09e3" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/Oni2/Levels/AK_Oni2_Lv4_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 暴徒 等級4", + "levelItem": "EEquippableSkinLevelItem::Finisher", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/56ce716e-4f5a-9a0e-a2a2-cab8476a59d9_default_universal.mp4", + "uuid": "108af6c5-406f-848a-3ad7-45a1341257b2" + } + ], + "themeUuid": "a547897d-4bd4-7c77-f5e6-55973f0e89ef", + "uuid": "7156c2ee-41fc-f8f4-d457-ebb287965c08", + "wallpaper": "https://media.valorant-api.com/weaponskins/7156c2ee-41fc-f8f4-d457-ebb287965c08/wallpaper.png" + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/Permafrost/AK_Permafrost_PrimaryAsset", "chromas": [ @@ -3735,7 +3927,7 @@ "displayIcon": null, "displayName": "深度凍結 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b35cb102-4e51-19f5-7f44-dfb582a74234_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b35cb102-4e51-19f5-7f44-dfb582a74234_default_universal.mp4", "uuid": "d6f6111f-467a-addd-25fa-f9ac9d01d8f9" }, { @@ -3743,7 +3935,7 @@ "displayIcon": null, "displayName": "深度凍結 暴徒 等級3", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8a4ae5e4-454e-069f-baea-5991e7f7620b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8a4ae5e4-454e-069f-baea-5991e7f7620b_default_universal.mp4", "uuid": "14f8c385-4ed1-e5a1-f129-6c8914bd16af" } ], @@ -3841,6 +4033,87 @@ "uuid": "9c808029-48f5-ce89-21c5-88bf4228d2ed", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/AK_SOL_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Chromas/Standard/AK_SOL_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/6f337971-40b7-c94d-0f24-36869af654c6/displayicon.png", + "displayName": "光之哨兵 暴徒", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/6f337971-40b7-c94d-0f24-36869af654c6/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/6f337971-40b7-c94d-0f24-36869af654c6/swatch.png", + "uuid": "6f337971-40b7-c94d-0f24-36869af654c6" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Chromas/v1/AK_SOL_v1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/31c816c4-4e19-9a57-4103-4194723eb6f1/displayicon.png", + "displayName": "光之哨兵 暴徒 等級4\n(幻彩1 粉色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/31c816c4-4e19-9a57-4103-4194723eb6f1/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/599c0012-4ebc-1803-aac7-32a191706fc7_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/31c816c4-4e19-9a57-4103-4194723eb6f1/swatch.png", + "uuid": "31c816c4-4e19-9a57-4103-4194723eb6f1" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Chromas/v2/AK_SOL_v2_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/274e2c81-4bcf-3689-c22b-41aa05b1329c/displayicon.png", + "displayName": "光之哨兵 暴徒 等級4\n(幻彩2 紅/綠色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/274e2c81-4bcf-3689-c22b-41aa05b1329c/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f8d24428-4dfe-55e5-3231-8ebf694b58d8_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/274e2c81-4bcf-3689-c22b-41aa05b1329c/swatch.png", + "uuid": "274e2c81-4bcf-3689-c22b-41aa05b1329c" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Chromas/v3/AK_SOL_v3_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/70531bdc-420a-c3e0-6207-24a9a830da5e/displayicon.png", + "displayName": "光之哨兵 暴徒 等級4\n(幻彩3 藍/紫色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/70531bdc-420a-c3e0-6207-24a9a830da5e/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5c211112-4290-ea25-27f2-928a46304070_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/70531bdc-420a-c3e0-6207-24a9a830da5e/swatch.png", + "uuid": "70531bdc-420a-c3e0-6207-24a9a830da5e" + } + ], + "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", + "displayIcon": "https://media.valorant-api.com/weaponskins/e8df3725-40de-b8ec-77bd-62a989685a85/displayicon.png", + "displayName": "光之哨兵 暴徒", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Levels/AK_SOL_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/968efd06-4549-65f4-9fb1-3f90d612e428/displayicon.png", + "displayName": "光之哨兵 暴徒", + "levelItem": null, + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ac9c4542-485d-6816-410e-9299ff3e4ff5_default_universal.mp4", + "uuid": "968efd06-4549-65f4-9fb1-3f90d612e428" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Levels/AK_SOL_Lv2_PrimaryAsset", + "displayIcon": null, + "displayName": "光之哨兵 暴徒 等級2", + "levelItem": "EEquippableSkinLevelItem::VFX", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/02e85b32-4ecb-d810-5c83-0498ac26b64e_default_universal.mp4", + "uuid": "bfa45341-4338-5ebd-3bec-8d95f6c6feb4" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Levels/AK_SOL_Lv3_PrimaryAsset", + "displayIcon": null, + "displayName": "光之哨兵 暴徒 等級3", + "levelItem": "EEquippableSkinLevelItem::Animation", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7db6f6bc-4507-e2f8-779e-7db7e26ca038_default_universal.mp4", + "uuid": "d8b58c68-45e6-65f4-01bd-6baaeeef667f" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Levels/AK_SOL_Lv4_PrimaryAsset", + "displayIcon": null, + "displayName": "光之哨兵 暴徒 等級4", + "levelItem": "EEquippableSkinLevelItem::Finisher", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5aafdf83-4eee-6c15-5b39-268e0057a505_default_universal.mp4", + "uuid": "e0dfb9d6-42a4-1463-cc80-00ac9df10c9e" + } + ], + "themeUuid": "0c187570-4eff-2924-5e98-8bbb96b0216a", + "uuid": "e8df3725-40de-b8ec-77bd-62a989685a85", + "wallpaper": "https://media.valorant-api.com/weaponskins/e8df3725-40de-b8ec-77bd-62a989685a85/wallpaper.png" + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/Sakura/AK_Sakura_PrimaryAsset", "chromas": [ @@ -3931,87 +4204,6 @@ "uuid": "6b58163f-4426-8abf-8f55-f79e3a2045df", "wallpaper": null }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/AK_SOL_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Chromas/Standard/AK_SOL_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/6f337971-40b7-c94d-0f24-36869af654c6/displayicon.png", - "displayName": "光之哨兵 暴徒", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/6f337971-40b7-c94d-0f24-36869af654c6/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/6f337971-40b7-c94d-0f24-36869af654c6/swatch.png", - "uuid": "6f337971-40b7-c94d-0f24-36869af654c6" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Chromas/v1/AK_SOL_v1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/31c816c4-4e19-9a57-4103-4194723eb6f1/displayicon.png", - "displayName": "光之哨兵 暴徒 等級4\n(幻彩1 粉色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/31c816c4-4e19-9a57-4103-4194723eb6f1/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/599c0012-4ebc-1803-aac7-32a191706fc7_default_universal.mp4", - "swatch": "https://media.valorant-api.com/weaponskinchromas/31c816c4-4e19-9a57-4103-4194723eb6f1/swatch.png", - "uuid": "31c816c4-4e19-9a57-4103-4194723eb6f1" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Chromas/v2/AK_SOL_v2_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/274e2c81-4bcf-3689-c22b-41aa05b1329c/displayicon.png", - "displayName": "光之哨兵 暴徒 等級4\n(幻彩2 紅/綠色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/274e2c81-4bcf-3689-c22b-41aa05b1329c/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f8d24428-4dfe-55e5-3231-8ebf694b58d8_default_universal.mp4", - "swatch": "https://media.valorant-api.com/weaponskinchromas/274e2c81-4bcf-3689-c22b-41aa05b1329c/swatch.png", - "uuid": "274e2c81-4bcf-3689-c22b-41aa05b1329c" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Chromas/v3/AK_SOL_v3_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/70531bdc-420a-c3e0-6207-24a9a830da5e/displayicon.png", - "displayName": "光之哨兵 暴徒 等級4\n(幻彩3 藍/紫色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/70531bdc-420a-c3e0-6207-24a9a830da5e/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5c211112-4290-ea25-27f2-928a46304070_default_universal.mp4", - "swatch": "https://media.valorant-api.com/weaponskinchromas/70531bdc-420a-c3e0-6207-24a9a830da5e/swatch.png", - "uuid": "70531bdc-420a-c3e0-6207-24a9a830da5e" - } - ], - "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", - "displayIcon": "https://media.valorant-api.com/weaponskins/e8df3725-40de-b8ec-77bd-62a989685a85/displayicon.png", - "displayName": "光之哨兵 暴徒", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Levels/AK_SOL_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/968efd06-4549-65f4-9fb1-3f90d612e428/displayicon.png", - "displayName": "光之哨兵 暴徒", - "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ac9c4542-485d-6816-410e-9299ff3e4ff5_default_universal.mp4", - "uuid": "968efd06-4549-65f4-9fb1-3f90d612e428" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Levels/AK_SOL_Lv2_PrimaryAsset", - "displayIcon": null, - "displayName": "光之哨兵 暴徒 等級2", - "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/02e85b32-4ecb-d810-5c83-0498ac26b64e_default_universal.mp4", - "uuid": "bfa45341-4338-5ebd-3bec-8d95f6c6feb4" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Levels/AK_SOL_Lv3_PrimaryAsset", - "displayIcon": null, - "displayName": "光之哨兵 暴徒 等級3", - "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7db6f6bc-4507-e2f8-779e-7db7e26ca038_default_universal.mp4", - "uuid": "d8b58c68-45e6-65f4-01bd-6baaeeef667f" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/SOL/Levels/AK_SOL_Lv4_PrimaryAsset", - "displayIcon": null, - "displayName": "光之哨兵 暴徒 等級4", - "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5aafdf83-4eee-6c15-5b39-268e0057a505_default_universal.mp4", - "uuid": "e0dfb9d6-42a4-1463-cc80-00ac9df10c9e" - } - ], - "themeUuid": "0c187570-4eff-2924-5e98-8bbb96b0216a", - "uuid": "e8df3725-40de-b8ec-77bd-62a989685a85", - "wallpaper": "https://media.valorant-api.com/weaponskins/e8df3725-40de-b8ec-77bd-62a989685a85/wallpaper.png" - }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/AK/Soulstealer/AK_Soulstealer_PrimaryAsset", "chromas": [ @@ -4061,7 +4253,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ba42fe63-457a-78ce-4499-47950a698129/displayicon.png", "displayName": "掠奪印象 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a6ee2555-4e3a-049e-916a-7ca853dd4568_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a6ee2555-4e3a-049e-916a-7ca853dd4568_default_universal.mp4", "uuid": "ba42fe63-457a-78ce-4499-47950a698129" }, { @@ -4069,7 +4261,7 @@ "displayIcon": null, "displayName": "掠奪印象 暴徒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/78146b6e-49fc-115d-995e-309c5f18e3fd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/78146b6e-49fc-115d-995e-309c5f18e3fd_default_universal.mp4", "uuid": "6f9ba692-4618-d0e6-3099-42b4dc5fce89" }, { @@ -4077,7 +4269,7 @@ "displayIcon": null, "displayName": "掠奪印象 暴徒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b21243ec-4cf0-37c0-43b4-15bf84de9d1d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b21243ec-4cf0-37c0-43b4-15bf84de9d1d_default_universal.mp4", "uuid": "98597b95-451c-70cf-46fb-31b4c5a54394" }, { @@ -4085,7 +4277,7 @@ "displayIcon": null, "displayName": "掠奪印象 暴徒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d262fccc-465a-2da6-74ac-049ef3b3f759_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d262fccc-465a-2da6-74ac-049ef3b3f759_default_universal.mp4", "uuid": "8c282914-446a-3e99-095a-cd97df201c8b" } ], @@ -4175,7 +4367,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/17f044eb-4016-5f86-f4f7-1095cc292a15/displayicon.png", "displayName": "泰坦刺甲 暴徒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/96517680-434a-ea0e-4b2e-da94443a1b0d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/96517680-434a-ea0e-4b2e-da94443a1b0d_default_universal.mp4", "uuid": "17f044eb-4016-5f86-f4f7-1095cc292a15" } ], @@ -4377,7 +4569,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/49451aa7-4a30-3d0e-2cf9-a19afc966041/displayicon.png", "displayName": "異星霸主 鬥牛犬 等級4\n(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/49451aa7-4a30-3d0e-2cf9-a19afc966041/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a561849f-4642-4683-f7e4-1986bf2b646a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a561849f-4642-4683-f7e4-1986bf2b646a_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/49451aa7-4a30-3d0e-2cf9-a19afc966041/swatch.png", "uuid": "49451aa7-4a30-3d0e-2cf9-a19afc966041" }, @@ -4386,7 +4578,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/f11c775b-4ddf-1596-3cdb-4e826ec0e1f4/displayicon.png", "displayName": "異星霸主 鬥牛犬 等級4\n(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/f11c775b-4ddf-1596-3cdb-4e826ec0e1f4/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/dacb1223-4bd9-9fab-c3aa-cf8c86691312_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/dacb1223-4bd9-9fab-c3aa-cf8c86691312_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/f11c775b-4ddf-1596-3cdb-4e826ec0e1f4/swatch.png", "uuid": "f11c775b-4ddf-1596-3cdb-4e826ec0e1f4" }, @@ -4395,7 +4587,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/19d84374-4647-33ad-50f8-efb80f8eda7c/displayicon.png", "displayName": "異星霸主 鬥牛犬 等級4\n(幻彩3 銀色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/19d84374-4647-33ad-50f8-efb80f8eda7c/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/183efe28-4e42-6ed5-7d1a-aaac754db3c7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/183efe28-4e42-6ed5-7d1a-aaac754db3c7_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/19d84374-4647-33ad-50f8-efb80f8eda7c/swatch.png", "uuid": "19d84374-4647-33ad-50f8-efb80f8eda7c" } @@ -4406,18 +4598,18 @@ "levels": [ { "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Antares/Levels/Burst_Antares_Lv1_PrimaryAsset", - "displayIcon": null, + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/45e51d17-480a-6e28-cdd2-459d7758bea8/displayicon.png", "displayName": "異星霸主 鬥牛犬", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/15e02d4a-4f5a-f81c-006f-4c88a63ef529_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/15e02d4a-4f5a-f81c-006f-4c88a63ef529_default_universal.mp4", "uuid": "45e51d17-480a-6e28-cdd2-459d7758bea8" }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Antares/Levels/Burst_Antares_Lv2_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5df3789a-47df-8dc2-91bb-41aa6335346d/displayicon.png", + "displayIcon": null, "displayName": "異星霸主 鬥牛犬 等級2", "levelItem": "EEquippableSkinLevelItem::SoundEffects", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0d8643c1-44d0-1abc-fbb8-92bc006fc5c6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0d8643c1-44d0-1abc-fbb8-92bc006fc5c6_default_universal.mp4", "uuid": "5df3789a-47df-8dc2-91bb-41aa6335346d" }, { @@ -4425,7 +4617,7 @@ "displayIcon": null, "displayName": "異星霸主 鬥牛犬 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a3aca16e-4b9e-5c6f-2b52-dc812ad9b8f7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a3aca16e-4b9e-5c6f-2b52-dc812ad9b8f7_default_universal.mp4", "uuid": "e9e02c90-43c9-f33d-7f11-16a14f51149c" }, { @@ -4433,7 +4625,7 @@ "displayIcon": null, "displayName": "異星霸主 鬥牛犬 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/792f703a-481e-1389-e482-3e8cf8091191_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/792f703a-481e-1389-e482-3e8cf8091191_default_universal.mp4", "uuid": "1dcac15f-4bc2-b6b8-bada-f4b0f2cd088c" } ], @@ -4518,7 +4710,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/ebdec31c-4241-295f-9647-97ae70639468/displayicon.png", "displayName": "光炫聲譜 鬥牛犬 等級4\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/ebdec31c-4241-295f-9647-97ae70639468/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bd0c312e-48f2-435c-f357-8eb4d2e6ae6d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bd0c312e-48f2-435c-f357-8eb4d2e6ae6d_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/ebdec31c-4241-295f-9647-97ae70639468/swatch.png", "uuid": "ebdec31c-4241-295f-9647-97ae70639468" }, @@ -4527,7 +4719,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/a3ade5a6-4c44-83f5-d26d-4eb09dcf65f5/displayicon.png", "displayName": "光炫聲譜 鬥牛犬 等級4\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/a3ade5a6-4c44-83f5-d26d-4eb09dcf65f5/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/39606be5-4f42-c771-4d90-77a39d102ec9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/39606be5-4f42-c771-4d90-77a39d102ec9_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/a3ade5a6-4c44-83f5-d26d-4eb09dcf65f5/swatch.png", "uuid": "a3ade5a6-4c44-83f5-d26d-4eb09dcf65f5" }, @@ -4536,7 +4728,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/374c6007-431e-a9d9-279a-f7a9830e50e1/displayicon.png", "displayName": "光炫聲譜 鬥牛犬 等級4\n(幻彩3 紫/粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/374c6007-431e-a9d9-279a-f7a9830e50e1/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fa7bb692-4d59-7576-d542-d1b0ece0b6ad_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fa7bb692-4d59-7576-d542-d1b0ece0b6ad_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/374c6007-431e-a9d9-279a-f7a9830e50e1/swatch.png", "uuid": "374c6007-431e-a9d9-279a-f7a9830e50e1" } @@ -4550,7 +4742,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/43854c54-4263-571c-9be6-52b6d50d3190/displayicon.png", "displayName": "光炫聲譜 鬥牛犬", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e4def0bf-449b-f4e9-a678-8c8d47c0e28b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e4def0bf-449b-f4e9-a678-8c8d47c0e28b_default_universal.mp4", "uuid": "43854c54-4263-571c-9be6-52b6d50d3190" }, { @@ -4566,7 +4758,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/674ca080-4624-3550-d1f3-dfac17d40918/displayicon.png", "displayName": "光炫聲譜 鬥牛犬 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/622bdacc-4827-c471-f72e-8c861a80201d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/622bdacc-4827-c471-f72e-8c861a80201d_default_universal.mp4", "uuid": "674ca080-4624-3550-d1f3-dfac17d40918" }, { @@ -4574,7 +4766,7 @@ "displayIcon": null, "displayName": "光炫聲譜 鬥牛犬 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c415f590-41f9-30ca-53fb-beaeac071832_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c415f590-41f9-30ca-53fb-beaeac071832_default_universal.mp4", "uuid": "c6ad47ec-4078-2902-fdfe-2eae352bf4f4" } ], @@ -4748,7 +4940,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4a5ad8cd-4684-a47c-b393-ce9c6760d21a/displayicon.png", "displayName": "電幻普普 鬥牛犬", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9141f4e9-478f-46eb-a428-c32a67826aa6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9141f4e9-478f-46eb-a428-c32a67826aa6_default_universal.mp4", "uuid": "4a5ad8cd-4684-a47c-b393-ce9c6760d21a" }, { @@ -4756,7 +4948,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/44c5b5cc-4931-b4af-1a4a-17ab9ec2b89e/displayicon.png", "displayName": "電幻普普 鬥牛犬 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/151e7224-3c84-45d1-8b20-6e55535f6d31_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/151e7224-3c84-45d1-8b20-6e55535f6d31_default_universal.mp4", "uuid": "44c5b5cc-4931-b4af-1a4a-17ab9ec2b89e" }, { @@ -4764,7 +4956,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/49ea5740-4731-01c5-a68e-cba6b86b1049/displayicon.png", "displayName": "電幻普普 鬥牛犬 等級3", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/83d1bb88-22de-480e-a6d2-bc05e2ea70bb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/83d1bb88-22de-480e-a6d2-bc05e2ea70bb_default_universal.mp4", "uuid": "49ea5740-4731-01c5-a68e-cba6b86b1049" }, { @@ -4772,7 +4964,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d83d2283-4c50-ee72-3a8b-51b6a05aed15/displayicon.png", "displayName": "電幻普普 鬥牛犬 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0f7a9f4a-4782-4783-8d7e-7da7c56384d4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0f7a9f4a-4782-4783-8d7e-7da7c56384d4_default_universal.mp4", "uuid": "d83d2283-4c50-ee72-3a8b-51b6a05aed15" } ], @@ -5031,7 +5223,7 @@ "displayIcon": null, "displayName": "永垂不朽 鬥牛犬\n(幻彩1 此生)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/24852266-4f07-5d44-4e2b-97ae8592199d/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1e873971-44d1-1656-f4da-ecb0ec6185e6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1e873971-44d1-1656-f4da-ecb0ec6185e6_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/24852266-4f07-5d44-4e2b-97ae8592199d/swatch.png", "uuid": "24852266-4f07-5d44-4e2b-97ae8592199d" }, @@ -5040,7 +5232,7 @@ "displayIcon": null, "displayName": "永垂不朽 鬥牛犬\n(幻彩2 永恆)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e10d44b1-49fb-a8a3-71c4-baa3cd117beb/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7bf72e9c-4a1d-93a7-3da0-5285b669427f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7bf72e9c-4a1d-93a7-3da0-5285b669427f_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e10d44b1-49fb-a8a3-71c4-baa3cd117beb/swatch.png", "uuid": "e10d44b1-49fb-a8a3-71c4-baa3cd117beb" } @@ -5054,7 +5246,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/47815b56-43d7-1312-8b3e-5da445f71e31/displayicon.png", "displayName": "永垂不朽 鬥牛犬", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/73834b16-492d-29c2-d2b4-d699f533b7a4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/73834b16-492d-29c2-d2b4-d699f533b7a4_default_universal.mp4", "uuid": "47815b56-43d7-1312-8b3e-5da445f71e31" } ], @@ -5093,20 +5285,101 @@ "wallpaper": null }, { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Permafrost/Burst_Permafrost_PrimaryAsset", + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Oni2/Burst_Oni2_PrimaryAsset", "chromas": [ { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Permafrost/Chromas/Standard/Burst_Permafrost_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/b4b15d7b-42d2-c6f5-d52d-a794df03b882/displayicon.png", - "displayName": "深度凍結 鬥牛犬", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/b4b15d7b-42d2-c6f5-d52d-a794df03b882/fullrender.png", + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Oni2/Chromas/Standard/Burst_Oni2_Standard_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 鬥牛犬", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/bd5e78fd-4e38-4229-a241-bd8505ed505b/fullrender.png", "streamedVideo": null, - "swatch": null, - "uuid": "b4b15d7b-42d2-c6f5-d52d-a794df03b882" - } - ], - "contentTierUuid": "60bca009-4182-7998-dee7-b8a2558dc369", - "displayIcon": "https://media.valorant-api.com/weaponskins/d832f94c-4490-176e-c625-c3a1130cea19/displayicon.png", + "swatch": "https://media.valorant-api.com/weaponskinchromas/bd5e78fd-4e38-4229-a241-bd8505ed505b/swatch.png", + "uuid": "bd5e78fd-4e38-4229-a241-bd8505ed505b" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Oni2/Chromas/v1/Burst_Oni2_v1_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 鬥牛犬 等級4\n(幻彩1 浮雲)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/9d2f1dca-476d-0c6c-3151-f6ae61084e50/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/87b836a4-45e1-7e7a-a1d9-e694a7801f11_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/9d2f1dca-476d-0c6c-3151-f6ae61084e50/swatch.png", + "uuid": "9d2f1dca-476d-0c6c-3151-f6ae61084e50" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Oni2/Chromas/v2/Burst_Oni2_v2_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 鬥牛犬 等級4\n(幻彩2 落花)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/23e081fa-4061-75de-c081-96b4b5a7c01e/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f6e746c5-4147-d808-0977-0198bae78d56_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/23e081fa-4061-75de-c081-96b4b5a7c01e/swatch.png", + "uuid": "23e081fa-4061-75de-c081-96b4b5a7c01e" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Oni2/Chromas/v3/Burst_Oni2_v3_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 鬥牛犬 等級4\n(幻彩3 飛燕)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/74207d99-4255-7837-a09e-90bc1f2444e4/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0e92cf92-46b2-c020-cf7c-709d3a65f0cb_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/74207d99-4255-7837-a09e-90bc1f2444e4/swatch.png", + "uuid": "74207d99-4255-7837-a09e-90bc1f2444e4" + } + ], + "contentTierUuid": "60bca009-4182-7998-dee7-b8a2558dc369", + "displayIcon": "https://media.valorant-api.com/weaponskins/325d2274-487b-8672-84d6-6db8e9798447/displayicon.png", + "displayName": "惡鬼 鬥牛犬", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Oni2/Levels/Burst_Oni2_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/94456e3a-459f-4447-cc0d-7e9b5d01b81e/displayicon.png", + "displayName": "惡鬼 鬥牛犬", + "levelItem": null, + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/87711ff9-4354-e40e-f293-9ba6c7f4cdb1_default_universal.mp4", + "uuid": "94456e3a-459f-4447-cc0d-7e9b5d01b81e" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Oni2/Levels/Burst_Oni2_Lv2_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 鬥牛犬 等級2", + "levelItem": "EEquippableSkinLevelItem::SoundEffects", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/28b7a01d-43fd-2866-159d-a8a47c6993cf_default_universal.mp4", + "uuid": "43aba4ac-47ba-4c45-23b8-eebd254218bb" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Oni2/Levels/Burst_Oni2_Lv3_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 鬥牛犬 等級3", + "levelItem": "EEquippableSkinLevelItem::VFX", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/18f38213-4e11-192c-f5fd-19a523f4c098_default_universal.mp4", + "uuid": "b44e3537-481f-0b8d-fb49-15b3cec80ccc" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Oni2/Levels/Burst_Oni2_Lv4_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 鬥牛犬 等級4", + "levelItem": "EEquippableSkinLevelItem::Finisher", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b8ca2e11-4fc2-8d5c-f267-f38ccd89f0de_default_universal.mp4", + "uuid": "77319adb-433f-4978-5059-d780c0c68d5f" + } + ], + "themeUuid": "a547897d-4bd4-7c77-f5e6-55973f0e89ef", + "uuid": "325d2274-487b-8672-84d6-6db8e9798447", + "wallpaper": "https://media.valorant-api.com/weaponskins/325d2274-487b-8672-84d6-6db8e9798447/wallpaper.png" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Permafrost/Burst_Permafrost_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Permafrost/Chromas/Standard/Burst_Permafrost_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/b4b15d7b-42d2-c6f5-d52d-a794df03b882/displayicon.png", + "displayName": "深度凍結 鬥牛犬", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/b4b15d7b-42d2-c6f5-d52d-a794df03b882/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "b4b15d7b-42d2-c6f5-d52d-a794df03b882" + } + ], + "contentTierUuid": "60bca009-4182-7998-dee7-b8a2558dc369", + "displayIcon": "https://media.valorant-api.com/weaponskins/d832f94c-4490-176e-c625-c3a1130cea19/displayicon.png", "displayName": "深度凍結 鬥牛犬", "levels": [ { @@ -5122,7 +5395,7 @@ "displayIcon": null, "displayName": "深度凍結 鬥牛犬 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/18a0097a-43b2-4876-a358-c3aff488277d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/18a0097a-43b2-4876-a358-c3aff488277d_default_universal.mp4", "uuid": "ed3b769b-47af-7b34-7e16-5a9ff7c119cc" }, { @@ -5130,7 +5403,7 @@ "displayIcon": null, "displayName": "深度凍結 鬥牛犬 等級3", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3b56a0dc-463b-4625-a30b-078e10acbb08_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3b56a0dc-463b-4625-a30b-078e10acbb08_default_universal.mp4", "uuid": "8946d843-447b-ad44-3cce-44bb3c88489c" } ], @@ -5215,7 +5488,7 @@ "displayIcon": null, "displayName": "781-A協定 鬥牛犬 等級5\n(幻彩1 白/粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/44239053-4877-f129-9a52-2388e0f88989/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bf7dafe4-4023-4646-c9f7-eeb8a1602a36_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bf7dafe4-4023-4646-c9f7-eeb8a1602a36_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/44239053-4877-f129-9a52-2388e0f88989/swatch.png", "uuid": "44239053-4877-f129-9a52-2388e0f88989" }, @@ -5224,7 +5497,7 @@ "displayIcon": null, "displayName": "781-A協定 鬥牛犬 等級5\n(幻彩2 紅/藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/9fc743eb-46c8-e382-39e4-23b5ac835efc/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a727a755-485a-5953-4f6a-089309627cc7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a727a755-485a-5953-4f6a-089309627cc7_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/9fc743eb-46c8-e382-39e4-23b5ac835efc/swatch.png", "uuid": "9fc743eb-46c8-e382-39e4-23b5ac835efc" }, @@ -5233,7 +5506,7 @@ "displayIcon": null, "displayName": "781-A協定 鬥牛犬 等級5\n(幻彩3 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/57d458a2-4457-daa3-c6af-79ba6c9f6e5a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1a93d913-4f4a-ae90-1429-bcb8ad17c43f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1a93d913-4f4a-ae90-1429-bcb8ad17c43f_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/57d458a2-4457-daa3-c6af-79ba6c9f6e5a/swatch.png", "uuid": "57d458a2-4457-daa3-c6af-79ba6c9f6e5a" } @@ -5247,7 +5520,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/544ddf0f-42c6-e410-c9db-fc8b3b2c84d4/displayicon.png", "displayName": "781-A協定 鬥牛犬", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b33d4634-457b-4724-ceec-408677bebb2c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b33d4634-457b-4724-ceec-408677bebb2c_default_universal.mp4", "uuid": "544ddf0f-42c6-e410-c9db-fc8b3b2c84d4" }, { @@ -5255,7 +5528,7 @@ "displayIcon": null, "displayName": "781-A協定 鬥牛犬 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2f726241-4584-2e24-1854-7997e0cf65b6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2f726241-4584-2e24-1854-7997e0cf65b6_default_universal.mp4", "uuid": "b88b45d6-466b-0285-5e88-45b38b6452c0" }, { @@ -5263,7 +5536,7 @@ "displayIcon": null, "displayName": "781-A協定 鬥牛犬 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c8b678ce-4c0b-102e-ba92-97bff8d22776_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c8b678ce-4c0b-102e-ba92-97bff8d22776_default_universal.mp4", "uuid": "d02c80a9-420a-e45e-d20a-519d7764b0ae" }, { @@ -5271,7 +5544,7 @@ "displayIcon": null, "displayName": "781-A協定 鬥牛犬 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d3ba997e-41fe-e3db-f4ed-1a8f774d7848_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d3ba997e-41fe-e3db-f4ed-1a8f774d7848_default_universal.mp4", "uuid": "78665dc8-4a75-76f6-a9e5-97819158eed8" }, { @@ -5279,7 +5552,7 @@ "displayIcon": null, "displayName": "781-A協定 鬥牛犬 等級5:在地化語音可能會因地區而異", "levelItem": "EEquippableSkinLevelItem::Voiceover", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e2b30f2f-4512-275a-b25c-6f92e40c2dc3_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e2b30f2f-4512-275a-b25c-6f92e40c2dc3_default_universal.mp4", "uuid": "282305ae-4707-c58e-bf3a-3cb333c5664d" } ], @@ -5434,6 +5707,63 @@ "uuid": "724a7f42-4315-eccf-0e76-77bdd3ec2e09", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/StreetWear/Burst_StreetWear_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/StreetWear/Chromas/Standard/Burst_StreetWear_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/a6f4b6f4-41c9-9441-b35f-47bd950a2e87/displayicon.png", + "displayName": "金屬波浪 鬥牛犬", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/a6f4b6f4-41c9-9441-b35f-47bd950a2e87/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/a6f4b6f4-41c9-9441-b35f-47bd950a2e87/swatch.png", + "uuid": "a6f4b6f4-41c9-9441-b35f-47bd950a2e87" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/StreetWear/Chromas/v1/Burst_StreetWear_v1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/2d87bc04-45df-61a1-6b83-97931919154e/displayicon.png", + "displayName": "金屬波浪 鬥牛犬\n(幻彩1 紅色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/2d87bc04-45df-61a1-6b83-97931919154e/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/2d87bc04-45df-61a1-6b83-97931919154e/swatch.png", + "uuid": "2d87bc04-45df-61a1-6b83-97931919154e" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/StreetWear/Chromas/v2/Burst_StreetWear_v2_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/7a730bf8-4e65-3107-7aeb-f9981b318ea6/displayicon.png", + "displayName": "金屬波浪 鬥牛犬\n(幻彩2 紫色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/7a730bf8-4e65-3107-7aeb-f9981b318ea6/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/7a730bf8-4e65-3107-7aeb-f9981b318ea6/swatch.png", + "uuid": "7a730bf8-4e65-3107-7aeb-f9981b318ea6" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/StreetWear/Chromas/v3/Burst_StreetWear_v3_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/0b07f79e-42c0-5b86-864c-49ab918848b5/displayicon.png", + "displayName": "金屬波浪 鬥牛犬\n(幻彩3 綠色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/0b07f79e-42c0-5b86-864c-49ab918848b5/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/0b07f79e-42c0-5b86-864c-49ab918848b5/swatch.png", + "uuid": "0b07f79e-42c0-5b86-864c-49ab918848b5" + } + ], + "contentTierUuid": "0cebb8be-46d7-c12a-d306-e9907bfc5a25", + "displayIcon": "https://media.valorant-api.com/weaponskins/006d6b0a-47ba-a909-ade5-0cba66dd5829/displayicon.png", + "displayName": "金屬波浪 鬥牛犬", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/StreetWear/Levels/Burst_StreetWear_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/1074041a-4ee2-be43-9e43-d5833b9358a4/displayicon.png", + "displayName": "金屬波浪 鬥牛犬", + "levelItem": null, + "streamedVideo": null, + "uuid": "1074041a-4ee2-be43-9e43-d5833b9358a4" + } + ], + "themeUuid": "8a046174-4736-8d37-3f2f-9b88c9873040", + "uuid": "006d6b0a-47ba-a909-ade5-0cba66dd5829", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Burst/Synthwave/Burst_Synthwave_PrimaryAsset", "chromas": [ @@ -5601,7 +5931,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/36f8c874-43d9-5764-9585-55b0141fdb9c/displayicon.png", "displayName": "RGX 11z Pro 幻象 等級5\n(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/36f8c874-43d9-5764-9585-55b0141fdb9c/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/76454adf-4539-b440-2927-aaa8c50b6488_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/76454adf-4539-b440-2927-aaa8c50b6488_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/36f8c874-43d9-5764-9585-55b0141fdb9c/swatch.png", "uuid": "36f8c874-43d9-5764-9585-55b0141fdb9c" }, @@ -5610,7 +5940,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/f399ce20-4d22-b504-dbae-f8907bf25135/displayicon.png", "displayName": "RGX 11z Pro 幻象 等級5\n(幻彩2 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/f399ce20-4d22-b504-dbae-f8907bf25135/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/25b94bda-45f6-f0af-e276-f8abd76f4b70_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/25b94bda-45f6-f0af-e276-f8abd76f4b70_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/f399ce20-4d22-b504-dbae-f8907bf25135/swatch.png", "uuid": "f399ce20-4d22-b504-dbae-f8907bf25135" }, @@ -5619,7 +5949,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/24fd1841-4d50-31b9-8b45-edbfd0f42b03/displayicon.png", "displayName": "RGX 11z Pro 幻象 等級5\n(幻彩3 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/24fd1841-4d50-31b9-8b45-edbfd0f42b03/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9cd59643-4e2d-4312-1734-1c9c8bd00cac_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9cd59643-4e2d-4312-1734-1c9c8bd00cac_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/24fd1841-4d50-31b9-8b45-edbfd0f42b03/swatch.png", "uuid": "24fd1841-4d50-31b9-8b45-edbfd0f42b03" } @@ -5633,7 +5963,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/49a986d0-4a07-b756-331e-babe1b2839d9/displayicon.png", "displayName": "RGX 11z Pro 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d48bfbfa-44e5-6cce-238a-a8885aebe65f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d48bfbfa-44e5-6cce-238a-a8885aebe65f_default_universal.mp4", "uuid": "49a986d0-4a07-b756-331e-babe1b2839d9" }, { @@ -5641,7 +5971,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/47c53cdc-45d2-c85a-2b36-5fa7b6ee54a2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/47c53cdc-45d2-c85a-2b36-5fa7b6ee54a2_default_universal.mp4", "uuid": "4194e0af-4f61-f3e0-cf96-258f93cc82f4" }, { @@ -5649,7 +5979,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 幻象 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/07448477-4714-1c9d-734c-37a097ce09a2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/07448477-4714-1c9d-734c-37a097ce09a2_default_universal.mp4", "uuid": "745fd101-4ba4-a3f7-eeb1-2b9a201721aa" }, { @@ -5657,7 +5987,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 幻象 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/61f46113-4fcc-33f2-78cb-b7948b46053c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/61f46113-4fcc-33f2-78cb-b7948b46053c_default_universal.mp4", "uuid": "9d47f8ab-42fa-167c-7704-3f9f2103ddc6" }, { @@ -5665,7 +5995,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 幻象 等級5", "levelItem": "EEquippableSkinLevelItem::KillCounter", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ba16abb7-452c-5ca6-152a-409deac545da_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ba16abb7-452c-5ca6-152a-409deac545da_default_universal.mp4", "uuid": "c97c97b2-4f3b-fb34-32a4-548d32863042" } ], @@ -5695,7 +6025,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c0879eb2-4e41-d7bd-80f7-dd8cb13a1e20/displayicon.png", "displayName": "異星獵人 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/476d9bb2-40d7-c934-83a4-ffbc4ef6aa21_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/476d9bb2-40d7-c934-83a4-ffbc4ef6aa21_default_universal.mp4", "uuid": "c0879eb2-4e41-d7bd-80f7-dd8cb13a1e20" }, { @@ -5703,7 +6033,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5b63d322-4fb7-ef6d-c50e-fe89ecc520a8/displayicon.png", "displayName": "異星獵人 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::HeartbeatAndMapSensor", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/27136957-4d4f-120f-07f8-c6bee715b85f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/27136957-4d4f-120f-07f8-c6bee715b85f_default_universal.mp4", "uuid": "5b63d322-4fb7-ef6d-c50e-fe89ecc520a8" } ], @@ -5758,7 +6088,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e924a97d-46aa-3c3e-ec39-9abfeb811f2b/displayicon.png", "displayName": "光炫聲譜 幻象 等級4\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e924a97d-46aa-3c3e-ec39-9abfeb811f2b/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2aac289f-433a-3b9e-e7b1-04a0884e8ece_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2aac289f-433a-3b9e-e7b1-04a0884e8ece_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e924a97d-46aa-3c3e-ec39-9abfeb811f2b/swatch.png", "uuid": "e924a97d-46aa-3c3e-ec39-9abfeb811f2b" }, @@ -5767,7 +6097,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/449a0d94-4320-dd8c-d458-fba5fdc04eb0/displayicon.png", "displayName": "光炫聲譜 幻象 等級4\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/449a0d94-4320-dd8c-d458-fba5fdc04eb0/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b0f59fd6-4d87-2dec-60c7-2cb8ba11c721_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b0f59fd6-4d87-2dec-60c7-2cb8ba11c721_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/449a0d94-4320-dd8c-d458-fba5fdc04eb0/swatch.png", "uuid": "449a0d94-4320-dd8c-d458-fba5fdc04eb0" }, @@ -5776,7 +6106,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/7e10eabf-476b-0bcb-5847-e8958d6f1132/displayicon.png", "displayName": "光炫聲譜 幻象 等級4\n(幻彩3 紫/粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/7e10eabf-476b-0bcb-5847-e8958d6f1132/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/16e41132-4a98-c5cb-d067-80b0599b23cc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/16e41132-4a98-c5cb-d067-80b0599b23cc_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/7e10eabf-476b-0bcb-5847-e8958d6f1132/swatch.png", "uuid": "7e10eabf-476b-0bcb-5847-e8958d6f1132" } @@ -5790,7 +6120,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/82db01d1-4192-167b-9f53-78ba374c39ac/displayicon.png", "displayName": "光炫聲譜 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6ce49b69-45a8-c7bb-865f-6fa6bceeea72_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6ce49b69-45a8-c7bb-865f-6fa6bceeea72_default_universal.mp4", "uuid": "82db01d1-4192-167b-9f53-78ba374c39ac" }, { @@ -5798,7 +6128,7 @@ "displayIcon": null, "displayName": "光炫聲譜 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fe20185e-43e5-c02e-24cd-97b04179e7ed_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fe20185e-43e5-c02e-24cd-97b04179e7ed_default_universal.mp4", "uuid": "8021e6d9-4916-32a9-e2cd-ff9c947a96c5" }, { @@ -5806,7 +6136,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/831939b1-42e6-6ad3-708b-b58ff2ea64fb/displayicon.png", "displayName": "光炫聲譜 幻象 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bdf22bf1-4ef6-b866-de7e-999ab77007f3_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bdf22bf1-4ef6-b866-de7e-999ab77007f3_default_universal.mp4", "uuid": "831939b1-42e6-6ad3-708b-b58ff2ea64fb" }, { @@ -5814,7 +6144,7 @@ "displayIcon": null, "displayName": "光炫聲譜 幻象 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5e0c9119-42ab-7fb3-b6f6-d081fc77fa2a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5e0c9119-42ab-7fb3-b6f6-d081fc77fa2a_default_universal.mp4", "uuid": "2a744a2b-4dab-71a6-0e2e-7f84d4cf8365" } ], @@ -5874,7 +6204,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/524b0c42-47da-e7ca-dc04-85ba285b2e71/displayicon.png", "displayName": "2022冠軍賽 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9c76ad1c-4c1c-beea-85b9-8d908cb3e3d6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9c76ad1c-4c1c-beea-85b9-8d908cb3e3d6_default_universal.mp4", "uuid": "524b0c42-47da-e7ca-dc04-85ba285b2e71" }, { @@ -5882,7 +6212,7 @@ "displayIcon": null, "displayName": "2022冠軍賽 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::InspectAndKill", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/856e4472-4b0d-b2dd-f988-95afa7c477d4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/856e4472-4b0d-b2dd-f988-95afa7c477d4_default_universal.mp4", "uuid": "3e511130-4d87-06dc-d6b3-45909bcba884" }, { @@ -5890,7 +6220,7 @@ "displayIcon": null, "displayName": "2022冠軍賽 幻象 等級3", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1cc15171-42f6-2710-3645-7c9eb703e17c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1cc15171-42f6-2710-3645-7c9eb703e17c_default_universal.mp4", "uuid": "6ce75c5a-4bf8-bdf3-2c13-1a97866c2d9a" }, { @@ -5898,7 +6228,7 @@ "displayIcon": null, "displayName": "2022冠軍賽 幻象 等級4(在對戰中取得最多擊殺時才會顯示光環)", "levelItem": "EEquippableSkinLevelItem::TopFrag", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/388869b1-41d9-ecd3-f0f6-c6bdf07f3a4b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/388869b1-41d9-ecd3-f0f6-c6bdf07f3a4b_default_universal.mp4", "uuid": "2e15c392-4f9a-e7cc-97ba-ae8fa37dfa14" } ], @@ -5928,7 +6258,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/52c3bbf6-491f-fef1-faa9-e19df06a687c/displayicon.png", "displayName": "輻能危機001 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4d182612-4746-6538-9243-78a25114ec2c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4d182612-4746-6538-9243-78a25114ec2c_default_universal.mp4", "uuid": "52c3bbf6-491f-fef1-faa9-e19df06a687c" }, { @@ -5936,7 +6266,7 @@ "displayIcon": null, "displayName": "輻能危機001 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3d60a2cf-4a43-f655-4bcd-ee8e490ebd50_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3d60a2cf-4a43-f655-4bcd-ee8e490ebd50_default_universal.mp4", "uuid": "e9084ae2-462e-b567-1439-4797bb26d5f4" }, { @@ -5944,7 +6274,7 @@ "displayIcon": null, "displayName": "輻能危機001 幻象 等級3", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b9f0e74e-4a1a-495d-8ee0-5898a800d545_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b9f0e74e-4a1a-495d-8ee0-5898a800d545_default_universal.mp4", "uuid": "84764cd7-41fd-c3e0-523f-d88d101c40cc" } ], @@ -6061,7 +6391,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/9f6e4612-433b-aea9-1683-3db7aee90848/displayicon.png", "displayName": "電幻普普 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/41364d33-4ec7-cf4a-72ef-e6ad28c08c8e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/41364d33-4ec7-cf4a-72ef-e6ad28c08c8e_default_universal.mp4", "uuid": "9f6e4612-433b-aea9-1683-3db7aee90848" }, { @@ -6069,7 +6399,7 @@ "displayIcon": null, "displayName": "電幻普普 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2ed7f9e9-4fdc-85ff-603a-b48533ab9fa3_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2ed7f9e9-4fdc-85ff-603a-b48533ab9fa3_default_universal.mp4", "uuid": "07e8bbcb-488e-b038-630f-c3a7c4f4763f" }, { @@ -6077,7 +6407,7 @@ "displayIcon": null, "displayName": "電幻普普 幻象 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7f0491e2-4820-fff9-c8b1-8eb08f1bd6c4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7f0491e2-4820-fff9-c8b1-8eb08f1bd6c4_default_universal.mp4", "uuid": "7f54b1ac-49b5-48ec-9926-8a966a0233a5" }, { @@ -6085,7 +6415,7 @@ "displayIcon": null, "displayName": "電幻普普 幻象 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7773171d-4c54-99bf-70e5-b5b8921d3f9a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7773171d-4c54-99bf-70e5-b5b8921d3f9a_default_universal.mp4", "uuid": "dee8b295-4a06-15fb-e952-acb6298d5929" } ], @@ -6110,7 +6440,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/048ae1e3-48e5-c5dd-65ef-01b962267db2/displayicon.png", "displayName": "虛無時界 幻象 等級4\n(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/048ae1e3-48e5-c5dd-65ef-01b962267db2/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8c6eab1e-4b88-9c20-37f5-5b945e2ee408_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8c6eab1e-4b88-9c20-37f5-5b945e2ee408_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/048ae1e3-48e5-c5dd-65ef-01b962267db2/swatch.png", "uuid": "048ae1e3-48e5-c5dd-65ef-01b962267db2" }, @@ -6119,7 +6449,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/765c1e64-4e53-f855-a0f9-c7bb0254d4e5/displayicon.png", "displayName": "虛無時界 幻象 等級4\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/765c1e64-4e53-f855-a0f9-c7bb0254d4e5/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2ada2b1b-492d-7c11-e2fb-d9898d38f713_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2ada2b1b-492d-7c11-e2fb-d9898d38f713_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/765c1e64-4e53-f855-a0f9-c7bb0254d4e5/swatch.png", "uuid": "765c1e64-4e53-f855-a0f9-c7bb0254d4e5" }, @@ -6128,7 +6458,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/62228fbd-418d-a7d6-e44a-06885debdef5/displayicon.png", "displayName": "虛無時界 幻象 等級4\n(幻彩3 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/62228fbd-418d-a7d6-e44a-06885debdef5/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ca7bff9d-4dc2-fbba-0bd4-57bb73e07cb2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ca7bff9d-4dc2-fbba-0bd4-57bb73e07cb2_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/62228fbd-418d-a7d6-e44a-06885debdef5/swatch.png", "uuid": "62228fbd-418d-a7d6-e44a-06885debdef5" } @@ -6142,7 +6472,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/aeb0ea2e-4f50-6b34-27b0-f2a755d27f6a/displayicon.png", "displayName": "虛無時界 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/72325b92-44a5-0b77-045b-a2b8de3faf79_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/72325b92-44a5-0b77-045b-a2b8de3faf79_default_universal.mp4", "uuid": "aeb0ea2e-4f50-6b34-27b0-f2a755d27f6a" }, { @@ -6150,7 +6480,7 @@ "displayIcon": null, "displayName": "虛無時界 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::SoundEffects", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c363396b-4390-1472-6d60-a4b1d42b0e20_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c363396b-4390-1472-6d60-a4b1d42b0e20_default_universal.mp4", "uuid": "fb9ba36e-4901-e621-cc0b-dba82ba9eded" }, { @@ -6158,7 +6488,7 @@ "displayIcon": null, "displayName": "虛無時界 幻象 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/73a185c1-41e9-47d6-aaa9-84abd5ce498b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/73a185c1-41e9-47d6-aaa9-84abd5ce498b_default_universal.mp4", "uuid": "78f1af5d-45f3-544f-3aec-0bb5f6b0efcf" }, { @@ -6166,7 +6496,7 @@ "displayIcon": null, "displayName": "虛無時界 幻象 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/91bb6951-43f6-1c6f-ce69-d5a9625b3eb5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/91bb6951-43f6-1c6f-ce69-d5a9625b3eb5_default_universal.mp4", "uuid": "cf09f992-4a76-aeb4-7ca6-35b5d823ec81" } ], @@ -6221,7 +6551,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 幻象 等級2\n(幻彩1 戰術夥伴)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/8b6534d4-4460-20f5-15fc-83a5c301cdea/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9d019cd5-4e35-64bf-9349-ccbda70f0706_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9d019cd5-4e35-64bf-9349-ccbda70f0706_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/8b6534d4-4460-20f5-15fc-83a5c301cdea/swatch.png", "uuid": "8b6534d4-4460-20f5-15fc-83a5c301cdea" }, @@ -6230,7 +6560,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 幻象 等級2\n(幻彩2 英雄聯盟)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/b90cd8ea-46c2-b103-24aa-e782f9b01659/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c37cb666-4897-f39c-e787-47afc799e76d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c37cb666-4897-f39c-e787-47afc799e76d_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/b90cd8ea-46c2-b103-24aa-e782f9b01659/swatch.png", "uuid": "b90cd8ea-46c2-b103-24aa-e782f9b01659" } @@ -6244,7 +6574,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f9d54c11-4c6f-575b-5bed-3cb693f6f2ba/displayicon.png", "displayName": "魔術塗鴉 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/079fe94b-43ba-2d98-e4cc-c2be6b634487_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/079fe94b-43ba-2d98-e4cc-c2be6b634487_default_universal.mp4", "uuid": "f9d54c11-4c6f-575b-5bed-3cb693f6f2ba" }, { @@ -6252,7 +6582,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::KillEffect", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a6672a66-4b31-7590-2700-99b73613de3a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a6672a66-4b31-7590-2700-99b73613de3a_default_universal.mp4", "uuid": "e5b46108-4d0a-c614-a845-fea7111beda7" } ], @@ -6309,7 +6639,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/0ff7ff25-42cf-769a-4e6d-bd833121302d/displayicon.png", "displayName": "奇點 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f6a15a6a-49d6-6c2b-aa72-59a7f902d28f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f6a15a6a-49d6-6c2b-aa72-59a7f902d28f_default_universal.mp4", "uuid": "0ff7ff25-42cf-769a-4e6d-bd833121302d" }, { @@ -6317,7 +6647,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/48e976cc-4be8-87c6-2848-dd87bbc0acf8/displayicon.png", "displayName": "奇點 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5d496c6b-4fe0-27c4-9305-30ba3d4b7a95_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5d496c6b-4fe0-27c4-9305-30ba3d4b7a95_default_universal.mp4", "uuid": "48e976cc-4be8-87c6-2848-dd87bbc0acf8" }, { @@ -6325,7 +6655,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5791fe6e-4c59-b6ef-a7d4-05b0d7c9aed4/displayicon.png", "displayName": "奇點 幻象 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9af7f387-4b29-2aca-62f4-96a0a62f6403_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9af7f387-4b29-2aca-62f4-96a0a62f6403_default_universal.mp4", "uuid": "5791fe6e-4c59-b6ef-a7d4-05b0d7c9aed4" }, { @@ -6333,7 +6663,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/9e2df910-4927-7313-e6b9-639454ef0e91/displayicon.png", "displayName": "奇點 幻象 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/eb081cf2-440a-d68a-66a9-cf8b423ba7a6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/eb081cf2-440a-d68a-66a9-cf8b423ba7a6_default_universal.mp4", "uuid": "9e2df910-4927-7313-e6b9-639454ef0e91" } ], @@ -6363,7 +6693,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f0a2a250-4cab-264b-30b0-8ea0706589ff/displayicon.png", "displayName": "永恆之沙 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/cea0ed9b-42bc-b6cf-c7f8-b2a8fca63d5e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/cea0ed9b-42bc-b6cf-c7f8-b2a8fca63d5e_default_universal.mp4", "uuid": "f0a2a250-4cab-264b-30b0-8ea0706589ff" } ], @@ -6488,6 +6818,36 @@ "uuid": "f7a779db-4835-6561-ce1a-d1921a24de46", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Flyer/Carbine_Flyer_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Flyer/Chromas/Standard/Carbine_Flyer_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/981763af-47a2-dd3c-4c53-c8b4d8717a4b/displayicon.png", + "displayName": "空翼幾何 幻象", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/981763af-47a2-dd3c-4c53-c8b4d8717a4b/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "981763af-47a2-dd3c-4c53-c8b4d8717a4b" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/d34edafc-4e48-b2d7-6163-08bf054d3d80/displayicon.png", + "displayName": "空翼幾何 幻象", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Flyer/Levels/Carbine_Flyer_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/739553f3-466d-bb50-64d2-b5a59645da01/displayicon.png", + "displayName": "空翼幾何 幻象", + "levelItem": null, + "streamedVideo": null, + "uuid": "739553f3-466d-bb50-64d2-b5a59645da01" + } + ], + "themeUuid": "418542b0-4f5c-3f37-4f5a-ecb1d3bc04ce", + "uuid": "d34edafc-4e48-b2d7-6163-08bf054d3d80", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Haunted/Carbine_Haunted_PrimaryAsset", "chromas": [ @@ -6510,7 +6870,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/a165db9b-4692-ac34-d00b-d39c5fad6f31/displayicon.png", "displayName": "靈爭鬪魂 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5ddf19d6-47c5-a728-da8e-e48d668d654c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5ddf19d6-47c5-a728-da8e-e48d668d654c_default_universal.mp4", "uuid": "a165db9b-4692-ac34-d00b-d39c5fad6f31" }, { @@ -6518,7 +6878,7 @@ "displayIcon": null, "displayName": "靈爭鬪魂 幻象 等級2:每次擊殺敵人時,都會播放專屬視覺特效及音效", "levelItem": "EEquippableSkinLevelItem::KillEffect", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7da6b6c0-4fd9-5fdc-e5cb-f79acfac52fd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7da6b6c0-4fd9-5fdc-e5cb-f79acfac52fd_default_universal.mp4", "uuid": "bf4489ad-4739-555c-2511-7cbcc503566c" } ], @@ -6575,7 +6935,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/9dc0bdd7-4d88-9360-38d6-3ea62b1daaca/displayicon.png", "displayName": "紫金狂潮//2.0 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5dcc377a-429e-bdb9-f780-998c2b987a7c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5dcc377a-429e-bdb9-f780-998c2b987a7c_default_universal.mp4", "uuid": "9dc0bdd7-4d88-9360-38d6-3ea62b1daaca" }, { @@ -6583,7 +6943,7 @@ "displayIcon": null, "displayName": "紫金狂潮//2.0 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fec75754-4347-0c46-a87a-dab28efa26b3_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fec75754-4347-0c46-a87a-dab28efa26b3_default_universal.mp4", "uuid": "63295da5-48de-df35-3b77-868a779638a3" }, { @@ -6591,7 +6951,7 @@ "displayIcon": null, "displayName": "紫金狂潮//2.0 幻象 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6b050683-4258-4247-f74d-6aad6cddd981_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6b050683-4258-4247-f74d-6aad6cddd981_default_universal.mp4", "uuid": "0f68f728-4d09-f66d-73e3-c9a8f2643652" }, { @@ -6599,7 +6959,7 @@ "displayIcon": null, "displayName": "紫金狂潮//2.0 幻象 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9b736cd8-4971-a5a2-09b2-7cb38ea680b6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9b736cd8-4971-a5a2-09b2-7cb38ea680b6_default_universal.mp4", "uuid": "ed4773ba-465d-6501-701a-e39d1ba0b97a" } ], @@ -6714,7 +7074,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/948b7eea-467e-5fc3-4314-d191305fb68e/displayicon.png", "displayName": "殞落詛咒 幻象 等級4\n(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/948b7eea-467e-5fc3-4314-d191305fb68e/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/98a9e41f-4618-0dda-4d80-35827b3ecea4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/98a9e41f-4618-0dda-4d80-35827b3ecea4_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/948b7eea-467e-5fc3-4314-d191305fb68e/swatch.png", "uuid": "948b7eea-467e-5fc3-4314-d191305fb68e" }, @@ -6723,7 +7083,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/7f466f2f-4c80-1222-5c3f-989486cfabc3/displayicon.png", "displayName": "殞落詛咒 幻象 等級4\n(幻彩2 紅/黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/7f466f2f-4c80-1222-5c3f-989486cfabc3/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c52b8f62-462c-411b-118d-54980e56b28a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c52b8f62-462c-411b-118d-54980e56b28a_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/7f466f2f-4c80-1222-5c3f-989486cfabc3/swatch.png", "uuid": "7f466f2f-4c80-1222-5c3f-989486cfabc3" }, @@ -6732,7 +7092,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/0ebb5188-4528-d6f6-7576-bb87e980a2d4/displayicon.png", "displayName": "殞落詛咒 幻象 等級4\n(幻彩3 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/0ebb5188-4528-d6f6-7576-bb87e980a2d4/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/aae681bd-4c07-378b-6c69-a58ab01e5767_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/aae681bd-4c07-378b-6c69-a58ab01e5767_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/0ebb5188-4528-d6f6-7576-bb87e980a2d4/swatch.png", "uuid": "0ebb5188-4528-d6f6-7576-bb87e980a2d4" } @@ -6746,7 +7106,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/279e0a89-4dd6-b135-cef9-8ebb1df6f2ac/displayicon.png", "displayName": "殞落詛咒 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bd9ebcc4-4a3a-b8cb-9cda-d5838341a4c0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bd9ebcc4-4a3a-b8cb-9cda-d5838341a4c0_default_universal.mp4", "uuid": "279e0a89-4dd6-b135-cef9-8ebb1df6f2ac" }, { @@ -6754,7 +7114,7 @@ "displayIcon": null, "displayName": "殞落詛咒 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/eb447856-470d-4019-d99b-7a92c4d07c5a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/eb447856-470d-4019-d99b-7a92c4d07c5a_default_universal.mp4", "uuid": "9f3ecff5-4662-075d-1684-1eaa7e604fcd" }, { @@ -6762,7 +7122,7 @@ "displayIcon": null, "displayName": "殞落詛咒 幻象 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fa6e5651-415d-aed3-6e7b-a6b150565597_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fa6e5651-415d-aed3-6e7b-a6b150565597_default_universal.mp4", "uuid": "770549d5-493b-be86-2b38-098d394d1406" }, { @@ -6770,7 +7130,7 @@ "displayIcon": null, "displayName": "殞落詛咒 幻象 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/44229d59-4893-31ca-2240-aaa29f94c6e4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/44229d59-4893-31ca-2240-aaa29f94c6e4_default_universal.mp4", "uuid": "9b6f0d5b-4bb9-9b45-2564-a2aac9d2526b" } ], @@ -6825,7 +7185,7 @@ "displayIcon": null, "displayName": "赤珀墨松 幻象\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/85f4ac84-4449-34de-79d5-d39a9139f690/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0f81e6a0-428d-da31-5454-bd8d790624ab_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0f81e6a0-428d-da31-5454-bd8d790624ab_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/85f4ac84-4449-34de-79d5-d39a9139f690/swatch.png", "uuid": "85f4ac84-4449-34de-79d5-d39a9139f690" } @@ -6839,7 +7199,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/dd5154b6-434a-9db7-0583-3e9ef8f63319/displayicon.png", "displayName": "赤珀墨松 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d65897f9-4add-1b8f-94cf-fba80ab9cc01_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d65897f9-4add-1b8f-94cf-fba80ab9cc01_default_universal.mp4", "uuid": "dd5154b6-434a-9db7-0583-3e9ef8f63319" } ], @@ -7076,7 +7436,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/b8bb264c-4578-2410-8dfa-6aacfeb318b0/displayicon.png", "displayName": "離子聖芒 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8c999cd4-464f-e7e3-d4ab-b9bcd07e2e52_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8c999cd4-464f-e7e3-d4ab-b9bcd07e2e52_default_universal.mp4", "uuid": "b8bb264c-4578-2410-8dfa-6aacfeb318b0" }, { @@ -7084,7 +7444,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d8168629-4e42-1359-4401-ffbb79f59866/displayicon.png", "displayName": "離子聖芒 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7c7757cb-4cf5-c953-61d8-ce898f79ce74_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7c7757cb-4cf5-c953-61d8-ce898f79ce74_default_universal.mp4", "uuid": "d8168629-4e42-1359-4401-ffbb79f59866" }, { @@ -7092,7 +7452,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/1b251e84-47f3-738d-c686-6cb718e66c71/displayicon.png", "displayName": "離子聖芒 幻象 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/127a9c2a-42a2-e334-f338-368060f85e4f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/127a9c2a-42a2-e334-f338-368060f85e4f_default_universal.mp4", "uuid": "1b251e84-47f3-738d-c686-6cb718e66c71" }, { @@ -7100,7 +7460,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f97aa61f-4119-f21a-621d-589fe5e55b01/displayicon.png", "displayName": "離子聖芒 幻象 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e8dcae48-4e0d-1459-0cff-729f96390349_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e8dcae48-4e0d-1459-0cff-729f96390349_default_universal.mp4", "uuid": "f97aa61f-4119-f21a-621d-589fe5e55b01" } ], @@ -7123,7 +7483,7 @@ { "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Oni/Chromas/Black/AssaultRifle_ACR_Oni_Black_PrimaryAsset", "displayIcon": "https://media.valorant-api.com/weaponskinchromas/b639a920-424b-b855-1e30-7f9b026889f1/displayicon.png", - "displayName": "惡鬼 幻象 等級4\n(幻彩1 黑色)", + "displayName": "惡鬼 幻象 等級4\n(幻彩1 浮雲)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/b639a920-424b-b855-1e30-7f9b026889f1/fullrender.png", "streamedVideo": null, "swatch": "https://media.valorant-api.com/weaponskinchromas/b639a920-424b-b855-1e30-7f9b026889f1/swatch.png", @@ -7132,7 +7492,7 @@ { "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Oni/Chromas/Green/AssaultRifle_ACR_Oni_Green_PrimaryAsset", "displayIcon": "https://media.valorant-api.com/weaponskinchromas/6f9c7109-485a-f2a3-cb1d-9f9a31a995d7/displayicon.png", - "displayName": "惡鬼 幻象 等級4\n(幻彩2 綠色)", + "displayName": "惡鬼 幻象 等級4\n(幻彩2 落花)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/6f9c7109-485a-f2a3-cb1d-9f9a31a995d7/fullrender.png", "streamedVideo": null, "swatch": "https://media.valorant-api.com/weaponskinchromas/6f9c7109-485a-f2a3-cb1d-9f9a31a995d7/swatch.png", @@ -7141,7 +7501,7 @@ { "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Oni/Chromas/White/AssaultRifle_ACR_Oni_White_PrimaryAsset", "displayIcon": "https://media.valorant-api.com/weaponskinchromas/32dfe871-4906-d2ce-4835-2d99aaa52f84/displayicon.png", - "displayName": "惡鬼 幻象 等級4\n(幻彩3 白色)", + "displayName": "惡鬼 幻象 等級4\n(幻彩3 飛燕)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/32dfe871-4906-d2ce-4835-2d99aaa52f84/fullrender.png", "streamedVideo": null, "swatch": "https://media.valorant-api.com/weaponskinchromas/32dfe871-4906-d2ce-4835-2d99aaa52f84/swatch.png", @@ -7157,7 +7517,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c00e786e-4e6f-0ef7-0ce3-32ba9918ba41/displayicon.png", "displayName": "惡鬼 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d95f2acb-428c-2abd-3e6c-c2af3806bee9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d95f2acb-428c-2abd-3e6c-c2af3806bee9_default_universal.mp4", "uuid": "c00e786e-4e6f-0ef7-0ce3-32ba9918ba41" }, { @@ -7165,7 +7525,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/2c4e829a-4915-e9d8-5c6f-43a39d60afc0/displayicon.png", "displayName": "惡鬼 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f9716000-41f5-8847-8e8e-c7ba525da601_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f9716000-41f5-8847-8e8e-c7ba525da601_default_universal.mp4", "uuid": "2c4e829a-4915-e9d8-5c6f-43a39d60afc0" }, { @@ -7173,7 +7533,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/bb07581b-4733-ce33-53d4-3dadc038ca4a/displayicon.png", "displayName": "惡鬼 幻象 等級3", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4939d79a-45d5-382a-1a97-208eb7c8766e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4939d79a-45d5-382a-1a97-208eb7c8766e_default_universal.mp4", "uuid": "bb07581b-4733-ce33-53d4-3dadc038ca4a" }, { @@ -7181,7 +7541,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/1b24255d-4f50-9202-7b6f-f7873db580d1/displayicon.png", "displayName": "惡鬼 幻象 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/23694a4e-4f34-1ba5-d649-dc9a09880d18_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/23694a4e-4f34-1ba5-d649-dc9a09880d18_default_universal.mp4", "uuid": "1b24255d-4f50-9202-7b6f-f7873db580d1" } ], @@ -7407,7 +7767,7 @@ "displayIcon": null, "displayName": "781-A協定 幻象 等級5\n(幻彩1 白/粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/15008ebb-478d-5d5c-a5b7-3181583161f4/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f5e8e70e-44ec-2f52-eec9-71bb49875a02_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f5e8e70e-44ec-2f52-eec9-71bb49875a02_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/15008ebb-478d-5d5c-a5b7-3181583161f4/swatch.png", "uuid": "15008ebb-478d-5d5c-a5b7-3181583161f4" }, @@ -7416,7 +7776,7 @@ "displayIcon": null, "displayName": "781-A協定 幻象 等級5\n(幻彩2 紅/藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/4a8846e9-4051-2813-db9f-7a8e274542a1/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f64e60aa-487f-f87d-87c2-faba0c4f64da_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f64e60aa-487f-f87d-87c2-faba0c4f64da_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/4a8846e9-4051-2813-db9f-7a8e274542a1/swatch.png", "uuid": "4a8846e9-4051-2813-db9f-7a8e274542a1" }, @@ -7425,7 +7785,7 @@ "displayIcon": null, "displayName": "781-A協定 幻象 等級5\n(幻彩3 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/5822d67c-47a4-015b-ae91-eab163d5e4f5/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a6478491-4935-9eef-b048-138b16848415_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a6478491-4935-9eef-b048-138b16848415_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/5822d67c-47a4-015b-ae91-eab163d5e4f5/swatch.png", "uuid": "5822d67c-47a4-015b-ae91-eab163d5e4f5" } @@ -7439,7 +7799,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/a7cf8684-41a0-3dd4-e30c-6f9b4b34e635/displayicon.png", "displayName": "781-A協定 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d81f9aae-4071-3a67-3acb-b898f3f6e9d1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d81f9aae-4071-3a67-3acb-b898f3f6e9d1_default_universal.mp4", "uuid": "a7cf8684-41a0-3dd4-e30c-6f9b4b34e635" }, { @@ -7447,7 +7807,7 @@ "displayIcon": null, "displayName": "781-A協定 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7f89c65a-45d2-563e-b3d2-28a88a1880e3_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7f89c65a-45d2-563e-b3d2-28a88a1880e3_default_universal.mp4", "uuid": "2c072ecb-41dc-8e3a-b39d-fc954c0cf450" }, { @@ -7455,7 +7815,7 @@ "displayIcon": null, "displayName": "781-A協定 幻象 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b56c5202-4b7b-a019-6cd7-029cb28b34bd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b56c5202-4b7b-a019-6cd7-029cb28b34bd_default_universal.mp4", "uuid": "91bb9969-4c02-decb-7c01-24aee1efa6d9" }, { @@ -7463,7 +7823,7 @@ "displayIcon": null, "displayName": "781-A協定 幻象 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/121dc0db-44e4-f9b4-5be5-68a9669e973c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/121dc0db-44e4-f9b4-5be5-68a9669e973c_default_universal.mp4", "uuid": "57dbc793-40a4-17e8-db04-95b739411e52" }, { @@ -7471,7 +7831,7 @@ "displayIcon": null, "displayName": "781-A協定 幻象 等級5:在地化語音可能會因地區而異", "levelItem": "EEquippableSkinLevelItem::Voiceover", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/607336dc-48ba-cc56-a012-f3b41b393db0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/607336dc-48ba-cc56-a012-f3b41b393db0_default_universal.mp4", "uuid": "a117218e-4f0e-0cca-7758-7ea30b08ac05" } ], @@ -7479,36 +7839,6 @@ "uuid": "9877d50b-43b1-837a-802a-bf8a3b98e2dd", "wallpaper": "https://media.valorant-api.com/weaponskins/9877d50b-43b1-837a-802a-bf8a3b98e2dd/wallpaper.png" }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Random/Carbine_Random_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Random/Chromas/Standard/Carbine_Random_Standard_PrimaryAsset", - "displayIcon": null, - "displayName": "Standard", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/adf1d2cc-482e-a16a-e3c1-608a82b606cc/fullrender.png", - "streamedVideo": null, - "swatch": null, - "uuid": "adf1d2cc-482e-a16a-e3c1-608a82b606cc" - } - ], - "contentTierUuid": null, - "displayIcon": "https://media.valorant-api.com/weaponskins/fff73ad4-4d46-a6d9-43f1-51b633845434/displayicon.png", - "displayName": "隨機最愛造型", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Random/Levels/Carbine_Random_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4728dfee-4879-381c-1db1-89b839cbd3d4/displayicon.png", - "displayName": "隨機最愛造型", - "levelItem": null, - "streamedVideo": null, - "uuid": "4728dfee-4879-381c-1db1-89b839cbd3d4" - } - ], - "themeUuid": "0d7a5bfb-4850-098e-1821-d989bbfd58a8", - "uuid": "fff73ad4-4d46-a6d9-43f1-51b633845434", - "wallpaper": null - }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/RGB/Carbine_RGB_PrimaryAsset", "chromas": [ @@ -7566,6 +7896,36 @@ "uuid": "29665396-4dc8-c409-5e38-228949690f1e", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Random/Carbine_Random_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Random/Chromas/Standard/Carbine_Random_Standard_PrimaryAsset", + "displayIcon": null, + "displayName": "Standard", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/adf1d2cc-482e-a16a-e3c1-608a82b606cc/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "adf1d2cc-482e-a16a-e3c1-608a82b606cc" + } + ], + "contentTierUuid": null, + "displayIcon": "https://media.valorant-api.com/weaponskins/fff73ad4-4d46-a6d9-43f1-51b633845434/displayicon.png", + "displayName": "隨機最愛造型", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Random/Levels/Carbine_Random_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4728dfee-4879-381c-1db1-89b839cbd3d4/displayicon.png", + "displayName": "隨機最愛造型", + "levelItem": null, + "streamedVideo": null, + "uuid": "4728dfee-4879-381c-1db1-89b839cbd3d4" + } + ], + "themeUuid": "0d7a5bfb-4850-098e-1821-d989bbfd58a8", + "uuid": "fff73ad4-4d46-a6d9-43f1-51b633845434", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Snowglobe/Carbine_Snowglobe_PrimaryAsset", "chromas": [ @@ -7613,7 +7973,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/d3d5ab8a-4785-da17-acf9-f6a0cc0e6467/displayicon.png", "displayName": "掠奪印象 幻象 等級4\n(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/d3d5ab8a-4785-da17-acf9-f6a0cc0e6467/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2bff32d4-439a-07c3-22b2-3cbcc7b0a906_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2bff32d4-439a-07c3-22b2-3cbcc7b0a906_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/d3d5ab8a-4785-da17-acf9-f6a0cc0e6467/swatch.png", "uuid": "d3d5ab8a-4785-da17-acf9-f6a0cc0e6467" }, @@ -7622,7 +7982,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/0e3787c9-47df-1fe3-8643-f3837674c8ed/displayicon.png", "displayName": "掠奪印象 幻象 等級4\n(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/0e3787c9-47df-1fe3-8643-f3837674c8ed/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5fdcf953-4f3c-5535-b1ce-18bc8995e1a8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5fdcf953-4f3c-5535-b1ce-18bc8995e1a8_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/0e3787c9-47df-1fe3-8643-f3837674c8ed/swatch.png", "uuid": "0e3787c9-47df-1fe3-8643-f3837674c8ed" }, @@ -7631,7 +7991,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/1708505a-4d55-73d3-8e85-b1ac190fe89c/displayicon.png", "displayName": "掠奪印象 幻象 等級4\n(幻彩3 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/1708505a-4d55-73d3-8e85-b1ac190fe89c/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/92e646a9-446b-2895-64e1-fc9ed95e4ed7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/92e646a9-446b-2895-64e1-fc9ed95e4ed7_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/1708505a-4d55-73d3-8e85-b1ac190fe89c/swatch.png", "uuid": "1708505a-4d55-73d3-8e85-b1ac190fe89c" } @@ -7645,7 +8005,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4c18d802-409d-ec20-f630-d3abfcaa37c7/displayicon.png", "displayName": "掠奪印象 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fc058e0f-40de-114d-f673-e4a2c7e23dc9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fc058e0f-40de-114d-f673-e4a2c7e23dc9_default_universal.mp4", "uuid": "4c18d802-409d-ec20-f630-d3abfcaa37c7" }, { @@ -7653,7 +8013,7 @@ "displayIcon": null, "displayName": "掠奪印象 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a8c9cec7-4a35-225b-0425-b1bfb5eeb28c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a8c9cec7-4a35-225b-0425-b1bfb5eeb28c_default_universal.mp4", "uuid": "8f9e6d07-40aa-7ae0-eedf-d391fcf9a00e" }, { @@ -7661,7 +8021,7 @@ "displayIcon": null, "displayName": "掠奪印象 幻象 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6d012d06-49ab-959c-7aa1-e79a8600c2bd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6d012d06-49ab-959c-7aa1-e79a8600c2bd_default_universal.mp4", "uuid": "a32255f0-4c5a-e518-b83e-3585564e4abb" }, { @@ -7669,7 +8029,7 @@ "displayIcon": null, "displayName": "掠奪印象 幻象 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/49a6586a-4c77-31bb-00e2-8c8a225f847d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/49a6586a-4c77-31bb-00e2-8c8a225f847d_default_universal.mp4", "uuid": "0e321f27-4803-1df8-7414-78b96f1afe7e" } ], @@ -7694,7 +8054,7 @@ "displayIcon": null, "displayName": "偵察行動 幻象 等級4\n(幻彩1 紅色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/de24bd21-4a2c-148b-f20a-0b83ca55ac12/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d7bd6f9f-4e8e-4326-b38a-92970088c391_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d7bd6f9f-4e8e-4326-b38a-92970088c391_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/de24bd21-4a2c-148b-f20a-0b83ca55ac12/swatch.png", "uuid": "de24bd21-4a2c-148b-f20a-0b83ca55ac12" }, @@ -7703,7 +8063,7 @@ "displayIcon": null, "displayName": "偵察行動 幻象 等級4\n(幻彩2 藍色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/8478de28-463d-5734-2d62-3e94c5d5a0c1/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c3692cb7-4e7e-f40f-3186-0fbe3c921dcd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c3692cb7-4e7e-f40f-3186-0fbe3c921dcd_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/8478de28-463d-5734-2d62-3e94c5d5a0c1/swatch.png", "uuid": "8478de28-463d-5734-2d62-3e94c5d5a0c1" }, @@ -7712,7 +8072,7 @@ "displayIcon": null, "displayName": "偵察行動 幻象 等級4\n(幻彩3 綠色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/1803ef04-4f78-d8bc-98c8-1fb55b1a6063/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/27997849-4641-386c-1a60-9384824e25dc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/27997849-4641-386c-1a60-9384824e25dc_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/1803ef04-4f78-d8bc-98c8-1fb55b1a6063/swatch.png", "uuid": "1803ef04-4f78-d8bc-98c8-1fb55b1a6063" } @@ -7726,7 +8086,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5be0b43b-4e66-ab8a-91d9-be9137e2e1c2/displayicon.png", "displayName": "偵察行動 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/89ea0df6-4d76-cb26-95c5-79bd165442cc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/89ea0df6-4d76-cb26-95c5-79bd165442cc_default_universal.mp4", "uuid": "5be0b43b-4e66-ab8a-91d9-be9137e2e1c2" }, { @@ -7734,7 +8094,7 @@ "displayIcon": null, "displayName": "偵察行動 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::Randomizer", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/38fbeb1f-42d0-ecc4-aa85-29b432c08e82_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/38fbeb1f-42d0-ecc4-aa85-29b432c08e82_default_universal.mp4", "uuid": "a8509c8d-4061-1c57-60a5-61a025f28408" }, { @@ -7742,7 +8102,7 @@ "displayIcon": null, "displayName": "偵察行動 幻象 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a8de3306-4bc1-ec6a-5fc3-57acb68edff2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a8de3306-4bc1-ec6a-5fc3-57acb68edff2_default_universal.mp4", "uuid": "b64d1e55-402d-de3c-6ad5-ffbc9c201d1f" }, { @@ -7750,7 +8110,7 @@ "displayIcon": null, "displayName": "偵察行動 幻象 等級4", "levelItem": "EEquippableSkinLevelItem::KillBanner", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b42d5a73-4e83-bab5-e94b-9bba720fb713_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b42d5a73-4e83-bab5-e94b-9bba720fb713_default_universal.mp4", "uuid": "e47e2e77-4923-dbe8-ab46-aba9af1a029e" } ], @@ -7815,6 +8175,36 @@ "uuid": "1f835677-4ed7-fec2-6b80-c3ac384323f6", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/StainedGlass/Carbine_StainedGlass_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/StainedGlass/Chromas/Standard/Carbine_StainedGlass_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/470b319d-4ec7-5e32-7711-8f9d0f398911/displayicon.png", + "displayName": "彩拼幻想 幻象", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/470b319d-4ec7-5e32-7711-8f9d0f398911/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "470b319d-4ec7-5e32-7711-8f9d0f398911" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/fb86d3b7-45f2-6a97-c468-51ab29cb4a04/displayicon.png", + "displayName": "彩拼幻想 幻象", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/StainedGlass/Levels/Carbine_StainedGlass_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/475ff2f2-4a02-1334-c1bf-d5b82fd3af3d/displayicon.png", + "displayName": "彩拼幻想 幻象", + "levelItem": null, + "streamedVideo": null, + "uuid": "475ff2f2-4a02-1334-c1bf-d5b82fd3af3d" + } + ], + "themeUuid": "e0216470-4c4a-d840-0919-3c860cbc40a8", + "uuid": "fb86d3b7-45f2-6a97-c468-51ab29cb4a04", + "wallpaper": "https://media.valorant-api.com/weaponskins/fb86d3b7-45f2-6a97-c468-51ab29cb4a04/wallpaper.png" + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Standard/AssaultRifle_ACR_Standard_PrimaryAsset", "chromas": [ @@ -7924,7 +8314,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/7b534393-40b0-38d0-1ffc-2b8b78708264/displayicon.png", "displayName": "咻咻X 幻象", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2dd422ce-49d2-8fef-98ce-9e8233fb7a24_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2dd422ce-49d2-8fef-98ce-9e8233fb7a24_default_universal.mp4", "uuid": "7b534393-40b0-38d0-1ffc-2b8b78708264" }, { @@ -7932,7 +8322,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5725e2ca-4889-cd60-67e9-b4b968a2f461/displayicon.png", "displayName": "咻咻X 幻象 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/559dc2ec-425f-4b0f-fa23-c98619724994_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/559dc2ec-425f-4b0f-fa23-c98619724994_default_universal.mp4", "uuid": "5725e2ca-4889-cd60-67e9-b4b968a2f461" }, { @@ -7940,7 +8330,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/0f690150-4a9a-1a0d-2ec2-c596696cb311/displayicon.png", "displayName": "咻咻X 幻象 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f492e257-48bc-ef29-5765-7382871d3375_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f492e257-48bc-ef29-5765-7382871d3375_default_universal.mp4", "uuid": "0f690150-4a9a-1a0d-2ec2-c596696cb311" }, { @@ -7948,7 +8338,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/2d8a7310-412c-448b-3475-f681999e3920/displayicon.png", "displayName": "咻咻X 幻象 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e591ebd7-40cc-a6a5-b9a1-07bc9e48d9fb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e591ebd7-40cc-a6a5-b9a1-07bc9e48d9fb_default_universal.mp4", "uuid": "2d8a7310-412c-448b-3475-f681999e3920" } ], @@ -8095,7 +8485,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/712c7a37-4524-0b27-dfdd-4e95181dd36e/displayicon.png", "displayName": "電幻普普 判官", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6f896b22-d427-4051-94a5-add388e5e946_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6f896b22-d427-4051-94a5-add388e5e946_default_universal.mp4", "uuid": "712c7a37-4524-0b27-dfdd-4e95181dd36e" }, { @@ -8103,7 +8493,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c9480c4d-4005-8cd9-e1a2-18bed7f2e801/displayicon.png", "displayName": "電幻普普 判官 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c6bfed96-20f1-4b84-8e2a-f8c95338d45a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c6bfed96-20f1-4b84-8e2a-f8c95338d45a_default_universal.mp4", "uuid": "c9480c4d-4005-8cd9-e1a2-18bed7f2e801" }, { @@ -8111,7 +8501,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/6f48190c-403c-3a92-1a89-f983fa9281db/displayicon.png", "displayName": "電幻普普 判官 等級3", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2ef45441-3703-4ade-b50c-8e1f8943635a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2ef45441-3703-4ade-b50c-8e1f8943635a_default_universal.mp4", "uuid": "6f48190c-403c-3a92-1a89-f983fa9281db" }, { @@ -8119,7 +8509,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c60c98e3-41de-ed9c-fb92-aa9c6e0bc7a0/displayicon.png", "displayName": "電幻普普 判官 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f25b9887-7c7b-448b-9257-4479ca964656_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f25b9887-7c7b-448b-9257-4479ca964656_default_universal.mp4", "uuid": "c60c98e3-41de-ed9c-fb92-aa9c6e0bc7a0" } ], @@ -8144,7 +8534,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/d3382bfe-4890-7c3d-7372-51893966d4a8/displayicon.png", "displayName": "虛無時界 判官 等級4\n(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/d3382bfe-4890-7c3d-7372-51893966d4a8/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/82c67f43-4490-0446-a7b6-48a98420d9c5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/82c67f43-4490-0446-a7b6-48a98420d9c5_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/d3382bfe-4890-7c3d-7372-51893966d4a8/swatch.png", "uuid": "d3382bfe-4890-7c3d-7372-51893966d4a8" }, @@ -8153,7 +8543,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/df6555e9-42c9-4793-35f8-6b948994ea66/displayicon.png", "displayName": "虛無時界 判官 等級4\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/df6555e9-42c9-4793-35f8-6b948994ea66/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/724e2950-42c5-0940-bc40-fe94bce91c74_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/724e2950-42c5-0940-bc40-fe94bce91c74_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/df6555e9-42c9-4793-35f8-6b948994ea66/swatch.png", "uuid": "df6555e9-42c9-4793-35f8-6b948994ea66" }, @@ -8162,7 +8552,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/4d490e20-4d13-9308-7abc-c29732caaef1/displayicon.png", "displayName": "虛無時界 判官 等級4\n(幻彩3 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/4d490e20-4d13-9308-7abc-c29732caaef1/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/24dac1ea-444e-83e8-898e-0887849702e7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/24dac1ea-444e-83e8-898e-0887849702e7_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/4d490e20-4d13-9308-7abc-c29732caaef1/swatch.png", "uuid": "4d490e20-4d13-9308-7abc-c29732caaef1" } @@ -8176,7 +8566,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/b0d5c4da-4d81-4386-e841-759818ce9b6c/displayicon.png", "displayName": "虛無時界 判官", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7e8c2676-4ea5-5f85-21e4-32ae6bcf8675_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7e8c2676-4ea5-5f85-21e4-32ae6bcf8675_default_universal.mp4", "uuid": "b0d5c4da-4d81-4386-e841-759818ce9b6c" }, { @@ -8184,7 +8574,7 @@ "displayIcon": null, "displayName": "虛無時界 判官 等級2", "levelItem": "EEquippableSkinLevelItem::SoundEffects", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fa493fe6-4c99-1501-bd25-10bf3c2dbf86_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fa493fe6-4c99-1501-bd25-10bf3c2dbf86_default_universal.mp4", "uuid": "c6065860-4afc-ef16-97a0-c88445221a2c" }, { @@ -8192,7 +8582,7 @@ "displayIcon": null, "displayName": "虛無時界 判官 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b8d0ba21-4f6d-6965-d05b-a9a970afe0e6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b8d0ba21-4f6d-6965-d05b-a9a970afe0e6_default_universal.mp4", "uuid": "6ee35273-4fe5-c352-1332-57b0eb04ccac" }, { @@ -8200,7 +8590,7 @@ "displayIcon": null, "displayName": "虛無時界 判官 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9a042b63-44cc-6d53-6d67-748957ad8055_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9a042b63-44cc-6d53-6d67-748957ad8055_default_universal.mp4", "uuid": "b05f2a52-40c9-10de-9c90-2ca8e01a5da4" } ], @@ -8257,7 +8647,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d8c9fee3-4e02-bc92-a235-608a556905ae/displayicon.png", "displayName": "至尊龍燄 判官", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9bc9589a-a2c4-43f4-a29a-8d1d6b09a763_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9bc9589a-a2c4-43f4-a29a-8d1d6b09a763_default_universal.mp4", "uuid": "d8c9fee3-4e02-bc92-a235-608a556905ae" }, { @@ -8265,7 +8655,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/640764d8-495d-3663-27ab-b99f5f2466d6/displayicon.png", "displayName": "至尊龍燄 判官 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/00c0a699-a900-4671-b763-f7090473b2fc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/00c0a699-a900-4671-b763-f7090473b2fc_default_universal.mp4", "uuid": "640764d8-495d-3663-27ab-b99f5f2466d6" }, { @@ -8273,7 +8663,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d95e4b3c-4081-4005-cae7-14b890046b4f/displayicon.png", "displayName": "至尊龍燄 判官 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b44b0756-a59c-4f92-9906-c4e72e201806_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b44b0756-a59c-4f92-9906-c4e72e201806_default_universal.mp4", "uuid": "d95e4b3c-4081-4005-cae7-14b890046b4f" }, { @@ -8281,7 +8671,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d41a4383-4c15-4c3f-1f16-4fbb4fb36ed8/displayicon.png", "displayName": "至尊龍燄 判官 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/51da2dd8-00cb-43d2-b13b-b55ab4646d29_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/51da2dd8-00cb-43d2-b13b-b55ab4646d29_default_universal.mp4", "uuid": "d41a4383-4c15-4c3f-1f16-4fbb4fb36ed8" } ], @@ -8630,7 +9020,7 @@ "displayIcon": null, "displayName": "赤珀墨松 判官\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/5b93f92b-41b7-f264-e25e-c5a5f6b1644b/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7422767d-419e-6bfe-e42c-0a9972a2c458_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7422767d-419e-6bfe-e42c-0a9972a2c458_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/5b93f92b-41b7-f264-e25e-c5a5f6b1644b/swatch.png", "uuid": "5b93f92b-41b7-f264-e25e-c5a5f6b1644b" } @@ -8644,7 +9034,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ccf16a23-4222-1abe-d8f0-93a782b5b449/displayicon.png", "displayName": "赤珀墨松 判官", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b688c96c-4561-82ec-5404-20ad588c8ba9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b688c96c-4561-82ec-5404-20ad588c8ba9_default_universal.mp4", "uuid": "ccf16a23-4222-1abe-d8f0-93a782b5b449" } ], @@ -8851,7 +9241,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/8c02ea4f-45ce-76ba-9ea6-198156deb9eb/displayicon.png", "displayName": "紅蓮猛獸 判官", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/cfbe8449-49e0-f0dc-5d26-b39dd0a4f7d6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/cfbe8449-49e0-f0dc-5d26-b39dd0a4f7d6_default_universal.mp4", "uuid": "8c02ea4f-45ce-76ba-9ea6-198156deb9eb" }, { @@ -8859,7 +9249,7 @@ "displayIcon": null, "displayName": "紅蓮猛獸 判官 等級2:每次擊殺敵人時,都會播放專屬視覺特效及音效。", "levelItem": "EEquippableSkinLevelItem::KillEffect", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/65846e89-4bb5-8eff-7943-c399e9aa45e8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/65846e89-4bb5-8eff-7943-c399e9aa45e8_default_universal.mp4", "uuid": "e1401626-424d-a263-2b60-4eb2147c096c" } ], @@ -9104,6 +9494,63 @@ "uuid": "acd26127-48ff-8b9e-7ba6-b989af8a4b24", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/AutoShotgun/StreetWear/AutoShotgun_StreetWear_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/AutoShotgun/StreetWear/Chromas/Standard/AutoShotgun_StreetWear_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/d5fa8e74-4b7f-0621-b9a8-1ab1a1179e7f/displayicon.png", + "displayName": "金屬波浪 判官", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/d5fa8e74-4b7f-0621-b9a8-1ab1a1179e7f/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/d5fa8e74-4b7f-0621-b9a8-1ab1a1179e7f/swatch.png", + "uuid": "d5fa8e74-4b7f-0621-b9a8-1ab1a1179e7f" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/AutoShotgun/StreetWear/Chromas/v1/AutoShotgun_StreetWear_v1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/a47dae64-416d-e13d-0f23-21a04028b282/displayicon.png", + "displayName": "金屬波浪 判官\n(幻彩1 紅色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/a47dae64-416d-e13d-0f23-21a04028b282/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/a47dae64-416d-e13d-0f23-21a04028b282/swatch.png", + "uuid": "a47dae64-416d-e13d-0f23-21a04028b282" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/AutoShotgun/StreetWear/Chromas/v2/AutoShotgun_StreetWear_v2_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/219bd480-425d-f099-17c4-3a8997bfb581/displayicon.png", + "displayName": "金屬波浪 判官\n(幻彩2 紫色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/219bd480-425d-f099-17c4-3a8997bfb581/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/219bd480-425d-f099-17c4-3a8997bfb581/swatch.png", + "uuid": "219bd480-425d-f099-17c4-3a8997bfb581" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/AutoShotgun/StreetWear/Chromas/v3/AutoShotgun_StreetWear_v3_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/fec88191-4632-f1cc-a900-199966a67099/displayicon.png", + "displayName": "金屬波浪 判官\n(幻彩3 綠色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/fec88191-4632-f1cc-a900-199966a67099/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/fec88191-4632-f1cc-a900-199966a67099/swatch.png", + "uuid": "fec88191-4632-f1cc-a900-199966a67099" + } + ], + "contentTierUuid": "0cebb8be-46d7-c12a-d306-e9907bfc5a25", + "displayIcon": "https://media.valorant-api.com/weaponskins/91cea710-495b-fd95-9e7a-6c928a0c5449/displayicon.png", + "displayName": "金屬波浪 判官", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/AutoShotgun/StreetWear/Levels/AutoShotgun_StreetWear_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/1a1e4b44-4d12-897d-e189-f39c244f8f0e/displayicon.png", + "displayName": "金屬波浪 判官", + "levelItem": null, + "streamedVideo": null, + "uuid": "1a1e4b44-4d12-897d-e189-f39c244f8f0e" + } + ], + "themeUuid": "8a046174-4736-8d37-3f2f-9b88c9873040", + "uuid": "91cea710-495b-fd95-9e7a-6c928a0c5449", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/AutoShotgun/Synthwave/AutoShotgun_Synthwave_PrimaryAsset", "chromas": [ @@ -9216,7 +9663,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/01a984b8-4b91-ab61-60b9-1bb9ce54bd04/displayicon.png", "displayName": "異星獵人 重砲", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/818b4325-4d79-82d3-b730-b4b3d45747a8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/818b4325-4d79-82d3-b730-b4b3d45747a8_default_universal.mp4", "uuid": "01a984b8-4b91-ab61-60b9-1bb9ce54bd04" }, { @@ -9224,7 +9671,7 @@ "displayIcon": null, "displayName": "異星獵人 重砲 等級2", "levelItem": "EEquippableSkinLevelItem::HeartbeatAndMapSensor", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/57587b0a-4aba-4ccf-2065-e096bee7a52d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/57587b0a-4aba-4ccf-2065-e096bee7a52d_default_universal.mp4", "uuid": "a3073107-4927-808c-acce-e0972543f75a" } ], @@ -9270,7 +9717,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/4b659a6f-49a2-a97d-c207-4590e06ec3b5/displayicon.png", "displayName": "起源 重砲", "fullRender": "https://media.valorant-api.com/weaponskinchromas/4b659a6f-49a2-a97d-c207-4590e06ec3b5/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/903a5a22-4374-59c6-8bb6-88bcdda9a6ce_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/903a5a22-4374-59c6-8bb6-88bcdda9a6ce_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/4b659a6f-49a2-a97d-c207-4590e06ec3b5/swatch.png", "uuid": "4b659a6f-49a2-a97d-c207-4590e06ec3b5" }, @@ -9279,7 +9726,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/62c9d24c-44d7-6357-268d-f993df039d8e/displayicon.png", "displayName": "起源 重砲 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/62c9d24c-44d7-6357-268d-f993df039d8e/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/905cd059-427a-3525-7d82-92aa8abd0ddc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/905cd059-427a-3525-7d82-92aa8abd0ddc_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/62c9d24c-44d7-6357-268d-f993df039d8e/swatch.png", "uuid": "62c9d24c-44d7-6357-268d-f993df039d8e" }, @@ -9288,7 +9735,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/478ddd16-4927-e7de-eb34-448e283d7ce9/displayicon.png", "displayName": "起源 重砲 等級4\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/478ddd16-4927-e7de-eb34-448e283d7ce9/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/49c5b543-401c-b77d-2160-899cabf6fc49_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/49c5b543-401c-b77d-2160-899cabf6fc49_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/478ddd16-4927-e7de-eb34-448e283d7ce9/swatch.png", "uuid": "478ddd16-4927-e7de-eb34-448e283d7ce9" }, @@ -9297,7 +9744,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/219b4ec8-45e7-dcac-256f-4b9f8aac2797/displayicon.png", "displayName": "起源 重砲 等級4\n(幻彩3 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/219b4ec8-45e7-dcac-256f-4b9f8aac2797/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fb282acf-4a2c-c081-ff14-02bfe6460c44_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fb282acf-4a2c-c081-ff14-02bfe6460c44_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/219b4ec8-45e7-dcac-256f-4b9f8aac2797/swatch.png", "uuid": "219b4ec8-45e7-dcac-256f-4b9f8aac2797" } @@ -9311,7 +9758,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/56042ce2-4f95-19be-7cac-5fb191683953/displayicon.png", "displayName": "起源 重砲", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/200862ec-406b-b09e-8bc9-2ca7c37a40af_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/200862ec-406b-b09e-8bc9-2ca7c37a40af_default_universal.mp4", "uuid": "56042ce2-4f95-19be-7cac-5fb191683953" }, { @@ -9319,7 +9766,7 @@ "displayIcon": null, "displayName": "起源 重砲 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c85334a8-4037-ca44-3c87-348700566dff_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c85334a8-4037-ca44-3c87-348700566dff_default_universal.mp4", "uuid": "d7ba0b3f-445b-1075-69b9-ebb3d79f7cc6" }, { @@ -9327,7 +9774,7 @@ "displayIcon": null, "displayName": "起源 重砲 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6fa88795-4409-9aad-337e-a48783dd805f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6fa88795-4409-9aad-337e-a48783dd805f_default_universal.mp4", "uuid": "36f894b7-49ae-251d-d6c1-6ba43588feb0" }, { @@ -9335,7 +9782,7 @@ "displayIcon": null, "displayName": "起源 重砲 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/903a5a22-4374-59c6-8bb6-88bcdda9a6ce_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/903a5a22-4374-59c6-8bb6-88bcdda9a6ce_default_universal.mp4", "uuid": "52790992-4d3d-cca0-87cd-f8a54cb1a919" } ], @@ -9365,7 +9812,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/bddfd0ba-49a1-0f4f-e32a-d5a1ed29d5fc/displayicon.png", "displayName": "輻能危機001 重砲", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6e6a5d75-43b7-5527-e8d2-7e9dc9c6644b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6e6a5d75-43b7-5527-e8d2-7e9dc9c6644b_default_universal.mp4", "uuid": "bddfd0ba-49a1-0f4f-e32a-d5a1ed29d5fc" }, { @@ -9373,7 +9820,7 @@ "displayIcon": null, "displayName": "輻能危機001 重砲 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5bc54564-44a6-60c2-88f9-459985c69109_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5bc54564-44a6-60c2-88f9-459985c69109_default_universal.mp4", "uuid": "9485c7ec-4869-5454-165f-08898e934835" }, { @@ -9381,7 +9828,7 @@ "displayIcon": null, "displayName": "輻能危機001 重砲 等級3", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5b662cb6-4e5a-1673-03cd-0dbcdc5e5a67_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5b662cb6-4e5a-1673-03cd-0dbcdc5e5a67_default_universal.mp4", "uuid": "587f57bf-495d-2201-1db4-71aa270dd589" } ], @@ -9476,6 +9923,36 @@ "uuid": "aa6162a5-4c73-1c6f-5c69-9b9082e321fd", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Flyer/PumpShotgun_Flyer_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Flyer/Chromas/Standard/PumpShotgun_Flyer_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/2d680b54-40da-0afa-e787-89a545f1c7b2/displayicon.png", + "displayName": "空翼幾何 重砲", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/2d680b54-40da-0afa-e787-89a545f1c7b2/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "2d680b54-40da-0afa-e787-89a545f1c7b2" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/4a1d582d-4c3b-6595-57b6-e3b2cf0ee543/displayicon.png", + "displayName": "空翼幾何 重砲", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Flyer/Levels/PumpShotgun_Flyer_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/8a0ded4e-4218-d59a-53cc-488c3e384425/displayicon.png", + "displayName": "空翼幾何 重砲", + "levelItem": null, + "streamedVideo": null, + "uuid": "8a0ded4e-4218-d59a-53cc-488c3e384425" + } + ], + "themeUuid": "418542b0-4f5c-3f37-4f5a-ecb1d3bc04ce", + "uuid": "4a1d582d-4c3b-6595-57b6-e3b2cf0ee543", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Grid2/PumpShotgun_Grid2_PrimaryAsset", "chromas": [ @@ -9645,7 +10122,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f987be1f-4287-35a4-34a9-d6a92805e7ff/displayicon.png", "displayName": "紫金狂潮//2.0 重砲", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/828e13c6-4160-95aa-dd6f-04b1262f3742_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/828e13c6-4160-95aa-dd6f-04b1262f3742_default_universal.mp4", "uuid": "f987be1f-4287-35a4-34a9-d6a92805e7ff" }, { @@ -9653,7 +10130,7 @@ "displayIcon": null, "displayName": "紫金狂潮//2.0 重砲 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/091ccde3-4ea8-9a5f-b8ae-5b9521c89db6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/091ccde3-4ea8-9a5f-b8ae-5b9521c89db6_default_universal.mp4", "uuid": "bb7700ba-44a7-fac9-0a8b-969412238fd4" }, { @@ -9661,7 +10138,7 @@ "displayIcon": null, "displayName": "紫金狂潮//2.0 重砲 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9f6f3bc4-41fa-04e7-b43e-5abd5dfdb5f9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9f6f3bc4-41fa-04e7-b43e-5abd5dfdb5f9_default_universal.mp4", "uuid": "1db224e3-49b7-eba5-0c94-779238480de1" }, { @@ -9669,7 +10146,7 @@ "displayIcon": null, "displayName": "紫金狂潮//2.0 重砲 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6f864e63-46b6-d478-6575-27876a8975a5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6f864e63-46b6-d478-6575-27876a8975a5_default_universal.mp4", "uuid": "a468da91-408b-e7ad-9872-9dafbdd7d37c" } ], @@ -9816,7 +10293,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/78776175-4040-282f-07a1-0199b1fdcf58/displayicon.png", "displayName": "奇幻龐克 重砲", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7c2c4ef0-46b4-ea35-c2c2-15acd4581e87_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7c2c4ef0-46b4-ea35-c2c2-15acd4581e87_default_universal.mp4", "uuid": "78776175-4040-282f-07a1-0199b1fdcf58" }, { @@ -9824,7 +10301,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/82fe02be-416e-f563-4fed-28b74d7c6675/displayicon.png", "displayName": "奇幻龐克 重砲 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a0c3573d-4cb7-2de3-a636-97b7fbf5dd79_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a0c3573d-4cb7-2de3-a636-97b7fbf5dd79_default_universal.mp4", "uuid": "82fe02be-416e-f563-4fed-28b74d7c6675" }, { @@ -9832,7 +10309,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/e98fc056-4234-d1b9-7d0e-eeb0c41742ad/displayicon.png", "displayName": "奇幻龐克 重砲 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f7012d5d-4b4d-69dd-b5e6-9895fea3069b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f7012d5d-4b4d-69dd-b5e6-9895fea3069b_default_universal.mp4", "uuid": "e98fc056-4234-d1b9-7d0e-eeb0c41742ad" }, { @@ -9840,7 +10317,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/3022b056-4d17-3b4a-a80d-22b096b977ec/displayicon.png", "displayName": "奇幻龐克 重砲 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d02f7987-4c9c-e478-99e8-bdb831281155_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d02f7987-4c9c-e478-99e8-bdb831281155_default_universal.mp4", "uuid": "3022b056-4d17-3b4a-a80d-22b096b977ec" } ], @@ -9930,7 +10407,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f00520c8-4b70-7255-d23c-c0a4887656a2/displayicon.png", "displayName": "離子聖芒 重砲", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f9a37d70-4551-379b-4829-edba397b503d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f9a37d70-4551-379b-4829-edba397b503d_default_universal.mp4", "uuid": "f00520c8-4b70-7255-d23c-c0a4887656a2" }, { @@ -9938,7 +10415,7 @@ "displayIcon": null, "displayName": "離子聖芒 重砲 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/07e42b80-4482-0ef6-d873-8aba12fb7f5e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/07e42b80-4482-0ef6-d873-8aba12fb7f5e_default_universal.mp4", "uuid": "d8f0cad0-40a3-75a4-389b-5d8e91e9e157" }, { @@ -9946,7 +10423,7 @@ "displayIcon": null, "displayName": "離子聖芒 重砲 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3548c45a-416a-21f5-1dda-2988e9b26fca_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3548c45a-416a-21f5-1dda-2988e9b26fca_default_universal.mp4", "uuid": "b1a6a3d0-4c31-266e-0d66-5a960d452220" }, { @@ -9954,7 +10431,7 @@ "displayIcon": null, "displayName": "離子聖芒 重砲 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0a87f34d-4c7d-1f45-ae01-57af0fd50e35_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0a87f34d-4c7d-1f45-ae01-57af0fd50e35_default_universal.mp4", "uuid": "18039610-4134-95f2-0791-e18a2e9f30dd" } ], @@ -9977,7 +10454,7 @@ { "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Oni/Chromas/Black/PumpShotgun_Oni_Black_PrimaryAsset", "displayIcon": "https://media.valorant-api.com/weaponskinchromas/11737623-4661-bfea-ca37-08803bdd6d95/displayicon.png", - "displayName": "惡鬼 重砲 等級4\n(幻彩1 黑色)", + "displayName": "惡鬼 重砲 等級4\n(幻彩1 浮雲)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/11737623-4661-bfea-ca37-08803bdd6d95/fullrender.png", "streamedVideo": null, "swatch": "https://media.valorant-api.com/weaponskinchromas/11737623-4661-bfea-ca37-08803bdd6d95/swatch.png", @@ -9986,7 +10463,7 @@ { "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Oni/Chromas/Green/PumpShotgun_Oni_Green_PrimaryAsset", "displayIcon": "https://media.valorant-api.com/weaponskinchromas/243f999f-4987-7826-4c9e-1ca5bde88212/displayicon.png", - "displayName": "惡鬼 重砲 等級4\n(幻彩2 綠色)", + "displayName": "惡鬼 重砲 等級4\n(幻彩2 落花)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/243f999f-4987-7826-4c9e-1ca5bde88212/fullrender.png", "streamedVideo": null, "swatch": "https://media.valorant-api.com/weaponskinchromas/243f999f-4987-7826-4c9e-1ca5bde88212/swatch.png", @@ -9995,7 +10472,7 @@ { "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Oni/Chromas/White/PumpShotgun_Oni_White_PrimaryAsset", "displayIcon": "https://media.valorant-api.com/weaponskinchromas/79d385fb-4013-e9a3-a191-d4979c13ec58/displayicon.png", - "displayName": "惡鬼 重砲 等級4\n(幻彩3 白色)", + "displayName": "惡鬼 重砲 等級4\n(幻彩3 飛燕)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/79d385fb-4013-e9a3-a191-d4979c13ec58/fullrender.png", "streamedVideo": null, "swatch": "https://media.valorant-api.com/weaponskinchromas/79d385fb-4013-e9a3-a191-d4979c13ec58/swatch.png", @@ -10011,7 +10488,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/cdc130c2-4b12-3702-c8f6-5a8920746395/displayicon.png", "displayName": "惡鬼 重砲", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e3fe12f7-4e0b-987e-f191-c3b34a313a84_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e3fe12f7-4e0b-987e-f191-c3b34a313a84_default_universal.mp4", "uuid": "cdc130c2-4b12-3702-c8f6-5a8920746395" }, { @@ -10019,7 +10496,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/8f1dbce8-4012-72a8-1e4f-d4b50cfc5bb8/displayicon.png", "displayName": "惡鬼 重砲 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a1c7a7b0-45d0-824a-56b7-2da2f09c8908_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a1c7a7b0-45d0-824a-56b7-2da2f09c8908_default_universal.mp4", "uuid": "8f1dbce8-4012-72a8-1e4f-d4b50cfc5bb8" }, { @@ -10027,7 +10504,7 @@ "displayIcon": null, "displayName": "惡鬼 重砲 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6125795b-4a02-a92b-ab3d-80955155101e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6125795b-4a02-a92b-ab3d-80955155101e_default_universal.mp4", "uuid": "b5e520a1-43a6-c144-e70d-918d90f05233" }, { @@ -10035,7 +10512,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/af478f2a-4dae-43d3-1545-7d96a65c60b1/displayicon.png", "displayName": "惡鬼 重砲 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/513a3843-4478-b48e-8421-b79febcba904_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/513a3843-4478-b48e-8421-b79febcba904_default_universal.mp4", "uuid": "af478f2a-4dae-43d3-1545-7d96a65c60b1" } ], @@ -10101,32 +10578,89 @@ "wallpaper": null }, { - "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Random/PumpShotgun_Random_PrimaryAsset", + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/RGB/PumpShotgun_RGB_PrimaryAsset", "chromas": [ { - "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Random/Chromas/Standard/PumpShotgun_Random_Standard_PrimaryAsset", - "displayIcon": null, - "displayName": "Standard", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/74d62853-4aa2-8d3b-d7c2-8d8bde69f23c/fullrender.png", + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/RGB/Chromas/Standard/PumpShotgun_RGB_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/57e0882d-44c2-c87a-f9ee-10a6fd156da8/displayicon.png", + "displayName": "炫彩光譜 重砲", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/57e0882d-44c2-c87a-f9ee-10a6fd156da8/fullrender.png", "streamedVideo": null, - "swatch": null, - "uuid": "74d62853-4aa2-8d3b-d7c2-8d8bde69f23c" + "swatch": "https://media.valorant-api.com/weaponskinchromas/57e0882d-44c2-c87a-f9ee-10a6fd156da8/swatch.png", + "uuid": "57e0882d-44c2-c87a-f9ee-10a6fd156da8" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/RGB/Chromas/v1/PumpShotgun_RGB_v1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/072828d8-45fc-5548-34ce-0290267935f1/displayicon.png", + "displayName": "炫彩光譜 重砲\n(幻彩1 藍色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/072828d8-45fc-5548-34ce-0290267935f1/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/072828d8-45fc-5548-34ce-0290267935f1/swatch.png", + "uuid": "072828d8-45fc-5548-34ce-0290267935f1" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/RGB/Chromas/v2/PumpShotgun_RGB_v2_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/204e445d-4c9a-a9d5-9e9e-579a3899a5bf/displayicon.png", + "displayName": "炫彩光譜 重砲\n(幻彩2 紅色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/204e445d-4c9a-a9d5-9e9e-579a3899a5bf/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/204e445d-4c9a-a9d5-9e9e-579a3899a5bf/swatch.png", + "uuid": "204e445d-4c9a-a9d5-9e9e-579a3899a5bf" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/RGB/Chromas/v3/PumpShotgun_RGB_v3_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c6f81a87-415b-2d1c-b08d-41910843775c/displayicon.png", + "displayName": "炫彩光譜 重砲\n(幻彩3 灰色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/c6f81a87-415b-2d1c-b08d-41910843775c/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/c6f81a87-415b-2d1c-b08d-41910843775c/swatch.png", + "uuid": "c6f81a87-415b-2d1c-b08d-41910843775c" } ], - "contentTierUuid": null, - "displayIcon": "https://media.valorant-api.com/weaponskins/ed407bc7-4949-3131-b84f-d6be83b63a15/displayicon.png", - "displayName": "隨機最愛造型", + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/26582dc8-43dd-15b6-a31c-739b90302bea/displayicon.png", + "displayName": "炫彩光譜 重砲", "levels": [ { - "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Random/Levels/PumpShotgun_Random_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/e5c6d130-4226-cdac-8d03-1b97e907b8f9/displayicon.png", - "displayName": "隨機最愛造型", + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/RGB/Levels/PumpShotgun_RGB_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/23885a08-4a77-82a7-5dbc-ec812f252ca0/displayicon.png", + "displayName": "炫彩光譜 重砲", "levelItem": null, "streamedVideo": null, - "uuid": "e5c6d130-4226-cdac-8d03-1b97e907b8f9" + "uuid": "23885a08-4a77-82a7-5dbc-ec812f252ca0" } ], - "themeUuid": "0d7a5bfb-4850-098e-1821-d989bbfd58a8", + "themeUuid": "f9fb29bd-4592-ee49-0e2a-93a925d7332e", + "uuid": "26582dc8-43dd-15b6-a31c-739b90302bea", + "wallpaper": null + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Random/PumpShotgun_Random_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Random/Chromas/Standard/PumpShotgun_Random_Standard_PrimaryAsset", + "displayIcon": null, + "displayName": "Standard", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/74d62853-4aa2-8d3b-d7c2-8d8bde69f23c/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "74d62853-4aa2-8d3b-d7c2-8d8bde69f23c" + } + ], + "contentTierUuid": null, + "displayIcon": "https://media.valorant-api.com/weaponskins/ed407bc7-4949-3131-b84f-d6be83b63a15/displayicon.png", + "displayName": "隨機最愛造型", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Random/Levels/PumpShotgun_Random_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/e5c6d130-4226-cdac-8d03-1b97e907b8f9/displayicon.png", + "displayName": "隨機最愛造型", + "levelItem": null, + "streamedVideo": null, + "uuid": "e5c6d130-4226-cdac-8d03-1b97e907b8f9" + } + ], + "themeUuid": "0d7a5bfb-4850-098e-1821-d989bbfd58a8", "uuid": "ed407bc7-4949-3131-b84f-d6be83b63a15", "wallpaper": null }, @@ -10147,7 +10681,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/822401fe-4388-c203-3784-a0958885be07/displayicon.png", "displayName": "重力鈾能神經爆破者 重砲 等級2\n(幻彩1 鉻金屬色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/822401fe-4388-c203-3784-a0958885be07/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/26d514e3-4a37-af25-7cda-73a59893ccfa_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/26d514e3-4a37-af25-7cda-73a59893ccfa_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/822401fe-4388-c203-3784-a0958885be07/swatch.png", "uuid": "822401fe-4388-c203-3784-a0958885be07" }, @@ -10156,7 +10690,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/5f9ccde4-456a-67eb-0a7b-d1b8fd0b0258/displayicon.png", "displayName": "重力鈾能神經爆破者 重砲 等級2\n(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/5f9ccde4-456a-67eb-0a7b-d1b8fd0b0258/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/43c5715b-4063-f16c-d5cd-34b0133d3eeb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/43c5715b-4063-f16c-d5cd-34b0133d3eeb_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/5f9ccde4-456a-67eb-0a7b-d1b8fd0b0258/swatch.png", "uuid": "5f9ccde4-456a-67eb-0a7b-d1b8fd0b0258" }, @@ -10165,7 +10699,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/af2c044e-4c83-04a4-bc7a-42a16be55796/displayicon.png", "displayName": "重力鈾能神經爆破者 重砲 等級2\n(幻彩3 紅/藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/af2c044e-4c83-04a4-bc7a-42a16be55796/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/194c5e06-459d-fc7e-d8e8-6b9067bc4466_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/194c5e06-459d-fc7e-d8e8-6b9067bc4466_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/af2c044e-4c83-04a4-bc7a-42a16be55796/swatch.png", "uuid": "af2c044e-4c83-04a4-bc7a-42a16be55796" } @@ -10179,7 +10713,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/22c0aaa3-4919-5a7b-90c0-2dacafdc32fe/displayicon.png", "displayName": "重力鈾能神經爆破者 重砲", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1db4b936-467f-7cdc-536b-27b9cc559260_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1db4b936-467f-7cdc-536b-27b9cc559260_default_universal.mp4", "uuid": "22c0aaa3-4919-5a7b-90c0-2dacafdc32fe" }, { @@ -10187,7 +10721,7 @@ "displayIcon": null, "displayName": "重力鈾能神經爆破者 重砲 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c62be12b-48ed-4a04-633e-c1be974486c9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c62be12b-48ed-4a04-633e-c1be974486c9_default_universal.mp4", "uuid": "c91875e5-48a9-0820-6b65-aba73bf3479d" } ], @@ -10195,63 +10729,6 @@ "uuid": "0dc9a874-41c5-e582-9a36-37946043346c", "wallpaper": null }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/RGB/PumpShotgun_RGB_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/RGB/Chromas/Standard/PumpShotgun_RGB_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/57e0882d-44c2-c87a-f9ee-10a6fd156da8/displayicon.png", - "displayName": "炫彩光譜 重砲", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/57e0882d-44c2-c87a-f9ee-10a6fd156da8/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/57e0882d-44c2-c87a-f9ee-10a6fd156da8/swatch.png", - "uuid": "57e0882d-44c2-c87a-f9ee-10a6fd156da8" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/RGB/Chromas/v1/PumpShotgun_RGB_v1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/072828d8-45fc-5548-34ce-0290267935f1/displayicon.png", - "displayName": "炫彩光譜 重砲\n(幻彩1 藍色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/072828d8-45fc-5548-34ce-0290267935f1/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/072828d8-45fc-5548-34ce-0290267935f1/swatch.png", - "uuid": "072828d8-45fc-5548-34ce-0290267935f1" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/RGB/Chromas/v2/PumpShotgun_RGB_v2_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/204e445d-4c9a-a9d5-9e9e-579a3899a5bf/displayicon.png", - "displayName": "炫彩光譜 重砲\n(幻彩2 紅色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/204e445d-4c9a-a9d5-9e9e-579a3899a5bf/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/204e445d-4c9a-a9d5-9e9e-579a3899a5bf/swatch.png", - "uuid": "204e445d-4c9a-a9d5-9e9e-579a3899a5bf" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/RGB/Chromas/v3/PumpShotgun_RGB_v3_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c6f81a87-415b-2d1c-b08d-41910843775c/displayicon.png", - "displayName": "炫彩光譜 重砲\n(幻彩3 灰色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/c6f81a87-415b-2d1c-b08d-41910843775c/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/c6f81a87-415b-2d1c-b08d-41910843775c/swatch.png", - "uuid": "c6f81a87-415b-2d1c-b08d-41910843775c" - } - ], - "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", - "displayIcon": "https://media.valorant-api.com/weaponskins/26582dc8-43dd-15b6-a31c-739b90302bea/displayicon.png", - "displayName": "炫彩光譜 重砲", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/RGB/Levels/PumpShotgun_RGB_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/23885a08-4a77-82a7-5dbc-ec812f252ca0/displayicon.png", - "displayName": "炫彩光譜 重砲", - "levelItem": null, - "streamedVideo": null, - "uuid": "23885a08-4a77-82a7-5dbc-ec812f252ca0" - } - ], - "themeUuid": "f9fb29bd-4592-ee49-0e2a-93a925d7332e", - "uuid": "26582dc8-43dd-15b6-a31c-739b90302bea", - "wallpaper": null - }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Shotguns/PumpShotgun/Speedboat/PumpShotgun_Speedboat_PrimaryAsset", "chromas": [ @@ -10304,7 +10781,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/0771ccd2-40b0-54cf-37b4-c3b5cac03bdb/displayicon.png", "displayName": "泰坦刺甲 重砲", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/37338bf1-4967-b577-38ee-70a260ea9c47_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/37338bf1-4967-b577-38ee-70a260ea9c47_default_universal.mp4", "uuid": "0771ccd2-40b0-54cf-37b4-c3b5cac03bdb" } ], @@ -10419,7 +10896,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 狂弒 等級5\n(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/175503a8-4276-bc05-ab9f-6abdacf298a5/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2e39cf5b-43cb-b78e-f695-b78d55b6f471_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2e39cf5b-43cb-b78e-f695-b78d55b6f471_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/175503a8-4276-bc05-ab9f-6abdacf298a5/swatch.png", "uuid": "175503a8-4276-bc05-ab9f-6abdacf298a5" }, @@ -10428,7 +10905,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 狂弒 等級5\n(幻彩2 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/9e241944-4fd8-0f64-bff0-609c3d8c428b/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e8aa82e4-4f6f-850c-17ed-e1be53ddb8ea_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e8aa82e4-4f6f-850c-17ed-e1be53ddb8ea_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/9e241944-4fd8-0f64-bff0-609c3d8c428b/swatch.png", "uuid": "9e241944-4fd8-0f64-bff0-609c3d8c428b" }, @@ -10437,7 +10914,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 狂弒 等級5\n(幻彩3 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/ab20e644-49ca-749a-cf5d-d59507361e9a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0f161993-4c76-8317-6d1b-17b5ea4d8a1f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0f161993-4c76-8317-6d1b-17b5ea4d8a1f_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/ab20e644-49ca-749a-cf5d-d59507361e9a/swatch.png", "uuid": "ab20e644-49ca-749a-cf5d-d59507361e9a" } @@ -10451,7 +10928,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/6f2aefab-439d-140a-4dc6-87818e2d72cd/displayicon.png", "displayName": "RGX 11z Pro 狂弒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bb83c26d-4173-b98c-a524-c89497bbd0c5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bb83c26d-4173-b98c-a524-c89497bbd0c5_default_universal.mp4", "uuid": "6f2aefab-439d-140a-4dc6-87818e2d72cd" }, { @@ -10459,7 +10936,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 狂弒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3bb2bcb9-41ce-1d84-a941-a1a40ed35ab8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3bb2bcb9-41ce-1d84-a941-a1a40ed35ab8_default_universal.mp4", "uuid": "496447ae-41f4-278b-ff4a-e09f3272b287" }, { @@ -10467,7 +10944,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 狂弒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/85062fd2-4bfe-17db-8a71-16a4277ea551_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/85062fd2-4bfe-17db-8a71-16a4277ea551_default_universal.mp4", "uuid": "0342399f-45e4-869d-4426-cd8dfc9e0007" }, { @@ -10475,7 +10952,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 狂弒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b82d42f3-41bf-70da-0933-5fa3df7e59f1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b82d42f3-41bf-70da-0933-5fa3df7e59f1_default_universal.mp4", "uuid": "61ceadee-4869-1676-4207-228ac4e19664" }, { @@ -10483,7 +10960,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 狂弒 等級5", "levelItem": "EEquippableSkinLevelItem::KillCounter", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e78c115f-4210-a1d1-9b34-8398bd988cc5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e78c115f-4210-a1d1-9b34-8398bd988cc5_default_universal.mp4", "uuid": "17ccfd06-4449-de46-2170-a29448d8f4aa" } ], @@ -10513,7 +10990,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/8f254346-439f-0e98-2428-62b0c669d2ae/displayicon.png", "displayName": "異星獵人 狂弒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/12186d87-4ec3-b050-99ba-4f8521643aeb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/12186d87-4ec3-b050-99ba-4f8521643aeb_default_universal.mp4", "uuid": "8f254346-439f-0e98-2428-62b0c669d2ae" }, { @@ -10521,7 +10998,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/59a1d043-41ad-111c-80c7-2a94d534819f/displayicon.png", "displayName": "異星獵人 狂弒 等級2", "levelItem": "EEquippableSkinLevelItem::HeartbeatAndMapSensor", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b0fe9184-44bd-e49c-7bfe-1d9b11a47474_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b0fe9184-44bd-e49c-7bfe-1d9b11a47474_default_universal.mp4", "uuid": "59a1d043-41ad-111c-80c7-2a94d534819f" } ], @@ -10567,7 +11044,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c9f9d3b6-4d25-c6d4-c519-76a1a0292c84/displayicon.png", "displayName": "起源 狂弒", "fullRender": "https://media.valorant-api.com/weaponskinchromas/c9f9d3b6-4d25-c6d4-c519-76a1a0292c84/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3a85caf0-4d70-3d5c-0960-7694c246b955_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3a85caf0-4d70-3d5c-0960-7694c246b955_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/c9f9d3b6-4d25-c6d4-c519-76a1a0292c84/swatch.png", "uuid": "c9f9d3b6-4d25-c6d4-c519-76a1a0292c84" }, @@ -10576,7 +11053,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e11c8ac5-4a17-f22f-2f30-cd8436b327dc/displayicon.png", "displayName": "起源 狂弒 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e11c8ac5-4a17-f22f-2f30-cd8436b327dc/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/70a04a32-4789-0848-5fe8-33b7ba5ef525_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/70a04a32-4789-0848-5fe8-33b7ba5ef525_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e11c8ac5-4a17-f22f-2f30-cd8436b327dc/swatch.png", "uuid": "e11c8ac5-4a17-f22f-2f30-cd8436b327dc" }, @@ -10585,7 +11062,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/ae026856-4a63-ad8e-5e05-5eb53ddcc31c/displayicon.png", "displayName": "起源 狂弒 等級4\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/ae026856-4a63-ad8e-5e05-5eb53ddcc31c/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0a1bf728-4813-087c-c312-69aa857418d4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0a1bf728-4813-087c-c312-69aa857418d4_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/ae026856-4a63-ad8e-5e05-5eb53ddcc31c/swatch.png", "uuid": "ae026856-4a63-ad8e-5e05-5eb53ddcc31c" }, @@ -10594,7 +11071,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/251243b1-430a-1b4f-6f80-fab5d271958f/displayicon.png", "displayName": "起源 狂弒 等級4\n(幻彩3 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/251243b1-430a-1b4f-6f80-fab5d271958f/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3776d279-4be3-63ae-a5c7-eb9242c4541e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3776d279-4be3-63ae-a5c7-eb9242c4541e_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/251243b1-430a-1b4f-6f80-fab5d271958f/swatch.png", "uuid": "251243b1-430a-1b4f-6f80-fab5d271958f" } @@ -10608,7 +11085,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c4547e69-47a7-dc52-d09c-94bbf87dba0a/displayicon.png", "displayName": "起源 狂弒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/96f7c707-4cef-36d2-0897-44a2170496b0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/96f7c707-4cef-36d2-0897-44a2170496b0_default_universal.mp4", "uuid": "c4547e69-47a7-dc52-d09c-94bbf87dba0a" }, { @@ -10616,7 +11093,7 @@ "displayIcon": null, "displayName": "起源 狂弒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0d88399d-4d13-011b-04f9-2daf0e6455e7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0d88399d-4d13-011b-04f9-2daf0e6455e7_default_universal.mp4", "uuid": "bcdaa979-4e4c-744c-6fd9-2381b2fc2341" }, { @@ -10624,7 +11101,7 @@ "displayIcon": null, "displayName": "起源 狂弒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b021ac8e-472d-b712-c9b1-679da665439f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b021ac8e-472d-b712-c9b1-679da665439f_default_universal.mp4", "uuid": "4a42f394-4f6c-0b13-3e83-5a8bdf81e0f6" }, { @@ -10632,7 +11109,7 @@ "displayIcon": null, "displayName": "起源 狂弒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3a85caf0-4d70-3d5c-0960-7694c246b955_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3a85caf0-4d70-3d5c-0960-7694c246b955_default_universal.mp4", "uuid": "d3496119-4338-51cb-793f-dda5845d38a5" } ], @@ -10689,7 +11166,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4b74b3ee-4a63-7339-a28f-8b8be010ca5a/displayicon.png", "displayName": "電幻普普 狂弒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/60d541f1-7ee3-4877-8af6-697c99e28d51_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/60d541f1-7ee3-4877-8af6-697c99e28d51_default_universal.mp4", "uuid": "4b74b3ee-4a63-7339-a28f-8b8be010ca5a" }, { @@ -10697,7 +11174,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/eddc294e-45f1-026e-1362-70b4e1f1f03a/displayicon.png", "displayName": "電幻普普 狂弒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/09e0f412-8220-46e7-964c-935b00a62f3a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/09e0f412-8220-46e7-964c-935b00a62f3a_default_universal.mp4", "uuid": "eddc294e-45f1-026e-1362-70b4e1f1f03a" }, { @@ -10705,7 +11182,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d89c07d2-4eab-3776-fa3e-d6abb0e18188/displayicon.png", "displayName": "電幻普普 狂弒 等級3", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9e00245b-5dd6-476e-8330-164b6c78a254_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9e00245b-5dd6-476e-8330-164b6c78a254_default_universal.mp4", "uuid": "d89c07d2-4eab-3776-fa3e-d6abb0e18188" }, { @@ -10713,7 +11190,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/71af2fc6-4a39-7c34-158f-abbd0eeb97e5/displayicon.png", "displayName": "電幻普普 狂弒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7682f614-106b-4ec7-a91f-809b7d7d4b9e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7682f614-106b-4ec7-a91f-809b7d7d4b9e_default_universal.mp4", "uuid": "71af2fc6-4a39-7c34-158f-abbd0eeb97e5" } ], @@ -10770,7 +11247,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ea65ba94-468d-39a8-5ded-98820d72d19f/displayicon.png", "displayName": "至尊龍燄 狂弒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/83783875-f20d-499e-add9-bee9cb81f01e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/83783875-f20d-499e-add9-bee9cb81f01e_default_universal.mp4", "uuid": "ea65ba94-468d-39a8-5ded-98820d72d19f" }, { @@ -10778,7 +11255,7 @@ "displayIcon": null, "displayName": "至尊龍燄 狂弒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bd9b6542-8e87-412f-89ef-9af59c11b062_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bd9b6542-8e87-412f-89ef-9af59c11b062_default_universal.mp4", "uuid": "63307028-4680-bbf3-a69f-7faad8113a49" }, { @@ -10786,7 +11263,7 @@ "displayIcon": null, "displayName": "至尊龍燄 狂弒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/340f4fa7-7eca-4c63-b8c3-938a01302947_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/340f4fa7-7eca-4c63-b8c3-938a01302947_default_universal.mp4", "uuid": "b86ea344-404d-de22-92c8-1b89c455c47d" }, { @@ -10794,7 +11271,7 @@ "displayIcon": null, "displayName": "至尊龍燄 狂弒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bc78c474-4ce3-4cb6-a887-8d3da7694780_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bc78c474-4ce3-4cb6-a887-8d3da7694780_default_universal.mp4", "uuid": "f70dc825-4be6-0074-0526-758b3f183152" } ], @@ -10824,7 +11301,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/1ef9fcc9-4087-a079-616a-849f43c51665/displayicon.png", "displayName": "永恆之沙 狂弒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7111816a-479f-7701-6229-0ebef1bea459_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7111816a-479f-7701-6229-0ebef1bea459_default_universal.mp4", "uuid": "1ef9fcc9-4087-a079-616a-849f43c51665" } ], @@ -11091,7 +11568,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/2607b2c6-45f7-e75e-94f8-58a738773d5c/displayicon.png", "displayName": "紫金狂潮//2.0 狂弒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/221c1a5c-4e6c-8744-a68f-5e80b34adabb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/221c1a5c-4e6c-8744-a68f-5e80b34adabb_default_universal.mp4", "uuid": "2607b2c6-45f7-e75e-94f8-58a738773d5c" }, { @@ -11099,7 +11576,7 @@ "displayIcon": null, "displayName": "紫金狂潮//2.0 狂弒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ef65587d-4052-8a33-07c9-e6bcce51174e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ef65587d-4052-8a33-07c9-e6bcce51174e_default_universal.mp4", "uuid": "5c29291f-45d5-d302-5cd8-38af2e1565eb" }, { @@ -11107,7 +11584,7 @@ "displayIcon": null, "displayName": "紫金狂潮//2.0 狂弒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/960e47da-47bc-cd28-e606-47ac4ce227fc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/960e47da-47bc-cd28-e606-47ac4ce227fc_default_universal.mp4", "uuid": "5c5edc8b-407e-55b5-ae14-9bb555b4043b" }, { @@ -11115,7 +11592,7 @@ "displayIcon": null, "displayName": "紫金狂潮//2.0 狂弒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1179d0c4-43eb-215b-fa50-3f9c897f323f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1179d0c4-43eb-215b-fa50-3f9c897f323f_default_universal.mp4", "uuid": "ac9c073b-4dd0-28c4-3b6a-f09e3a25e60f" } ], @@ -11170,7 +11647,7 @@ "displayIcon": null, "displayName": "永垂不朽 狂弒\n(幻彩1 此生)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/d94d7aa6-4e62-3d41-51be-c0bcdda68c76/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b1424619-4b05-f757-0152-588da08a4027_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b1424619-4b05-f757-0152-588da08a4027_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/d94d7aa6-4e62-3d41-51be-c0bcdda68c76/swatch.png", "uuid": "d94d7aa6-4e62-3d41-51be-c0bcdda68c76" }, @@ -11179,7 +11656,7 @@ "displayIcon": null, "displayName": "永垂不朽 狂弒\n(幻彩2 永恆)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/7bbab796-4518-f154-9df9-abad72fdb9d7/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/86bf9fed-4914-fae5-8e7a-dd83f34370bd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/86bf9fed-4914-fae5-8e7a-dd83f34370bd_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/7bbab796-4518-f154-9df9-abad72fdb9d7/swatch.png", "uuid": "7bbab796-4518-f154-9df9-abad72fdb9d7" } @@ -11193,7 +11670,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/55869fb8-4a79-e684-2000-028fa9f54060/displayicon.png", "displayName": "永垂不朽 狂弒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/491bdf21-4983-ddd7-c53d-5492562222b9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/491bdf21-4983-ddd7-c53d-5492562222b9_default_universal.mp4", "uuid": "55869fb8-4a79-e684-2000-028fa9f54060" } ], @@ -11305,7 +11782,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/1f95d958-47b3-69a1-10a9-6399bc0b4447/displayicon.png", "displayName": "離子聖芒 狂弒 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/1f95d958-47b3-69a1-10a9-6399bc0b4447/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/dbf0ca3e-45c7-92c5-fa98-8db9b2391f5a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/dbf0ca3e-45c7-92c5-fa98-8db9b2391f5a_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/1f95d958-47b3-69a1-10a9-6399bc0b4447/swatch.png", "uuid": "1f95d958-47b3-69a1-10a9-6399bc0b4447" }, @@ -11314,7 +11791,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/628d771b-4706-ed3d-a952-6ebc25f3bf7e/displayicon.png", "displayName": "離子聖芒 狂弒 等級4\n(幻彩2 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/628d771b-4706-ed3d-a952-6ebc25f3bf7e/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d338aa3f-4fd9-404e-a43a-d3b3725523fb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d338aa3f-4fd9-404e-a43a-d3b3725523fb_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/628d771b-4706-ed3d-a952-6ebc25f3bf7e/swatch.png", "uuid": "628d771b-4706-ed3d-a952-6ebc25f3bf7e" }, @@ -11323,7 +11800,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/6ab70f1c-4758-f7b5-08ed-d788c7006378/displayicon.png", "displayName": "離子聖芒 狂弒 等級4\n(幻彩3 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/6ab70f1c-4758-f7b5-08ed-d788c7006378/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b779b54e-4e7a-2caf-0bb8-ae87638fd2fc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b779b54e-4e7a-2caf-0bb8-ae87638fd2fc_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/6ab70f1c-4758-f7b5-08ed-d788c7006378/swatch.png", "uuid": "6ab70f1c-4758-f7b5-08ed-d788c7006378" } @@ -11337,7 +11814,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/64fcb53f-465d-318e-5bf9-bfa7c39b1d67/displayicon.png", "displayName": "離子聖芒 狂弒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7c632549-4eb5-f767-f168-ffb93fd2bce9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7c632549-4eb5-f767-f168-ffb93fd2bce9_default_universal.mp4", "uuid": "64fcb53f-465d-318e-5bf9-bfa7c39b1d67" }, { @@ -11345,7 +11822,7 @@ "displayIcon": null, "displayName": "離子聖芒 狂弒 等級2", "levelItem": "EEquippableSkinLevelItem::SoundEffects", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ecdfa09b-4ac1-671d-4111-159b55617e88_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ecdfa09b-4ac1-671d-4111-159b55617e88_default_universal.mp4", "uuid": "828b7634-4bea-0558-0383-94961e3019f3" }, { @@ -11353,7 +11830,7 @@ "displayIcon": null, "displayName": "離子聖芒 狂弒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4a90bd38-4743-6a6b-57a0-08874fcc2f98_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4a90bd38-4743-6a6b-57a0-08874fcc2f98_default_universal.mp4", "uuid": "396da3b7-4830-9e1e-5915-7dbba955b95c" }, { @@ -11361,7 +11838,7 @@ "displayIcon": null, "displayName": "離子聖芒 狂弒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/18809e6f-486b-0998-1dd7-1ba0285b1dbf_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/18809e6f-486b-0998-1dd7-1ba0285b1dbf_default_universal.mp4", "uuid": "76d90e0a-494a-8cdb-6c21-10b02f27ccc8" } ], @@ -11369,6 +11846,87 @@ "uuid": "906dcda9-477a-6d09-f85d-599ccb86e168", "wallpaper": "https://media.valorant-api.com/weaponskins/906dcda9-477a-6d09-f85d-599ccb86e168/wallpaper.png" }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/Oni2/AutoPistol_Oni2_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/Oni2/Chromas/Standard/AutoPistol_Oni2_Standard_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 狂弒", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/058f55ff-4d78-4849-7f9c-2d84f3f047e6/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/058f55ff-4d78-4849-7f9c-2d84f3f047e6/swatch.png", + "uuid": "058f55ff-4d78-4849-7f9c-2d84f3f047e6" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/Oni2/Chromas/v1/AutoPistol_Oni2_v1_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 狂弒 等級4\n(幻彩1 浮雲)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/9d87a2ad-4990-81be-5def-80b72bab0192/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/68ed1141-4531-2d08-64f6-f78b9707c181_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/9d87a2ad-4990-81be-5def-80b72bab0192/swatch.png", + "uuid": "9d87a2ad-4990-81be-5def-80b72bab0192" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/Oni2/Chromas/v2/AutoPistol_Oni2_v2_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 狂弒 等級4\n(幻彩2 落花)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/8983e6f2-442b-f6c0-3432-67b4dd8fa4c0/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c1c35db4-44fb-73b0-e379-b3976bdbca27_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/8983e6f2-442b-f6c0-3432-67b4dd8fa4c0/swatch.png", + "uuid": "8983e6f2-442b-f6c0-3432-67b4dd8fa4c0" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/Oni2/Chromas/v3/AutoPistol_Oni2_v3_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 狂弒 等級4\n(幻彩3 飛燕)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/0480a120-42db-4354-12c6-23afed9e64eb/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/23797cc7-4476-ead2-183b-659d3da9eb7f_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/0480a120-42db-4354-12c6-23afed9e64eb/swatch.png", + "uuid": "0480a120-42db-4354-12c6-23afed9e64eb" + } + ], + "contentTierUuid": "60bca009-4182-7998-dee7-b8a2558dc369", + "displayIcon": "https://media.valorant-api.com/weaponskins/7a20502f-45b2-6781-b408-08bc86c5e5e2/displayicon.png", + "displayName": "惡鬼 狂弒", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/Oni2/Levels/AutoPistol_Oni2_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4add59eb-41f6-4184-3cb6-c89a81b6739b/displayicon.png", + "displayName": "惡鬼 狂弒", + "levelItem": null, + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bdad7e39-4040-a5d9-69d0-a9ac2366b8ca_default_universal.mp4", + "uuid": "4add59eb-41f6-4184-3cb6-c89a81b6739b" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/Oni2/Levels/AutoPistol_Oni2_Lv2_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 狂弒 等級2", + "levelItem": "EEquippableSkinLevelItem::SoundEffects", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9a4b199a-450c-b765-1a44-6da73c0186ae_default_universal.mp4", + "uuid": "3af59c17-49e5-5ced-981c-6e886ae67e39" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/Oni2/Levels/AutoPistol_Oni2_Lv3_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 狂弒 等級3", + "levelItem": "EEquippableSkinLevelItem::VFX", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8416857e-4faa-d70c-bbab-d2be80965f2e_default_universal.mp4", + "uuid": "ac262e4e-4253-ff1d-c9a9-7e862e65d34a" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/Oni2/Levels/AutoPistol_Oni2_Lv4_PrimaryAsset", + "displayIcon": null, + "displayName": "惡鬼 狂弒 等級4", + "levelItem": "EEquippableSkinLevelItem::Finisher", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2955baac-4edf-6446-86cb-ee93af3a9c04_default_universal.mp4", + "uuid": "44b156ee-421c-88ff-fa3b-3ebf1c93067d" + } + ], + "themeUuid": "a547897d-4bd4-7c77-f5e6-55973f0e89ef", + "uuid": "7a20502f-45b2-6781-b408-08bc86c5e5e2", + "wallpaper": "https://media.valorant-api.com/weaponskins/7a20502f-45b2-6781-b408-08bc86c5e5e2/wallpaper.png" + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/Phoenix/AutomaticPistol_Phoenix_PrimaryAsset", "chromas": [ @@ -11486,6 +12044,63 @@ "uuid": "fa0bb312-4446-a061-9b06-ee88314e07fa", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/RGB/AutoPistol_RGB_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/RGB/Chromas/Standard/AutoPistol_RGB_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c4db17ef-4610-90e6-1e8c-688b3a5aac71/displayicon.png", + "displayName": "炫彩光譜 狂弒", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/c4db17ef-4610-90e6-1e8c-688b3a5aac71/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/c4db17ef-4610-90e6-1e8c-688b3a5aac71/swatch.png", + "uuid": "c4db17ef-4610-90e6-1e8c-688b3a5aac71" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/RGB/Chromas/v1/AutoPistol_RGB_v1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/667e3d2c-414d-175a-8135-4886ea07bee7/displayicon.png", + "displayName": "炫彩光譜 狂弒\n(幻彩1 藍色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/667e3d2c-414d-175a-8135-4886ea07bee7/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/667e3d2c-414d-175a-8135-4886ea07bee7/swatch.png", + "uuid": "667e3d2c-414d-175a-8135-4886ea07bee7" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/RGB/Chromas/v2/AutoPistol_RGB_v2_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e49b631b-4473-1238-5622-5dbdbd673de3/displayicon.png", + "displayName": "炫彩光譜 狂弒\n(幻彩2 紅色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/e49b631b-4473-1238-5622-5dbdbd673de3/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/e49b631b-4473-1238-5622-5dbdbd673de3/swatch.png", + "uuid": "e49b631b-4473-1238-5622-5dbdbd673de3" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/RGB/Chromas/v3/AutoPistol_RGB_v3_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/2b8b1f40-43bb-72e2-e836-4d93dda662cb/displayicon.png", + "displayName": "炫彩光譜 狂弒\n(幻彩3 灰色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/2b8b1f40-43bb-72e2-e836-4d93dda662cb/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/2b8b1f40-43bb-72e2-e836-4d93dda662cb/swatch.png", + "uuid": "2b8b1f40-43bb-72e2-e836-4d93dda662cb" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/f67d4d78-4567-f8ca-010b-18919c49aa05/displayicon.png", + "displayName": "炫彩光譜 狂弒", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/RGB/Levels/AutoPistol_RGB_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/fe7ac291-4516-02d4-9101-0a990615a585/displayicon.png", + "displayName": "炫彩光譜 狂弒", + "levelItem": null, + "streamedVideo": null, + "uuid": "fe7ac291-4516-02d4-9101-0a990615a585" + } + ], + "themeUuid": "f9fb29bd-4592-ee49-0e2a-93a925d7332e", + "uuid": "f67d4d78-4567-f8ca-010b-18919c49aa05", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/Rainbow/AutoPistol_Rainbow_PrimaryAsset", "chromas": [ @@ -11546,63 +12161,6 @@ "uuid": "7b82c605-44bb-aae9-55bf-a4afef323553", "wallpaper": null }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/RGB/AutoPistol_RGB_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/RGB/Chromas/Standard/AutoPistol_RGB_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c4db17ef-4610-90e6-1e8c-688b3a5aac71/displayicon.png", - "displayName": "炫彩光譜 狂弒", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/c4db17ef-4610-90e6-1e8c-688b3a5aac71/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/c4db17ef-4610-90e6-1e8c-688b3a5aac71/swatch.png", - "uuid": "c4db17ef-4610-90e6-1e8c-688b3a5aac71" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/RGB/Chromas/v1/AutoPistol_RGB_v1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/667e3d2c-414d-175a-8135-4886ea07bee7/displayicon.png", - "displayName": "炫彩光譜 狂弒\n(幻彩1 藍色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/667e3d2c-414d-175a-8135-4886ea07bee7/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/667e3d2c-414d-175a-8135-4886ea07bee7/swatch.png", - "uuid": "667e3d2c-414d-175a-8135-4886ea07bee7" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/RGB/Chromas/v2/AutoPistol_RGB_v2_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e49b631b-4473-1238-5622-5dbdbd673de3/displayicon.png", - "displayName": "炫彩光譜 狂弒\n(幻彩2 紅色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/e49b631b-4473-1238-5622-5dbdbd673de3/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/e49b631b-4473-1238-5622-5dbdbd673de3/swatch.png", - "uuid": "e49b631b-4473-1238-5622-5dbdbd673de3" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/RGB/Chromas/v3/AutoPistol_RGB_v3_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/2b8b1f40-43bb-72e2-e836-4d93dda662cb/displayicon.png", - "displayName": "炫彩光譜 狂弒\n(幻彩3 灰色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/2b8b1f40-43bb-72e2-e836-4d93dda662cb/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/2b8b1f40-43bb-72e2-e836-4d93dda662cb/swatch.png", - "uuid": "2b8b1f40-43bb-72e2-e836-4d93dda662cb" - } - ], - "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", - "displayIcon": "https://media.valorant-api.com/weaponskins/f67d4d78-4567-f8ca-010b-18919c49aa05/displayicon.png", - "displayName": "炫彩光譜 狂弒", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/RGB/Levels/AutoPistol_RGB_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/fe7ac291-4516-02d4-9101-0a990615a585/displayicon.png", - "displayName": "炫彩光譜 狂弒", - "levelItem": null, - "streamedVideo": null, - "uuid": "fe7ac291-4516-02d4-9101-0a990615a585" - } - ], - "themeUuid": "f9fb29bd-4592-ee49-0e2a-93a925d7332e", - "uuid": "f67d4d78-4567-f8ca-010b-18919c49aa05", - "wallpaper": null - }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/AutoPistol/Spikes/AutoPistol_Spikes_PrimaryAsset", "chromas": [ @@ -11625,7 +12183,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/47ee5cb6-4059-df8b-6d40-5daaa01ff49f/displayicon.png", "displayName": "泰坦刺甲 狂弒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1adbe917-494e-04dc-02ee-f79c45a54ba5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1adbe917-494e-04dc-02ee-f79c45a54ba5_default_universal.mp4", "uuid": "47ee5cb6-4059-df8b-6d40-5daaa01ff49f" } ], @@ -11742,7 +12300,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/31da3ec9-4eb0-ce9f-fcbb-e09ec626e748/displayicon.png", "displayName": "咻咻X 狂弒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/dcbc140b-4fba-79e0-672f-1980abb92dff_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/dcbc140b-4fba-79e0-672f-1980abb92dff_default_universal.mp4", "uuid": "31da3ec9-4eb0-ce9f-fcbb-e09ec626e748" }, { @@ -11750,7 +12308,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/3ce662ff-410f-4ed6-1e81-94ad17a685e3/displayicon.png", "displayName": "咻咻X 狂弒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/473e874b-4ae3-4055-bfe5-b3a2745f99d3_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/473e874b-4ae3-4055-bfe5-b3a2745f99d3_default_universal.mp4", "uuid": "3ce662ff-410f-4ed6-1e81-94ad17a685e3" }, { @@ -11758,7 +12316,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/a37d950a-483a-ec0d-8ddb-218f726df65e/displayicon.png", "displayName": "咻咻X 狂弒 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b5492751-437c-b082-0455-00baa373f057_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b5492751-437c-b082-0455-00baa373f057_default_universal.mp4", "uuid": "a37d950a-483a-ec0d-8ddb-218f726df65e" }, { @@ -11766,7 +12324,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/79eabc1b-45ed-ea03-35f4-ffaadccfc675/displayicon.png", "displayName": "咻咻X 狂弒 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5f9237c6-4126-b053-1476-e88b33150fdd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5f9237c6-4126-b053-1476-e88b33150fdd_default_universal.mp4", "uuid": "79eabc1b-45ed-ea03-35f4-ffaadccfc675" } ], @@ -11791,7 +12349,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/6bdc383f-49cd-ca87-ea30-e89a400d4b6a/displayicon.png", "displayName": "RGX 11z Pro 制式手槍 等級5\n(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/6bdc383f-49cd-ca87-ea30-e89a400d4b6a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/438f4c63-491f-ebc7-01ba-1d9951237896_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/438f4c63-491f-ebc7-01ba-1d9951237896_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/6bdc383f-49cd-ca87-ea30-e89a400d4b6a/swatch.png", "uuid": "6bdc383f-49cd-ca87-ea30-e89a400d4b6a" }, @@ -11800,7 +12358,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/63091ee5-47d9-f252-f7ad-09bb049c8673/displayicon.png", "displayName": "RGX 11z Pro 制式手槍 等級5\n(幻彩2 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/63091ee5-47d9-f252-f7ad-09bb049c8673/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/407248b6-49b7-34a0-0d7a-49b71a9f6745_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/407248b6-49b7-34a0-0d7a-49b71a9f6745_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/63091ee5-47d9-f252-f7ad-09bb049c8673/swatch.png", "uuid": "63091ee5-47d9-f252-f7ad-09bb049c8673" }, @@ -11809,7 +12367,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/bd0feedc-4571-773b-0f94-6dad613537d1/displayicon.png", "displayName": "RGX 11z Pro 制式手槍 等級5\n(幻彩3 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/bd0feedc-4571-773b-0f94-6dad613537d1/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e3404dcc-41e9-a36f-62bb-e49cabcf8784_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e3404dcc-41e9-a36f-62bb-e49cabcf8784_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/bd0feedc-4571-773b-0f94-6dad613537d1/swatch.png", "uuid": "bd0feedc-4571-773b-0f94-6dad613537d1" } @@ -11823,7 +12381,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/90cd5d86-4516-918b-29af-07b116f63aa9/displayicon.png", "displayName": "RGX 11z Pro 制式手槍", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a73aac70-4273-acdf-9952-0db1202b2bb5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a73aac70-4273-acdf-9952-0db1202b2bb5_default_universal.mp4", "uuid": "90cd5d86-4516-918b-29af-07b116f63aa9" }, { @@ -11831,7 +12389,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 制式手槍 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a2977ae7-4839-f0b8-11b0-d3a1ab8a918a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a2977ae7-4839-f0b8-11b0-d3a1ab8a918a_default_universal.mp4", "uuid": "335af838-4f48-e2db-ca91-3d976aab34c2" }, { @@ -11839,7 +12397,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 制式手槍 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a7c1d830-42f2-d6e7-f5b7-1b828d29c8e0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a7c1d830-42f2-d6e7-f5b7-1b828d29c8e0_default_universal.mp4", "uuid": "c11deaae-4528-af24-25c6-7f8d928951a5" }, { @@ -11847,7 +12405,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 制式手槍 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e167ee91-41e3-afb2-41ed-41850792777e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e167ee91-41e3-afb2-41ed-41850792777e_default_universal.mp4", "uuid": "44fb2542-45e5-f504-fdb5-fdb075ece7af" }, { @@ -11855,7 +12413,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 制式手槍 等級5", "levelItem": "EEquippableSkinLevelItem::KillCounter", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c495d53f-4189-3a86-50b2-978dee108f68_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c495d53f-4189-3a86-50b2-978dee108f68_default_universal.mp4", "uuid": "4c741d16-4ab3-873f-99e0-7ab0c0643f08" } ], @@ -11910,7 +12468,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c2e3235a-426a-0a34-8559-6492ca4434a9/displayicon.png", "displayName": "光炫聲譜 制式手槍 等級4\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/c2e3235a-426a-0a34-8559-6492ca4434a9/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4f6a0cb2-4eb4-419f-170a-2bab267cd372_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4f6a0cb2-4eb4-419f-170a-2bab267cd372_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/c2e3235a-426a-0a34-8559-6492ca4434a9/swatch.png", "uuid": "c2e3235a-426a-0a34-8559-6492ca4434a9" }, @@ -11919,7 +12477,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c8ec1980-46c4-83d2-f405-58b36bed40c7/displayicon.png", "displayName": "光炫聲譜 制式手槍 等級4\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/c8ec1980-46c4-83d2-f405-58b36bed40c7/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/68a4477c-46a9-608b-6387-e0a928b9d94a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/68a4477c-46a9-608b-6387-e0a928b9d94a_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/c8ec1980-46c4-83d2-f405-58b36bed40c7/swatch.png", "uuid": "c8ec1980-46c4-83d2-f405-58b36bed40c7" }, @@ -11928,7 +12486,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/1746329a-450b-db34-eb45-a19c4af64aa8/displayicon.png", "displayName": "光炫聲譜 制式手槍 等級4\n(幻彩3 紫/粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/1746329a-450b-db34-eb45-a19c4af64aa8/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/66f72e35-4f2d-c2ff-c715-46b10a2748a4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/66f72e35-4f2d-c2ff-c715-46b10a2748a4_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/1746329a-450b-db34-eb45-a19c4af64aa8/swatch.png", "uuid": "1746329a-450b-db34-eb45-a19c4af64aa8" } @@ -11942,7 +12500,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/fe32e4bd-420f-b4cc-de37-febb78df9e16/displayicon.png", "displayName": "光炫聲譜 制式手槍", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bb03aa45-4115-664c-22b9-bf8ef20f0d12_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bb03aa45-4115-664c-22b9-bf8ef20f0d12_default_universal.mp4", "uuid": "fe32e4bd-420f-b4cc-de37-febb78df9e16" }, { @@ -11950,7 +12508,7 @@ "displayIcon": null, "displayName": "光炫聲譜 制式手槍 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3aed15cf-44fd-2ba3-77df-a88c89fb44ff_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3aed15cf-44fd-2ba3-77df-a88c89fb44ff_default_universal.mp4", "uuid": "dfa8a5fd-41bb-cb7f-a8c9-f4b9e1d1de26" }, { @@ -11958,7 +12516,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/345b4316-42d1-6e90-321d-fa930ef43762/displayicon.png", "displayName": "光炫聲譜 制式手槍 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3b334d85-4471-86d0-3f9d-3d97c94cbfbc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3b334d85-4471-86d0-3f9d-3d97c94cbfbc_default_universal.mp4", "uuid": "345b4316-42d1-6e90-321d-fa930ef43762" }, { @@ -11966,7 +12524,7 @@ "displayIcon": null, "displayName": "光炫聲譜 制式手槍 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9c964366-4400-adf5-d932-66ad1593fe20_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9c964366-4400-adf5-d932-66ad1593fe20_default_universal.mp4", "uuid": "40489a32-47c8-710c-5ed9-738a61a3db38" } ], @@ -12083,7 +12641,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/13f3818c-4518-cf39-51f6-8cad1dc5bfc6/displayicon.png", "displayName": "輻能危機001 制式手槍", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d9ddc50a-4c73-c47a-2921-c69f741c7346_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d9ddc50a-4c73-c47a-2921-c69f741c7346_default_universal.mp4", "uuid": "13f3818c-4518-cf39-51f6-8cad1dc5bfc6" }, { @@ -12091,7 +12649,7 @@ "displayIcon": null, "displayName": "輻能危機001 制式手槍 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/da2e4f61-4048-cd6d-ef65-f5bf16b0e102_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/da2e4f61-4048-cd6d-ef65-f5bf16b0e102_default_universal.mp4", "uuid": "e70a810d-4dc6-7d09-cb28-eabe004df4bb" }, { @@ -12099,7 +12657,7 @@ "displayIcon": null, "displayName": "輻能危機001 制式手槍 等級3", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/994cafd7-43cc-1cbb-f3d3-70845fc010e7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/994cafd7-43cc-1cbb-f3d3-70845fc010e7_default_universal.mp4", "uuid": "499135d0-4848-c78c-21fc-5699a262fa95" } ], @@ -12216,7 +12774,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/25cb63cd-416e-ab23-2377-d18638679871/displayicon.png", "displayName": "電幻普普 制式手槍", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f59f33e5-4158-0d7e-8747-28b76f0f2552_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f59f33e5-4158-0d7e-8747-28b76f0f2552_default_universal.mp4", "uuid": "25cb63cd-416e-ab23-2377-d18638679871" }, { @@ -12224,7 +12782,7 @@ "displayIcon": null, "displayName": "電幻普普 制式手槍 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0ae41327-4608-ce6b-7200-47bb70ebbc0f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0ae41327-4608-ce6b-7200-47bb70ebbc0f_default_universal.mp4", "uuid": "1a8103b0-4daf-2bee-6051-75a80cc49dce" }, { @@ -12232,7 +12790,7 @@ "displayIcon": null, "displayName": "電幻普普 制式手槍 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/28bcd917-48a4-2600-6bf6-a88b13bef7d5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/28bcd917-48a4-2600-6bf6-a88b13bef7d5_default_universal.mp4", "uuid": "f7b66f96-46af-4003-7b9c-9d86a18fead8" }, { @@ -12240,7 +12798,7 @@ "displayIcon": null, "displayName": "電幻普普 制式手槍 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ceee9967-48aa-727b-ec9b-2ab9a6bd3404_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ceee9967-48aa-727b-ec9b-2ab9a6bd3404_default_universal.mp4", "uuid": "748397a3-42c7-7482-3451-57a28b3af4c3" } ], @@ -12382,7 +12940,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/cd380fae-4628-5a94-b9cb-10bb10bd4804/displayicon.png", "displayName": "棄王遺思 制式手槍 等級4\n(幻彩1 金色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/cd380fae-4628-5a94-b9cb-10bb10bd4804/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fb202d2f-4921-16d8-3106-448a68a93a71_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fb202d2f-4921-16d8-3106-448a68a93a71_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/cd380fae-4628-5a94-b9cb-10bb10bd4804/swatch.png", "uuid": "cd380fae-4628-5a94-b9cb-10bb10bd4804" } @@ -12396,7 +12954,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/81658642-4f78-cbb4-9e40-b8856a904bc7/displayicon.png", "displayName": "棄王遺思 制式手槍", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0bc2a721-40cc-1ba9-6b03-66bcd365358c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0bc2a721-40cc-1ba9-6b03-66bcd365358c_default_universal.mp4", "uuid": "81658642-4f78-cbb4-9e40-b8856a904bc7" }, { @@ -12404,7 +12962,7 @@ "displayIcon": null, "displayName": "棄王遺思 制式手槍 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3c4656b0-4088-87c3-55cf-eca13a311561_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3c4656b0-4088-87c3-55cf-eca13a311561_default_universal.mp4", "uuid": "5ee11790-419d-af54-61da-9983470dddb5" }, { @@ -12412,7 +12970,7 @@ "displayIcon": null, "displayName": "棄王遺思 制式手槍 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4a7ebffe-414d-4449-3a85-e69534fb1013_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4a7ebffe-414d-4449-3a85-e69534fb1013_default_universal.mp4", "uuid": "64b7415b-4425-6d04-9aae-d8ac9c502f8f" }, { @@ -12420,7 +12978,7 @@ "displayIcon": null, "displayName": "棄王遺思 制式手槍 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e0e2e787-471f-7d28-b130-faa4182b159f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e0e2e787-471f-7d28-b130-faa4182b159f_default_universal.mp4", "uuid": "0256f32e-4c05-d95f-5a98-1caa0a3f7d6f" } ], @@ -12594,7 +13152,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c7695ce7-4fc9-1c79-64b3-8c8f9e21571c/displayicon.png", "displayName": "紫金狂潮 制式手槍", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/72d67dd0-0d79-4c98-9e1d-c10068b024a8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/72d67dd0-0d79-4c98-9e1d-c10068b024a8_default_universal.mp4", "uuid": "c7695ce7-4fc9-1c79-64b3-8c8f9e21571c" }, { @@ -12602,7 +13160,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/7b2c1232-460b-ab9a-1eca-55b5aee9ad08/displayicon.png", "displayName": "紫金狂潮 制式手槍 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a670ee4b-a202-4c7f-8021-7e4e11840cff_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a670ee4b-a202-4c7f-8021-7e4e11840cff_default_universal.mp4", "uuid": "7b2c1232-460b-ab9a-1eca-55b5aee9ad08" }, { @@ -12610,7 +13168,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4fc58223-43e7-a868-a6df-5e93be31369c/displayicon.png", "displayName": "紫金狂潮 制式手槍 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4c99c871-f3b6-4bcc-87ff-2c83adaac322_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4c99c871-f3b6-4bcc-87ff-2c83adaac322_default_universal.mp4", "uuid": "4fc58223-43e7-a868-a6df-5e93be31369c" }, { @@ -12618,7 +13176,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/e8a35ddb-4ce7-3867-154c-94803ed12a24/displayicon.png", "displayName": "紫金狂潮 制式手槍 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/be82422e-f56b-4a8b-bc1b-b11d8e053618_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/be82422e-f56b-4a8b-bc1b-b11d8e053618_default_universal.mp4", "uuid": "e8a35ddb-4ce7-3867-154c-94803ed12a24" } ], @@ -12760,7 +13318,7 @@ "displayIcon": null, "displayName": "赤珀墨松 制式手槍\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/06bab6d9-4aa3-e6dd-911c-0b912de2b8c8/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/27ed5535-4932-2e1f-1003-adb9b9d3d780_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/27ed5535-4932-2e1f-1003-adb9b9d3d780_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/06bab6d9-4aa3-e6dd-911c-0b912de2b8c8/swatch.png", "uuid": "06bab6d9-4aa3-e6dd-911c-0b912de2b8c8" } @@ -12774,7 +13332,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/066f6d01-4940-606a-70f6-e78fb20f5d2d/displayicon.png", "displayName": "赤珀墨松 制式手槍", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7675b416-4c62-88a9-89ef-8aadcda83b14_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7675b416-4c62-88a9-89ef-8aadcda83b14_default_universal.mp4", "uuid": "066f6d01-4940-606a-70f6-e78fb20f5d2d" } ], @@ -12929,7 +13487,7 @@ "displayIcon": null, "displayName": "深度凍結 制式手槍 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1f463495-4b28-a2a3-d804-45885653d6bc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1f463495-4b28-a2a3-d804-45885653d6bc_default_universal.mp4", "uuid": "5383be6c-4249-5789-0836-eb985e826954" }, { @@ -12937,7 +13495,7 @@ "displayIcon": null, "displayName": "深度凍結 制式手槍 等級3", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d0e0c29e-458d-8b4d-1bba-a5b256f1aa20_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d0e0c29e-458d-8b4d-1bba-a5b256f1aa20_default_universal.mp4", "uuid": "258fab16-4723-56bb-2fac-06951346be1e" } ], @@ -13079,7 +13637,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e410eff8-4aae-3ed3-d2ec-71bcb45954d1/displayicon.png", "displayName": "重力鈾能神經爆破者 制式手槍 等級2\n(幻彩1 鉻金屬色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e410eff8-4aae-3ed3-d2ec-71bcb45954d1/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ddfb2d4a-4aa1-c231-7165-51a46695916b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ddfb2d4a-4aa1-c231-7165-51a46695916b_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e410eff8-4aae-3ed3-d2ec-71bcb45954d1/swatch.png", "uuid": "e410eff8-4aae-3ed3-d2ec-71bcb45954d1" }, @@ -13088,7 +13646,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/39d5da8e-4e4e-e2a2-30a9-e8b7785225e4/displayicon.png", "displayName": "重力鈾能神經爆破者 制式手槍 等級2\n(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/39d5da8e-4e4e-e2a2-30a9-e8b7785225e4/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/466718f4-4c49-7a4f-46a0-65a3bd5e8691_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/466718f4-4c49-7a4f-46a0-65a3bd5e8691_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/39d5da8e-4e4e-e2a2-30a9-e8b7785225e4/swatch.png", "uuid": "39d5da8e-4e4e-e2a2-30a9-e8b7785225e4" }, @@ -13097,7 +13655,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/bf7a6ba8-4e33-9499-f829-dc9230d458de/displayicon.png", "displayName": "重力鈾能神經爆破者 制式手槍 等級2\n(幻彩3 紅/藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/bf7a6ba8-4e33-9499-f829-dc9230d458de/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d22786c9-4c80-0edc-f62c-fe90e8ae28b2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d22786c9-4c80-0edc-f62c-fe90e8ae28b2_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/bf7a6ba8-4e33-9499-f829-dc9230d458de/swatch.png", "uuid": "bf7a6ba8-4e33-9499-f829-dc9230d458de" } @@ -13111,7 +13669,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f35f6e13-4b7b-da38-c0de-5c91fffd584b/displayicon.png", "displayName": "重力鈾能神經爆破者 制式手槍 ", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/89cf05f6-4918-f8f5-12f8-97882c528962_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/89cf05f6-4918-f8f5-12f8-97882c528962_default_universal.mp4", "uuid": "f35f6e13-4b7b-da38-c0de-5c91fffd584b" }, { @@ -13119,7 +13677,7 @@ "displayIcon": null, "displayName": "重力鈾能神經爆破者 制式手槍 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/245dcfdb-4c40-4aec-6e9b-9097f72c97b6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/245dcfdb-4c40-4aec-6e9b-9097f72c97b6_default_universal.mp4", "uuid": "6958fbf5-4708-f97e-92e1-c7abdf6724b1" } ], @@ -13244,6 +13802,36 @@ "uuid": "706f4a29-4a95-7370-c983-1a8b167e38b7", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/BasePistol/StainedGlass/BasePistol_StainedGlass_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/BasePistol/StainedGlass/Chromas/Standard/BasePistol_StainedGlass_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/71609b67-426f-3814-9507-939165d3ad5a/displayicon.png", + "displayName": "彩拼幻想 制式手槍", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/71609b67-426f-3814-9507-939165d3ad5a/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "71609b67-426f-3814-9507-939165d3ad5a" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/8bc021a4-4832-300e-2844-afa3d1d9465f/displayicon.png", + "displayName": "彩拼幻想 制式手槍", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/BasePistol/StainedGlass/Levels/BasePistol_StainedGlass_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/14f9e351-4809-932c-e5b0-09899fa9017f/displayicon.png", + "displayName": "彩拼幻想 制式手槍", + "levelItem": null, + "streamedVideo": null, + "uuid": "14f9e351-4809-932c-e5b0-09899fa9017f" + } + ], + "themeUuid": "e0216470-4c4a-d840-0919-3c860cbc40a8", + "uuid": "8bc021a4-4832-300e-2844-afa3d1d9465f", + "wallpaper": "https://media.valorant-api.com/weaponskins/8bc021a4-4832-300e-2844-afa3d1d9465f/wallpaper.png" + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/BasePistol/Standard/BasePistol_Standard_PrimaryAsset", "chromas": [ @@ -13351,7 +13939,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/b46355ea-407d-241b-0119-618774f4dbc9/displayicon.png", "displayName": "蓋亞復仇 鬼魅 等級4\n(幻彩1 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/b46355ea-407d-241b-0119-618774f4dbc9/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b2817f52-4457-ee8a-6f90-539c3d6d334d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b2817f52-4457-ee8a-6f90-539c3d6d334d_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/b46355ea-407d-241b-0119-618774f4dbc9/swatch.png", "uuid": "b46355ea-407d-241b-0119-618774f4dbc9" }, @@ -13360,7 +13948,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/1fce96b9-4043-3ce8-e5e2-b4870405f6f0/displayicon.png", "displayName": "蓋亞復仇 鬼魅 等級4\n(幻彩2 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/1fce96b9-4043-3ce8-e5e2-b4870405f6f0/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/dcf75bd3-450e-0fa8-187a-75a0844e0152_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/dcf75bd3-450e-0fa8-187a-75a0844e0152_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/1fce96b9-4043-3ce8-e5e2-b4870405f6f0/swatch.png", "uuid": "1fce96b9-4043-3ce8-e5e2-b4870405f6f0" }, @@ -13369,7 +13957,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/ecc92d4d-4eab-255b-2075-5ba068915168/displayicon.png", "displayName": "蓋亞復仇 鬼魅 等級4\n(幻彩3 橘色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/ecc92d4d-4eab-255b-2075-5ba068915168/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b0a919f7-4a71-c912-a758-20802cea97bf_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b0a919f7-4a71-c912-a758-20802cea97bf_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/ecc92d4d-4eab-255b-2075-5ba068915168/swatch.png", "uuid": "ecc92d4d-4eab-255b-2075-5ba068915168" } @@ -13383,7 +13971,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f7862f1f-4340-6e42-b1fa-0ebcdcf43456/displayicon.png", "displayName": "蓋亞復仇 鬼魅", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2d00b1cb-4d0b-608c-5246-db968e9eec4e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2d00b1cb-4d0b-608c-5246-db968e9eec4e_default_universal.mp4", "uuid": "f7862f1f-4340-6e42-b1fa-0ebcdcf43456" }, { @@ -13391,7 +13979,7 @@ "displayIcon": null, "displayName": "蓋亞復仇 鬼魅 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9319b37e-4a3a-24cf-61a0-2dbd5117646c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9319b37e-4a3a-24cf-61a0-2dbd5117646c_default_universal.mp4", "uuid": "faced80a-4ebf-c35d-ef38-71a32b63a143" }, { @@ -13399,7 +13987,7 @@ "displayIcon": null, "displayName": "蓋亞復仇 鬼魅 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/27d8a249-4714-5a98-dc9f-488f03fbc113_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/27d8a249-4714-5a98-dc9f-488f03fbc113_default_universal.mp4", "uuid": "1694d232-4a90-7da9-dd1f-268626aa573d" }, { @@ -13407,7 +13995,7 @@ "displayIcon": null, "displayName": "蓋亞復仇 鬼魅 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0dcc777d-4635-fb77-a576-ca83baa859be_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0dcc777d-4635-fb77-a576-ca83baa859be_default_universal.mp4", "uuid": "13d0ce22-4c97-02a0-4e16-c7964d9b1332" } ], @@ -13533,12 +14121,42 @@ "wallpaper": null }, { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/Fury/Luger_Fury_PrimaryAsset", + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/Flyer/Luger_Flyer_PrimaryAsset", "chromas": [ { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/Fury/Chromas/Standard/Luger_Fury_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/aeaa83d1-48b6-faec-d176-97833ac00197/displayicon.png", - "displayName": "火噴英烈 鬼魅", + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/Flyer/Chromas/Standard/Luger_Flyer_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/94bae03c-4559-ab68-87e2-b0a0ca90b003/displayicon.png", + "displayName": "空翼幾何 鬼魅", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/94bae03c-4559-ab68-87e2-b0a0ca90b003/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "94bae03c-4559-ab68-87e2-b0a0ca90b003" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/e223e993-45f5-013b-4259-11b263184752/displayicon.png", + "displayName": "空翼幾何 鬼魅", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/Flyer/Levels/Luger_Flyer_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/7adb5ad2-45e4-1a21-89b9-ea99a66690a8/displayicon.png", + "displayName": "空翼幾何 鬼魅", + "levelItem": null, + "streamedVideo": null, + "uuid": "7adb5ad2-45e4-1a21-89b9-ea99a66690a8" + } + ], + "themeUuid": "418542b0-4f5c-3f37-4f5a-ecb1d3bc04ce", + "uuid": "e223e993-45f5-013b-4259-11b263184752", + "wallpaper": null + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/Fury/Luger_Fury_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/Fury/Chromas/Standard/Luger_Fury_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/aeaa83d1-48b6-faec-d176-97833ac00197/displayicon.png", + "displayName": "火噴英烈 鬼魅", "fullRender": "https://media.valorant-api.com/weaponskinchromas/aeaa83d1-48b6-faec-d176-97833ac00197/fullrender.png", "streamedVideo": null, "swatch": null, @@ -13644,7 +14262,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/0296ff9b-4172-5a29-7d25-a7bf491b5bd4/displayicon.png", "displayName": "靈爭鬪魂 鬼魅", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ae0b289a-4610-d88b-0498-f19280e0ba8e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ae0b289a-4610-d88b-0498-f19280e0ba8e_default_universal.mp4", "uuid": "0296ff9b-4172-5a29-7d25-a7bf491b5bd4" }, { @@ -13652,7 +14270,7 @@ "displayIcon": null, "displayName": "靈爭鬪魂 鬼魅 等級2:每次擊殺敵人時,都會播放專屬視覺特效及音效", "levelItem": "EEquippableSkinLevelItem::KillEffect", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8c20823e-45f7-466a-2615-74978697b014_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8c20823e-45f7-466a-2615-74978697b014_default_universal.mp4", "uuid": "0cb68ca8-4aff-9938-546c-1faed16b113f" } ], @@ -13827,7 +14445,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/3bb2644a-4088-1d9d-bf2d-f1abd57fdedf/displayicon.png", "displayName": "殞落詛咒 鬼魅 等級4\n(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/3bb2644a-4088-1d9d-bf2d-f1abd57fdedf/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a65efc67-4fc0-6977-b47f-92b3215f9afa_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a65efc67-4fc0-6977-b47f-92b3215f9afa_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/3bb2644a-4088-1d9d-bf2d-f1abd57fdedf/swatch.png", "uuid": "3bb2644a-4088-1d9d-bf2d-f1abd57fdedf" }, @@ -13836,7 +14454,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/f7639e6d-46cc-fc91-7f35-4e85da576e76/displayicon.png", "displayName": "殞落詛咒 鬼魅 等級4\n(幻彩2 紅/黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/f7639e6d-46cc-fc91-7f35-4e85da576e76/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/115d2902-41fb-d4d4-f0c9-7190c3997023_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/115d2902-41fb-d4d4-f0c9-7190c3997023_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/f7639e6d-46cc-fc91-7f35-4e85da576e76/swatch.png", "uuid": "f7639e6d-46cc-fc91-7f35-4e85da576e76" }, @@ -13845,7 +14463,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/5c363a8e-4ef8-4ebb-e068-cfb18eebd93a/displayicon.png", "displayName": "殞落詛咒 鬼魅 等級4\n(幻彩3 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/5c363a8e-4ef8-4ebb-e068-cfb18eebd93a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d16a49c9-4a92-452c-781e-008251974865_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d16a49c9-4a92-452c-781e-008251974865_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/5c363a8e-4ef8-4ebb-e068-cfb18eebd93a/swatch.png", "uuid": "5c363a8e-4ef8-4ebb-e068-cfb18eebd93a" } @@ -13859,7 +14477,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5e1f5465-40cd-2c0f-33ab-398c5367d080/displayicon.png", "displayName": "殞落詛咒 鬼魅", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/89f65edf-430b-dfe9-c315-148bdbef5df9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/89f65edf-430b-dfe9-c315-148bdbef5df9_default_universal.mp4", "uuid": "5e1f5465-40cd-2c0f-33ab-398c5367d080" }, { @@ -13867,7 +14485,7 @@ "displayIcon": null, "displayName": "殞落詛咒 鬼魅 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e4a75b1f-4104-a87d-1116-9bbe2e14281c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e4a75b1f-4104-a87d-1116-9bbe2e14281c_default_universal.mp4", "uuid": "4ac6acb8-4b37-67fd-39ec-c6800ba7367f" }, { @@ -13875,7 +14493,7 @@ "displayIcon": null, "displayName": "殞落詛咒 鬼魅 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/71198d6e-46e7-73c8-5ad1-7381de4313c7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/71198d6e-46e7-73c8-5ad1-7381de4313c7_default_universal.mp4", "uuid": "e26a2676-4257-a963-cf70-bf9f52f1f318" }, { @@ -13883,7 +14501,7 @@ "displayIcon": null, "displayName": "殞落詛咒 鬼魅 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2056245f-439f-92ea-2e29-6fa6a6741129_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2056245f-439f-92ea-2e29-6fa6a6741129_default_universal.mp4", "uuid": "b78f3320-444e-b936-637c-258505ea509d" } ], @@ -13970,7 +14588,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/003e0991-4370-8837-f8fc-6ab3acec2dbf/displayicon.png", "displayName": "奇幻龐克 鬼魅", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b8eef80e-45c8-d612-91cb-1ba5b8025ba8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b8eef80e-45c8-d612-91cb-1ba5b8025ba8_default_universal.mp4", "uuid": "003e0991-4370-8837-f8fc-6ab3acec2dbf" }, { @@ -13978,7 +14596,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/b5ced653-45ca-9cd4-e6d5-8db020c6881d/displayicon.png", "displayName": "奇幻龐克 鬼魅 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/befc87ef-40ab-7360-e828-7f8159697d10_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/befc87ef-40ab-7360-e828-7f8159697d10_default_universal.mp4", "uuid": "b5ced653-45ca-9cd4-e6d5-8db020c6881d" }, { @@ -13986,7 +14604,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/aa704280-43ff-991e-c3d7-63abf43c8bd0/displayicon.png", "displayName": "奇幻龐克 鬼魅 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2259b458-466b-7313-bb2a-0fb7025716f9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2259b458-466b-7313-bb2a-0fb7025716f9_default_universal.mp4", "uuid": "aa704280-43ff-991e-c3d7-63abf43c8bd0" }, { @@ -13994,7 +14612,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/abf6805e-4def-f0f0-92cf-28bb67c46fed/displayicon.png", "displayName": "奇幻龐克 鬼魅 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/be0160a8-40c2-4542-e47c-ee9e7461a59c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/be0160a8-40c2-4542-e47c-ee9e7461a59c_default_universal.mp4", "uuid": "abf6805e-4def-f0f0-92cf-28bb67c46fed" } ], @@ -14253,7 +14871,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/4e3b34c5-4012-7842-3f42-9aaaa6af2f98/displayicon.png", "displayName": "掠奪印象 鬼魅 等級4\n(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/4e3b34c5-4012-7842-3f42-9aaaa6af2f98/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/35c83199-4b7e-96b5-07b0-27b763dee5ff_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/35c83199-4b7e-96b5-07b0-27b763dee5ff_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/4e3b34c5-4012-7842-3f42-9aaaa6af2f98/swatch.png", "uuid": "4e3b34c5-4012-7842-3f42-9aaaa6af2f98" }, @@ -14262,7 +14880,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/b7dc18e4-42bf-d734-1b3e-afa72c497c77/displayicon.png", "displayName": "掠奪印象 鬼魅 等級4\n(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/b7dc18e4-42bf-d734-1b3e-afa72c497c77/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/56dcaec9-4f00-6299-46a0-9490cf666c2e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/56dcaec9-4f00-6299-46a0-9490cf666c2e_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/b7dc18e4-42bf-d734-1b3e-afa72c497c77/swatch.png", "uuid": "b7dc18e4-42bf-d734-1b3e-afa72c497c77" }, @@ -14271,7 +14889,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/99f5b206-40d3-025a-9143-828c2ca40bf6/displayicon.png", "displayName": "掠奪印象 鬼魅 等級4\n(幻彩3 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/99f5b206-40d3-025a-9143-828c2ca40bf6/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1c3415d9-479a-843e-5f6f-b0b304e0d9f7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1c3415d9-479a-843e-5f6f-b0b304e0d9f7_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/99f5b206-40d3-025a-9143-828c2ca40bf6/swatch.png", "uuid": "99f5b206-40d3-025a-9143-828c2ca40bf6" } @@ -14285,7 +14903,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/a6fe7710-4edc-5e23-223d-aeaef3d17866/displayicon.png", "displayName": "掠奪印象 鬼魅", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ffd46c92-4bd3-799c-42f7-59a4ad9f1af0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ffd46c92-4bd3-799c-42f7-59a4ad9f1af0_default_universal.mp4", "uuid": "a6fe7710-4edc-5e23-223d-aeaef3d17866" }, { @@ -14293,7 +14911,7 @@ "displayIcon": null, "displayName": "掠奪印象 鬼魅 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9e6f2bff-4876-7f21-3511-e292681a9e03_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9e6f2bff-4876-7f21-3511-e292681a9e03_default_universal.mp4", "uuid": "aef240db-4587-9d5d-bf89-eab5eeacf28e" }, { @@ -14301,7 +14919,7 @@ "displayIcon": null, "displayName": "掠奪印象 鬼魅 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e416522e-4800-2df1-29b8-a384d0ea2306_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e416522e-4800-2df1-29b8-a384d0ea2306_default_universal.mp4", "uuid": "ab52517a-4a6c-0af9-1fc4-dbba07d6cd16" }, { @@ -14309,7 +14927,7 @@ "displayIcon": null, "displayName": "掠奪印象 鬼魅 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0b9327ed-433a-1e57-b36b-84b0fce0a995_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0b9327ed-433a-1e57-b36b-84b0fce0a995_default_universal.mp4", "uuid": "8ac0b94e-4b23-d9d2-8bc0-a7a34b477930" } ], @@ -14317,6 +14935,36 @@ "uuid": "c7261be6-47d2-ef86-82f4-6a844e45d33c", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/SovWorld/Luger_SovWorld_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/SovWorld/Chromas/Standard/Luger_SovWorld_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/702acc78-4bfe-805c-d4fb-5ba8815e8029/displayicon.png", + "displayName": "祕繫之域 鬼魅", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/702acc78-4bfe-805c-d4fb-5ba8815e8029/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "702acc78-4bfe-805c-d4fb-5ba8815e8029" + } + ], + "contentTierUuid": "60bca009-4182-7998-dee7-b8a2558dc369", + "displayIcon": "https://media.valorant-api.com/weaponskins/efbd92f3-4abc-b077-76fd-dc805b3d72a0/displayicon.png", + "displayName": "祕繫之域 鬼魅", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/SovWorld/Levels/Luger_SovWorld_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/b9f4e6ea-4db2-6939-731f-0eb93cfbbb1d/displayicon.png", + "displayName": "祕繫之域 鬼魅", + "levelItem": null, + "streamedVideo": null, + "uuid": "b9f4e6ea-4db2-6939-731f-0eb93cfbbb1d" + } + ], + "themeUuid": "b1e665e3-4e4f-f849-dc49-d0a68d10f449", + "uuid": "efbd92f3-4abc-b077-76fd-dc805b3d72a0", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/Sovereign/LugerPistol_Sovereign_PrimaryAsset", "chromas": [ @@ -14366,7 +15014,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ed8a1109-4e48-f077-636b-e98dd332bfcc/displayicon.png", "displayName": "鎏金帝王 鬼魅", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fd840e0f-6961-4794-900e-8f4350be4679_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fd840e0f-6961-4794-900e-8f4350be4679_default_universal.mp4", "uuid": "ed8a1109-4e48-f077-636b-e98dd332bfcc" }, { @@ -14374,7 +15022,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/94b4e0f7-454d-0e5b-9f32-4d9fd399d8a2/displayicon.png", "displayName": "鎏金帝王 鬼魅 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1eccad1f-89ca-4f26-be4d-64bb288c7e84_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1eccad1f-89ca-4f26-be4d-64bb288c7e84_default_universal.mp4", "uuid": "94b4e0f7-454d-0e5b-9f32-4d9fd399d8a2" }, { @@ -14382,7 +15030,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5aa0593c-40fc-b9c4-9232-7f91f75b9fbd/displayicon.png", "displayName": "鎏金帝王 鬼魅 等級3", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d3807099-eafe-4551-8dcd-c9bbbfb5323e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d3807099-eafe-4551-8dcd-c9bbbfb5323e_default_universal.mp4", "uuid": "5aa0593c-40fc-b9c4-9232-7f91f75b9fbd" }, { @@ -14390,7 +15038,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d5e747da-4d41-28e2-68b2-c5b41584f7cb/displayicon.png", "displayName": "鎏金帝王 鬼魅 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8adc51e9-a098-4efb-8897-87b3438a7daa_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8adc51e9-a098-4efb-8897-87b3438a7daa_default_universal.mp4", "uuid": "d5e747da-4d41-28e2-68b2-c5b41584f7cb" } ], @@ -14398,36 +15046,6 @@ "uuid": "a9890917-41ea-eb55-47e7-ee990a87fa4e", "wallpaper": null }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/SovWorld/Luger_SovWorld_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/SovWorld/Chromas/Standard/Luger_SovWorld_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/702acc78-4bfe-805c-d4fb-5ba8815e8029/displayicon.png", - "displayName": "祕繫之域 鬼魅", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/702acc78-4bfe-805c-d4fb-5ba8815e8029/fullrender.png", - "streamedVideo": null, - "swatch": null, - "uuid": "702acc78-4bfe-805c-d4fb-5ba8815e8029" - } - ], - "contentTierUuid": "60bca009-4182-7998-dee7-b8a2558dc369", - "displayIcon": "https://media.valorant-api.com/weaponskins/efbd92f3-4abc-b077-76fd-dc805b3d72a0/displayicon.png", - "displayName": "祕繫之域 鬼魅", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/SovWorld/Levels/Luger_SovWorld_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/b9f4e6ea-4db2-6939-731f-0eb93cfbbb1d/displayicon.png", - "displayName": "祕繫之域 鬼魅", - "levelItem": null, - "streamedVideo": null, - "uuid": "b9f4e6ea-4db2-6939-731f-0eb93cfbbb1d" - } - ], - "themeUuid": "b1e665e3-4e4f-f849-dc49-d0a68d10f449", - "uuid": "efbd92f3-4abc-b077-76fd-dc805b3d72a0", - "wallpaper": null - }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Luger/SpecOps/Luger_SpecOps_PrimaryAsset", "chromas": [ @@ -14445,7 +15063,7 @@ "displayIcon": null, "displayName": "偵察行動 鬼魅 等級3\n(幻彩1 紅色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/a1c1df9c-4fdb-6a93-3bcc-bd9bbfc1fdac/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6ae54e6d-4a93-0be2-f24a-20b9f9485608_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6ae54e6d-4a93-0be2-f24a-20b9f9485608_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/a1c1df9c-4fdb-6a93-3bcc-bd9bbfc1fdac/swatch.png", "uuid": "a1c1df9c-4fdb-6a93-3bcc-bd9bbfc1fdac" }, @@ -14454,7 +15072,7 @@ "displayIcon": null, "displayName": "偵察行動 鬼魅 等級3\n(幻彩2 藍色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/d7753012-4323-4ebf-d516-c78393664b79/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d2048980-41ef-f215-0020-31808da1cf30_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d2048980-41ef-f215-0020-31808da1cf30_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/d7753012-4323-4ebf-d516-c78393664b79/swatch.png", "uuid": "d7753012-4323-4ebf-d516-c78393664b79" }, @@ -14463,7 +15081,7 @@ "displayIcon": null, "displayName": "偵察行動 鬼魅 等級3\n(幻彩3 綠色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/d43c22a2-4424-68b0-a075-cb9c3ffd7439/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b749fd67-4e4e-4448-e388-27841e45387d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b749fd67-4e4e-4448-e388-27841e45387d_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/d43c22a2-4424-68b0-a075-cb9c3ffd7439/swatch.png", "uuid": "d43c22a2-4424-68b0-a075-cb9c3ffd7439" } @@ -14477,7 +15095,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/459343eb-4c56-4f10-ff2f-fbbf07d3695d/displayicon.png", "displayName": "偵察行動 鬼魅", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/70e53888-4ec6-11fe-5844-568911089f7e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/70e53888-4ec6-11fe-5844-568911089f7e_default_universal.mp4", "uuid": "459343eb-4c56-4f10-ff2f-fbbf07d3695d" }, { @@ -14485,7 +15103,7 @@ "displayIcon": null, "displayName": "偵察行動 鬼魅 等級2", "levelItem": "EEquippableSkinLevelItem::Randomizer", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7e99535a-4637-ec04-aad3-43b1baef7b42_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7e99535a-4637-ec04-aad3-43b1baef7b42_default_universal.mp4", "uuid": "ee07b00e-4ef5-66dd-adae-91b90b1b8556" }, { @@ -14493,7 +15111,7 @@ "displayIcon": null, "displayName": "偵察行動 鬼魅 等級3", "levelItem": "EEquippableSkinLevelItem::KillBanner", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8edaec59-428e-45f1-4672-84b8e1b769aa_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8edaec59-428e-45f1-4672-84b8e1b769aa_default_universal.mp4", "uuid": "a2664625-480a-86ce-1ca6-609125252be2" } ], @@ -14932,7 +15550,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/510c3370-4218-985e-77a6-f7849207aeff/displayicon.png", "displayName": "虛無時界 神射 等級4\n(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/510c3370-4218-985e-77a6-f7849207aeff/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/825b8d73-4005-1405-3792-7eb7f8ac4246_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/825b8d73-4005-1405-3792-7eb7f8ac4246_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/510c3370-4218-985e-77a6-f7849207aeff/swatch.png", "uuid": "510c3370-4218-985e-77a6-f7849207aeff" }, @@ -14941,7 +15559,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/f916f30e-45dd-7c0d-e218-faa924a41746/displayicon.png", "displayName": "虛無時界 神射 等級4\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/f916f30e-45dd-7c0d-e218-faa924a41746/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2c9ed5b3-4d84-5d8f-66fa-05bb049362fb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2c9ed5b3-4d84-5d8f-66fa-05bb049362fb_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/f916f30e-45dd-7c0d-e218-faa924a41746/swatch.png", "uuid": "f916f30e-45dd-7c0d-e218-faa924a41746" }, @@ -14950,7 +15568,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/641c542b-40f5-70dc-677f-c8a0f3603d2f/displayicon.png", "displayName": "虛無時界 神射 等級4\n(幻彩3 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/641c542b-40f5-70dc-677f-c8a0f3603d2f/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e3354fac-46bb-2cd6-b5e8-989381f66497_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e3354fac-46bb-2cd6-b5e8-989381f66497_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/641c542b-40f5-70dc-677f-c8a0f3603d2f/swatch.png", "uuid": "641c542b-40f5-70dc-677f-c8a0f3603d2f" } @@ -14964,7 +15582,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ade427fc-4b24-f290-c91a-b1904b787f42/displayicon.png", "displayName": "虛無時界 神射", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a58186c3-4a96-c206-ca47-e48dc1070482_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a58186c3-4a96-c206-ca47-e48dc1070482_default_universal.mp4", "uuid": "ade427fc-4b24-f290-c91a-b1904b787f42" }, { @@ -14972,7 +15590,7 @@ "displayIcon": null, "displayName": "虛無時界 神射 等級2", "levelItem": "EEquippableSkinLevelItem::SoundEffects", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/368de113-4943-e989-a609-f88a9a6bb9bd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/368de113-4943-e989-a609-f88a9a6bb9bd_default_universal.mp4", "uuid": "5ea7ae90-4b5c-bc7d-e1b4-25a1dae54e6d" }, { @@ -14980,7 +15598,7 @@ "displayIcon": null, "displayName": "虛無時界 神射 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/37a16e30-47fa-299d-4120-1ea212220378_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/37a16e30-47fa-299d-4120-1ea212220378_default_universal.mp4", "uuid": "dc7fb3f6-476b-fac7-2e2d-f4b1d1ed062d" }, { @@ -14988,7 +15606,7 @@ "displayIcon": null, "displayName": "虛無時界 神射 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4452156e-4c43-ecbe-47ab-199c06b99107_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4452156e-4c43-ecbe-47ab-199c06b99107_default_universal.mp4", "uuid": "1e60239c-4322-aec5-8e82-f39cfb196f88" } ], @@ -15075,7 +15693,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4276d2b5-4b1c-b636-aff0-4ea579d875d7/displayicon.png", "displayName": "奇點 神射", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/734a94cd-420a-7118-0355-7e8e78628297_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/734a94cd-420a-7118-0355-7e8e78628297_default_universal.mp4", "uuid": "4276d2b5-4b1c-b636-aff0-4ea579d875d7" }, { @@ -15083,7 +15701,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4a585df0-4bc4-17aa-1e5a-ccac42b07d12/displayicon.png", "displayName": "奇點 神射 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/72febb2a-4668-1f6c-03c7-84880907ff26_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/72febb2a-4668-1f6c-03c7-84880907ff26_default_universal.mp4", "uuid": "4a585df0-4bc4-17aa-1e5a-ccac42b07d12" }, { @@ -15091,7 +15709,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f73b2921-4f40-918e-08eb-45abd9ce2b3c/displayicon.png", "displayName": "奇點 神射 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4d62e7cb-43f0-6c16-6919-89adadc59f10_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4d62e7cb-43f0-6c16-6919-89adadc59f10_default_universal.mp4", "uuid": "f73b2921-4f40-918e-08eb-45abd9ce2b3c" }, { @@ -15099,7 +15717,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/65c2c8d3-4473-4f74-305c-ff90fbf318e8/displayicon.png", "displayName": "奇點 神射 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/24f900f7-44d9-3130-b670-ffbb5389afcc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/24f900f7-44d9-3130-b670-ffbb5389afcc_default_universal.mp4", "uuid": "65c2c8d3-4473-4f74-305c-ff90fbf318e8" } ], @@ -15331,7 +15949,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e0411338-4a87-b39e-6815-8d8770fc852e/displayicon.png", "displayName": "奇幻龐克 神射 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e0411338-4a87-b39e-6815-8d8770fc852e/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/702b17c0-4e1f-278c-c24c-77822da95722_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/702b17c0-4e1f-278c-c24c-77822da95722_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e0411338-4a87-b39e-6815-8d8770fc852e/swatch.png", "uuid": "e0411338-4a87-b39e-6815-8d8770fc852e" }, @@ -15340,7 +15958,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/bf0cecb1-4143-3491-790c-33be07e361ba/displayicon.png", "displayName": "奇幻龐克 神射 等級4\n(幻彩2 粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/bf0cecb1-4143-3491-790c-33be07e361ba/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7e186876-4b6d-3a8f-d09d-5aae2ce3e5f1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7e186876-4b6d-3a8f-d09d-5aae2ce3e5f1_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/bf0cecb1-4143-3491-790c-33be07e361ba/swatch.png", "uuid": "bf0cecb1-4143-3491-790c-33be07e361ba" }, @@ -15349,7 +15967,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/f37e5fd4-467f-aa61-5355-87bd57f499cd/displayicon.png", "displayName": "奇幻龐克 神射 等級4\n(幻彩3 橘色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/f37e5fd4-467f-aa61-5355-87bd57f499cd/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/460ac076-4514-d4c8-a80b-16947387d20a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/460ac076-4514-d4c8-a80b-16947387d20a_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/f37e5fd4-467f-aa61-5355-87bd57f499cd/swatch.png", "uuid": "f37e5fd4-467f-aa61-5355-87bd57f499cd" } @@ -15363,7 +15981,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/59733cf9-490b-e25b-2c6f-eca947628079/displayicon.png", "displayName": "奇幻龐克 神射", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/09902b8c-439e-7a7b-2118-568d6b7d90c6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/09902b8c-439e-7a7b-2118-568d6b7d90c6_default_universal.mp4", "uuid": "59733cf9-490b-e25b-2c6f-eca947628079" }, { @@ -15371,7 +15989,7 @@ "displayIcon": null, "displayName": "奇幻龐克 神射 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2e894ef4-4387-f950-268a-8dba5af6e7b0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2e894ef4-4387-f950-268a-8dba5af6e7b0_default_universal.mp4", "uuid": "c1e1dc78-44e1-1d94-171e-d7933d2828c7" }, { @@ -15379,7 +15997,7 @@ "displayIcon": null, "displayName": "奇幻龐克 神射 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2c8f74a4-4a52-6442-92b5-7781683f0810_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2c8f74a4-4a52-6442-92b5-7781683f0810_default_universal.mp4", "uuid": "43f79fbc-4a00-f0fc-0813-2cb8224ee6d3" }, { @@ -15387,7 +16005,7 @@ "displayIcon": null, "displayName": "奇幻龐克 神射 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/96b4b4db-4dad-9904-474a-179972045e1c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/96b4b4db-4dad-9904-474a-179972045e1c_default_universal.mp4", "uuid": "892725e3-4c2a-0333-e43a-1da5896cd6a4" } ], @@ -15395,6 +16013,36 @@ "uuid": "6460edbf-458d-bf61-7519-519305ba5da2", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/MidnightAerosol/Revolver_MidnightAerosol_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/MidnightAerosol/Chromas/Standard/Revolver_MidnightAerosol_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/106a294b-4d0f-94d7-0e5f-08aea143d7b2/displayicon.png", + "displayName": "午夜街頭 神射", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/106a294b-4d0f-94d7-0e5f-08aea143d7b2/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "106a294b-4d0f-94d7-0e5f-08aea143d7b2" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/cb89c7bb-445e-dfec-ad4a-b0ba37271329/displayicon.png", + "displayName": "午夜街頭 神射", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/MidnightAerosol/Levels/Revolver_MidnightAerosol_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/56c2a35a-4078-8c2a-dfa4-799697bcb4df/displayicon.png", + "displayName": "午夜街頭 神射", + "levelItem": null, + "streamedVideo": null, + "uuid": "56c2a35a-4078-8c2a-dfa4-799697bcb4df" + } + ], + "themeUuid": "36f9abb7-4d30-16f1-f476-8c81e67f1d14", + "uuid": "cb89c7bb-445e-dfec-ad4a-b0ba37271329", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/Minima/Revolver_Minima_PrimaryAsset", "chromas": [ @@ -15477,7 +16125,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/72586d88-46c4-1532-7507-d6bb5c2d201c/displayicon.png", "displayName": "紅蓮猛獸 神射", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5ecca499-4c18-e185-c41b-5c96e08deffd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5ecca499-4c18-e185-c41b-5c96e08deffd_default_universal.mp4", "uuid": "72586d88-46c4-1532-7507-d6bb5c2d201c" }, { @@ -15485,7 +16133,7 @@ "displayIcon": null, "displayName": "紅蓮猛獸 神射 等級2:每次擊殺敵人時,都會播放專屬視覺特效及音效。", "levelItem": "EEquippableSkinLevelItem::KillEffect", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f86bbc0c-43fe-0543-e02c-5eabe4958b62_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f86bbc0c-43fe-0543-e02c-5eabe4958b62_default_universal.mp4", "uuid": "11217acc-4f12-d9fe-60a4-88b32f355bd2" } ], @@ -15515,7 +16163,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/2b555f97-46bb-5949-3531-979f5bc817f0/displayicon.png", "displayName": "離子聖芒 神射", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/aa2185f1-4677-31ed-43e4-b6bec932c597_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/aa2185f1-4677-31ed-43e4-b6bec932c597_default_universal.mp4", "uuid": "2b555f97-46bb-5949-3531-979f5bc817f0" }, { @@ -15523,7 +16171,7 @@ "displayIcon": null, "displayName": "離子聖芒 神射 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f8c2e883-453f-99b2-06b6-5ea30b33b7ac_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f8c2e883-453f-99b2-06b6-5ea30b33b7ac_default_universal.mp4", "uuid": "a60421b9-4b86-ccd3-ca08-808ef4cf112b" }, { @@ -15531,7 +16179,7 @@ "displayIcon": null, "displayName": "離子聖芒 神射 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ad9f078e-4088-4e60-71a7-4d8d38027a19_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ad9f078e-4088-4e60-71a7-4d8d38027a19_default_universal.mp4", "uuid": "1ad8e7b3-4547-0890-aa8d-d79be028e48f" }, { @@ -15539,7 +16187,7 @@ "displayIcon": null, "displayName": "離子聖芒 神射 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/21d51f61-43d2-250e-16e8-ab810c2a6907_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/21d51f61-43d2-250e-16e8-ab810c2a6907_default_universal.mp4", "uuid": "becd58d6-4da0-db56-a748-35923d2750e1" } ], @@ -15624,7 +16272,7 @@ "displayIcon": null, "displayName": "781-A協定 神射 等級5\n(幻彩1 白/粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/107a7283-41b4-b06c-8514-0a99c6f11d50/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/08b93bc1-4992-a58a-513e-9fb30a4fbf0b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/08b93bc1-4992-a58a-513e-9fb30a4fbf0b_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/107a7283-41b4-b06c-8514-0a99c6f11d50/swatch.png", "uuid": "107a7283-41b4-b06c-8514-0a99c6f11d50" }, @@ -15633,7 +16281,7 @@ "displayIcon": null, "displayName": "781-A協定 神射 等級5\n(幻彩2 紅/藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/2751a592-4e56-e9dc-020f-19a377851968/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/de4d2124-4aad-31c4-b007-80a0d181d3d2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/de4d2124-4aad-31c4-b007-80a0d181d3d2_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/2751a592-4e56-e9dc-020f-19a377851968/swatch.png", "uuid": "2751a592-4e56-e9dc-020f-19a377851968" }, @@ -15642,7 +16290,7 @@ "displayIcon": null, "displayName": "781-A協定 神射 等級5\n(幻彩3 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/16a29e72-4dd3-e463-7e37-0e8a584e5721/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7fc0e30d-4961-a760-0a64-efad2578a53e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7fc0e30d-4961-a760-0a64-efad2578a53e_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/16a29e72-4dd3-e463-7e37-0e8a584e5721/swatch.png", "uuid": "16a29e72-4dd3-e463-7e37-0e8a584e5721" } @@ -15656,7 +16304,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/12831559-44ee-c708-b97c-29a43938e3cd/displayicon.png", "displayName": "781-A協定 神射", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/89832511-42c5-c640-6a76-18b6bc5dac3b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/89832511-42c5-c640-6a76-18b6bc5dac3b_default_universal.mp4", "uuid": "12831559-44ee-c708-b97c-29a43938e3cd" }, { @@ -15664,7 +16312,7 @@ "displayIcon": null, "displayName": "781-A協定 神射 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/513b97f4-422d-101d-73f4-338418d9ca6e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/513b97f4-422d-101d-73f4-338418d9ca6e_default_universal.mp4", "uuid": "62edd453-4fc5-2ad4-0531-a9aa941aeb8e" }, { @@ -15672,7 +16320,7 @@ "displayIcon": null, "displayName": "781-A協定 神射 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/85fee292-4c06-aa9e-1194-4e9c41516ac6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/85fee292-4c06-aa9e-1194-4e9c41516ac6_default_universal.mp4", "uuid": "7f084312-45f8-38f6-8ab8-10ac6bef0685" }, { @@ -15680,7 +16328,7 @@ "displayIcon": null, "displayName": "781-A協定 神射 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d2cb8b6c-44c5-06fb-2cfd-39b77fe8e773_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d2cb8b6c-44c5-06fb-2cfd-39b77fe8e773_default_universal.mp4", "uuid": "718ddb3a-42a1-6d78-329f-49b8a2705835" }, { @@ -15688,7 +16336,7 @@ "displayIcon": null, "displayName": "781-A協定 神射 等級5:在地化語音可能會因地區而異", "levelItem": "EEquippableSkinLevelItem::Voiceover", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3a4f7fb8-47f5-3a75-220b-ed9281251a21_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3a4f7fb8-47f5-3a75-220b-ed9281251a21_default_universal.mp4", "uuid": "caf49d9b-4acc-bc39-4adb-29a11802a700" } ], @@ -15696,36 +16344,6 @@ "uuid": "84589da8-4e2b-11bf-ca52-b88e6b7e1dbd", "wallpaper": "https://media.valorant-api.com/weaponskins/84589da8-4e2b-11bf-ca52-b88e6b7e1dbd/wallpaper.png" }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/Random/Revolver_Random_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/Random/Chromas/Standard/Revolver_Random_Standard_PrimaryAsset", - "displayIcon": null, - "displayName": "Standard", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/c5d3843f-4ae2-f87a-ebc5-3ab638fc6ae0/fullrender.png", - "streamedVideo": null, - "swatch": null, - "uuid": "c5d3843f-4ae2-f87a-ebc5-3ab638fc6ae0" - } - ], - "contentTierUuid": null, - "displayIcon": "https://media.valorant-api.com/weaponskins/d26ce959-4ed2-7105-8f33-dea48e26de4a/displayicon.png", - "displayName": "隨機最愛造型", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/Random/Levels/Revolver_Random_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/94d0ca9c-444b-f762-17a5-908ef1418bc3/displayicon.png", - "displayName": "隨機最愛造型", - "levelItem": null, - "streamedVideo": null, - "uuid": "94d0ca9c-444b-f762-17a5-908ef1418bc3" - } - ], - "themeUuid": "0d7a5bfb-4850-098e-1821-d989bbfd58a8", - "uuid": "d26ce959-4ed2-7105-8f33-dea48e26de4a", - "wallpaper": null - }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/RGB/Revolver_RGB_PrimaryAsset", "chromas": [ @@ -15783,6 +16401,117 @@ "uuid": "a5057a74-4a6a-561c-6974-d19a2b939599", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/Random/Revolver_Random_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/Random/Chromas/Standard/Revolver_Random_Standard_PrimaryAsset", + "displayIcon": null, + "displayName": "Standard", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/c5d3843f-4ae2-f87a-ebc5-3ab638fc6ae0/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "c5d3843f-4ae2-f87a-ebc5-3ab638fc6ae0" + } + ], + "contentTierUuid": null, + "displayIcon": "https://media.valorant-api.com/weaponskins/d26ce959-4ed2-7105-8f33-dea48e26de4a/displayicon.png", + "displayName": "隨機最愛造型", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/Random/Levels/Revolver_Random_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/94d0ca9c-444b-f762-17a5-908ef1418bc3/displayicon.png", + "displayName": "隨機最愛造型", + "levelItem": null, + "streamedVideo": null, + "uuid": "94d0ca9c-444b-f762-17a5-908ef1418bc3" + } + ], + "themeUuid": "0d7a5bfb-4850-098e-1821-d989bbfd58a8", + "uuid": "d26ce959-4ed2-7105-8f33-dea48e26de4a", + "wallpaper": null + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Revolver_SOL_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Chromas/Standard/Revolver_SOL_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/feab1ba7-4695-f052-7563-a380eb896784/displayicon.png", + "displayName": "光之哨兵 神射", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/feab1ba7-4695-f052-7563-a380eb896784/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/feab1ba7-4695-f052-7563-a380eb896784/swatch.png", + "uuid": "feab1ba7-4695-f052-7563-a380eb896784" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Chromas/v1/Revolver_SOL_v1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/03ba7fcd-410d-90d0-eb13-9cbefa221eeb/displayicon.png", + "displayName": "光之哨兵 神射 等級4\n(幻彩1 粉色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/03ba7fcd-410d-90d0-eb13-9cbefa221eeb/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/eda70ae0-476e-ee8b-3262-d6b230381c1c_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/03ba7fcd-410d-90d0-eb13-9cbefa221eeb/swatch.png", + "uuid": "03ba7fcd-410d-90d0-eb13-9cbefa221eeb" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Chromas/v2/Revolver_SOL_v2_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/810f8c7e-4717-42e2-97e2-418606f83e28/displayicon.png", + "displayName": "光之哨兵 神射 等級4\n(幻彩2 紅/綠色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/810f8c7e-4717-42e2-97e2-418606f83e28/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8d44d40a-4811-9483-0788-8696d8644c87_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/810f8c7e-4717-42e2-97e2-418606f83e28/swatch.png", + "uuid": "810f8c7e-4717-42e2-97e2-418606f83e28" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Chromas/v3/Revolver_SOL_v3_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/ce3c606b-46bd-2554-fc23-bdb01b9d9fd0/displayicon.png", + "displayName": "光之哨兵 神射 等級4\n(幻彩3 藍/紫色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/ce3c606b-46bd-2554-fc23-bdb01b9d9fd0/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/31cc089e-4bdd-2f5c-0073-e187667d1024_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/ce3c606b-46bd-2554-fc23-bdb01b9d9fd0/swatch.png", + "uuid": "ce3c606b-46bd-2554-fc23-bdb01b9d9fd0" + } + ], + "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", + "displayIcon": "https://media.valorant-api.com/weaponskins/2ba3ded8-47d5-58e3-1307-39800214636d/displayicon.png", + "displayName": "光之哨兵 神射", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Levels/Revolver_SOL_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/746a022b-48a9-c51b-f379-11a3e1e2bc8e/displayicon.png", + "displayName": "光之哨兵 神射", + "levelItem": null, + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c7d6901a-4695-f4b7-a26f-6896a5a12fff_default_universal.mp4", + "uuid": "746a022b-48a9-c51b-f379-11a3e1e2bc8e" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Levels/Revolver_SOL_Lv2_PrimaryAsset", + "displayIcon": null, + "displayName": "光之哨兵 神射 等級2", + "levelItem": "EEquippableSkinLevelItem::VFX", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1fef6765-471a-5d6d-8efd-f38e003a82fb_default_universal.mp4", + "uuid": "fe88374e-4f4e-7736-38d6-fab5df49567b" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Levels/Revolver_SOL_Lv3_PrimaryAsset", + "displayIcon": null, + "displayName": "光之哨兵 神射 等級3", + "levelItem": "EEquippableSkinLevelItem::Animation", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/19fb9888-4279-39fd-5d71-bb856ace1227_default_universal.mp4", + "uuid": "adb6d5c9-4049-9878-cf16-36b19239d0f5" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Levels/Revolver_SOL_Lv4_PrimaryAsset", + "displayIcon": null, + "displayName": "光之哨兵 神射 等級4", + "levelItem": "EEquippableSkinLevelItem::Finisher", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b3ea0957-4c4a-18f6-fd4a-eca56aab254d_default_universal.mp4", + "uuid": "894383ad-4945-3a91-a52c-8f8323a5c59b" + } + ], + "themeUuid": "0c187570-4eff-2924-5e98-8bbb96b0216a", + "uuid": "2ba3ded8-47d5-58e3-1307-39800214636d", + "wallpaper": "https://media.valorant-api.com/weaponskins/2ba3ded8-47d5-58e3-1307-39800214636d/wallpaper.png" + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/Sakura/RevolverPistol_Sakura_PrimaryAsset", "chromas": [ @@ -15874,97 +16603,16 @@ "wallpaper": null }, { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Revolver_SOL_PrimaryAsset", + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SoulStealer/RevolverPistol_Soulstealer_PrimaryAsset", "chromas": [ { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Chromas/Standard/Revolver_SOL_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/feab1ba7-4695-f052-7563-a380eb896784/displayicon.png", - "displayName": "光之哨兵 神射", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/feab1ba7-4695-f052-7563-a380eb896784/fullrender.png", + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SoulStealer/Chromas/Standard/RevolverPistol_Soulstealer_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c092687f-4af4-f843-f68b-b989000e240d/displayicon.png", + "displayName": "掠奪印象 神射", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/c092687f-4af4-f843-f68b-b989000e240d/fullrender.png", "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/feab1ba7-4695-f052-7563-a380eb896784/swatch.png", - "uuid": "feab1ba7-4695-f052-7563-a380eb896784" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Chromas/v1/Revolver_SOL_v1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/03ba7fcd-410d-90d0-eb13-9cbefa221eeb/displayicon.png", - "displayName": "光之哨兵 神射 等級4\n(幻彩1 粉色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/03ba7fcd-410d-90d0-eb13-9cbefa221eeb/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/eda70ae0-476e-ee8b-3262-d6b230381c1c_default_universal.mp4", - "swatch": "https://media.valorant-api.com/weaponskinchromas/03ba7fcd-410d-90d0-eb13-9cbefa221eeb/swatch.png", - "uuid": "03ba7fcd-410d-90d0-eb13-9cbefa221eeb" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Chromas/v2/Revolver_SOL_v2_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/810f8c7e-4717-42e2-97e2-418606f83e28/displayicon.png", - "displayName": "光之哨兵 神射 等級4\n(幻彩2 紅/綠色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/810f8c7e-4717-42e2-97e2-418606f83e28/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8d44d40a-4811-9483-0788-8696d8644c87_default_universal.mp4", - "swatch": "https://media.valorant-api.com/weaponskinchromas/810f8c7e-4717-42e2-97e2-418606f83e28/swatch.png", - "uuid": "810f8c7e-4717-42e2-97e2-418606f83e28" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Chromas/v3/Revolver_SOL_v3_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/ce3c606b-46bd-2554-fc23-bdb01b9d9fd0/displayicon.png", - "displayName": "光之哨兵 神射 等級4\n(幻彩3 藍/紫色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/ce3c606b-46bd-2554-fc23-bdb01b9d9fd0/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/31cc089e-4bdd-2f5c-0073-e187667d1024_default_universal.mp4", - "swatch": "https://media.valorant-api.com/weaponskinchromas/ce3c606b-46bd-2554-fc23-bdb01b9d9fd0/swatch.png", - "uuid": "ce3c606b-46bd-2554-fc23-bdb01b9d9fd0" - } - ], - "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", - "displayIcon": "https://media.valorant-api.com/weaponskins/2ba3ded8-47d5-58e3-1307-39800214636d/displayicon.png", - "displayName": "光之哨兵 神射", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Levels/Revolver_SOL_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/746a022b-48a9-c51b-f379-11a3e1e2bc8e/displayicon.png", - "displayName": "光之哨兵 神射", - "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c7d6901a-4695-f4b7-a26f-6896a5a12fff_default_universal.mp4", - "uuid": "746a022b-48a9-c51b-f379-11a3e1e2bc8e" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Levels/Revolver_SOL_Lv2_PrimaryAsset", - "displayIcon": null, - "displayName": "光之哨兵 神射 等級2", - "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1fef6765-471a-5d6d-8efd-f38e003a82fb_default_universal.mp4", - "uuid": "fe88374e-4f4e-7736-38d6-fab5df49567b" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Levels/Revolver_SOL_Lv3_PrimaryAsset", - "displayIcon": null, - "displayName": "光之哨兵 神射 等級3", - "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/19fb9888-4279-39fd-5d71-bb856ace1227_default_universal.mp4", - "uuid": "adb6d5c9-4049-9878-cf16-36b19239d0f5" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SOL/Levels/Revolver_SOL_Lv4_PrimaryAsset", - "displayIcon": null, - "displayName": "光之哨兵 神射 等級4", - "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b3ea0957-4c4a-18f6-fd4a-eca56aab254d_default_universal.mp4", - "uuid": "894383ad-4945-3a91-a52c-8f8323a5c59b" - } - ], - "themeUuid": "0c187570-4eff-2924-5e98-8bbb96b0216a", - "uuid": "2ba3ded8-47d5-58e3-1307-39800214636d", - "wallpaper": "https://media.valorant-api.com/weaponskins/2ba3ded8-47d5-58e3-1307-39800214636d/wallpaper.png" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SoulStealer/RevolverPistol_Soulstealer_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SoulStealer/Chromas/Standard/RevolverPistol_Soulstealer_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c092687f-4af4-f843-f68b-b989000e240d/displayicon.png", - "displayName": "掠奪印象 神射", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/c092687f-4af4-f843-f68b-b989000e240d/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/c092687f-4af4-f843-f68b-b989000e240d/swatch.png", - "uuid": "c092687f-4af4-f843-f68b-b989000e240d" + "swatch": "https://media.valorant-api.com/weaponskinchromas/c092687f-4af4-f843-f68b-b989000e240d/swatch.png", + "uuid": "c092687f-4af4-f843-f68b-b989000e240d" }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Revolver/SoulStealer/Chromas/Red/RevolverPistol_Soulstealer_Red_PrimaryAsset", @@ -16003,7 +16651,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4e4ebb8d-41d0-c326-595a-1f9b257e91fa/displayicon.png", "displayName": "掠奪印象 神射", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8395a67a-499f-5a14-8024-0e928b81bc2b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8395a67a-499f-5a14-8024-0e928b81bc2b_default_universal.mp4", "uuid": "4e4ebb8d-41d0-c326-595a-1f9b257e91fa" }, { @@ -16011,7 +16659,7 @@ "displayIcon": null, "displayName": "掠奪印象 神射 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5b73e4c2-4f2e-c88d-c8a8-55aef290b9a4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5b73e4c2-4f2e-c88d-c8a8-55aef290b9a4_default_universal.mp4", "uuid": "ab5c63fc-46c0-8c7d-1d67-0da96d4b8cf7" }, { @@ -16019,7 +16667,7 @@ "displayIcon": null, "displayName": "掠奪印象 神射 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/19c8de04-43b2-181d-9650-7780f8f4edde_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/19c8de04-43b2-181d-9650-7780f8f4edde_default_universal.mp4", "uuid": "ef84244d-4f04-01dd-36ba-c7b97a688754" }, { @@ -16027,7 +16675,7 @@ "displayIcon": null, "displayName": "掠奪印象 神射 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/77f1f479-42f4-3bc5-6519-8da74ef560a5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/77f1f479-42f4-3bc5-6519-8da74ef560a5_default_universal.mp4", "uuid": "a47a0d1b-4405-9de7-6011-68a9a4a1f36d" } ], @@ -16207,7 +16855,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/9ee1d68f-4b51-8ef1-b620-efa9760b0d02/displayicon.png", "displayName": "奧術 神射", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/62e13a30-4006-7519-7110-40a2cbdea2ea_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/62e13a30-4006-7519-7110-40a2cbdea2ea_default_universal.mp4", "uuid": "9ee1d68f-4b51-8ef1-b620-efa9760b0d02" }, { @@ -16215,7 +16863,7 @@ "displayIcon": null, "displayName": "奧術 神射 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6f248695-49e0-cf64-b0dd-c08be0b8929c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6f248695-49e0-cf64-b0dd-c08be0b8929c_default_universal.mp4", "uuid": "114a5ce1-43ac-2cd8-3a9a-adbdfa32220e" } ], @@ -16253,6 +16901,36 @@ "uuid": "bb0d20c6-415d-cf24-e738-0f99db6f9195", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/Aggrobot/Slim_Aggrobot_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/Aggrobot/Chromas/Standard/Slim_Aggrobot_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/4c2160d7-4650-5bd8-24b1-a1b83be8b0c4/displayicon.png", + "displayName": "Standard", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/4c2160d7-4650-5bd8-24b1-a1b83be8b0c4/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "4c2160d7-4650-5bd8-24b1-a1b83be8b0c4" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/b454bb93-4dd5-5a7c-6720-38afd82bfd78/displayicon.png", + "displayName": "小跟班 短管", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/Aggrobot/Levels/Slim_Aggrobot_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/acab9281-445b-e301-19c6-fe91e3ef27fa/displayicon.png", + "displayName": "小跟班 短管", + "levelItem": null, + "streamedVideo": null, + "uuid": "acab9281-445b-e301-19c6-fe91e3ef27fa" + } + ], + "themeUuid": "d7a96b31-4880-dc84-a022-45bdad450753", + "uuid": "b454bb93-4dd5-5a7c-6720-38afd82bfd78", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/Antares/Slim_Antares_PrimaryAsset", "chromas": [ @@ -16270,7 +16948,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e77075fe-41f8-0d04-1f32-bfb695379dcf/displayicon.png", "displayName": "異星霸主 短管 等級4\n(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e77075fe-41f8-0d04-1f32-bfb695379dcf/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f0d88bca-4c55-43c2-3bf8-e58689bcbfef_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f0d88bca-4c55-43c2-3bf8-e58689bcbfef_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e77075fe-41f8-0d04-1f32-bfb695379dcf/swatch.png", "uuid": "e77075fe-41f8-0d04-1f32-bfb695379dcf" }, @@ -16279,7 +16957,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/9fb8bacf-4465-7279-7ea8-eb905ddbe26f/displayicon.png", "displayName": "異星霸主 短管 等級4\n(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/9fb8bacf-4465-7279-7ea8-eb905ddbe26f/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d075451c-49e4-cb8e-3ea8-0eb24d1a03fb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d075451c-49e4-cb8e-3ea8-0eb24d1a03fb_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/9fb8bacf-4465-7279-7ea8-eb905ddbe26f/swatch.png", "uuid": "9fb8bacf-4465-7279-7ea8-eb905ddbe26f" }, @@ -16288,7 +16966,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/27a666f2-46a5-506d-3539-8189ce6e0982/displayicon.png", "displayName": "異星霸主 短管 等級4\n(幻彩3 銀色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/27a666f2-46a5-506d-3539-8189ce6e0982/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b830f7cd-49f6-cc60-d45e-0093297b370c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b830f7cd-49f6-cc60-d45e-0093297b370c_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/27a666f2-46a5-506d-3539-8189ce6e0982/swatch.png", "uuid": "27a666f2-46a5-506d-3539-8189ce6e0982" } @@ -16302,7 +16980,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f41c7d7c-4701-1612-f375-7fbfa52b7ac7/displayicon.png", "displayName": "異星霸主 短管", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/69698b55-4c05-f38e-ecc3-799de26d9796_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/69698b55-4c05-f38e-ecc3-799de26d9796_default_universal.mp4", "uuid": "f41c7d7c-4701-1612-f375-7fbfa52b7ac7" }, { @@ -16310,7 +16988,7 @@ "displayIcon": null, "displayName": "異星霸主 短管 等級2", "levelItem": "EEquippableSkinLevelItem::SoundEffects", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/95c678f9-48c4-33c0-3578-c88703d5b479_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/95c678f9-48c4-33c0-3578-c88703d5b479_default_universal.mp4", "uuid": "ed37bd4b-48fa-3d51-49ae-19be0780a290" }, { @@ -16318,7 +16996,7 @@ "displayIcon": null, "displayName": "異星霸主 短管 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5093cf60-4733-8694-0449-e68f48a54a0c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5093cf60-4733-8694-0449-e68f48a54a0c_default_universal.mp4", "uuid": "6089c5d0-4fb4-cf2d-3940-adb2a1d97b16" }, { @@ -16326,7 +17004,7 @@ "displayIcon": null, "displayName": "異星霸主 短管 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6691ce3b-4192-fefb-a2a1-a4895e66dc68_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6691ce3b-4192-fefb-a2a1-a4895e66dc68_default_universal.mp4", "uuid": "60ffb9eb-430e-5920-6418-aaaca3b566b4" } ], @@ -16351,7 +17029,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/d7f15e4a-446f-88bd-9daa-49b26d121ab3/displayicon.png", "displayName": "海洋星球 短管 等級3\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/d7f15e4a-446f-88bd-9daa-49b26d121ab3/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6390e29f-45fa-4f2c-3d59-cab0638e5e70_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6390e29f-45fa-4f2c-3d59-cab0638e5e70_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/d7f15e4a-446f-88bd-9daa-49b26d121ab3/swatch.png", "uuid": "d7f15e4a-446f-88bd-9daa-49b26d121ab3" } @@ -16365,7 +17043,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/93266c2b-400f-da62-24a0-739f51d33cc1/displayicon.png", "displayName": "海洋星球 短管", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3def624b-44d0-226e-aa6c-73b73d849b17_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3def624b-44d0-226e-aa6c-73b73d849b17_default_universal.mp4", "uuid": "93266c2b-400f-da62-24a0-739f51d33cc1" }, { @@ -16373,7 +17051,7 @@ "displayIcon": null, "displayName": "海洋星球 短管 等級2", "levelItem": "EEquippableSkinLevelItem::FishAnimation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/88db08d6-4bee-4a6c-c461-138998c84d15_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/88db08d6-4bee-4a6c-c461-138998c84d15_default_universal.mp4", "uuid": "e40ba2a2-4b91-8144-0b62-7c8ede15bced" }, { @@ -16381,7 +17059,7 @@ "displayIcon": null, "displayName": "海洋星球 短管 等級3", "levelItem": "EEquippableSkinLevelItem::KillBanner", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9ef35208-4c55-3e4c-283e-e0a28b15f996_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9ef35208-4c55-3e4c-283e-e0a28b15f996_default_universal.mp4", "uuid": "e70308c1-437a-d393-5c9a-7386bf8a7e28" } ], @@ -16466,7 +17144,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/b63b0226-40d0-f52d-1a7c-b6a7555d703d/displayicon.png", "displayName": "混沌序幕 短管 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/b63b0226-40d0-f52d-1a7c-b6a7555d703d/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c0529c83-4b4e-98df-cf1e-2492c633d5c4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c0529c83-4b4e-98df-cf1e-2492c633d5c4_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/b63b0226-40d0-f52d-1a7c-b6a7555d703d/swatch.png", "uuid": "b63b0226-40d0-f52d-1a7c-b6a7555d703d" }, @@ -16475,7 +17153,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/51e5bab7-48d8-b8e3-3cf6-cbb1994eae0a/displayicon.png", "displayName": "混沌序幕 短管 等級4\n(幻彩2 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/51e5bab7-48d8-b8e3-3cf6-cbb1994eae0a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/135d5541-4c29-f180-e1e6-70bbcab12a41_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/135d5541-4c29-f180-e1e6-70bbcab12a41_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/51e5bab7-48d8-b8e3-3cf6-cbb1994eae0a/swatch.png", "uuid": "51e5bab7-48d8-b8e3-3cf6-cbb1994eae0a" }, @@ -16484,7 +17162,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/0164afa0-47dc-3c61-cd5b-8794b73c2540/displayicon.png", "displayName": "混沌序幕 短管 等級4\n(幻彩3 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/0164afa0-47dc-3c61-cd5b-8794b73c2540/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/73e2514f-4bf4-a589-ac61-04ae570ee308_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/73e2514f-4bf4-a589-ac61-04ae570ee308_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/0164afa0-47dc-3c61-cd5b-8794b73c2540/swatch.png", "uuid": "0164afa0-47dc-3c61-cd5b-8794b73c2540" } @@ -16498,7 +17176,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/09fded5d-4add-00e7-d3c4-32b8f21c7944/displayicon.png", "displayName": "混沌序幕 短管", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/55460ca5-427f-8e75-dd12-1ca8a9e3cd13_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/55460ca5-427f-8e75-dd12-1ca8a9e3cd13_default_universal.mp4", "uuid": "09fded5d-4add-00e7-d3c4-32b8f21c7944" }, { @@ -16506,7 +17184,7 @@ "displayIcon": null, "displayName": "混沌序幕 短管 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c58f288d-4a83-3b31-436b-11956bf6b22a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c58f288d-4a83-3b31-436b-11956bf6b22a_default_universal.mp4", "uuid": "a0708cc3-4f93-228c-fba0-b3938c5efea5" }, { @@ -16514,7 +17192,7 @@ "displayIcon": null, "displayName": "混沌序幕 短管 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fecbd7fd-41dc-a2a4-5b70-47a7128cceed_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fecbd7fd-41dc-a2a4-5b70-47a7128cceed_default_universal.mp4", "uuid": "c977106d-4dc7-bbcd-74e4-efab54475915" }, { @@ -16522,7 +17200,7 @@ "displayIcon": null, "displayName": "混沌序幕 短管 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/02a0479d-4aca-58cf-5a7b-5a9da267c6e7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/02a0479d-4aca-58cf-5a7b-5a9da267c6e7_default_universal.mp4", "uuid": "8ca69aa7-451a-1af5-e897-3b9d309e82a4" } ], @@ -16547,7 +17225,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 短管 等級2\n(幻彩1 戰術夥伴)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/acb87714-4ea5-18b6-0d2a-fb8754340943/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f260084b-411c-8e0c-6353-0f95bd360721_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f260084b-411c-8e0c-6353-0f95bd360721_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/acb87714-4ea5-18b6-0d2a-fb8754340943/swatch.png", "uuid": "acb87714-4ea5-18b6-0d2a-fb8754340943" }, @@ -16556,7 +17234,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 短管 等級2\n(幻彩2 英雄聯盟)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/a92fcaf4-4828-dea4-c00b-26b549011699/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/97e007da-49ec-9737-3dd6-6a97e922cf0a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/97e007da-49ec-9737-3dd6-6a97e922cf0a_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/a92fcaf4-4828-dea4-c00b-26b549011699/swatch.png", "uuid": "a92fcaf4-4828-dea4-c00b-26b549011699" } @@ -16570,7 +17248,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/deb200a8-447c-0e47-5b92-e8aeb9cd5525/displayicon.png", "displayName": "魔術塗鴉 短管", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/89158522-44bf-f426-51e1-5ca94faeb55e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/89158522-44bf-f426-51e1-5ca94faeb55e_default_universal.mp4", "uuid": "deb200a8-447c-0e47-5b92-e8aeb9cd5525" }, { @@ -16578,7 +17256,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 短管 等級2", "levelItem": "EEquippableSkinLevelItem::KillEffect", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0de88508-4588-8ada-cfd5-23a89006029b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0de88508-4588-8ada-cfd5-23a89006029b_default_universal.mp4", "uuid": "ba0193f6-4c7d-1b7f-b9dc-4e883a6ba21a" } ], @@ -16838,7 +17516,7 @@ { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/Oni/Chromas/Black/SawedOffShotgun_Oni_Black_PrimaryAsset", "displayIcon": "https://media.valorant-api.com/weaponskinchromas/1c6f1255-410d-5927-0c48-24b3e43cb468/displayicon.png", - "displayName": "惡鬼 短管 等級4\n(幻彩1 黑色)", + "displayName": "惡鬼 短管 等級4\n(幻彩1 浮雲)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/1c6f1255-410d-5927-0c48-24b3e43cb468/fullrender.png", "streamedVideo": null, "swatch": "https://media.valorant-api.com/weaponskinchromas/1c6f1255-410d-5927-0c48-24b3e43cb468/swatch.png", @@ -16847,7 +17525,7 @@ { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/Oni/Chromas/Green/SawedOffShotgun_Oni_Green_PrimaryAsset", "displayIcon": "https://media.valorant-api.com/weaponskinchromas/114f03d3-44ca-27d6-9dbe-22bd65a8a3b9/displayicon.png", - "displayName": "惡鬼 短管 等級4\n(幻彩2 綠色)", + "displayName": "惡鬼 短管 等級4\n(幻彩2 落花)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/114f03d3-44ca-27d6-9dbe-22bd65a8a3b9/fullrender.png", "streamedVideo": null, "swatch": "https://media.valorant-api.com/weaponskinchromas/114f03d3-44ca-27d6-9dbe-22bd65a8a3b9/swatch.png", @@ -16856,7 +17534,7 @@ { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/Oni/Chromas/White/SawedOffShotgun_Oni_White_PrimaryAsset", "displayIcon": "https://media.valorant-api.com/weaponskinchromas/779efcc7-4756-14fa-6226-e4909008f56a/displayicon.png", - "displayName": "惡鬼 短管 等級4\n(幻彩3 白色)", + "displayName": "惡鬼 短管 等級4\n(幻彩3 飛燕)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/779efcc7-4756-14fa-6226-e4909008f56a/fullrender.png", "streamedVideo": null, "swatch": "https://media.valorant-api.com/weaponskinchromas/779efcc7-4756-14fa-6226-e4909008f56a/swatch.png", @@ -16872,7 +17550,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/a2950772-447a-f2db-be24-19b0e0ed736f/displayicon.png", "displayName": "惡鬼 短管", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4ee54682-40e8-d2f7-b916-d3a91ed2f0ba_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4ee54682-40e8-d2f7-b916-d3a91ed2f0ba_default_universal.mp4", "uuid": "a2950772-447a-f2db-be24-19b0e0ed736f" }, { @@ -16880,7 +17558,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/75a66462-49d7-134a-03e1-bc8c3b7fda7a/displayicon.png", "displayName": "惡鬼 短管 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4f41f4ea-4321-a652-5a57-ef83552e912b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4f41f4ea-4321-a652-5a57-ef83552e912b_default_universal.mp4", "uuid": "75a66462-49d7-134a-03e1-bc8c3b7fda7a" }, { @@ -16888,7 +17566,7 @@ "displayIcon": null, "displayName": "惡鬼 短管 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1385aa15-48df-2990-90ca-1cbfa25329f6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1385aa15-48df-2990-90ca-1cbfa25329f6_default_universal.mp4", "uuid": "02461d7f-4f0a-f25f-94b2-ee960d0734d7" }, { @@ -16896,7 +17574,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/25e2a599-4564-708a-b80e-afbeb6781372/displayicon.png", "displayName": "惡鬼 短管 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9693f069-4376-b294-5cef-b982f1598b7e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9693f069-4376-b294-5cef-b982f1598b7e_default_universal.mp4", "uuid": "25e2a599-4564-708a-b80e-afbeb6781372" } ], @@ -17054,6 +17732,63 @@ "uuid": "a39bd1bb-4b17-4d57-c505-7eb15caffa4d", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/StreetWear/Slim_StreetWear_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/StreetWear/Chromas/Standard/Slim_StreetWear_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/69df9ff4-4441-12ff-94fc-1f84b37ad8a5/displayicon.png", + "displayName": "金屬波浪 短管", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/69df9ff4-4441-12ff-94fc-1f84b37ad8a5/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/69df9ff4-4441-12ff-94fc-1f84b37ad8a5/swatch.png", + "uuid": "69df9ff4-4441-12ff-94fc-1f84b37ad8a5" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/StreetWear/Chromas/v1/Slim_StreetWear_v1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e39170f2-4ea0-b96d-0aca-e9a77596a06d/displayicon.png", + "displayName": "金屬波浪 短管\n(幻彩1 紅色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/e39170f2-4ea0-b96d-0aca-e9a77596a06d/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/e39170f2-4ea0-b96d-0aca-e9a77596a06d/swatch.png", + "uuid": "e39170f2-4ea0-b96d-0aca-e9a77596a06d" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/StreetWear/Chromas/v2/Slim_StreetWear_v2_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/8b394e0c-4a59-714a-02f3-538856f874e7/displayicon.png", + "displayName": "金屬波浪 短管\n(幻彩2 紫色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/8b394e0c-4a59-714a-02f3-538856f874e7/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/8b394e0c-4a59-714a-02f3-538856f874e7/swatch.png", + "uuid": "8b394e0c-4a59-714a-02f3-538856f874e7" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/StreetWear/Chromas/v3/Slim_StreetWear_v3_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/19434883-4320-5a89-9c57-24b417e0ae09/displayicon.png", + "displayName": "金屬波浪 短管\n(幻彩3 綠色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/19434883-4320-5a89-9c57-24b417e0ae09/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/19434883-4320-5a89-9c57-24b417e0ae09/swatch.png", + "uuid": "19434883-4320-5a89-9c57-24b417e0ae09" + } + ], + "contentTierUuid": "0cebb8be-46d7-c12a-d306-e9907bfc5a25", + "displayIcon": "https://media.valorant-api.com/weaponskins/ae2ea89b-495e-2902-f67f-3490c1a03754/displayicon.png", + "displayName": "金屬波浪 短管", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/StreetWear/Levels/Slim_StreetWear_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/10cf91e9-4902-3898-3857-b4ad13882e71/displayicon.png", + "displayName": "金屬波浪 短管", + "levelItem": null, + "streamedVideo": null, + "uuid": "10cf91e9-4902-3898-3857-b4ad13882e71" + } + ], + "themeUuid": "8a046174-4736-8d37-3f2f-9b88c9873040", + "uuid": "ae2ea89b-495e-2902-f67f-3490c1a03754", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/Sidearms/Slim/Tiger/Slim_Tiger_PrimaryAsset", "chromas": [ @@ -17161,7 +17896,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/a4d1f2c2-4340-4527-7ef0-b9b0bd4d84ff/displayicon.png", "displayName": "RGX 11z Pro 間諜 等級5\n(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/a4d1f2c2-4340-4527-7ef0-b9b0bd4d84ff/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a3d5f895-48ae-f4df-7f42-498c2f8fe8ad_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a3d5f895-48ae-f4df-7f42-498c2f8fe8ad_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/a4d1f2c2-4340-4527-7ef0-b9b0bd4d84ff/swatch.png", "uuid": "a4d1f2c2-4340-4527-7ef0-b9b0bd4d84ff" }, @@ -17170,7 +17905,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/b3faf521-48ed-8829-14fc-12b662021f10/displayicon.png", "displayName": "RGX 11z Pro 間諜 等級5\n(幻彩2 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/b3faf521-48ed-8829-14fc-12b662021f10/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/461a215d-4f91-58be-ccfa-a5bcc6cef0e5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/461a215d-4f91-58be-ccfa-a5bcc6cef0e5_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/b3faf521-48ed-8829-14fc-12b662021f10/swatch.png", "uuid": "b3faf521-48ed-8829-14fc-12b662021f10" }, @@ -17179,7 +17914,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/3375e955-493f-479f-8937-2db8dbd9e516/displayicon.png", "displayName": "RGX 11z Pro 間諜 等級5\n(幻彩3 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/3375e955-493f-479f-8937-2db8dbd9e516/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fc6e97c0-4d94-927f-b22a-0b8cbd8d3cde_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fc6e97c0-4d94-927f-b22a-0b8cbd8d3cde_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/3375e955-493f-479f-8937-2db8dbd9e516/swatch.png", "uuid": "3375e955-493f-479f-8937-2db8dbd9e516" } @@ -17193,7 +17928,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/2ad7a62f-4091-ecba-de21-d19edfb41086/displayicon.png", "displayName": "RGX 11z Pro 間諜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0daab993-4a7c-3ee5-41d5-52af70473f24_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0daab993-4a7c-3ee5-41d5-52af70473f24_default_universal.mp4", "uuid": "2ad7a62f-4091-ecba-de21-d19edfb41086" }, { @@ -17201,7 +17936,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 間諜 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d66da638-47fa-0ce0-c265-eb9003f56656_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d66da638-47fa-0ce0-c265-eb9003f56656_default_universal.mp4", "uuid": "873e2729-4986-6471-2c75-298a5e9205e3" }, { @@ -17209,7 +17944,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 間諜 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/08d9828d-4986-42f1-06ef-2782c6968002_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/08d9828d-4986-42f1-06ef-2782c6968002_default_universal.mp4", "uuid": "6c940bdf-45a9-583f-7d14-028b380ed37b" }, { @@ -17217,7 +17952,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 間諜 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/007eaa42-4d4d-2d6f-45eb-769defdb2d7c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/007eaa42-4d4d-2d6f-45eb-769defdb2d7c_default_universal.mp4", "uuid": "2f1221b2-4e99-a2e7-4f63-0e9c6dab5b62" }, { @@ -17225,7 +17960,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 間諜 等級5", "levelItem": "EEquippableSkinLevelItem::KillCounter", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4398ca37-4d7f-7fd8-e813-23bee01195a1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4398ca37-4d7f-7fd8-e813-23bee01195a1_default_universal.mp4", "uuid": "2084911a-479d-14e5-13b4-b3856a39885e" } ], @@ -17280,7 +18015,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/bdbc039a-4891-cd91-6713-74abe8470cbe/displayicon.png", "displayName": "異星霸主 間諜 等級4\n(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/bdbc039a-4891-cd91-6713-74abe8470cbe/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9e69fcaa-42b0-90bf-b97e-0bbc8f4db1bf_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9e69fcaa-42b0-90bf-b97e-0bbc8f4db1bf_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/bdbc039a-4891-cd91-6713-74abe8470cbe/swatch.png", "uuid": "bdbc039a-4891-cd91-6713-74abe8470cbe" }, @@ -17289,7 +18024,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/9686c85c-4b6c-3b72-6dc6-058fd39f0c89/displayicon.png", "displayName": "異星霸主 間諜 等級4\n(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/9686c85c-4b6c-3b72-6dc6-058fd39f0c89/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ef62debf-4f9d-0b24-a9b9-ba9751a16d27_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ef62debf-4f9d-0b24-a9b9-ba9751a16d27_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/9686c85c-4b6c-3b72-6dc6-058fd39f0c89/swatch.png", "uuid": "9686c85c-4b6c-3b72-6dc6-058fd39f0c89" }, @@ -17298,7 +18033,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/58f56085-4f00-7b1d-aaa0-f49395c1254d/displayicon.png", "displayName": "異星霸主 間諜 等級4\n(幻彩3 銀色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/58f56085-4f00-7b1d-aaa0-f49395c1254d/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ae3bdf4c-4051-05f6-c6c5-bdaa412b0933_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ae3bdf4c-4051-05f6-c6c5-bdaa412b0933_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/58f56085-4f00-7b1d-aaa0-f49395c1254d/swatch.png", "uuid": "58f56085-4f00-7b1d-aaa0-f49395c1254d" } @@ -17312,7 +18047,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/bf2da3c9-43aa-5a37-9958-2a805298951f/displayicon.png", "displayName": "異星霸主 間諜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d381c09d-4fc3-f71d-a750-df9468b53bfd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d381c09d-4fc3-f71d-a750-df9468b53bfd_default_universal.mp4", "uuid": "bf2da3c9-43aa-5a37-9958-2a805298951f" }, { @@ -17320,7 +18055,7 @@ "displayIcon": null, "displayName": "異星霸主 間諜 等級2", "levelItem": "EEquippableSkinLevelItem::SoundEffects", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3f010634-43f9-431d-650d-35bddeb68118_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3f010634-43f9-431d-650d-35bddeb68118_default_universal.mp4", "uuid": "0dca1fcb-4484-5e4d-f15c-a3985b2bec33" }, { @@ -17328,7 +18063,7 @@ "displayIcon": null, "displayName": "異星霸主 間諜 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/290f46a8-4feb-c527-2e8c-07bff9466c0e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/290f46a8-4feb-c527-2e8c-07bff9466c0e_default_universal.mp4", "uuid": "4e0b18ce-4658-bdfd-7097-17bffb168886" }, { @@ -17336,7 +18071,7 @@ "displayIcon": null, "displayName": "異星霸主 間諜 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/50bce9d8-4cfc-b554-9cfb-21bf4cd26603_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/50bce9d8-4cfc-b554-9cfb-21bf4cd26603_default_universal.mp4", "uuid": "34ccb66a-489f-f120-b9ef-739f4af36549" } ], @@ -17382,7 +18117,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e9a1f1d7-4651-c94c-4e9f-94a4bb93232b/displayicon.png", "displayName": "起源 間諜", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e9a1f1d7-4651-c94c-4e9f-94a4bb93232b/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/27894ca0-4bae-9bb9-a0e1-1d9befd86eb0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/27894ca0-4bae-9bb9-a0e1-1d9befd86eb0_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e9a1f1d7-4651-c94c-4e9f-94a4bb93232b/swatch.png", "uuid": "e9a1f1d7-4651-c94c-4e9f-94a4bb93232b" }, @@ -17391,7 +18126,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/3d72bc4e-4af0-369b-9f67-3181e7940b9a/displayicon.png", "displayName": "起源 間諜 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/3d72bc4e-4af0-369b-9f67-3181e7940b9a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/41c0b7ef-46ce-24ae-451f-a58a1a88da62_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/41c0b7ef-46ce-24ae-451f-a58a1a88da62_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/3d72bc4e-4af0-369b-9f67-3181e7940b9a/swatch.png", "uuid": "3d72bc4e-4af0-369b-9f67-3181e7940b9a" }, @@ -17400,7 +18135,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/db9ccc65-45c1-cc8d-6b2a-97a3c9ec6652/displayicon.png", "displayName": "起源 間諜 等級4\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/db9ccc65-45c1-cc8d-6b2a-97a3c9ec6652/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f06fc1cf-4de7-2847-ef8c-ce9404dc8e59_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f06fc1cf-4de7-2847-ef8c-ce9404dc8e59_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/db9ccc65-45c1-cc8d-6b2a-97a3c9ec6652/swatch.png", "uuid": "db9ccc65-45c1-cc8d-6b2a-97a3c9ec6652" }, @@ -17409,7 +18144,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/d41d5078-4b51-50b5-0d53-6cb96d548d74/displayicon.png", "displayName": "起源 間諜 等級4\n(幻彩3 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/d41d5078-4b51-50b5-0d53-6cb96d548d74/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/702805f2-40cf-26db-6f7d-e59f9e57054d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/702805f2-40cf-26db-6f7d-e59f9e57054d_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/d41d5078-4b51-50b5-0d53-6cb96d548d74/swatch.png", "uuid": "d41d5078-4b51-50b5-0d53-6cb96d548d74" } @@ -17423,7 +18158,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4d19c241-4350-6658-f5a6-5c99ca8e5e99/displayicon.png", "displayName": "起源 間諜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/94e2ba49-48d1-a939-1baa-9b922ab1d131_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/94e2ba49-48d1-a939-1baa-9b922ab1d131_default_universal.mp4", "uuid": "4d19c241-4350-6658-f5a6-5c99ca8e5e99" }, { @@ -17431,7 +18166,7 @@ "displayIcon": null, "displayName": "起源 間諜 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/507579ab-4d46-8960-63fc-4d82e67c3d33_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/507579ab-4d46-8960-63fc-4d82e67c3d33_default_universal.mp4", "uuid": "b225c7d3-4ab2-e703-1e5a-f2885730e81c" }, { @@ -17439,7 +18174,7 @@ "displayIcon": null, "displayName": "起源 間諜 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5d977546-4c14-5d0d-9326-e882a8ebf6d6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5d977546-4c14-5d0d-9326-e882a8ebf6d6_default_universal.mp4", "uuid": "a2fff901-4bf8-3029-ab04-da96f8b9a73e" }, { @@ -17447,7 +18182,7 @@ "displayIcon": null, "displayName": "起源 間諜 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/27894ca0-4bae-9bb9-a0e1-1d9befd86eb0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/27894ca0-4bae-9bb9-a0e1-1d9befd86eb0_default_universal.mp4", "uuid": "99bf69d9-4451-cfb4-456f-c3b5cc4fcf5e" } ], @@ -17591,7 +18326,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d92a6ee6-4073-8b7f-e944-f1a55606a28a/displayicon.png", "displayName": "電幻普普 間諜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8f1980c7-42f9-641a-3ab5-03bc90b4c93f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8f1980c7-42f9-641a-3ab5-03bc90b4c93f_default_universal.mp4", "uuid": "d92a6ee6-4073-8b7f-e944-f1a55606a28a" }, { @@ -17599,7 +18334,7 @@ "displayIcon": null, "displayName": "電幻普普 間諜 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/022fe5ae-4d7c-cafc-e960-b589a1471ff0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/022fe5ae-4d7c-cafc-e960-b589a1471ff0_default_universal.mp4", "uuid": "e2b3a374-4e26-0d5c-45cd-9490013b21ef" }, { @@ -17607,7 +18342,7 @@ "displayIcon": null, "displayName": "電幻普普 間諜 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b8348350-4089-8b9e-031c-c49e2f09b0df_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b8348350-4089-8b9e-031c-c49e2f09b0df_default_universal.mp4", "uuid": "95695ed5-4b4b-01a9-ba22-86981af7d2f2" }, { @@ -17615,7 +18350,7 @@ "displayIcon": null, "displayName": "電幻普普 間諜 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bed7b85c-4783-5891-2967-1e96f3b83a60_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bed7b85c-4783-5891-2967-1e96f3b83a60_default_universal.mp4", "uuid": "e177f0db-46fc-d779-fbea-d488780c322c" } ], @@ -17640,7 +18375,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/9a1e679d-4b6d-b3f9-642a-36a375d8cb7d/displayicon.png", "displayName": "混沌序幕 間諜 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/9a1e679d-4b6d-b3f9-642a-36a375d8cb7d/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2beeaa1d-46a3-1ee8-d12a-26ac80ccde0b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2beeaa1d-46a3-1ee8-d12a-26ac80ccde0b_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/9a1e679d-4b6d-b3f9-642a-36a375d8cb7d/swatch.png", "uuid": "9a1e679d-4b6d-b3f9-642a-36a375d8cb7d" }, @@ -17649,7 +18384,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/9b36cca5-414d-a43b-5f01-dab940b930d3/displayicon.png", "displayName": "混沌序幕 間諜 等級4\n(幻彩2 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/9b36cca5-414d-a43b-5f01-dab940b930d3/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/70d3f9ed-4246-32d7-5144-47be755aedfd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/70d3f9ed-4246-32d7-5144-47be755aedfd_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/9b36cca5-414d-a43b-5f01-dab940b930d3/swatch.png", "uuid": "9b36cca5-414d-a43b-5f01-dab940b930d3" }, @@ -17658,7 +18393,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e1becf17-4a52-0ee9-68b4-85b14dabf552/displayicon.png", "displayName": "混沌序幕 間諜 等級4\n(幻彩3 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e1becf17-4a52-0ee9-68b4-85b14dabf552/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6fadf173-44e9-1932-96cf-89a5ae794ab4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6fadf173-44e9-1932-96cf-89a5ae794ab4_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e1becf17-4a52-0ee9-68b4-85b14dabf552/swatch.png", "uuid": "e1becf17-4a52-0ee9-68b4-85b14dabf552" } @@ -17672,7 +18407,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/7c89312b-45fb-a892-4525-659ba3de4475/displayicon.png", "displayName": "混沌序幕 間諜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0a68c8f6-4567-bf22-0e96-fd98917d88e6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0a68c8f6-4567-bf22-0e96-fd98917d88e6_default_universal.mp4", "uuid": "7c89312b-45fb-a892-4525-659ba3de4475" }, { @@ -17680,7 +18415,7 @@ "displayIcon": null, "displayName": "混沌序幕 間諜 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/cf5de645-40d3-7580-f291-71bf770a0b37_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/cf5de645-40d3-7580-f291-71bf770a0b37_default_universal.mp4", "uuid": "2532802b-4090-340a-1ebc-7cad0600d09a" }, { @@ -17688,7 +18423,7 @@ "displayIcon": null, "displayName": "混沌序幕 間諜 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a5e131a3-427a-8fe0-e6be-8db375ace236_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a5e131a3-427a-8fe0-e6be-8db375ace236_default_universal.mp4", "uuid": "79d28c39-4418-2b35-74ef-989c4e270f87" }, { @@ -17696,7 +18431,7 @@ "displayIcon": null, "displayName": "混沌序幕 間諜 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/546c25a6-4b56-c729-e361-ecaa2e0ca6b4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/546c25a6-4b56-c729-e361-ecaa2e0ca6b4_default_universal.mp4", "uuid": "77b80391-46c8-f950-0f28-15bf5dea85b6" } ], @@ -17753,7 +18488,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5c273d0e-47fa-bb8c-d914-728de95da30e/displayicon.png", "displayName": "至尊龍燄 間諜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0e1f79a5-81ae-4d21-b3c5-740605b7e054_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0e1f79a5-81ae-4d21-b3c5-740605b7e054_default_universal.mp4", "uuid": "5c273d0e-47fa-bb8c-d914-728de95da30e" }, { @@ -17761,7 +18496,7 @@ "displayIcon": null, "displayName": "至尊龍燄 間諜 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3b406376-1546-4295-a6d9-77a9a286d724_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3b406376-1546-4295-a6d9-77a9a286d724_default_universal.mp4", "uuid": "ea7094b7-4f29-2570-0003-14a9b872fc19" }, { @@ -17769,7 +18504,7 @@ "displayIcon": null, "displayName": "至尊龍燄 間諜 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f5a28688-6a1c-41cb-88b5-a6f8990bf4da_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f5a28688-6a1c-41cb-88b5-a6f8990bf4da_default_universal.mp4", "uuid": "02567ece-47a2-a68b-7853-668f45ab0ab0" }, { @@ -17777,7 +18512,7 @@ "displayIcon": null, "displayName": "至尊龍燄 間諜 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9662e509-fba3-409d-b4c4-87b0c7279792_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9662e509-fba3-409d-b4c4-87b0c7279792_default_universal.mp4", "uuid": "41ad7696-47bf-cd88-115b-9cb17ad77919" } ], @@ -17832,7 +18567,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/5f4634b4-41e3-1f48-4251-778091198113/displayicon.png", "displayName": "棄王遺思 間諜 等級4\n(幻彩1 金色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/5f4634b4-41e3-1f48-4251-778091198113/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c7c37b3f-48e5-2513-ab71-de83050f7b87_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c7c37b3f-48e5-2513-ab71-de83050f7b87_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/5f4634b4-41e3-1f48-4251-778091198113/swatch.png", "uuid": "5f4634b4-41e3-1f48-4251-778091198113" } @@ -17846,7 +18581,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/10a5fe91-4efa-9d6b-44f7-47ae9660550d/displayicon.png", "displayName": "棄王遺思 間諜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/718e02de-4f61-8f87-7d4c-8fa613256886_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/718e02de-4f61-8f87-7d4c-8fa613256886_default_universal.mp4", "uuid": "10a5fe91-4efa-9d6b-44f7-47ae9660550d" }, { @@ -17854,7 +18589,7 @@ "displayIcon": null, "displayName": "棄王遺思 間諜 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/756f93f4-4c2f-8ea8-923b-b4924481c96d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/756f93f4-4c2f-8ea8-923b-b4924481c96d_default_universal.mp4", "uuid": "995b9baa-4335-6ff8-5868-bba728958de5" }, { @@ -17862,7 +18597,7 @@ "displayIcon": null, "displayName": "棄王遺思 間諜 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/817efae1-434c-242a-7f7a-779afcf80eae_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/817efae1-434c-242a-7f7a-779afcf80eae_default_universal.mp4", "uuid": "d542977e-4c98-1e6a-583f-7fa169afabba" }, { @@ -17870,7 +18605,7 @@ "displayIcon": null, "displayName": "棄王遺思 間諜 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b4991fc2-4026-774a-703d-32a0a778dc04_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b4991fc2-4026-774a-703d-32a0a778dc04_default_universal.mp4", "uuid": "a2774d57-4703-9acc-7cd9-a2895b754c51" } ], @@ -18045,7 +18780,7 @@ "displayIcon": null, "displayName": "赤珀墨松 間諜\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/a8270780-4e7d-53f7-a9da-3fb0f003db1d/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5b608482-42d9-fe93-1ffe-0bb23fc3d99b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5b608482-42d9-fe93-1ffe-0bb23fc3d99b_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/a8270780-4e7d-53f7-a9da-3fb0f003db1d/swatch.png", "uuid": "a8270780-4e7d-53f7-a9da-3fb0f003db1d" } @@ -18059,7 +18794,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/1fe051aa-40e9-3ff6-585a-e384f0197224/displayicon.png", "displayName": "赤珀墨松 間諜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f66e1f91-4652-7976-64ba-5d947c311a2f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f66e1f91-4652-7976-64ba-5d947c311a2f_default_universal.mp4", "uuid": "1fe051aa-40e9-3ff6-585a-e384f0197224" } ], @@ -18144,7 +18879,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/ca307302-44ec-d469-abaf-a891d3972444/displayicon.png", "displayName": "奇幻龐克 間諜 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/ca307302-44ec-d469-abaf-a891d3972444/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0d783afa-46c2-d619-014a-4eb6b73f70ac_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0d783afa-46c2-d619-014a-4eb6b73f70ac_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/ca307302-44ec-d469-abaf-a891d3972444/swatch.png", "uuid": "ca307302-44ec-d469-abaf-a891d3972444" }, @@ -18153,7 +18888,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/fb047129-4a2b-8f40-41c9-9fa223d0d9f6/displayicon.png", "displayName": "奇幻龐克 間諜 等級4\n(幻彩2 粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/fb047129-4a2b-8f40-41c9-9fa223d0d9f6/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/605b77fa-49a6-595d-1e62-8eb5cb7693d7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/605b77fa-49a6-595d-1e62-8eb5cb7693d7_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/fb047129-4a2b-8f40-41c9-9fa223d0d9f6/swatch.png", "uuid": "fb047129-4a2b-8f40-41c9-9fa223d0d9f6" }, @@ -18162,7 +18897,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/5739edee-491c-8468-4771-ae8102a319b6/displayicon.png", "displayName": "奇幻龐克 間諜 等級4\n(幻彩3 橘色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/5739edee-491c-8468-4771-ae8102a319b6/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c6b4acc1-4af9-aa77-b9f0-c99eb7f4b19a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c6b4acc1-4af9-aa77-b9f0-c99eb7f4b19a_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/5739edee-491c-8468-4771-ae8102a319b6/swatch.png", "uuid": "5739edee-491c-8468-4771-ae8102a319b6" } @@ -18176,7 +18911,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/369c9f89-49fa-94bc-f3f8-b9b94b6395af/displayicon.png", "displayName": "奇幻龐克 間諜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/02bbd673-4cc6-ae85-8667-2b8d295e5bd4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/02bbd673-4cc6-ae85-8667-2b8d295e5bd4_default_universal.mp4", "uuid": "369c9f89-49fa-94bc-f3f8-b9b94b6395af" }, { @@ -18184,7 +18919,7 @@ "displayIcon": null, "displayName": "奇幻龐克 間諜 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/360a1081-4d7c-551f-4222-a192652157c4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/360a1081-4d7c-551f-4222-a192652157c4_default_universal.mp4", "uuid": "f70b8147-4f4a-506e-6b3b-aca8b7b84f40" }, { @@ -18192,7 +18927,7 @@ "displayIcon": null, "displayName": "奇幻龐克 間諜 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6e1a3708-4e99-eaf5-ce69-d995b7ad1609_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6e1a3708-4e99-eaf5-ce69-d995b7ad1609_default_universal.mp4", "uuid": "66cf7185-4989-a3c5-6ad3-fcb7858b81cb" }, { @@ -18200,7 +18935,7 @@ "displayIcon": null, "displayName": "奇幻龐克 間諜 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3a66bbe6-4bda-618d-0ed6-c9baa834b99b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3a66bbe6-4bda-618d-0ed6-c9baa834b99b_default_universal.mp4", "uuid": "7481ec87-4a9f-e4cf-d898-e0bd750e3b0c" } ], @@ -18377,7 +19112,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/24c73c29-443c-2440-d6db-838086f2451a/displayicon.png", "displayName": "離子聖芒 間諜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e98cb6d3-4acc-71a7-f67c-8bb85292f2a2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e98cb6d3-4acc-71a7-f67c-8bb85292f2a2_default_universal.mp4", "uuid": "24c73c29-443c-2440-d6db-838086f2451a" }, { @@ -18385,7 +19120,7 @@ "displayIcon": null, "displayName": "離子聖芒 間諜 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5c1f0a2d-42ff-b28f-806d-2d80cf1ad908_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5c1f0a2d-42ff-b28f-806d-2d80cf1ad908_default_universal.mp4", "uuid": "8a0328e1-4067-ddaa-fb06-e6ab0c0c9a54" }, { @@ -18393,7 +19128,7 @@ "displayIcon": null, "displayName": "離子聖芒 間諜 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6cafdacd-4c39-5dda-3f71-b2b97f3e29d7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6cafdacd-4c39-5dda-3f71-b2b97f3e29d7_default_universal.mp4", "uuid": "65888fca-4a1d-da64-8735-8495d86338ca" }, { @@ -18401,7 +19136,7 @@ "displayIcon": null, "displayName": "離子聖芒 間諜 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/cdbc1f83-4eef-12e4-4e93-24bc25a03627_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/cdbc1f83-4eef-12e4-4e93-24bc25a03627_default_universal.mp4", "uuid": "4ffc2ae6-4501-2c43-a105-f4977a0a207e" } ], @@ -18439,7 +19174,7 @@ "displayIcon": null, "displayName": "深度凍結 間諜 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c50e5b0f-4018-281e-f4a3-0cbf436fd173_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c50e5b0f-4018-281e-f4a3-0cbf436fd173_default_universal.mp4", "uuid": "f3bf94f9-4b58-cbe1-8c61-66a593c08b50" }, { @@ -18447,7 +19182,7 @@ "displayIcon": null, "displayName": "深度凍結 間諜 等級3", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3c2b2a6c-48d9-4d2b-5147-d4af4917f83e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3c2b2a6c-48d9-4d2b-5147-d4af4917f83e_default_universal.mp4", "uuid": "2513e405-456e-cc67-7aee-fea2c6f16595" } ], @@ -18502,7 +19237,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/f5c22f67-4e6f-c23d-24bd-3bb19cf3bf62/displayicon.png", "displayName": "重力鈾能神經爆破者 間諜 等級2\n(幻彩1 鉻金屬色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/f5c22f67-4e6f-c23d-24bd-3bb19cf3bf62/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fd19958d-4cff-00ce-b4ef-a7b798bcbba0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fd19958d-4cff-00ce-b4ef-a7b798bcbba0_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/f5c22f67-4e6f-c23d-24bd-3bb19cf3bf62/swatch.png", "uuid": "f5c22f67-4e6f-c23d-24bd-3bb19cf3bf62" }, @@ -18511,7 +19246,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/d3e0fa29-4ba2-e2e3-c829-c9aee0768585/displayicon.png", "displayName": "重力鈾能神經爆破者 間諜 等級2\n(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/d3e0fa29-4ba2-e2e3-c829-c9aee0768585/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0c1b094c-4488-d09d-75fd-41a3b73eac2d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0c1b094c-4488-d09d-75fd-41a3b73eac2d_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/d3e0fa29-4ba2-e2e3-c829-c9aee0768585/swatch.png", "uuid": "d3e0fa29-4ba2-e2e3-c829-c9aee0768585" }, @@ -18520,7 +19255,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/b867c4a0-408c-2f04-2e8e-36a22e85c8f2/displayicon.png", "displayName": "重力鈾能神經爆破者 間諜 等級2\n(幻彩3 紅/藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/b867c4a0-408c-2f04-2e8e-36a22e85c8f2/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/11710f6a-4309-22c8-7d20-b6aac0f07e79_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/11710f6a-4309-22c8-7d20-b6aac0f07e79_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/b867c4a0-408c-2f04-2e8e-36a22e85c8f2/swatch.png", "uuid": "b867c4a0-408c-2f04-2e8e-36a22e85c8f2" } @@ -18534,7 +19269,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4aa31563-44e1-0d9f-f95a-a1b9965ad762/displayicon.png", "displayName": "重力鈾能神經爆破者 間諜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ed387333-40ca-22fe-b5bc-0bac33c51492_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ed387333-40ca-22fe-b5bc-0bac33c51492_default_universal.mp4", "uuid": "4aa31563-44e1-0d9f-f95a-a1b9965ad762" }, { @@ -18542,7 +19277,7 @@ "displayIcon": null, "displayName": "重力鈾能神經爆破者 間諜 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c6f76c46-4e38-53c5-a594-e0af5651d931_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c6f76c46-4e38-53c5-a594-e0af5651d931_default_universal.mp4", "uuid": "d3b07995-4ab5-7593-f3ff-b6ad7e8599d0" } ], @@ -18567,7 +19302,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/eacd53bc-42ca-cdc4-cd45-4da88e9b15d6/displayicon.png", "displayName": "光之哨兵 間諜 等級4\n(幻彩1 粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/eacd53bc-42ca-cdc4-cd45-4da88e9b15d6/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/597a657c-4cbe-dc46-b2cf-48b5d8e07386_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/597a657c-4cbe-dc46-b2cf-48b5d8e07386_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/eacd53bc-42ca-cdc4-cd45-4da88e9b15d6/swatch.png", "uuid": "eacd53bc-42ca-cdc4-cd45-4da88e9b15d6" }, @@ -18576,7 +19311,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/6e3cfa55-414a-9416-51c6-d8b7edd5004e/displayicon.png", "displayName": "光之哨兵 間諜 等級4\n(幻彩2 紅/綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/6e3cfa55-414a-9416-51c6-d8b7edd5004e/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/05bbbe3e-4b53-0575-b330-a589863d7c49_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/05bbbe3e-4b53-0575-b330-a589863d7c49_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/6e3cfa55-414a-9416-51c6-d8b7edd5004e/swatch.png", "uuid": "6e3cfa55-414a-9416-51c6-d8b7edd5004e" }, @@ -18585,7 +19320,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/6eb6f9ca-47a7-f01d-713f-ea996b5cc03a/displayicon.png", "displayName": "光之哨兵 間諜 等級4\n(幻彩3 藍/紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/6eb6f9ca-47a7-f01d-713f-ea996b5cc03a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/982da921-43e8-adb9-a387-04892ed2f029_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/982da921-43e8-adb9-a387-04892ed2f029_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/6eb6f9ca-47a7-f01d-713f-ea996b5cc03a/swatch.png", "uuid": "6eb6f9ca-47a7-f01d-713f-ea996b5cc03a" } @@ -18599,7 +19334,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/69657d05-4309-9779-d445-6da864067246/displayicon.png", "displayName": "光之哨兵 間諜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2e921b32-4aca-b3fa-5b55-3ab74d31daa3_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2e921b32-4aca-b3fa-5b55-3ab74d31daa3_default_universal.mp4", "uuid": "69657d05-4309-9779-d445-6da864067246" }, { @@ -18607,7 +19342,7 @@ "displayIcon": null, "displayName": "光之哨兵 間諜 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4ce3edd7-4647-db72-3adb-2d9dda20983c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4ce3edd7-4647-db72-3adb-2d9dda20983c_default_universal.mp4", "uuid": "997e0365-4152-fcd5-dc81-e3bdfd012815" }, { @@ -18615,7 +19350,7 @@ "displayIcon": null, "displayName": "光之哨兵 間諜 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a9be586f-40f8-2864-6994-899193f7a057_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a9be586f-40f8-2864-6994-899193f7a057_default_universal.mp4", "uuid": "3366fc8b-48cb-7804-009c-74b072e2dc48" }, { @@ -18623,7 +19358,7 @@ "displayIcon": null, "displayName": "光之哨兵 間諜 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/308c77bc-47de-a10a-1e37-3bb37df87d5f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/308c77bc-47de-a10a-1e37-3bb37df87d5f_default_universal.mp4", "uuid": "e7066739-41cc-c929-3313-a0b414b55fd8" } ], @@ -18680,7 +19415,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/7bfab387-4e97-d815-4488-c491e3a5520c/displayicon.png", "displayName": "掠奪印象 間諜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ea996485-496b-c83f-ac73-71b9144326cc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ea996485-496b-c83f-ac73-71b9144326cc_default_universal.mp4", "uuid": "7bfab387-4e97-d815-4488-c491e3a5520c" }, { @@ -18688,7 +19423,7 @@ "displayIcon": null, "displayName": "掠奪印象 間諜 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3c3c69e2-4bb1-7188-1002-f988ab0db603_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3c3c69e2-4bb1-7188-1002-f988ab0db603_default_universal.mp4", "uuid": "bf02e33f-4d16-e361-d1ed-1eb58de846c3" }, { @@ -18696,7 +19431,7 @@ "displayIcon": null, "displayName": "掠奪印象 間諜 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a66f510e-4c04-b495-67cf-a8bde5d8fb4a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a66f510e-4c04-b495-67cf-a8bde5d8fb4a_default_universal.mp4", "uuid": "59409cb0-4583-20a4-c905-4db393712af7" }, { @@ -18704,7 +19439,7 @@ "displayIcon": null, "displayName": "掠奪印象 間諜 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/245283ef-493b-4f79-a9fb-30a3075fffe0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/245283ef-493b-4f79-a9fb-30a3075fffe0_default_universal.mp4", "uuid": "21305a72-4374-67c7-c25b-e0bb8dc2da52" } ], @@ -18832,6 +19567,63 @@ "uuid": "5f260f34-4021-ab2c-8080-6287c4f9974b", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Boltsniper/StreetWear/BoltSniper_StreetWear_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Boltsniper/StreetWear/Chromas/Standard/BoltSniper_StreetWear_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/25c02810-4475-98c8-cfee-04bb4fbd0fab/displayicon.png", + "displayName": "金屬波浪 間諜", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/25c02810-4475-98c8-cfee-04bb4fbd0fab/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/25c02810-4475-98c8-cfee-04bb4fbd0fab/swatch.png", + "uuid": "25c02810-4475-98c8-cfee-04bb4fbd0fab" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Boltsniper/StreetWear/Chromas/v1/BoltSniper_StreetWear_v1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/9a6f3ad5-4908-457d-437f-54ac0965277c/displayicon.png", + "displayName": "金屬波浪 間諜\n(幻彩1 紅色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/9a6f3ad5-4908-457d-437f-54ac0965277c/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/9a6f3ad5-4908-457d-437f-54ac0965277c/swatch.png", + "uuid": "9a6f3ad5-4908-457d-437f-54ac0965277c" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Boltsniper/StreetWear/Chromas/v2/BoltSniper_StreetWear_v2_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/f0f48fc1-4e1d-95d4-5351-54b49a134281/displayicon.png", + "displayName": "金屬波浪 間諜\n(幻彩2 紫色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/f0f48fc1-4e1d-95d4-5351-54b49a134281/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/f0f48fc1-4e1d-95d4-5351-54b49a134281/swatch.png", + "uuid": "f0f48fc1-4e1d-95d4-5351-54b49a134281" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Boltsniper/StreetWear/Chromas/v3/BoltSniper_StreetWear_v3_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/d06bc733-4380-b9f7-6614-2293ceb8ba25/displayicon.png", + "displayName": "金屬波浪 間諜\n(幻彩3 綠色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/d06bc733-4380-b9f7-6614-2293ceb8ba25/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/d06bc733-4380-b9f7-6614-2293ceb8ba25/swatch.png", + "uuid": "d06bc733-4380-b9f7-6614-2293ceb8ba25" + } + ], + "contentTierUuid": "0cebb8be-46d7-c12a-d306-e9907bfc5a25", + "displayIcon": "https://media.valorant-api.com/weaponskins/44175b4f-4503-4ce4-25fc-32a995d872c1/displayicon.png", + "displayName": "金屬波浪 間諜", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Boltsniper/StreetWear/Levels/BoltSniper_StreetWear_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ec7585ec-4569-3c28-bd82-709cfa26e95b/displayicon.png", + "displayName": "金屬波浪 間諜", + "levelItem": null, + "streamedVideo": null, + "uuid": "ec7585ec-4569-3c28-bd82-709cfa26e95b" + } + ], + "themeUuid": "8a046174-4736-8d37-3f2f-9b88c9873040", + "uuid": "44175b4f-4503-4ce4-25fc-32a995d872c1", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Boltsniper/Tiger/BoltSniper_Tiger_PrimaryAsset", "chromas": [ @@ -18966,7 +19758,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 捍衛者 等級5\n(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/78736e18-4ccc-d804-665f-8799aeb0600f/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5567d6ff-4ced-0efb-1530-728e961b4617_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5567d6ff-4ced-0efb-1530-728e961b4617_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/78736e18-4ccc-d804-665f-8799aeb0600f/swatch.png", "uuid": "78736e18-4ccc-d804-665f-8799aeb0600f" }, @@ -18975,7 +19767,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 捍衛者 等級5\n(幻彩2 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/c438dbb7-4ade-8240-90b5-b88b33aa5be4/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d83be065-4025-37da-3f2e-ee87b0d26c4f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d83be065-4025-37da-3f2e-ee87b0d26c4f_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/c438dbb7-4ade-8240-90b5-b88b33aa5be4/swatch.png", "uuid": "c438dbb7-4ade-8240-90b5-b88b33aa5be4" }, @@ -18984,7 +19776,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 捍衛者 等級5\n(幻彩3 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/39914e93-4b2a-d52b-2259-718535b08379/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/74b94a80-44b3-d6f9-da51-85b4dde6995e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/74b94a80-44b3-d6f9-da51-85b4dde6995e_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/39914e93-4b2a-d52b-2259-718535b08379/swatch.png", "uuid": "39914e93-4b2a-d52b-2259-718535b08379" } @@ -18998,7 +19790,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/43361d49-4331-ee30-e356-0f925e6e17b9/displayicon.png", "displayName": "RGX 11z Pro 捍衛者", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6cac813b-459b-b909-090e-108a462da16e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6cac813b-459b-b909-090e-108a462da16e_default_universal.mp4", "uuid": "43361d49-4331-ee30-e356-0f925e6e17b9" }, { @@ -19006,7 +19798,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 捍衛者 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c3ced4ee-4ae6-5215-30d2-95a0bae184f1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c3ced4ee-4ae6-5215-30d2-95a0bae184f1_default_universal.mp4", "uuid": "ae053014-4e34-41a4-2d4d-ac87e0498e42" }, { @@ -19014,7 +19806,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 捍衛者 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f461fc16-458e-f5ee-0265-27960458b8dd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f461fc16-458e-f5ee-0265-27960458b8dd_default_universal.mp4", "uuid": "7205c0e1-481c-a95d-61ee-f5a1f2de86a4" }, { @@ -19022,7 +19814,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 捍衛者 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/11237e39-4d0e-5c8c-eee2-9eab5766ec60_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/11237e39-4d0e-5c8c-eee2-9eab5766ec60_default_universal.mp4", "uuid": "39f873a7-4fff-d29e-45ab-e8ac8823cdd1" }, { @@ -19030,7 +19822,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 捍衛者 等級5", "levelItem": "EEquippableSkinLevelItem::KillCounter", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/912e7e51-47c7-15c3-3a3a-edb29c8f1bee_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/912e7e51-47c7-15c3-3a3a-edb29c8f1bee_default_universal.mp4", "uuid": "3595b261-40e6-a344-5689-a7a28128895b" } ], @@ -19085,7 +19877,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/899168e2-4825-235f-0dd3-f1995c4676ed/displayicon.png", "displayName": "海洋星球 捍衛者 等級3\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/899168e2-4825-235f-0dd3-f1995c4676ed/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b2c8eea2-48f7-1f55-56c1-8192233ac8c7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b2c8eea2-48f7-1f55-56c1-8192233ac8c7_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/899168e2-4825-235f-0dd3-f1995c4676ed/swatch.png", "uuid": "899168e2-4825-235f-0dd3-f1995c4676ed" } @@ -19099,7 +19891,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c9ceffba-471d-ed6c-04a5-11b71bef3f60/displayicon.png", "displayName": "海洋星球 捍衛者", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3def624b-44d0-226e-aa6c-73b73d849b17_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3def624b-44d0-226e-aa6c-73b73d849b17_default_universal.mp4", "uuid": "c9ceffba-471d-ed6c-04a5-11b71bef3f60" }, { @@ -19107,7 +19899,7 @@ "displayIcon": null, "displayName": "海洋星球 捍衛者 等級2", "levelItem": "EEquippableSkinLevelItem::FishAnimation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/533ae745-46c8-364d-8c06-5899b716b4a1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/533ae745-46c8-364d-8c06-5899b716b4a1_default_universal.mp4", "uuid": "aa1d933d-4c1b-28d6-9607-1b95e44621e8" }, { @@ -19115,7 +19907,7 @@ "displayIcon": null, "displayName": "海洋星球 捍衛者 等級3", "levelItem": "EEquippableSkinLevelItem::KillBanner", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d542b84f-4d73-363e-c11b-17baad01181a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d542b84f-4d73-363e-c11b-17baad01181a_default_universal.mp4", "uuid": "fcc8ce05-4a54-31d4-f1e6-febd8f8b567e" } ], @@ -19140,7 +19932,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/f04aad65-43ab-639e-d738-eeb8a64e8f1e/displayicon.png", "displayName": "蓋亞復仇 捍衛者 等級4\n(幻彩1 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/f04aad65-43ab-639e-d738-eeb8a64e8f1e/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b15eb6f2-45bb-fc3b-79f7-59bcceace933_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b15eb6f2-45bb-fc3b-79f7-59bcceace933_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/f04aad65-43ab-639e-d738-eeb8a64e8f1e/swatch.png", "uuid": "f04aad65-43ab-639e-d738-eeb8a64e8f1e" }, @@ -19149,7 +19941,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/19931370-47df-2e2e-0b59-3182357e46b6/displayicon.png", "displayName": "蓋亞復仇 捍衛者 等級4\n(幻彩2 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/19931370-47df-2e2e-0b59-3182357e46b6/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6d228f8a-4947-1dc7-9757-06b1e3c28a94_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6d228f8a-4947-1dc7-9757-06b1e3c28a94_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/19931370-47df-2e2e-0b59-3182357e46b6/swatch.png", "uuid": "19931370-47df-2e2e-0b59-3182357e46b6" }, @@ -19158,7 +19950,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/0cb87aa2-4c73-fec8-5c10-1bb30a948bb6/displayicon.png", "displayName": "蓋亞復仇 捍衛者 等級4\n(幻彩3 橘色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/0cb87aa2-4c73-fec8-5c10-1bb30a948bb6/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e7dfb2f8-4787-4328-32f6-b2b693f910cc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e7dfb2f8-4787-4328-32f6-b2b693f910cc_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/0cb87aa2-4c73-fec8-5c10-1bb30a948bb6/swatch.png", "uuid": "0cb87aa2-4c73-fec8-5c10-1bb30a948bb6" } @@ -19172,7 +19964,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/e16ea577-4d7f-e686-456a-54b4b1d9cba2/displayicon.png", "displayName": "蓋亞復仇 捍衛者", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b12cc985-4335-7f58-ea04-dfae26aaf153_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b12cc985-4335-7f58-ea04-dfae26aaf153_default_universal.mp4", "uuid": "e16ea577-4d7f-e686-456a-54b4b1d9cba2" }, { @@ -19180,7 +19972,7 @@ "displayIcon": null, "displayName": "蓋亞復仇 捍衛者 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f8b61fde-4824-153e-87ae-03ab576a5cc6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f8b61fde-4824-153e-87ae-03ab576a5cc6_default_universal.mp4", "uuid": "6a379936-42ac-6988-f462-1abdf52b155a" }, { @@ -19188,7 +19980,7 @@ "displayIcon": null, "displayName": "蓋亞復仇 捍衛者 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/49d85f25-4301-4e01-b0f0-52836e58316d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/49d85f25-4301-4e01-b0f0-52836e58316d_default_universal.mp4", "uuid": "bde3fb91-4a71-8167-7bc6-64950a02b2dd" }, { @@ -19196,7 +19988,7 @@ "displayIcon": null, "displayName": "蓋亞復仇 捍衛者 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1e474dfb-4ea3-e927-924b-be861d23d82f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1e474dfb-4ea3-e927-924b-be861d23d82f_default_universal.mp4", "uuid": "614d4b74-49d0-7dc3-44c3-558ea0400288" } ], @@ -19221,7 +20013,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/fa3cea63-4bbd-ebf6-808c-d1ae736f0dd4/displayicon.png", "displayName": "光炫聲譜 捍衛者 等級4\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/fa3cea63-4bbd-ebf6-808c-d1ae736f0dd4/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1cf38571-42ce-a466-e56f-93987ca98505_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1cf38571-42ce-a466-e56f-93987ca98505_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/fa3cea63-4bbd-ebf6-808c-d1ae736f0dd4/swatch.png", "uuid": "fa3cea63-4bbd-ebf6-808c-d1ae736f0dd4" }, @@ -19230,7 +20022,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/59432b53-44bc-6e8e-c341-f083a9f759da/displayicon.png", "displayName": "光炫聲譜 捍衛者 等級4\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/59432b53-44bc-6e8e-c341-f083a9f759da/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e2e22fdd-423b-f01e-a7b6-2fb477eed0f8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e2e22fdd-423b-f01e-a7b6-2fb477eed0f8_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/59432b53-44bc-6e8e-c341-f083a9f759da/swatch.png", "uuid": "59432b53-44bc-6e8e-c341-f083a9f759da" }, @@ -19239,7 +20031,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/d1e44ee7-4089-6358-f980-0ebd4a7c88a7/displayicon.png", "displayName": "光炫聲譜 捍衛者 等級4\n(幻彩3 紫/粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/d1e44ee7-4089-6358-f980-0ebd4a7c88a7/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9b85f470-420a-3bc3-4cc9-408c827d3a37_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9b85f470-420a-3bc3-4cc9-408c827d3a37_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/d1e44ee7-4089-6358-f980-0ebd4a7c88a7/swatch.png", "uuid": "d1e44ee7-4089-6358-f980-0ebd4a7c88a7" } @@ -19253,7 +20045,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/19ba907b-4a76-347f-ea24-38990c9ff755/displayicon.png", "displayName": "光炫聲譜 捍衛者", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d821386e-4b80-39bd-6aa8-b1a5d78388da_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d821386e-4b80-39bd-6aa8-b1a5d78388da_default_universal.mp4", "uuid": "19ba907b-4a76-347f-ea24-38990c9ff755" }, { @@ -19261,7 +20053,7 @@ "displayIcon": null, "displayName": "光炫聲譜 捍衛者 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/65878abe-4abf-fb80-c97e-70a0e1818909_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/65878abe-4abf-fb80-c97e-70a0e1818909_default_universal.mp4", "uuid": "e03cf7b6-453e-5fb7-3240-11afd5ed4b47" }, { @@ -19269,7 +20061,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/1fbad515-44c3-123e-8e80-96a4a4bf40ca/displayicon.png", "displayName": "光炫聲譜 捍衛者 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3e52a226-423c-7c7b-454f-ba91baf6a980_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3e52a226-423c-7c7b-454f-ba91baf6a980_default_universal.mp4", "uuid": "1fbad515-44c3-123e-8e80-96a4a4bf40ca" }, { @@ -19277,7 +20069,7 @@ "displayIcon": null, "displayName": "光炫聲譜 捍衛者 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0da207eb-4715-f431-90b4-a0944cce79f5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0da207eb-4715-f431-90b4-a0944cce79f5_default_universal.mp4", "uuid": "d4794a6a-4c89-8765-0081-55a61376b10a" } ], @@ -19544,7 +20336,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f4861ffb-480d-7ddc-f1a3-45a6dfaa4229/displayicon.png", "displayName": "靈爭鬪魂 捍衛者", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/56336660-474a-0b69-9d4f-bab3d3fc52b8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/56336660-474a-0b69-9d4f-bab3d3fc52b8_default_universal.mp4", "uuid": "f4861ffb-480d-7ddc-f1a3-45a6dfaa4229" }, { @@ -19552,7 +20344,7 @@ "displayIcon": null, "displayName": "靈爭鬪魂 捍衛者 等級2:每次擊殺敵人時,都會播放專屬視覺特效及音效", "levelItem": "EEquippableSkinLevelItem::KillEffect", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8ca1cb94-43e9-a141-c626-efbc33f207c8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8ca1cb94-43e9-a141-c626-efbc33f207c8_default_universal.mp4", "uuid": "9a839248-4244-ab7f-b5ab-db90b18f9bc8" } ], @@ -19669,7 +20461,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/9336ab9d-445c-0872-a283-9f9b61a0098a/displayicon.png", "displayName": "紫金狂潮 捍衛者", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bf10d326-196e-4388-b5a0-8fda40d738e2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bf10d326-196e-4388-b5a0-8fda40d738e2_default_universal.mp4", "uuid": "9336ab9d-445c-0872-a283-9f9b61a0098a" }, { @@ -19677,7 +20469,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/edc646b0-4a5a-6a76-a860-6b8db95bd132/displayicon.png", "displayName": "紫金狂潮 捍衛者 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/26b4a8b8-b28f-493d-8f39-93d19f73a910_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/26b4a8b8-b28f-493d-8f39-93d19f73a910_default_universal.mp4", "uuid": "edc646b0-4a5a-6a76-a860-6b8db95bd132" }, { @@ -19685,7 +20477,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/14b04b38-4359-62a3-ab62-bcbe715e3fa0/displayicon.png", "displayName": "紫金狂潮 捍衛者 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9de9bf52-dfca-4d99-8fd3-51a85ca3bcef_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9de9bf52-dfca-4d99-8fd3-51a85ca3bcef_default_universal.mp4", "uuid": "14b04b38-4359-62a3-ab62-bcbe715e3fa0" }, { @@ -19693,7 +20485,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/99b7b761-41b3-e26c-ceeb-b9a1c3a67736/displayicon.png", "displayName": "紫金狂潮 捍衛者 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/70b5e747-f59e-4064-99d3-73a5612c0cab_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/70b5e747-f59e-4064-99d3-73a5612c0cab_default_universal.mp4", "uuid": "99b7b761-41b3-e26c-ceeb-b9a1c3a67736" } ], @@ -19718,7 +20510,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/82024942-4396-65bf-777a-009fe896437f/displayicon.png", "displayName": "殞落詛咒 捍衛者 等級4\n(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/82024942-4396-65bf-777a-009fe896437f/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/af8dd1e7-4146-3786-1dfa-baaa78de95bb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/af8dd1e7-4146-3786-1dfa-baaa78de95bb_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/82024942-4396-65bf-777a-009fe896437f/swatch.png", "uuid": "82024942-4396-65bf-777a-009fe896437f" }, @@ -19727,7 +20519,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/3d0a76d8-4f01-244f-158d-57b59c5ff51e/displayicon.png", "displayName": "殞落詛咒 捍衛者 等級4\n(幻彩2 紅/黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/3d0a76d8-4f01-244f-158d-57b59c5ff51e/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8394fb8c-4702-f7b6-7214-1d899e1d4ea7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8394fb8c-4702-f7b6-7214-1d899e1d4ea7_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/3d0a76d8-4f01-244f-158d-57b59c5ff51e/swatch.png", "uuid": "3d0a76d8-4f01-244f-158d-57b59c5ff51e" }, @@ -19736,7 +20528,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/38776b08-42b7-4231-a32c-539251cf6b4a/displayicon.png", "displayName": "殞落詛咒 捍衛者 等級4\n(幻彩3 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/38776b08-42b7-4231-a32c-539251cf6b4a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/cb169daa-4261-1d4c-9715-48a778673709_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/cb169daa-4261-1d4c-9715-48a778673709_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/38776b08-42b7-4231-a32c-539251cf6b4a/swatch.png", "uuid": "38776b08-42b7-4231-a32c-539251cf6b4a" } @@ -19750,7 +20542,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/0e1af0d5-4dee-15db-25b5-31a7da6f1d52/displayicon.png", "displayName": "殞落詛咒 捍衛者", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/51b25a4a-4db8-86cc-3a64-76a5772a6e13_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/51b25a4a-4db8-86cc-3a64-76a5772a6e13_default_universal.mp4", "uuid": "0e1af0d5-4dee-15db-25b5-31a7da6f1d52" }, { @@ -19758,7 +20550,7 @@ "displayIcon": null, "displayName": "殞落詛咒 捍衛者 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4cdfae2f-440c-0c20-37d8-2ab773da5574_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4cdfae2f-440c-0c20-37d8-2ab773da5574_default_universal.mp4", "uuid": "e5686279-4ecb-8dd0-bbc1-5cacf998c392" }, { @@ -19766,7 +20558,7 @@ "displayIcon": null, "displayName": "殞落詛咒 捍衛者 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/281b1aa9-481a-09a5-a372-06bd32e93b39_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/281b1aa9-481a-09a5-a372-06bd32e93b39_default_universal.mp4", "uuid": "972f5a0c-453a-fa8c-c0e6-7ca9dc4b98bb" }, { @@ -19774,7 +20566,7 @@ "displayIcon": null, "displayName": "殞落詛咒 捍衛者 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/69b189af-4221-0053-c98a-459da0712cb6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/69b189af-4221-0053-c98a-459da0712cb6_default_universal.mp4", "uuid": "26727126-4b2a-b735-ef3e-df9b98c7bfee" } ], @@ -19799,7 +20591,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/22f79bc9-42c5-ca2d-a4df-6790881ed314/displayicon.png", "displayName": "奇幻龐克 捍衛者 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/22f79bc9-42c5-ca2d-a4df-6790881ed314/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/150aef26-4394-98ae-d49f-7481ee4a9633_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/150aef26-4394-98ae-d49f-7481ee4a9633_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/22f79bc9-42c5-ca2d-a4df-6790881ed314/swatch.png", "uuid": "22f79bc9-42c5-ca2d-a4df-6790881ed314" }, @@ -19808,7 +20600,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c85b7846-4611-88f4-d048-07982265da09/displayicon.png", "displayName": "奇幻龐克 捍衛者 等級4\n(幻彩2 粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/c85b7846-4611-88f4-d048-07982265da09/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/abbb186c-40d5-6617-0a51-d1994efa6bdd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/abbb186c-40d5-6617-0a51-d1994efa6bdd_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/c85b7846-4611-88f4-d048-07982265da09/swatch.png", "uuid": "c85b7846-4611-88f4-d048-07982265da09" }, @@ -19817,7 +20609,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/0ce4bd16-4231-9ff4-c0aa-109ab9c31294/displayicon.png", "displayName": "奇幻龐克 捍衛者 等級4\n(幻彩3 橘色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/0ce4bd16-4231-9ff4-c0aa-109ab9c31294/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/419e7224-4f12-c741-d813-089527b2e933_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/419e7224-4f12-c741-d813-089527b2e933_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/0ce4bd16-4231-9ff4-c0aa-109ab9c31294/swatch.png", "uuid": "0ce4bd16-4231-9ff4-c0aa-109ab9c31294" } @@ -19831,7 +20623,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/e63eab09-47e4-25be-6c9f-57995385429d/displayicon.png", "displayName": "奇幻龐克 捍衛者", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ac664eda-4e3e-5910-1639-7798191773be_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ac664eda-4e3e-5910-1639-7798191773be_default_universal.mp4", "uuid": "e63eab09-47e4-25be-6c9f-57995385429d" }, { @@ -19839,7 +20631,7 @@ "displayIcon": null, "displayName": "奇幻龐克 捍衛者 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/69de56d0-4fdc-867f-aa88-19b61d380de2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/69de56d0-4fdc-867f-aa88-19b61d380de2_default_universal.mp4", "uuid": "723343b6-4c37-2591-7892-c187e5c9e3e8" }, { @@ -19847,7 +20639,7 @@ "displayIcon": null, "displayName": "奇幻龐克 捍衛者 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/14c2f00e-4ded-5710-ae6b-ddabbafe555d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/14c2f00e-4ded-5710-ae6b-ddabbafe555d_default_universal.mp4", "uuid": "10eb0fb8-4850-c585-57bc-8fa85e52f26a" }, { @@ -19855,7 +20647,7 @@ "displayIcon": null, "displayName": "奇幻龐克 捍衛者 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f5b1b5cb-4e51-0d28-2673-4ea33cadf191_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f5b1b5cb-4e51-0d28-2673-4ea33cadf191_default_universal.mp4", "uuid": "ba011f9b-41c5-4aa5-ed42-8a9b148a04f3" } ], @@ -19863,6 +20655,36 @@ "uuid": "80dbfa46-4a1f-c7a4-2e88-1499308c7b9a", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/MidnightAerosol/DMR_MidnightAerosol_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/MidnightAerosol/Chromas/Standard/DMR_MidnightAerosol_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/6c1c1710-48f1-a0b6-01a1-049995413b3f/displayicon.png", + "displayName": "午夜街頭 捍衛者", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/6c1c1710-48f1-a0b6-01a1-049995413b3f/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "6c1c1710-48f1-a0b6-01a1-049995413b3f" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/26e675c5-46cc-65fb-7be2-db8a64dbde48/displayicon.png", + "displayName": "午夜街頭 捍衛者", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/MidnightAerosol/Levels/DMR_MidnightAerosol_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/a7d529fa-4892-8834-f7e8-689fc2eae6ec/displayicon.png", + "displayName": "午夜街頭 捍衛者", + "levelItem": null, + "streamedVideo": null, + "uuid": "a7d529fa-4892-8834-f7e8-689fc2eae6ec" + } + ], + "themeUuid": "36f9abb7-4d30-16f1-f476-8c81e67f1d14", + "uuid": "26e675c5-46cc-65fb-7be2-db8a64dbde48", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/Murals/DMR_Murals_PrimaryAsset", "chromas": [ @@ -19908,7 +20730,7 @@ { "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/Oni/Chromas/Black/DMR_Oni_Black_PrimaryAsset", "displayIcon": "https://media.valorant-api.com/weaponskinchromas/aed44a0e-4834-0ec9-ab68-729f22189bad/displayicon.png", - "displayName": "惡鬼 捍衛者 等級4\n(幻彩1 黑色)", + "displayName": "惡鬼 捍衛者 等級4\n(幻彩1 浮雲)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/aed44a0e-4834-0ec9-ab68-729f22189bad/fullrender.png", "streamedVideo": null, "swatch": "https://media.valorant-api.com/weaponskinchromas/aed44a0e-4834-0ec9-ab68-729f22189bad/swatch.png", @@ -19917,7 +20739,7 @@ { "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/Oni/Chromas/Green/DMR_Oni_Green_PrimaryAsset", "displayIcon": "https://media.valorant-api.com/weaponskinchromas/a8a73b3a-4608-6bef-dd1b-0cbb8ab7d2e4/displayicon.png", - "displayName": "惡鬼 捍衛者 等級4\n(幻彩2 綠色)", + "displayName": "惡鬼 捍衛者 等級4\n(幻彩2 落花)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/a8a73b3a-4608-6bef-dd1b-0cbb8ab7d2e4/fullrender.png", "streamedVideo": null, "swatch": "https://media.valorant-api.com/weaponskinchromas/a8a73b3a-4608-6bef-dd1b-0cbb8ab7d2e4/swatch.png", @@ -19926,7 +20748,7 @@ { "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/Oni/Chromas/White/DMR_Oni_White_PrimaryAsset", "displayIcon": "https://media.valorant-api.com/weaponskinchromas/2c754236-407d-5708-61da-ada2f7821fb4/displayicon.png", - "displayName": "惡鬼 捍衛者 等級4\n(幻彩3 白色)", + "displayName": "惡鬼 捍衛者 等級4\n(幻彩3 飛燕)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/2c754236-407d-5708-61da-ada2f7821fb4/fullrender.png", "streamedVideo": null, "swatch": "https://media.valorant-api.com/weaponskinchromas/2c754236-407d-5708-61da-ada2f7821fb4/swatch.png", @@ -19942,7 +20764,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/fee2c305-40d1-1cca-08b8-46bceda98eca/displayicon.png", "displayName": "惡鬼 捍衛者", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6b731284-4cdc-6345-cea7-8c9cb9882450_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6b731284-4cdc-6345-cea7-8c9cb9882450_default_universal.mp4", "uuid": "fee2c305-40d1-1cca-08b8-46bceda98eca" }, { @@ -19950,7 +20772,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/10db658a-4299-a0cd-8822-feb09adca3ad/displayicon.png", "displayName": "惡鬼 捍衛者 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4e54b09c-4969-6394-9488-81892ea20bbc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4e54b09c-4969-6394-9488-81892ea20bbc_default_universal.mp4", "uuid": "10db658a-4299-a0cd-8822-feb09adca3ad" }, { @@ -19958,7 +20780,7 @@ "displayIcon": null, "displayName": "惡鬼 捍衛者 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/83afc9e5-4139-0ff8-336d-b18c078b8ce5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/83afc9e5-4139-0ff8-336d-b18c078b8ce5_default_universal.mp4", "uuid": "fea4c5e9-4028-72b1-0dda-00b9d14026a2" }, { @@ -19966,7 +20788,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/9318a2c8-4ccc-bfb4-e7d9-6289608a4ba5/displayicon.png", "displayName": "惡鬼 捍衛者 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/688863c1-494d-8a95-8ac3-5aac60537c94_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/688863c1-494d-8a95-8ac3-5aac60537c94_default_universal.mp4", "uuid": "9318a2c8-4ccc-bfb4-e7d9-6289608a4ba5" } ], @@ -20254,7 +21076,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c9f0ea7f-4bed-b10e-62d2-0394444feed1/displayicon.png", "displayName": "掠奪印象 捍衛者", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/66d66f6b-464e-3142-f194-2aacc214281b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/66d66f6b-464e-3142-f194-2aacc214281b_default_universal.mp4", "uuid": "c9f0ea7f-4bed-b10e-62d2-0394444feed1" }, { @@ -20262,7 +21084,7 @@ "displayIcon": null, "displayName": "掠奪印象 捍衛者 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e1f4038f-46b2-00ea-5aac-8f8c19916fd1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e1f4038f-46b2-00ea-5aac-8f8c19916fd1_default_universal.mp4", "uuid": "ad0e9e83-4658-0a02-a912-21b41df87c38" }, { @@ -20270,7 +21092,7 @@ "displayIcon": null, "displayName": "掠奪印象 捍衛者 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/05fdf577-4995-0191-dcb2-7ba375646da1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/05fdf577-4995-0191-dcb2-7ba375646da1_default_universal.mp4", "uuid": "09faf945-4be6-ee7f-43d5-9fae75e182ec" }, { @@ -20278,7 +21100,7 @@ "displayIcon": null, "displayName": "掠奪印象 捍衛者 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/94af5d7b-45f5-350a-7aca-d3a931bc1cf2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/94af5d7b-45f5-350a-7aca-d3a931bc1cf2_default_universal.mp4", "uuid": "4e1b9e7d-4cfc-9a14-4fe1-ea9185cdb6d9" } ], @@ -20286,6 +21108,36 @@ "uuid": "db348da1-49f2-0bad-b70a-e4ade9d31655", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/SovWorld/DMR_SovWorld_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/SovWorld/Chromas/Standard/DMR_SovWorld_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/549b4ed5-493f-23a2-4350-b095dfdd0deb/displayicon.png", + "displayName": "祕繫之域 捍衛者", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/549b4ed5-493f-23a2-4350-b095dfdd0deb/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "549b4ed5-493f-23a2-4350-b095dfdd0deb" + } + ], + "contentTierUuid": "60bca009-4182-7998-dee7-b8a2558dc369", + "displayIcon": "https://media.valorant-api.com/weaponskins/77187a8f-4020-da44-a775-7a91ab814cdf/displayicon.png", + "displayName": "祕繫之域 捍衛者", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/SovWorld/Levels/DMR_SovWorld_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f202625e-4647-b575-07a9-3fbc39d72b10/displayicon.png", + "displayName": "祕繫之域 捍衛者", + "levelItem": null, + "streamedVideo": null, + "uuid": "f202625e-4647-b575-07a9-3fbc39d72b10" + } + ], + "themeUuid": "b1e665e3-4e4f-f849-dc49-d0a68d10f449", + "uuid": "77187a8f-4020-da44-a775-7a91ab814cdf", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/Sovereign/DMR_Sovereign_PrimaryAsset", "chromas": [ @@ -20335,7 +21187,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/8f8f82f4-4133-82c9-50b2-3c9c67e0f9fb/displayicon.png", "displayName": "鎏金帝王 捍衛者", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a2f1a7c0-025f-475f-af19-3cbf50b4f8eb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a2f1a7c0-025f-475f-af19-3cbf50b4f8eb_default_universal.mp4", "uuid": "8f8f82f4-4133-82c9-50b2-3c9c67e0f9fb" }, { @@ -20343,7 +21195,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/32cf9b7a-4ea1-64f4-1405-32a2ee614bc8/displayicon.png", "displayName": "鎏金帝王 捍衛者 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/165fde15-36c3-4483-90d7-0777f24975ef_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/165fde15-36c3-4483-90d7-0777f24975ef_default_universal.mp4", "uuid": "32cf9b7a-4ea1-64f4-1405-32a2ee614bc8" }, { @@ -20351,7 +21203,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/62f258e7-4821-4925-29b3-3ca90972991f/displayicon.png", "displayName": "鎏金帝王 捍衛者 等級3", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/828939e6-80e4-46c3-9be6-56cdd78652bd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/828939e6-80e4-46c3-9be6-56cdd78652bd_default_universal.mp4", "uuid": "62f258e7-4821-4925-29b3-3ca90972991f" }, { @@ -20359,7 +21211,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/04c6a2a4-400a-b0df-b482-658c59529ee6/displayicon.png", "displayName": "鎏金帝王 捍衛者 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/115fecec-e098-4084-af6e-a21fb94fb87b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/115fecec-e098-4084-af6e-a21fb94fb87b_default_universal.mp4", "uuid": "04c6a2a4-400a-b0df-b482-658c59529ee6" } ], @@ -20367,36 +21219,6 @@ "uuid": "7122d78b-4e60-eb4d-5f65-738d7c1ce9ae", "wallpaper": null }, - { - "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/SovWorld/DMR_SovWorld_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/SovWorld/Chromas/Standard/DMR_SovWorld_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/549b4ed5-493f-23a2-4350-b095dfdd0deb/displayicon.png", - "displayName": "祕繫之域 捍衛者", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/549b4ed5-493f-23a2-4350-b095dfdd0deb/fullrender.png", - "streamedVideo": null, - "swatch": null, - "uuid": "549b4ed5-493f-23a2-4350-b095dfdd0deb" - } - ], - "contentTierUuid": "60bca009-4182-7998-dee7-b8a2558dc369", - "displayIcon": "https://media.valorant-api.com/weaponskins/77187a8f-4020-da44-a775-7a91ab814cdf/displayicon.png", - "displayName": "祕繫之域 捍衛者", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/SovWorld/Levels/DMR_SovWorld_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f202625e-4647-b575-07a9-3fbc39d72b10/displayicon.png", - "displayName": "祕繫之域 捍衛者", - "levelItem": null, - "streamedVideo": null, - "uuid": "f202625e-4647-b575-07a9-3fbc39d72b10" - } - ], - "themeUuid": "b1e665e3-4e4f-f849-dc49-d0a68d10f449", - "uuid": "77187a8f-4020-da44-a775-7a91ab814cdf", - "wallpaper": null - }, { "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/SpecOps/DMR_SpecOps_PrimaryAsset", "chromas": [ @@ -20414,7 +21236,7 @@ "displayIcon": null, "displayName": "偵察行動 捍衛者 等級4\n(幻彩1 紅色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/b6e9eabe-4fa1-5823-7427-7e9e73a14333/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e400e908-4328-117d-45c1-b88b6abad988_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e400e908-4328-117d-45c1-b88b6abad988_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/b6e9eabe-4fa1-5823-7427-7e9e73a14333/swatch.png", "uuid": "b6e9eabe-4fa1-5823-7427-7e9e73a14333" }, @@ -20423,7 +21245,7 @@ "displayIcon": null, "displayName": "偵察行動 捍衛者 等級4\n(幻彩2 藍色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/a0f14c75-4601-8374-9ec1-65aa31430928/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e52303b4-4534-560f-3ef5-c49e60b7a0a2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e52303b4-4534-560f-3ef5-c49e60b7a0a2_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/a0f14c75-4601-8374-9ec1-65aa31430928/swatch.png", "uuid": "a0f14c75-4601-8374-9ec1-65aa31430928" }, @@ -20432,7 +21254,7 @@ "displayIcon": null, "displayName": "偵察行動 捍衛者 等級4\n(幻彩3 綠色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/7dcc4034-4f13-93cb-296b-00822b13373b/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e1b4ac05-44dd-c2be-eae7-c59bea1b47cd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e1b4ac05-44dd-c2be-eae7-c59bea1b47cd_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/7dcc4034-4f13-93cb-296b-00822b13373b/swatch.png", "uuid": "7dcc4034-4f13-93cb-296b-00822b13373b" } @@ -20446,7 +21268,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/7bc358d8-42ad-611f-5594-37888c23abe3/displayicon.png", "displayName": "偵察行動 捍衛者", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/86cde36e-4ab1-7a46-9b90-23a2c3690d53_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/86cde36e-4ab1-7a46-9b90-23a2c3690d53_default_universal.mp4", "uuid": "7bc358d8-42ad-611f-5594-37888c23abe3" }, { @@ -20454,7 +21276,7 @@ "displayIcon": null, "displayName": "偵察行動 捍衛者 等級2", "levelItem": "EEquippableSkinLevelItem::Randomizer", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/837d7722-4ce7-0493-bef6-8691a0006498_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/837d7722-4ce7-0493-bef6-8691a0006498_default_universal.mp4", "uuid": "6112d121-499c-4be7-fd16-0296b8f663b5" }, { @@ -20462,7 +21284,7 @@ "displayIcon": null, "displayName": "偵察行動 捍衛者 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/dd8926de-481c-c377-7c80-ddb70fb39dfc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/dd8926de-481c-c377-7c80-ddb70fb39dfc_default_universal.mp4", "uuid": "726c71a4-423f-7110-6335-37bfe64a5fdd" }, { @@ -20470,7 +21292,7 @@ "displayIcon": null, "displayName": "偵察行動 捍衛者 等級4", "levelItem": "EEquippableSkinLevelItem::KillBanner", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6add3f8c-4e38-2f5e-fddb-6da119ec3574_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6add3f8c-4e38-2f5e-fddb-6da119ec3574_default_universal.mp4", "uuid": "28441795-4cf2-4728-f648-2598ee0ff7bd" } ], @@ -20535,6 +21357,36 @@ "uuid": "cce860fd-4f64-7422-5c95-c7ad2cad0f15", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/StainedGlass/DMR_StainedGlass_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/StainedGlass/Chromas/Standard/DMR_StainedGlass_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/ac12901e-4a8d-6d50-663a-d18efdae2ef8/displayicon.png", + "displayName": "彩拼幻想 捍衛者", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/ac12901e-4a8d-6d50-663a-d18efdae2ef8/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "ac12901e-4a8d-6d50-663a-d18efdae2ef8" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/5d23dda7-405a-e903-4681-1a825146f028/displayicon.png", + "displayName": "彩拼幻想 捍衛者", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/StainedGlass/Levels/DMR_StainedGlass_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/a2145fdb-44c3-6b7e-fa45-01a07272a2ce/displayicon.png", + "displayName": "彩拼幻想 捍衛者", + "levelItem": null, + "streamedVideo": null, + "uuid": "a2145fdb-44c3-6b7e-fa45-01a07272a2ce" + } + ], + "themeUuid": "e0216470-4c4a-d840-0919-3c860cbc40a8", + "uuid": "5d23dda7-405a-e903-4681-1a825146f028", + "wallpaper": "https://media.valorant-api.com/weaponskins/5d23dda7-405a-e903-4681-1a825146f028/wallpaper.png" + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/DMR/Standard/DMR_Standard_PrimaryAsset", "chromas": [ @@ -20669,7 +21521,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/7bf9393e-448d-21ea-7819-d8a9c8128cb1/displayicon.png", "displayName": "蓋亞復仇 警長 等級4\n(幻彩1 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/7bf9393e-448d-21ea-7819-d8a9c8128cb1/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/49e5a0e7-488c-7d6b-8132-8bbec81b894d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/49e5a0e7-488c-7d6b-8132-8bbec81b894d_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/7bf9393e-448d-21ea-7819-d8a9c8128cb1/swatch.png", "uuid": "7bf9393e-448d-21ea-7819-d8a9c8128cb1" }, @@ -20678,7 +21530,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/3f2d412c-4140-10d9-cd31-c882672855bf/displayicon.png", "displayName": "蓋亞復仇 警長 等級4\n(幻彩2 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/3f2d412c-4140-10d9-cd31-c882672855bf/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c9bf65d2-4f69-482a-4fb9-8fba9be64332_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c9bf65d2-4f69-482a-4fb9-8fba9be64332_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/3f2d412c-4140-10d9-cd31-c882672855bf/swatch.png", "uuid": "3f2d412c-4140-10d9-cd31-c882672855bf" }, @@ -20687,7 +21539,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/792b819a-44f1-4920-4fda-84a8feefc188/displayicon.png", "displayName": "蓋亞復仇 警長 等級4\n(幻彩3 橘色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/792b819a-44f1-4920-4fda-84a8feefc188/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/47086085-4812-8dd0-89f2-0a8fd774d91e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/47086085-4812-8dd0-89f2-0a8fd774d91e_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/792b819a-44f1-4920-4fda-84a8feefc188/swatch.png", "uuid": "792b819a-44f1-4920-4fda-84a8feefc188" } @@ -20701,7 +21553,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/6046ca8f-4100-4b1a-7e8d-5e8c6625342f/displayicon.png", "displayName": "蓋亞復仇 警長", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/dd892622-45c7-26d4-3171-b3a99d828003_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/dd892622-45c7-26d4-3171-b3a99d828003_default_universal.mp4", "uuid": "6046ca8f-4100-4b1a-7e8d-5e8c6625342f" }, { @@ -20709,7 +21561,7 @@ "displayIcon": null, "displayName": "蓋亞復仇 警長 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3bd36750-447c-385a-6947-029ddf1608c7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3bd36750-447c-385a-6947-029ddf1608c7_default_universal.mp4", "uuid": "33d1d8ec-48fc-a601-8184-ec8249e76760" }, { @@ -20717,7 +21569,7 @@ "displayIcon": null, "displayName": "蓋亞復仇 警長 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/42a83556-4ad2-a163-ca8a-de9a820b05a1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/42a83556-4ad2-a163-ca8a-de9a820b05a1_default_universal.mp4", "uuid": "3cf85dde-4695-be31-41e9-c8ac2dd22d07" }, { @@ -20725,7 +21577,7 @@ "displayIcon": null, "displayName": "蓋亞復仇 警長 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/87cd9d91-4292-bcd2-0d38-d0930948169f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/87cd9d91-4292-bcd2-0d38-d0930948169f_default_universal.mp4", "uuid": "c8fd6caf-43d1-f3ef-4a5d-1793ad9e558e" } ], @@ -20780,7 +21632,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 警長 等級2\n(幻彩1 戰術夥伴)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/12d3f3b6-41ee-84b6-9d38-13864db801e9/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4989caaf-4166-a593-0801-daad628197a3_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4989caaf-4166-a593-0801-daad628197a3_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/12d3f3b6-41ee-84b6-9d38-13864db801e9/swatch.png", "uuid": "12d3f3b6-41ee-84b6-9d38-13864db801e9" }, @@ -20789,7 +21641,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 警長 等級2\n(幻彩2 英雄聯盟)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/dd0f9f13-4e33-b428-2c9e-86b051c5c053/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6e7ab70c-4c1e-c548-d434-9097d20179b2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6e7ab70c-4c1e-c548-d434-9097d20179b2_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/dd0f9f13-4e33-b428-2c9e-86b051c5c053/swatch.png", "uuid": "dd0f9f13-4e33-b428-2c9e-86b051c5c053" } @@ -20803,7 +21655,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/43ea5cae-4535-7903-f2c9-65bac9642a99/displayicon.png", "displayName": "魔術塗鴉 警長", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/089157c4-4977-2c88-e6db-6683cd57d9fe_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/089157c4-4977-2c88-e6db-6683cd57d9fe_default_universal.mp4", "uuid": "43ea5cae-4535-7903-f2c9-65bac9642a99" }, { @@ -20811,7 +21663,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 警長 等級2", "levelItem": "EEquippableSkinLevelItem::KillEffect", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8db90a09-4c3b-6cfe-fc3a-b7b45c8c2b69_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8db90a09-4c3b-6cfe-fc3a-b7b45c8c2b69_default_universal.mp4", "uuid": "d0712e2e-4550-9ae9-d365-f498e21b50a4" } ], @@ -21048,7 +21900,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/b2f78500-4322-b03d-2745-a3b2208d63fe/displayicon.png", "displayName": "奇幻龐克 警長", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fc25c878-4209-8e8c-ea1a-548b15af4016_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fc25c878-4209-8e8c-ea1a-548b15af4016_default_universal.mp4", "uuid": "b2f78500-4322-b03d-2745-a3b2208d63fe" }, { @@ -21056,7 +21908,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/1b09c0a3-4708-3bec-26b1-e885a5bb313a/displayicon.png", "displayName": "奇幻龐克 警長 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4d9040a2-4c53-990a-483d-a2b8f85572ef_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4d9040a2-4c53-990a-483d-a2b8f85572ef_default_universal.mp4", "uuid": "1b09c0a3-4708-3bec-26b1-e885a5bb313a" }, { @@ -21064,7 +21916,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/9e70420e-4ac5-72c0-6e00-35882e13fc06/displayicon.png", "displayName": "奇幻龐克 警長 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a7fb989a-4fca-71e3-9169-a68f016ed3ca_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a7fb989a-4fca-71e3-9169-a68f016ed3ca_default_universal.mp4", "uuid": "9e70420e-4ac5-72c0-6e00-35882e13fc06" }, { @@ -21072,7 +21924,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/3ba019cb-468e-d53a-e92d-c2a3ff804f59/displayicon.png", "displayName": "奇幻龐克 警長 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/64f8e1a5-4292-11df-c5b7-9d913e76e793_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/64f8e1a5-4292-11df-c5b7-9d913e76e793_default_universal.mp4", "uuid": "3ba019cb-468e-d53a-e92d-c2a3ff804f59" } ], @@ -21080,6 +21932,36 @@ "uuid": "27ab5ed6-4614-d5c2-c53f-5391febe7099", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Leversniper/MidnightAerosol/LeverSniper_MidnightAerosol_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Leversniper/MidnightAerosol/Chromas/Standard/LeverSniper_MidnightAerosol_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/9f89d919-4dab-9443-5b1d-91929d0a1d93/displayicon.png", + "displayName": "午夜街頭 警長", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/9f89d919-4dab-9443-5b1d-91929d0a1d93/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "9f89d919-4dab-9443-5b1d-91929d0a1d93" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/d4bcbc96-4be3-aa57-9a6a-11aecf60ac61/displayicon.png", + "displayName": "午夜街頭 警長", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Leversniper/MidnightAerosol/Levels/LeverSniper_MidnightAerosol_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/abde79d2-4ddc-3e97-ed9e-bf956d9814c0/displayicon.png", + "displayName": "午夜街頭 警長", + "levelItem": null, + "streamedVideo": null, + "uuid": "abde79d2-4ddc-3e97-ed9e-bf956d9814c0" + } + ], + "themeUuid": "36f9abb7-4d30-16f1-f476-8c81e67f1d14", + "uuid": "d4bcbc96-4be3-aa57-9a6a-11aecf60ac61", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Leversniper/Military/LeverSniper_Military_PrimaryAsset", "chromas": [ @@ -21189,7 +22071,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/57a31c23-4742-9bef-740e-c998061d720b/displayicon.png", "displayName": "紅蓮猛獸 警長", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d8d26347-46b9-cdef-1faf-f4ab2bfdfe67_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d8d26347-46b9-cdef-1faf-f4ab2bfdfe67_default_universal.mp4", "uuid": "57a31c23-4742-9bef-740e-c998061d720b" }, { @@ -21197,7 +22079,7 @@ "displayIcon": null, "displayName": "紅蓮猛獸 警長 等級2:每次擊殺敵人時,都會播放專屬視覺特效及音效。", "levelItem": "EEquippableSkinLevelItem::KillEffect", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e4b857b2-4549-ae10-1d2f-f9a6de5c153e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e4b857b2-4549-ae10-1d2f-f9a6de5c153e_default_universal.mp4", "uuid": "55db84f5-4b04-b9a8-6994-30bfe598286d" } ], @@ -21461,7 +22343,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c5dd6298-4928-5d64-5cd0-7fa41ea89d81/displayicon.png", "displayName": "鎏金帝王 警長", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/45c21880-a5d1-4778-b2a2-85b0b24f6c6f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/45c21880-a5d1-4778-b2a2-85b0b24f6c6f_default_universal.mp4", "uuid": "c5dd6298-4928-5d64-5cd0-7fa41ea89d81" }, { @@ -21469,7 +22351,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5dfc0af6-4c03-03b0-7066-6ea1770fe6c0/displayicon.png", "displayName": "鎏金帝王 警長 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/70f3532d-25b3-4fcc-8087-a32d0d099565_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/70f3532d-25b3-4fcc-8087-a32d0d099565_default_universal.mp4", "uuid": "5dfc0af6-4c03-03b0-7066-6ea1770fe6c0" }, { @@ -21477,7 +22359,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/003665b4-4ff3-881b-5c67-3ebd454d4fab/displayicon.png", "displayName": "鎏金帝王 警長 等級3", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/be45b598-6410-4729-8971-3f2e7dc60f97_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/be45b598-6410-4729-8971-3f2e7dc60f97_default_universal.mp4", "uuid": "003665b4-4ff3-881b-5c67-3ebd454d4fab" }, { @@ -21485,7 +22367,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/dd1fee10-42ca-1201-5bf8-399a16b25620/displayicon.png", "displayName": "鎏金帝王 警長 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3ec9e39d-339d-4d83-af58-0dc8a271fc1b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3ec9e39d-339d-4d83-af58-0dc8a271fc1b_default_universal.mp4", "uuid": "dd1fee10-42ca-1201-5bf8-399a16b25620" } ], @@ -21493,6 +22375,36 @@ "uuid": "5211efa8-4efd-09bb-6cee-72b86a8a5972", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Leversniper/StainedGlass/LeverSniper_StainedGlass_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Leversniper/StainedGlass/Chromas/Standard/LeverSniper_StainedGlass_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/401ca81b-4e36-fbbc-30ac-929bf1159883/displayicon.png", + "displayName": "彩拼幻想 警長", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/401ca81b-4e36-fbbc-30ac-929bf1159883/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "401ca81b-4e36-fbbc-30ac-929bf1159883" + } + ], + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/0dfc1800-4ddc-85fd-8382-32a2824135fa/displayicon.png", + "displayName": "彩拼幻想 警長", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Leversniper/StainedGlass/Levels/LeverSniper_StainedGlass_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d24023ad-4689-6273-5a37-f6bd0ab2932b/displayicon.png", + "displayName": "彩拼幻想 警長", + "levelItem": null, + "streamedVideo": null, + "uuid": "d24023ad-4689-6273-5a37-f6bd0ab2932b" + } + ], + "themeUuid": "e0216470-4c4a-d840-0919-3c860cbc40a8", + "uuid": "0dfc1800-4ddc-85fd-8382-32a2824135fa", + "wallpaper": "https://media.valorant-api.com/weaponskins/0dfc1800-4ddc-85fd-8382-32a2824135fa/wallpaper.png" + }, { "assetPath": "ShooterGame/Content/Equippables/Guns/SniperRifles/Leversniper/Standard/LeverSniperRifle_Standard_PrimaryAsset", "chromas": [ @@ -21630,7 +22542,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/1910433c-48ec-fe93-0798-a1bf1639e42c/displayicon.png", "displayName": "RGX 11z Pro 惡靈 等級5\n(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/1910433c-48ec-fe93-0798-a1bf1639e42c/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6d1a5653-4e8a-c829-f4c7-4d8b88373221_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6d1a5653-4e8a-c829-f4c7-4d8b88373221_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/1910433c-48ec-fe93-0798-a1bf1639e42c/swatch.png", "uuid": "1910433c-48ec-fe93-0798-a1bf1639e42c" }, @@ -21639,7 +22551,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/47cd4c1c-4c8d-d262-a9f0-359206bf40dc/displayicon.png", "displayName": "RGX 11z Pro 惡靈 等級5\n(幻彩2 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/47cd4c1c-4c8d-d262-a9f0-359206bf40dc/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/466516ca-4494-fc15-1083-009cb1baf0d8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/466516ca-4494-fc15-1083-009cb1baf0d8_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/47cd4c1c-4c8d-d262-a9f0-359206bf40dc/swatch.png", "uuid": "47cd4c1c-4c8d-d262-a9f0-359206bf40dc" }, @@ -21648,7 +22560,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e1cc60c3-4031-6111-0179-ceb150458419/displayicon.png", "displayName": "RGX 11z Pro 惡靈 等級5\n(幻彩3 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e1cc60c3-4031-6111-0179-ceb150458419/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1ca368f4-4b4f-9d19-8432-9a9846156c0b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1ca368f4-4b4f-9d19-8432-9a9846156c0b_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e1cc60c3-4031-6111-0179-ceb150458419/swatch.png", "uuid": "e1cc60c3-4031-6111-0179-ceb150458419" } @@ -21662,7 +22574,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/737d2d1b-4b47-87a4-6045-5183580d27ec/displayicon.png", "displayName": "RGX 11z Pro 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/54455cfe-422b-be59-5850-168510be8372_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/54455cfe-422b-be59-5850-168510be8372_default_universal.mp4", "uuid": "737d2d1b-4b47-87a4-6045-5183580d27ec" }, { @@ -21670,7 +22582,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/88158991-4f65-dff7-4672-c5a032f3ced1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/88158991-4f65-dff7-4672-c5a032f3ced1_default_universal.mp4", "uuid": "273b3a0a-4bfc-7724-7fe7-7ca3868b3135" }, { @@ -21678,7 +22590,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 惡靈 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/823a7b74-467e-038f-968d-4ca432b63b1b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/823a7b74-467e-038f-968d-4ca432b63b1b_default_universal.mp4", "uuid": "b5614b64-47f4-9cb7-71d2-f99afb43a131" }, { @@ -21686,7 +22598,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 惡靈 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/08935fc8-4aa1-6b0a-9d63-9a883a0eb6b8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/08935fc8-4aa1-6b0a-9d63-9a883a0eb6b8_default_universal.mp4", "uuid": "6aef9ce2-4938-7050-a9d0-fe830cc8b5b7" }, { @@ -21694,7 +22606,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 惡靈 等級5", "levelItem": "EEquippableSkinLevelItem::KillCounter", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1ad0160e-4f8c-262b-1b2d-e5a77c8256ab_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1ad0160e-4f8c-262b-1b2d-e5a77c8256ab_default_universal.mp4", "uuid": "66a49dfe-414c-e55c-4961-51885b097521" } ], @@ -21749,7 +22661,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/a28d0972-4e6c-cb5c-0dfa-19ab56d2a711/displayicon.png", "displayName": "海洋星球 惡靈 等級3\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/a28d0972-4e6c-cb5c-0dfa-19ab56d2a711/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e2c91cf1-4ad7-d76b-b408-74b1d076ba1f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e2c91cf1-4ad7-d76b-b408-74b1d076ba1f_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/a28d0972-4e6c-cb5c-0dfa-19ab56d2a711/swatch.png", "uuid": "a28d0972-4e6c-cb5c-0dfa-19ab56d2a711" } @@ -21763,7 +22675,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ef773863-472d-4d81-e50e-1d887cea40f4/displayicon.png", "displayName": "海洋星球 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/24c6391b-48cc-32f0-bf36-a49a59e1fb89_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/24c6391b-48cc-32f0-bf36-a49a59e1fb89_default_universal.mp4", "uuid": "ef773863-472d-4d81-e50e-1d887cea40f4" }, { @@ -21771,7 +22683,7 @@ "displayIcon": null, "displayName": "海洋星球 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::FishAnimation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/448884c0-4fea-a7e7-45b3-7b82a62479eb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/448884c0-4fea-a7e7-45b3-7b82a62479eb_default_universal.mp4", "uuid": "3f812317-4689-48c1-b546-dd9c9e585560" }, { @@ -21779,7 +22691,7 @@ "displayIcon": null, "displayName": "海洋星球 惡靈 等級3", "levelItem": "EEquippableSkinLevelItem::KillBanner", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/aa56a3e1-41bc-01bc-96a2-099e1864b0a7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/aa56a3e1-41bc-01bc-96a2-099e1864b0a7_default_universal.mp4", "uuid": "816d50c3-43e8-1d75-d27e-169c3d4da02f" } ], @@ -21866,7 +22778,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/b39aed48-4bb5-089b-3f60-17aa27e45733/displayicon.png", "displayName": "輻能危機001 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ab20ac7f-4271-4638-d474-a1980fe31ec8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ab20ac7f-4271-4638-d474-a1980fe31ec8_default_universal.mp4", "uuid": "b39aed48-4bb5-089b-3f60-17aa27e45733" }, { @@ -21874,7 +22786,7 @@ "displayIcon": null, "displayName": "輻能危機001 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/60f484bd-4861-79df-ee12-39b519b22b44_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/60f484bd-4861-79df-ee12-39b519b22b44_default_universal.mp4", "uuid": "ecac2484-4837-b580-a15d-0aab63d56dbf" }, { @@ -21882,7 +22794,7 @@ "displayIcon": null, "displayName": "輻能危機001 惡靈 等級3", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5cc363dc-4a67-990e-50be-379a4c36d0c4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5cc363dc-4a67-990e-50be-379a4c36d0c4_default_universal.mp4", "uuid": "199d6f90-4a79-9c54-8830-529652499249" } ], @@ -22026,7 +22938,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/3b955119-421c-3319-50cc-1aaf06b42338/displayicon.png", "displayName": "奇點 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5a0b6caa-4abe-0460-7342-e8aeaeb4f3eb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5a0b6caa-4abe-0460-7342-e8aeaeb4f3eb_default_universal.mp4", "uuid": "3b955119-421c-3319-50cc-1aaf06b42338" }, { @@ -22034,7 +22946,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/53068012-45a5-232e-0bd7-d5aa786c0347/displayicon.png", "displayName": "奇點 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/44890722-4541-10f1-dee0-9580c96c854c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/44890722-4541-10f1-dee0-9580c96c854c_default_universal.mp4", "uuid": "53068012-45a5-232e-0bd7-d5aa786c0347" }, { @@ -22042,7 +22954,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d9c7f033-42e9-57c8-7e94-dd9294018e44/displayicon.png", "displayName": "奇點 惡靈 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5d618c35-44e1-8233-d25e-9e900047bfc2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5d618c35-44e1-8233-d25e-9e900047bfc2_default_universal.mp4", "uuid": "d9c7f033-42e9-57c8-7e94-dd9294018e44" }, { @@ -22050,7 +22962,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ccba3803-510b-4af4-a2bd-f530d8725fd1/displayicon.png", "displayName": "奇點 惡靈 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/30d9689f-4032-1ede-7298-c6b73459ccb6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/30d9689f-4032-1ede-7298-c6b73459ccb6_default_universal.mp4", "uuid": "ccba3803-510b-4af4-a2bd-f530d8725fd1" } ], @@ -22080,7 +22992,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/3d9792a3-4614-c8e0-6eda-58bb52e69d8b/displayicon.png", "displayName": "永恆之沙 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0f43bbf1-4dc3-e3b3-badc-dbad5b5bed55_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0f43bbf1-4dc3-e3b3-badc-dbad5b5bed55_default_universal.mp4", "uuid": "3d9792a3-4614-c8e0-6eda-58bb52e69d8b" } ], @@ -22165,7 +23077,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/b435c96f-4230-014e-74d2-90a0d5e245b5/displayicon.png", "displayName": "棄王遺思 惡靈 等級4\n(幻彩1 金色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/b435c96f-4230-014e-74d2-90a0d5e245b5/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b7e6eefc-457e-2479-359e-45a45f5cab2e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b7e6eefc-457e-2479-359e-45a45f5cab2e_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/b435c96f-4230-014e-74d2-90a0d5e245b5/swatch.png", "uuid": "b435c96f-4230-014e-74d2-90a0d5e245b5" } @@ -22179,7 +23091,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/daa73753-4b56-9d21-d73e-f3b3f4c9b1a6/displayicon.png", "displayName": "棄王遺思 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1e41eb2d-4b41-9e8c-5a35-319a2b285dc7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1e41eb2d-4b41-9e8c-5a35-319a2b285dc7_default_universal.mp4", "uuid": "daa73753-4b56-9d21-d73e-f3b3f4c9b1a6" }, { @@ -22187,7 +23099,7 @@ "displayIcon": null, "displayName": "棄王遺思 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c2ec2691-4fde-c150-3e4a-0f9964d8eec4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c2ec2691-4fde-c150-3e4a-0f9964d8eec4_default_universal.mp4", "uuid": "42c87829-4f30-e11c-6fc7-41a2c04dd900" }, { @@ -22195,7 +23107,7 @@ "displayIcon": null, "displayName": "棄王遺思 惡靈 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e62b03cf-44e5-d696-f96a-91a66dc866be_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e62b03cf-44e5-d696-f96a-91a66dc866be_default_universal.mp4", "uuid": "d68fc9bc-49db-e4d0-6133-5b88bd69dbf9" }, { @@ -22203,7 +23115,7 @@ "displayIcon": null, "displayName": "棄王遺思 惡靈 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d24b219a-44be-a425-a39a-faa582986001_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d24b219a-44be-a425-a39a-faa582986001_default_universal.mp4", "uuid": "28f1fc2f-453b-115a-6859-9d844c1a9fed" } ], @@ -22290,7 +23202,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/2e697099-42dd-4283-4249-fcbd685ecac7/displayicon.png", "displayName": "靈爭鬪魂 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bcc38fef-4068-1819-186f-d0975dde36a4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bcc38fef-4068-1819-186f-d0975dde36a4_default_universal.mp4", "uuid": "2e697099-42dd-4283-4249-fcbd685ecac7" }, { @@ -22298,7 +23210,7 @@ "displayIcon": null, "displayName": "靈爭鬪魂 惡靈 等級2:每次擊殺敵人時,都會播放專屬視覺特效及音效", "levelItem": "EEquippableSkinLevelItem::KillEffect", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/59cd1525-44b4-1091-1b64-49a6792fa9cb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/59cd1525-44b4-1091-1b64-49a6792fa9cb_default_universal.mp4", "uuid": "3524b584-4f5a-6f04-4ca7-f8968eaf4851" } ], @@ -22415,7 +23327,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d1d528ae-4dcc-e693-68e2-e8a475df83a4/displayicon.png", "displayName": "紫金狂潮 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0e21885e-9535-4445-8e0a-a221fffd0b3a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0e21885e-9535-4445-8e0a-a221fffd0b3a_default_universal.mp4", "uuid": "d1d528ae-4dcc-e693-68e2-e8a475df83a4" }, { @@ -22423,7 +23335,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d5b3f1de-413c-3b6b-1101-128d408647bf/displayicon.png", "displayName": "紫金狂潮 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f34ea8ed-01d5-4dd8-a59f-68fb31ecf23f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f34ea8ed-01d5-4dd8-a59f-68fb31ecf23f_default_universal.mp4", "uuid": "d5b3f1de-413c-3b6b-1101-128d408647bf" }, { @@ -22431,7 +23343,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/3546dc11-40fe-0ca9-2989-cd80fc53eccc/displayicon.png", "displayName": "紫金狂潮 惡靈 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/924cdc06-0fff-4b95-9c34-1b170f37c488_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/924cdc06-0fff-4b95-9c34-1b170f37c488_default_universal.mp4", "uuid": "3546dc11-40fe-0ca9-2989-cd80fc53eccc" }, { @@ -22439,7 +23351,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/fefc628b-4078-c57b-dcc7-3591eca5c4d0/displayicon.png", "displayName": "紫金狂潮 惡靈 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b67e101e-32a1-43ae-97a8-565c41d9dbe0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b67e101e-32a1-43ae-97a8-565c41d9dbe0_default_universal.mp4", "uuid": "fefc628b-4078-c57b-dcc7-3591eca5c4d0" } ], @@ -22554,7 +23466,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/30923a5d-4bd6-291b-0515-a39fe82b9f36/displayicon.png", "displayName": "殞落詛咒 惡靈 等級4\n(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/30923a5d-4bd6-291b-0515-a39fe82b9f36/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1f4f55b2-437b-e46a-7d0e-9a8607091cad_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1f4f55b2-437b-e46a-7d0e-9a8607091cad_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/30923a5d-4bd6-291b-0515-a39fe82b9f36/swatch.png", "uuid": "30923a5d-4bd6-291b-0515-a39fe82b9f36" }, @@ -22563,7 +23475,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/21413f63-40b1-f16c-1ef6-0ebf8c94978d/displayicon.png", "displayName": "殞落詛咒 惡靈 等級4\n(幻彩2 紅/黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/21413f63-40b1-f16c-1ef6-0ebf8c94978d/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0653e8c7-4923-01c6-13de-faba19cc66f6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0653e8c7-4923-01c6-13de-faba19cc66f6_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/21413f63-40b1-f16c-1ef6-0ebf8c94978d/swatch.png", "uuid": "21413f63-40b1-f16c-1ef6-0ebf8c94978d" }, @@ -22572,7 +23484,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/52a4c8c3-47c5-e5b0-dfb3-4e98461bfd96/displayicon.png", "displayName": "殞落詛咒 惡靈 等級4\n(幻彩3 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/52a4c8c3-47c5-e5b0-dfb3-4e98461bfd96/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/74c0bccb-4d92-5603-22b0-b98d5385d0fd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/74c0bccb-4d92-5603-22b0-b98d5385d0fd_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/52a4c8c3-47c5-e5b0-dfb3-4e98461bfd96/swatch.png", "uuid": "52a4c8c3-47c5-e5b0-dfb3-4e98461bfd96" } @@ -22586,7 +23498,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/87220abc-49a9-7472-ae09-29a6d711bbc3/displayicon.png", "displayName": "殞落詛咒 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/27a57df1-400a-c940-7601-48babd07f365_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/27a57df1-400a-c940-7601-48babd07f365_default_universal.mp4", "uuid": "87220abc-49a9-7472-ae09-29a6d711bbc3" }, { @@ -22594,7 +23506,7 @@ "displayIcon": null, "displayName": "殞落詛咒 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/75b147ed-4696-5e22-70d9-4a82757bb701_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/75b147ed-4696-5e22-70d9-4a82757bb701_default_universal.mp4", "uuid": "93e1e10a-49f0-4a06-fe22-d48578f53c6e" }, { @@ -22602,7 +23514,7 @@ "displayIcon": null, "displayName": "殞落詛咒 惡靈 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/13e5cf5c-459f-b649-ca99-7d97457851d5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/13e5cf5c-459f-b649-ca99-7d97457851d5_default_universal.mp4", "uuid": "e5aae6b1-482e-a508-f706-03a1eb087443" }, { @@ -22610,7 +23522,7 @@ "displayIcon": null, "displayName": "殞落詛咒 惡靈 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c3d23b5a-41df-97e0-5564-069d4d2d69cf_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c3d23b5a-41df-97e0-5564-069d4d2d69cf_default_universal.mp4", "uuid": "cf105b94-486b-0d11-e82d-df8f02575fb2" } ], @@ -22727,7 +23639,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/7e45e9cd-4072-cc32-0898-d09c167cc0f9/displayicon.png", "displayName": "奇幻龐克 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0aeded14-4e4a-0d0d-cf7f-cbb8ec962d0f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0aeded14-4e4a-0d0d-cf7f-cbb8ec962d0f_default_universal.mp4", "uuid": "7e45e9cd-4072-cc32-0898-d09c167cc0f9" }, { @@ -22735,7 +23647,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/9830e245-477f-15e5-8a49-7697358149cc/displayicon.png", "displayName": "奇幻龐克 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2b2cd70d-4c94-6543-1707-07993966eff2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2b2cd70d-4c94-6543-1707-07993966eff2_default_universal.mp4", "uuid": "9830e245-477f-15e5-8a49-7697358149cc" }, { @@ -22743,7 +23655,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/83c62a9c-402a-517c-0249-d7961b21824f/displayicon.png", "displayName": "奇幻龐克 惡靈 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/88cccb93-4193-e590-e0aa-8daac94c7593_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/88cccb93-4193-e590-e0aa-8daac94c7593_default_universal.mp4", "uuid": "83c62a9c-402a-517c-0249-d7961b21824f" }, { @@ -22751,7 +23663,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5f94f010-4581-ae04-c639-29af06e4b216/displayicon.png", "displayName": "奇幻龐克 惡靈 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ba58ad4f-4baf-eef2-0784-a9888c3f6efe_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ba58ad4f-4baf-eef2-0784-a9888c3f6efe_default_universal.mp4", "uuid": "5f94f010-4581-ae04-c639-29af06e4b216" } ], @@ -22863,7 +23775,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/43f02741-4f21-0a47-72c9-898e859d50d3/displayicon.png", "displayName": "離子聖芒 惡靈 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/43f02741-4f21-0a47-72c9-898e859d50d3/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b517d6e6-4085-e07c-5f2c-4cab7ef5570c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b517d6e6-4085-e07c-5f2c-4cab7ef5570c_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/43f02741-4f21-0a47-72c9-898e859d50d3/swatch.png", "uuid": "43f02741-4f21-0a47-72c9-898e859d50d3" }, @@ -22872,7 +23784,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/647811d0-4fd6-4f05-6f29-45b1be7fb189/displayicon.png", "displayName": "離子聖芒 惡靈 等級4\n(幻彩2 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/647811d0-4fd6-4f05-6f29-45b1be7fb189/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6926a991-45bc-c441-0da6-ad82baf5dba3_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6926a991-45bc-c441-0da6-ad82baf5dba3_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/647811d0-4fd6-4f05-6f29-45b1be7fb189/swatch.png", "uuid": "647811d0-4fd6-4f05-6f29-45b1be7fb189" }, @@ -22881,7 +23793,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/7896afcd-4d80-859a-90ac-638efedd1e19/displayicon.png", "displayName": "離子聖芒 惡靈 等級4\n(幻彩3 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/7896afcd-4d80-859a-90ac-638efedd1e19/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fe180791-4c77-a11e-4ccb-5f8bcfb0b70a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fe180791-4c77-a11e-4ccb-5f8bcfb0b70a_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/7896afcd-4d80-859a-90ac-638efedd1e19/swatch.png", "uuid": "7896afcd-4d80-859a-90ac-638efedd1e19" } @@ -22895,7 +23807,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/8af83962-4e2f-f58e-588e-ef85e4882b79/displayicon.png", "displayName": "離子聖芒 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2ae74ded-4811-8b3d-f23e-1baa412e798a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2ae74ded-4811-8b3d-f23e-1baa412e798a_default_universal.mp4", "uuid": "8af83962-4e2f-f58e-588e-ef85e4882b79" }, { @@ -22903,7 +23815,7 @@ "displayIcon": null, "displayName": "離子聖芒 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::SoundEffects", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8b43cf50-4a73-273b-4cae-5288b7d32119_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8b43cf50-4a73-273b-4cae-5288b7d32119_default_universal.mp4", "uuid": "d1469f2a-4f98-67dc-ad71-6ab75b9e720b" }, { @@ -22911,7 +23823,7 @@ "displayIcon": null, "displayName": "離子聖芒 惡靈 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b2596a3f-48b3-aec5-c77b-15bb8fa3eb1d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b2596a3f-48b3-aec5-c77b-15bb8fa3eb1d_default_universal.mp4", "uuid": "1c5a796e-4d2d-ee9f-a9e3-c087f328d9c7" }, { @@ -22919,7 +23831,7 @@ "displayIcon": null, "displayName": "離子聖芒 惡靈 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d022cc31-47e5-9934-2c11-96a7366cf581_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d022cc31-47e5-9934-2c11-96a7366cf581_default_universal.mp4", "uuid": "3cd34480-4704-e443-fffd-a9a3120b73d6" } ], @@ -23061,7 +23973,7 @@ "displayIcon": null, "displayName": "781-A協定 惡靈 等級5\n(幻彩1 白/粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/5864760c-44be-6aa4-c5a5-2fb742f45474/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/550b6848-41e1-672a-d65b-02ba323f7589_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/550b6848-41e1-672a-d65b-02ba323f7589_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/5864760c-44be-6aa4-c5a5-2fb742f45474/swatch.png", "uuid": "5864760c-44be-6aa4-c5a5-2fb742f45474" }, @@ -23070,7 +23982,7 @@ "displayIcon": null, "displayName": "781-A協定 惡靈 等級5\n(幻彩2 紅/藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/bcbdc71f-4fcb-5b64-16fb-82aa9618c3d9/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6b612f9e-42be-32f2-e9c1-a3b9e3b02402_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6b612f9e-42be-32f2-e9c1-a3b9e3b02402_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/bcbdc71f-4fcb-5b64-16fb-82aa9618c3d9/swatch.png", "uuid": "bcbdc71f-4fcb-5b64-16fb-82aa9618c3d9" }, @@ -23079,7 +23991,7 @@ "displayIcon": null, "displayName": "781-A協定 惡靈 等級5\n(幻彩3 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/3927b569-44ce-fa5c-74b9-4cb8b2da2572/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b52512ba-4fc4-19de-2734-d1a058d2d184_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b52512ba-4fc4-19de-2734-d1a058d2d184_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/3927b569-44ce-fa5c-74b9-4cb8b2da2572/swatch.png", "uuid": "3927b569-44ce-fa5c-74b9-4cb8b2da2572" } @@ -23093,7 +24005,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5eb7515f-40a1-2f15-de03-c9a024664737/displayicon.png", "displayName": "781-A協定 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/50d436c5-40f4-204b-4516-dd978a2a05cc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/50d436c5-40f4-204b-4516-dd978a2a05cc_default_universal.mp4", "uuid": "5eb7515f-40a1-2f15-de03-c9a024664737" }, { @@ -23101,7 +24013,7 @@ "displayIcon": null, "displayName": "781-A協定 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6ccbd200-45b8-6050-c492-f5bbc0e77bdf_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6ccbd200-45b8-6050-c492-f5bbc0e77bdf_default_universal.mp4", "uuid": "4b3bcb0e-4391-5c55-043f-408638d0ec46" }, { @@ -23109,7 +24021,7 @@ "displayIcon": null, "displayName": "781-A協定 惡靈 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/dba6cb5e-43b3-7af4-bfd3-e6b5c483affc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/dba6cb5e-43b3-7af4-bfd3-e6b5c483affc_default_universal.mp4", "uuid": "216d2295-4331-ed1e-7349-2499d84a6e83" }, { @@ -23117,7 +24029,7 @@ "displayIcon": null, "displayName": "781-A協定 惡靈 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c468344d-4c56-99c9-8145-7f9232611237_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c468344d-4c56-99c9-8145-7f9232611237_default_universal.mp4", "uuid": "0b08de26-4b97-3540-54fd-3e8a91162cf8" }, { @@ -23125,7 +24037,7 @@ "displayIcon": null, "displayName": "781-A協定 惡靈 等級5:在地化語音可能會因地區而異", "levelItem": "EEquippableSkinLevelItem::Voiceover", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/626c69ea-4d80-aa02-9573-06885eb07f4c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/626c69ea-4d80-aa02-9573-06885eb07f4c_default_universal.mp4", "uuid": "f2339f96-4693-b27d-6e3c-5ba10cf3f6bf" } ], @@ -23210,7 +24122,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/74b5a7a2-43b5-4343-2dc8-c2801230e288/displayicon.png", "displayName": "重力鈾能神經爆破者 惡靈 等級2\n(幻彩1 鉻金屬色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/74b5a7a2-43b5-4343-2dc8-c2801230e288/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/be06a334-42da-683c-3b0c-9fa798cc16b6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/be06a334-42da-683c-3b0c-9fa798cc16b6_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/74b5a7a2-43b5-4343-2dc8-c2801230e288/swatch.png", "uuid": "74b5a7a2-43b5-4343-2dc8-c2801230e288" }, @@ -23219,7 +24131,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/22f733f9-4fb3-20f9-e032-f194d22c3d9a/displayicon.png", "displayName": "重力鈾能神經爆破者 惡靈 等級2\n(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/22f733f9-4fb3-20f9-e032-f194d22c3d9a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5be2c819-4f67-a499-4870-6f86dbed3a68_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5be2c819-4f67-a499-4870-6f86dbed3a68_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/22f733f9-4fb3-20f9-e032-f194d22c3d9a/swatch.png", "uuid": "22f733f9-4fb3-20f9-e032-f194d22c3d9a" }, @@ -23228,7 +24140,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/4de533bf-44d1-d8d2-9969-168e5a22d910/displayicon.png", "displayName": "重力鈾能神經爆破者 惡靈 等級2\n(幻彩3 紅/藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/4de533bf-44d1-d8d2-9969-168e5a22d910/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b8f573ff-46c7-4ebe-133a-8db233fa0002_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b8f573ff-46c7-4ebe-133a-8db233fa0002_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/4de533bf-44d1-d8d2-9969-168e5a22d910/swatch.png", "uuid": "4de533bf-44d1-d8d2-9969-168e5a22d910" } @@ -23242,7 +24154,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/8a1b2c5b-4692-78ae-9d5c-cdac6a61e4f4/displayicon.png", "displayName": "重力鈾能神經爆破者 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/27bbd462-4995-e379-5582-bcb241ab117b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/27bbd462-4995-e379-5582-bcb241ab117b_default_universal.mp4", "uuid": "8a1b2c5b-4692-78ae-9d5c-cdac6a61e4f4" }, { @@ -23250,7 +24162,7 @@ "displayIcon": null, "displayName": "重力鈾能神經爆破者 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ca254041-40e1-8021-29d2-c3ac2b4fd992_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ca254041-40e1-8021-29d2-c3ac2b4fd992_default_universal.mp4", "uuid": "984fa47b-4c3f-cb2a-3fdb-098e342a52f3" } ], @@ -23275,7 +24187,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/3a2ed05c-456e-3d79-c5c6-4eb3a4cedcb7/displayicon.png", "displayName": "掠奪印象 惡靈 等級4\n(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/3a2ed05c-456e-3d79-c5c6-4eb3a4cedcb7/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f549caa8-46f8-9a5e-412c-f88e6188a6fc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f549caa8-46f8-9a5e-412c-f88e6188a6fc_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/3a2ed05c-456e-3d79-c5c6-4eb3a4cedcb7/swatch.png", "uuid": "3a2ed05c-456e-3d79-c5c6-4eb3a4cedcb7" }, @@ -23284,7 +24196,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/9ce7d74f-4444-4676-1a31-dba72c553cee/displayicon.png", "displayName": "掠奪印象 惡靈 等級4\n(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/9ce7d74f-4444-4676-1a31-dba72c553cee/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/45ae28d3-4e08-4dce-ac1f-b08e38f15e58_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/45ae28d3-4e08-4dce-ac1f-b08e38f15e58_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/9ce7d74f-4444-4676-1a31-dba72c553cee/swatch.png", "uuid": "9ce7d74f-4444-4676-1a31-dba72c553cee" }, @@ -23293,7 +24205,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/746c227d-47be-f1c7-b69d-48a9b497268b/displayicon.png", "displayName": "掠奪印象 惡靈 等級4\n(幻彩3 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/746c227d-47be-f1c7-b69d-48a9b497268b/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/73935cb8-4b60-1182-71e3-5da3957aa31b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/73935cb8-4b60-1182-71e3-5da3957aa31b_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/746c227d-47be-f1c7-b69d-48a9b497268b/swatch.png", "uuid": "746c227d-47be-f1c7-b69d-48a9b497268b" } @@ -23307,7 +24219,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/0a0237d3-4d57-0ed2-ab65-c898a7bc755b/displayicon.png", "displayName": "掠奪印象 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7eee350f-406e-65aa-2a21-7d8f9944abb2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7eee350f-406e-65aa-2a21-7d8f9944abb2_default_universal.mp4", "uuid": "0a0237d3-4d57-0ed2-ab65-c898a7bc755b" }, { @@ -23315,7 +24227,7 @@ "displayIcon": null, "displayName": "掠奪印象 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/997b83a2-43f5-80db-7b21-e2862c128388_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/997b83a2-43f5-80db-7b21-e2862c128388_default_universal.mp4", "uuid": "3c7e7ebd-4b7f-f475-d714-47a52a116c82" }, { @@ -23323,7 +24235,7 @@ "displayIcon": null, "displayName": "掠奪印象 惡靈 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f0de60c3-49ce-09ce-db52-b693548a5a3e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f0de60c3-49ce-09ce-db52-b693548a5a3e_default_universal.mp4", "uuid": "88257dda-4c34-f3ca-4495-d6b9ebd6ddbf" }, { @@ -23331,7 +24243,7 @@ "displayIcon": null, "displayName": "掠奪印象 惡靈 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/30df907c-4983-70af-a787-888fd5e7ce57_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/30df907c-4983-70af-a787-888fd5e7ce57_default_universal.mp4", "uuid": "a8849563-498e-d080-85df-df891c878566" } ], @@ -23356,7 +24268,7 @@ "displayIcon": null, "displayName": "偵察行動 惡靈 等級4\n(幻彩1 紅色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/b567c4f8-4789-a563-8225-0b8a3312f202/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8ade35ba-4c02-8f5e-5a01-3aa162e99aa5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8ade35ba-4c02-8f5e-5a01-3aa162e99aa5_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/b567c4f8-4789-a563-8225-0b8a3312f202/swatch.png", "uuid": "b567c4f8-4789-a563-8225-0b8a3312f202" }, @@ -23365,7 +24277,7 @@ "displayIcon": null, "displayName": "偵察行動 惡靈 等級4\n(幻彩2 藍色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/566280a8-4479-1cd8-72f0-bba916c4de4a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1c88469e-4157-9b5f-3983-ee888995227a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1c88469e-4157-9b5f-3983-ee888995227a_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/566280a8-4479-1cd8-72f0-bba916c4de4a/swatch.png", "uuid": "566280a8-4479-1cd8-72f0-bba916c4de4a" }, @@ -23374,7 +24286,7 @@ "displayIcon": null, "displayName": "偵察行動 惡靈 等級4\n(幻彩3 綠色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/3e8f9372-4253-84cb-15d2-a288c9c26a27/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/68fa86a1-4af9-94c9-e0e3-3d89c106e696_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/68fa86a1-4af9-94c9-e0e3-3d89c106e696_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/3e8f9372-4253-84cb-15d2-a288c9c26a27/swatch.png", "uuid": "3e8f9372-4253-84cb-15d2-a288c9c26a27" } @@ -23388,7 +24300,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/613dd54a-4068-0fab-7670-bf8268a9b76b/displayicon.png", "displayName": "偵察行動 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2c0bd10f-4283-0943-523a-44bbc98b5247_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2c0bd10f-4283-0943-523a-44bbc98b5247_default_universal.mp4", "uuid": "613dd54a-4068-0fab-7670-bf8268a9b76b" }, { @@ -23396,7 +24308,7 @@ "displayIcon": null, "displayName": "偵察行動 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::Randomizer", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/47543df2-422d-c2fd-e4d7-af846ffa8f4d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/47543df2-422d-c2fd-e4d7-af846ffa8f4d_default_universal.mp4", "uuid": "2006e869-4d76-294f-c0a1-b3b2f27a4dc2" }, { @@ -23404,7 +24316,7 @@ "displayIcon": null, "displayName": "偵察行動 惡靈 等級3", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/52fa88fc-431c-f484-d7f3-c3a0b633d058_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/52fa88fc-431c-f484-d7f3-c3a0b633d058_default_universal.mp4", "uuid": "dce5c9c1-4a73-659c-1fb9-96974974b151" }, { @@ -23412,7 +24324,7 @@ "displayIcon": null, "displayName": "偵察行動 惡靈 等級4", "levelItem": "EEquippableSkinLevelItem::KillBanner", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/38bc270e-4b76-543f-5ce3-f6836b5f6a67_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/38bc270e-4b76-543f-5ce3-f6836b5f6a67_default_universal.mp4", "uuid": "5171a955-44db-5312-7d62-1398ef5c01cb" } ], @@ -23616,7 +24528,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/fdcb9cc0-4877-6f89-02ad-98ab330f3043/displayicon.png", "displayName": "咻咻X 惡靈", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/81cf0902-4f0e-c329-eeca-a4873f732a77_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/81cf0902-4f0e-c329-eeca-a4873f732a77_default_universal.mp4", "uuid": "fdcb9cc0-4877-6f89-02ad-98ab330f3043" }, { @@ -23624,7 +24536,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/aa524ab2-4a87-81c1-2b07-ba8a5431ad0c/displayicon.png", "displayName": "咻咻X 惡靈 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ab28036f-4e24-e01e-d808-e19448013b27_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ab28036f-4e24-e01e-d808-e19448013b27_default_universal.mp4", "uuid": "aa524ab2-4a87-81c1-2b07-ba8a5431ad0c" }, { @@ -23632,7 +24544,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/2ece0224-4527-7b27-a7e4-b3bf5cef9532/displayicon.png", "displayName": "咻咻X 惡靈 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7f861fa2-4e01-e055-3417-90b7ab944e4e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7f861fa2-4e01-e055-3417-90b7ab944e4e_default_universal.mp4", "uuid": "2ece0224-4527-7b27-a7e4-b3bf5cef9532" }, { @@ -23640,7 +24552,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/db5e997e-4c4f-baac-3e84-5fafe19c97f2/displayicon.png", "displayName": "咻咻X 惡靈 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fa06b926-43f1-1efb-0be4-d68829f92cf0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fa06b926-43f1-1efb-0be4-d68829f92cf0_default_universal.mp4", "uuid": "db5e997e-4c4f-baac-3e84-5fafe19c97f2" } ], @@ -23752,7 +24664,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 刺針 等級5\n(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e5a694a1-465e-c634-39b8-bcbf16ecab4d/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/57ff9f66-4bae-bc33-84d6-0f97c823a302_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/57ff9f66-4bae-bc33-84d6-0f97c823a302_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e5a694a1-465e-c634-39b8-bcbf16ecab4d/swatch.png", "uuid": "e5a694a1-465e-c634-39b8-bcbf16ecab4d" }, @@ -23761,7 +24673,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 刺針 等級5\n(幻彩2 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/fa548ae1-4f50-0730-0c4f-b18c473c8542/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c211c495-4854-9426-1dc1-1b842dcee506_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c211c495-4854-9426-1dc1-1b842dcee506_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/fa548ae1-4f50-0730-0c4f-b18c473c8542/swatch.png", "uuid": "fa548ae1-4f50-0730-0c4f-b18c473c8542" }, @@ -23770,7 +24682,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 刺針 等級5\n(幻彩3 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/3debb072-49ae-8ada-fdd9-e081208b42fa/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3dc14060-4dfc-3ee7-806a-9e802e0bfe4b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3dc14060-4dfc-3ee7-806a-9e802e0bfe4b_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/3debb072-49ae-8ada-fdd9-e081208b42fa/swatch.png", "uuid": "3debb072-49ae-8ada-fdd9-e081208b42fa" } @@ -23784,7 +24696,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4dbeebb2-4b39-8aec-b639-00bc4948d0f3/displayicon.png", "displayName": "RGX 11z Pro 刺針", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/028d98a7-4a8b-8851-572e-448ef90c81d6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/028d98a7-4a8b-8851-572e-448ef90c81d6_default_universal.mp4", "uuid": "4dbeebb2-4b39-8aec-b639-00bc4948d0f3" }, { @@ -23792,7 +24704,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 刺針 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/285b9402-4e8b-7592-9cf5-96b06927db37_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/285b9402-4e8b-7592-9cf5-96b06927db37_default_universal.mp4", "uuid": "d9b56b1b-42b7-10bf-caf6-d594861916a9" }, { @@ -23800,7 +24712,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 刺針 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/46508845-46e6-3b93-3c60-fb96c769e9c7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/46508845-46e6-3b93-3c60-fb96c769e9c7_default_universal.mp4", "uuid": "0d146d58-43be-7cfc-d1f6-cb8441bf5c83" }, { @@ -23808,7 +24720,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 刺針 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1a2e667f-4ed5-373a-b0a7-c9a6ccf455b9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1a2e667f-4ed5-373a-b0a7-c9a6ccf455b9_default_universal.mp4", "uuid": "6a538b3d-4a6c-933d-6b01-d0a20b8ab5bb" }, { @@ -23816,7 +24728,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 刺針 等級5", "levelItem": "EEquippableSkinLevelItem::KillCounter", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/aa67b91b-4c45-10d3-8300-aab470710c78_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/aa67b91b-4c45-10d3-8300-aab470710c78_default_universal.mp4", "uuid": "7dd59c7b-4ca4-1638-4a10-cb998d6b84c8" } ], @@ -23901,7 +24813,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/3b0daf2c-4390-2d67-e489-0f8d38e0ba5c/displayicon.png", "displayName": "混沌序幕 刺針 等級4\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/3b0daf2c-4390-2d67-e489-0f8d38e0ba5c/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/48303157-4667-02ef-8c56-a5ac0b5d188f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/48303157-4667-02ef-8c56-a5ac0b5d188f_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/3b0daf2c-4390-2d67-e489-0f8d38e0ba5c/swatch.png", "uuid": "3b0daf2c-4390-2d67-e489-0f8d38e0ba5c" }, @@ -23910,7 +24822,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/9d0ed9fa-4392-a5b8-3090-9f9627e21739/displayicon.png", "displayName": "混沌序幕 刺針 等級4\n(幻彩2 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/9d0ed9fa-4392-a5b8-3090-9f9627e21739/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9a96cb8f-4303-5230-4bc4-da87eef1f8dd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9a96cb8f-4303-5230-4bc4-da87eef1f8dd_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/9d0ed9fa-4392-a5b8-3090-9f9627e21739/swatch.png", "uuid": "9d0ed9fa-4392-a5b8-3090-9f9627e21739" }, @@ -23919,7 +24831,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/a7c03e3b-48b2-7d7e-fb00-70aa1c168dba/displayicon.png", "displayName": "混沌序幕 刺針 等級4\n(幻彩3 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/a7c03e3b-48b2-7d7e-fb00-70aa1c168dba/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b942d8d5-41b9-c2e0-cee0-8e9311b396cd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b942d8d5-41b9-c2e0-cee0-8e9311b396cd_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/a7c03e3b-48b2-7d7e-fb00-70aa1c168dba/swatch.png", "uuid": "a7c03e3b-48b2-7d7e-fb00-70aa1c168dba" } @@ -23933,7 +24845,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5611fa1c-45bb-6c46-73cd-209031e72524/displayicon.png", "displayName": "混沌序幕 刺針", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fe753a11-48b0-3173-779c-50bb9071d710_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fe753a11-48b0-3173-779c-50bb9071d710_default_universal.mp4", "uuid": "5611fa1c-45bb-6c46-73cd-209031e72524" }, { @@ -23941,7 +24853,7 @@ "displayIcon": null, "displayName": "混沌序幕 刺針 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/247b4df2-4897-3a11-09c7-3f9108742bda_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/247b4df2-4897-3a11-09c7-3f9108742bda_default_universal.mp4", "uuid": "a8e8fc20-498e-b869-3858-d3802af9c4b8" }, { @@ -23949,7 +24861,7 @@ "displayIcon": null, "displayName": "混沌序幕 刺針 等級3", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d1a14091-4228-6c23-6f95-f3a1371f1512_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d1a14091-4228-6c23-6f95-f3a1371f1512_default_universal.mp4", "uuid": "281add0f-4b05-aa0e-0d98-e491d72b0a1f" }, { @@ -23957,7 +24869,7 @@ "displayIcon": null, "displayName": "混沌序幕 刺針 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/69153ff0-4672-0137-c041-c9a97b70354b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/69153ff0-4672-0137-c041-c9a97b70354b_default_universal.mp4", "uuid": "9bbb7ff3-4681-f961-a880-819fa2fd813a" } ], @@ -23982,7 +24894,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 刺針 等級2\n(幻彩1 戰術夥伴)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/84e03f58-4f71-7969-2d24-5faadabf47a3/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/09a5fa88-4700-91cb-6808-c28318daf971_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/09a5fa88-4700-91cb-6808-c28318daf971_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/84e03f58-4f71-7969-2d24-5faadabf47a3/swatch.png", "uuid": "84e03f58-4f71-7969-2d24-5faadabf47a3" }, @@ -23991,7 +24903,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 刺針 等級2\n(幻彩2 英雄聯盟)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e09da05d-484a-28f7-e227-ff90eabd2dc2/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9cea1b0b-4a01-42a2-31cb-b2b041a42ad1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9cea1b0b-4a01-42a2-31cb-b2b041a42ad1_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e09da05d-484a-28f7-e227-ff90eabd2dc2/swatch.png", "uuid": "e09da05d-484a-28f7-e227-ff90eabd2dc2" } @@ -24005,7 +24917,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/0a6790a2-4ddf-56aa-26e4-44b45d050060/displayicon.png", "displayName": "魔術塗鴉 刺針", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/87165308-4dfb-81a5-1990-6590a2c1e060_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/87165308-4dfb-81a5-1990-6590a2c1e060_default_universal.mp4", "uuid": "0a6790a2-4ddf-56aa-26e4-44b45d050060" }, { @@ -24013,7 +24925,7 @@ "displayIcon": null, "displayName": "魔術塗鴉 刺針 等級2", "levelItem": "EEquippableSkinLevelItem::KillEffect", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/561adcb1-487e-5d8e-471e-bf813812e5ff_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/561adcb1-487e-5d8e-471e-bf813812e5ff_default_universal.mp4", "uuid": "082de448-49d3-d65d-e9c0-17949cd33422" } ], @@ -24226,19 +25138,49 @@ "wallpaper": null }, { - "assetPath": "ShooterGame/Content/Equippables/Guns/SubMachineGuns/Vector/MysticForest/Vector_MysticForest_PrimaryAsset", + "assetPath": "ShooterGame/Content/Equippables/Guns/SubMachineGuns/Vector/MidnightAerosol/Vector_MidnightAerosol_PrimaryAsset", "chromas": [ { - "assetPath": "ShooterGame/Content/Equippables/Guns/SubMachineGuns/Vector/MysticForest/Chromas/Standard/Vector_MysticForest_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c754aa0d-4b6d-7d99-ea51-e49f902dd1a8/displayicon.png", - "displayName": "密林樹神 刺針", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/c754aa0d-4b6d-7d99-ea51-e49f902dd1a8/fullrender.png", + "assetPath": "ShooterGame/Content/Equippables/Guns/SubMachineGuns/Vector/MidnightAerosol/Chromas/Standard/Vector_MidnightAerosol_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/3fe99248-42d3-13d2-5c82-11aba62a391c/displayicon.png", + "displayName": "午夜街頭 刺針", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/3fe99248-42d3-13d2-5c82-11aba62a391c/fullrender.png", "streamedVideo": null, "swatch": null, - "uuid": "c754aa0d-4b6d-7d99-ea51-e49f902dd1a8" + "uuid": "3fe99248-42d3-13d2-5c82-11aba62a391c" } ], - "contentTierUuid": "0cebb8be-46d7-c12a-d306-e9907bfc5a25", + "contentTierUuid": "12683d76-48d7-84a3-4e09-6985794f0445", + "displayIcon": "https://media.valorant-api.com/weaponskins/cfbcbbcb-4d51-94cb-2efb-9fbb0d655b45/displayicon.png", + "displayName": "午夜街頭 刺針", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SubMachineGuns/Vector/MidnightAerosol/Levels/Vector_MidnightAerosol_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/39ac9329-472e-809c-57c6-768963f4e92e/displayicon.png", + "displayName": "午夜街頭 刺針", + "levelItem": null, + "streamedVideo": null, + "uuid": "39ac9329-472e-809c-57c6-768963f4e92e" + } + ], + "themeUuid": "36f9abb7-4d30-16f1-f476-8c81e67f1d14", + "uuid": "cfbcbbcb-4d51-94cb-2efb-9fbb0d655b45", + "wallpaper": null + }, + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SubMachineGuns/Vector/MysticForest/Vector_MysticForest_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Guns/SubMachineGuns/Vector/MysticForest/Chromas/Standard/Vector_MysticForest_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c754aa0d-4b6d-7d99-ea51-e49f902dd1a8/displayicon.png", + "displayName": "密林樹神 刺針", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/c754aa0d-4b6d-7d99-ea51-e49f902dd1a8/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "c754aa0d-4b6d-7d99-ea51-e49f902dd1a8" + } + ], + "contentTierUuid": "0cebb8be-46d7-c12a-d306-e9907bfc5a25", "displayIcon": "https://media.valorant-api.com/weaponskins/847fe9da-45cc-21d4-0138-7aa4d8b31d8e/displayicon.png", "displayName": "密林樹神 刺針", "levels": [ @@ -24454,7 +25396,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/9bc535dd-4d91-3421-2cd0-7a8fdad3478b/displayicon.png", "displayName": "鎏金帝王 刺針", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/69172783-e002-49d3-8481-14652cbc3d3a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/69172783-e002-49d3-8481-14652cbc3d3a_default_universal.mp4", "uuid": "9bc535dd-4d91-3421-2cd0-7a8fdad3478b" }, { @@ -24462,7 +25404,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/1a8d4093-4e8f-dfe8-9412-e3955662f09c/displayicon.png", "displayName": "鎏金帝王 刺針 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6b2692c9-5620-42de-af27-e22a9b59cf8e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6b2692c9-5620-42de-af27-e22a9b59cf8e_default_universal.mp4", "uuid": "1a8d4093-4e8f-dfe8-9412-e3955662f09c" }, { @@ -24470,7 +25412,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5e5fd361-4954-2287-012f-f68f624fc879/displayicon.png", "displayName": "鎏金帝王 刺針 等級3", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e5d289f2-3fa2-4266-a7b6-6fcb87325654_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e5d289f2-3fa2-4266-a7b6-6fcb87325654_default_universal.mp4", "uuid": "5e5fd361-4954-2287-012f-f68f624fc879" }, { @@ -24478,7 +25420,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/b17c1df5-412c-a9bc-fd65-e6afb421b13d/displayicon.png", "displayName": "鎏金帝王 刺針 等級4", "levelItem": "EEquippableSkinLevelItem::Finisher", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/33b865b3-8e02-4e11-8fd0-e48b6e0a66f0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/33b865b3-8e02-4e11-8fd0-e48b6e0a66f0_default_universal.mp4", "uuid": "b17c1df5-412c-a9bc-fd65-e6afb421b13d" } ], @@ -24749,7 +25691,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 直刀 等級2(幻彩2 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/5a902162-4810-106a-6fc6-87a0318d73d2/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fd579859-431a-07fc-df3a-f996b89cbc7b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fd579859-431a-07fc-df3a-f996b89cbc7b_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/5a902162-4810-106a-6fc6-87a0318d73d2/swatch.png", "uuid": "5a902162-4810-106a-6fc6-87a0318d73d2" }, @@ -24758,7 +25700,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 直刀 等級2(幻彩3 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/05029e79-4c74-85c3-30ee-78ab3179b600/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/feda7ab0-4c93-87be-f3a3-d88b4fdab039_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/feda7ab0-4c93-87be-f3a3-d88b4fdab039_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/05029e79-4c74-85c3-30ee-78ab3179b600/swatch.png", "uuid": "05029e79-4c74-85c3-30ee-78ab3179b600" } @@ -24772,7 +25714,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/a1762ed3-45bf-2dd5-776f-a18a33171e6f/displayicon.png", "displayName": "RGX 11z Pro 直刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ff91070b-4b02-e569-2fa3-41b3eb8cdfde_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ff91070b-4b02-e569-2fa3-41b3eb8cdfde_default_universal.mp4", "uuid": "a1762ed3-45bf-2dd5-776f-a18a33171e6f" }, { @@ -24780,7 +25722,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d67af30b-4b2a-b1e6-3ac2-6aba74b885d4/displayicon.png", "displayName": "RGX 11z Pro 直刀 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/99d27d45-4e1f-75ba-df79-c18f1b610628_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/99d27d45-4e1f-75ba-df79-c18f1b610628_default_universal.mp4", "uuid": "d67af30b-4b2a-b1e6-3ac2-6aba74b885d4" } ], @@ -24805,7 +25747,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/7a68a469-4c7b-1c17-372d-2dbcd50fc114/displayicon.png", "displayName": "RGX 11z Pro 螢光刃 等級2(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/7a68a469-4c7b-1c17-372d-2dbcd50fc114/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/48fd5d34-4c8c-27c5-1fde-e78033747efa_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/48fd5d34-4c8c-27c5-1fde-e78033747efa_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/7a68a469-4c7b-1c17-372d-2dbcd50fc114/swatch.png", "uuid": "7a68a469-4c7b-1c17-372d-2dbcd50fc114" }, @@ -24814,7 +25756,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/adda5898-4c18-582f-b147-478ec1d6c321/displayicon.png", "displayName": "RGX 11z Pro 螢光刃 等級2(幻彩2 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/adda5898-4c18-582f-b147-478ec1d6c321/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bf18845c-4215-b1c9-ca63-e78c709516ba_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bf18845c-4215-b1c9-ca63-e78c709516ba_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/adda5898-4c18-582f-b147-478ec1d6c321/swatch.png", "uuid": "adda5898-4c18-582f-b147-478ec1d6c321" }, @@ -24823,7 +25765,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/2d0c7deb-4f5a-40ea-8fe8-288e060d02c6/displayicon.png", "displayName": "RGX 11z Pro 螢光刃 等級2(幻彩3 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/2d0c7deb-4f5a-40ea-8fe8-288e060d02c6/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5c2df1ef-4780-d7d3-5cd1-46bb06914d86_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5c2df1ef-4780-d7d3-5cd1-46bb06914d86_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/2d0c7deb-4f5a-40ea-8fe8-288e060d02c6/swatch.png", "uuid": "2d0c7deb-4f5a-40ea-8fe8-288e060d02c6" } @@ -24837,7 +25779,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/424ed674-47dd-0488-de93-6cb8e13d0b90/displayicon.png", "displayName": "RGX 11z Pro 螢光刃", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f66d3d18-49cb-14b4-58fb-a2b2010078b4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f66d3d18-49cb-14b4-58fb-a2b2010078b4_default_universal.mp4", "uuid": "424ed674-47dd-0488-de93-6cb8e13d0b90" }, { @@ -24845,7 +25787,7 @@ "displayIcon": null, "displayName": "RGX 11z Pro 螢光刃 等級2", "levelItem": "EEquippableSkinLevelItem::Randomizer", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4d4df3cb-4f64-3bee-db0a-a9b44ae85bcc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4d4df3cb-4f64-3bee-db0a-a9b44ae85bcc_default_universal.mp4", "uuid": "662449ea-4e5e-376a-6482-83b478355047" } ], @@ -24875,7 +25817,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/8e9f610a-41ea-ff48-d102-c7a0e5614c84/displayicon.png", "displayName": "異星獵人 小刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/80106bdf-4ebe-4358-0b94-319d737a4165_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/80106bdf-4ebe-4358-0b94-319d737a4165_default_universal.mp4", "uuid": "8e9f610a-41ea-ff48-d102-c7a0e5614c84" }, { @@ -24883,7 +25825,7 @@ "displayIcon": null, "displayName": "異星獵人 小刀 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ce5aea24-4429-854d-3082-41972e95d9ff_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ce5aea24-4429-854d-3082-41972e95d9ff_default_universal.mp4", "uuid": "ba8b620a-4a51-8ed6-d1a7-cb9a4b3d99bd" } ], @@ -24913,7 +25855,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/6e37a33a-416e-fcc0-ceb8-7784e18fbfe9/displayicon.png", "displayName": "特戰英豪 GO!第1集 小刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0ec7209f-491b-5ed1-7607-528e95079451_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0ec7209f-491b-5ed1-7607-528e95079451_default_universal.mp4", "uuid": "6e37a33a-416e-fcc0-ceb8-7784e18fbfe9" }, { @@ -24921,7 +25863,7 @@ "displayIcon": null, "displayName": "特戰英豪 GO!第1集 小刀 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/df67c322-481b-106f-dcd8-9aa3c190c40d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/df67c322-481b-106f-dcd8-9aa3c190c40d_default_universal.mp4", "uuid": "ec6b04b8-4cd4-5778-7aa9-269c029d8958" } ], @@ -24951,7 +25893,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ec70c8c8-48db-b2dc-ab7d-1d9410b0cfbf/displayicon.png", "displayName": "夜戮的時尚蝴蝶梳", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9eb8aea6-47ac-f18b-063b-0080ae886329_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9eb8aea6-47ac-f18b-063b-0080ae886329_default_universal.mp4", "uuid": "ec70c8c8-48db-b2dc-ab7d-1d9410b0cfbf" }, { @@ -24959,7 +25901,7 @@ "displayIcon": null, "displayName": "夜戮的時尚蝴蝶梳 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1c9c3631-41fc-03fd-3268-259ab9ffef46_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1c9c3631-41fc-03fd-3268-259ab9ffef46_default_universal.mp4", "uuid": "da00cdf4-474d-960b-a011-f29d27403ff0" } ], @@ -24984,7 +25926,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/28c8a960-406a-3459-ff77-a3a1ee0f9bae/displayicon.png", "displayName": "異星霸主 生質收集器 等級2(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/28c8a960-406a-3459-ff77-a3a1ee0f9bae/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5cfd264e-49d5-e426-ab11-72a8cd15c745_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5cfd264e-49d5-e426-ab11-72a8cd15c745_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/28c8a960-406a-3459-ff77-a3a1ee0f9bae/swatch.png", "uuid": "28c8a960-406a-3459-ff77-a3a1ee0f9bae" }, @@ -24993,7 +25935,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/0fb866bc-4ab8-5812-be6f-fda57260075c/displayicon.png", "displayName": "異星霸主 生質收集器 等級2(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/0fb866bc-4ab8-5812-be6f-fda57260075c/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/973c736f-4627-bddc-dafe-82ace0aa9e8d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/973c736f-4627-bddc-dafe-82ace0aa9e8d_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/0fb866bc-4ab8-5812-be6f-fda57260075c/swatch.png", "uuid": "0fb866bc-4ab8-5812-be6f-fda57260075c" }, @@ -25002,7 +25944,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/ec12a28a-486d-f9e4-dfd5-1c8c7f208b39/displayicon.png", "displayName": "異星霸主 生質收集器 等級2(幻彩3 銀色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/ec12a28a-486d-f9e4-dfd5-1c8c7f208b39/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/72e5ec4b-4073-6d83-4ace-4693fafc2ac7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/72e5ec4b-4073-6d83-4ace-4693fafc2ac7_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/ec12a28a-486d-f9e4-dfd5-1c8c7f208b39/swatch.png", "uuid": "ec12a28a-486d-f9e4-dfd5-1c8c7f208b39" } @@ -25016,7 +25958,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4351b2ed-42a1-4d84-804b-2f8d695e5069/displayicon.png", "displayName": "異星霸主 生質收集器", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1d18ca65-481f-6ba0-fe4f-2fa0d4f6a205_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1d18ca65-481f-6ba0-fe4f-2fa0d4f6a205_default_universal.mp4", "uuid": "4351b2ed-42a1-4d84-804b-2f8d695e5069" }, { @@ -25024,7 +25966,7 @@ "displayIcon": null, "displayName": "異星霸主 生質收集器 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/be430dbb-463b-9558-b617-0a95a316abac_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/be430dbb-463b-9558-b617-0a95a316abac_default_universal.mp4", "uuid": "0adbfaf4-4cd0-3688-9d37-ffad95bc36b7" } ], @@ -25054,7 +25996,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/85db497e-4b7d-dd9d-bc09-6d926158ed74/displayicon.png", "displayName": "海洋星球 船錨", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/85af46b5-4216-9ed0-0834-3a846843bbec_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/85af46b5-4216-9ed0-0834-3a846843bbec_default_universal.mp4", "uuid": "85db497e-4b7d-dd9d-bc09-6d926158ed74" }, { @@ -25062,7 +26004,7 @@ "displayIcon": null, "displayName": "海洋星球 船錨 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b8bc4d45-409a-9300-1bc2-008819c90136_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b8bc4d45-409a-9300-1bc2-008819c90136_default_universal.mp4", "uuid": "f7f58211-4a5c-b514-e933-acb5fb77e6b2" } ], @@ -25087,7 +26029,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/fb48ae62-4e5f-60b9-6a81-8084d1cb210d/displayicon.png", "displayName": "蓋亞之怒 等級2(幻彩1 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/fb48ae62-4e5f-60b9-6a81-8084d1cb210d/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5cfd4c3a-4ba8-7a99-85cb-d4a16ad42c56_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5cfd4c3a-4ba8-7a99-85cb-d4a16ad42c56_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/fb48ae62-4e5f-60b9-6a81-8084d1cb210d/swatch.png", "uuid": "fb48ae62-4e5f-60b9-6a81-8084d1cb210d" }, @@ -25096,7 +26038,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/ecc6237b-4110-831b-aaac-f99d913c55ac/displayicon.png", "displayName": "蓋亞之怒 等級2(幻彩2 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/ecc6237b-4110-831b-aaac-f99d913c55ac/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/86d7ef01-4d56-1fb9-e3f9-46800fb22cef_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/86d7ef01-4d56-1fb9-e3f9-46800fb22cef_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/ecc6237b-4110-831b-aaac-f99d913c55ac/swatch.png", "uuid": "ecc6237b-4110-831b-aaac-f99d913c55ac" }, @@ -25105,7 +26047,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/deb72528-49ed-1943-4aed-da9248663a5a/displayicon.png", "displayName": "蓋亞之怒 等級2(幻彩3 橘色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/deb72528-49ed-1943-4aed-da9248663a5a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5840fcb3-4cb5-0eca-6192-0eab3b6f3601_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5840fcb3-4cb5-0eca-6192-0eab3b6f3601_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/deb72528-49ed-1943-4aed-da9248663a5a/swatch.png", "uuid": "deb72528-49ed-1943-4aed-da9248663a5a" } @@ -25119,7 +26061,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f353f65b-4764-cfc5-df01-8db85ab28199/displayicon.png", "displayName": "蓋亞之怒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2139554a-4c63-e62c-95a5-bba519e6cb6f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2139554a-4c63-e62c-95a5-bba519e6cb6f_default_universal.mp4", "uuid": "f353f65b-4764-cfc5-df01-8db85ab28199" }, { @@ -25127,7 +26069,7 @@ "displayIcon": null, "displayName": "蓋亞之怒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/33b39794-4bc4-b6c5-c4dc-a1859fb944a9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/33b39794-4bc4-b6c5-c4dc-a1859fb944a9_default_universal.mp4", "uuid": "9d399e15-452f-1880-9cc1-c79b04c862fe" } ], @@ -25152,7 +26094,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/f40de922-416b-0d36-49e5-0ebe10332f9a/displayicon.png", "displayName": "聲波刃 等級2\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/f40de922-416b-0d36-49e5-0ebe10332f9a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a592ed45-439c-925f-464a-ff8ff3e67c94_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a592ed45-439c-925f-464a-ff8ff3e67c94_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/f40de922-416b-0d36-49e5-0ebe10332f9a/swatch.png", "uuid": "f40de922-416b-0d36-49e5-0ebe10332f9a" }, @@ -25161,7 +26103,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/4f97d9b1-4359-6655-64e3-5cbf2707db71/displayicon.png", "displayName": "聲波刃 等級2\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/4f97d9b1-4359-6655-64e3-5cbf2707db71/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2b3cad09-4594-f01a-41ce-34b90371abc7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2b3cad09-4594-f01a-41ce-34b90371abc7_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/4f97d9b1-4359-6655-64e3-5cbf2707db71/swatch.png", "uuid": "4f97d9b1-4359-6655-64e3-5cbf2707db71" }, @@ -25170,7 +26112,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/69f35d1a-486c-dd5a-4989-b7ba11cdadf5/displayicon.png", "displayName": "聲波刃 等級2\n(幻彩3 紫/粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/69f35d1a-486c-dd5a-4989-b7ba11cdadf5/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b5c454ea-4035-0521-3c82-fbad2b64d30d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b5c454ea-4035-0521-3c82-fbad2b64d30d_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/69f35d1a-486c-dd5a-4989-b7ba11cdadf5/swatch.png", "uuid": "69f35d1a-486c-dd5a-4989-b7ba11cdadf5" } @@ -25184,7 +26126,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f58e7da3-4567-707f-cb1e-3a9add422481/displayicon.png", "displayName": "聲波刃", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b88115b3-44b1-57cc-114f-029769c9d0e6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b88115b3-44b1-57cc-114f-029769c9d0e6_default_universal.mp4", "uuid": "f58e7da3-4567-707f-cb1e-3a9add422481" }, { @@ -25192,7 +26134,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/fe57fe97-4b0b-4a97-3050-2eb0a236f564/displayicon.png", "displayName": "聲波刃 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7434b0ee-48a0-662d-bacf-b9a0d890e0e7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7434b0ee-48a0-662d-bacf-b9a0d890e0e7_default_universal.mp4", "uuid": "fe57fe97-4b0b-4a97-3050-2eb0a236f564" } ], @@ -25252,7 +26194,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/470e2855-4b86-f62d-258f-4588056a7b23/displayicon.png", "displayName": "2021冠軍賽 爪刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/11fbf057-4414-bae2-2bf4-ad8106208f80_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/11fbf057-4414-bae2-2bf4-ad8106208f80_default_universal.mp4", "uuid": "470e2855-4b86-f62d-258f-4588056a7b23" }, { @@ -25260,7 +26202,7 @@ "displayIcon": null, "displayName": "2021冠軍賽 爪刀 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/01ec485a-41cc-3fa0-b6ba-008f46312d7d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/01ec485a-41cc-3fa0-b6ba-008f46312d7d_default_universal.mp4", "uuid": "5f991913-44c1-ba78-9547-5d8de87f04c2" }, { @@ -25268,7 +26210,7 @@ "displayIcon": null, "displayName": "2021冠軍賽 爪刀 等級3(在對戰中取得最多擊殺時才會顯示光環)", "levelItem": "EEquippableSkinLevelItem::TopFrag", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2cce17cf-44e8-d2a1-2db5-3b9191811706_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2cce17cf-44e8-d2a1-2db5-3b9191811706_default_universal.mp4", "uuid": "250ff684-42e9-108d-4722-a9a3ac8733e6" } ], @@ -25298,7 +26240,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ba0abff4-41e4-4036-980d-90a55837b692/displayicon.png", "displayName": "2022冠軍賽 蝴蝶刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8d174848-4fdf-b0c7-5e9a-faa2b7078808_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8d174848-4fdf-b0c7-5e9a-faa2b7078808_default_universal.mp4", "uuid": "ba0abff4-41e4-4036-980d-90a55837b692" }, { @@ -25306,7 +26248,7 @@ "displayIcon": null, "displayName": "2022冠軍賽 蝴蝶刀 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/93862f67-4d2b-b281-6787-30a3d0916240_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/93862f67-4d2b-b281-6787-30a3d0916240_default_universal.mp4", "uuid": "08caa8e3-47a6-e8b9-2411-56ad2182a140" }, { @@ -25314,7 +26256,7 @@ "displayIcon": null, "displayName": "2022冠軍賽 蝴蝶刀 等級3(在對戰中取得最多擊殺時才會顯示光環)", "levelItem": "EEquippableSkinLevelItem::TopFrag", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f942ef06-4391-7d35-3519-a5bbc5111a70_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f942ef06-4391-7d35-3519-a5bbc5111a70_default_universal.mp4", "uuid": "781ee669-4036-0481-c1a5-1881df718881" } ], @@ -25344,7 +26286,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5f059d7e-413c-445c-e36f-9a9791fba5b0/displayicon.png", "displayName": "起源 半月刃", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9584f283-4072-c4ad-fee2-39bcb1fb1234_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9584f283-4072-c4ad-fee2-39bcb1fb1234_default_universal.mp4", "uuid": "5f059d7e-413c-445c-e36f-9a9791fba5b0" }, { @@ -25352,7 +26294,7 @@ "displayIcon": null, "displayName": "起源 半月刃 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/89c0ca79-4a26-5f10-1b44-b9aef4700787_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/89c0ca79-4a26-5f10-1b44-b9aef4700787_default_universal.mp4", "uuid": "2bca8df3-4e1f-bdd4-9a33-8bbc51c2cfb7" } ], @@ -25439,7 +26381,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/30de237a-4fb3-90f5-3630-65be64d01423/displayicon.png", "displayName": "輻能危機001 球棒", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fe1e8b71-4fef-da39-aff8-e187654f4a6d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fe1e8b71-4fef-da39-aff8-e187654f4a6d_default_universal.mp4", "uuid": "30de237a-4fb3-90f5-3630-65be64d01423" }, { @@ -25447,7 +26389,7 @@ "displayIcon": null, "displayName": "輻能危機001 球棒 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/77983946-4d4e-ec11-ec55-73a6f05d4384_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/77983946-4d4e-ec11-ec55-73a6f05d4384_default_universal.mp4", "uuid": "11a7dfd4-4fc9-a806-6b20-fda57c1aa331" } ], @@ -25507,7 +26449,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4875e120-4d7d-aa2a-71c5-c0851c4af00d/displayicon.png", "displayName": "銳斧", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ce351725-4822-6403-fd97-54af6aa7728d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ce351725-4822-6403-fd97-54af6aa7728d_default_universal.mp4", "uuid": "4875e120-4d7d-aa2a-71c5-c0851c4af00d" }, { @@ -25515,7 +26457,7 @@ "displayIcon": null, "displayName": "銳斧與刺刀", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e1708e74-41fe-1b8c-99b5-3285ff3237e4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e1708e74-41fe-1b8c-99b5-3285ff3237e4_default_universal.mp4", "uuid": "bde59d0e-4ddc-aa88-5c37-50a84673e0ed" } ], @@ -25545,7 +26487,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/48ce4a70-4207-623b-4739-bfb937812432/displayicon.png", "displayName": "電幻普普 匕首", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/87e9e556-41a8-401d-a87f-69b65162d0ba_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/87e9e556-41a8-401d-a87f-69b65162d0ba_default_universal.mp4", "uuid": "48ce4a70-4207-623b-4739-bfb937812432" }, { @@ -25553,7 +26495,7 @@ "displayIcon": null, "displayName": "電幻普普 匕首 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/dc77ebf0-b868-421d-b182-a71ea5c7429e_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/dc77ebf0-b868-421d-b182-a71ea5c7429e_default_universal.mp4", "uuid": "29bd8b5b-4d19-b6af-70c3-4797c0482e1c" } ], @@ -25583,7 +26525,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f27623a6-40de-20b9-17b5-c5bed27453a7/displayicon.png", "displayName": "電幻普普 戰斧", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c1091b0b-48e6-c851-8b5b-728f535082d5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c1091b0b-48e6-c851-8b5b-728f535082d5_default_universal.mp4", "uuid": "f27623a6-40de-20b9-17b5-c5bed27453a7" }, { @@ -25591,7 +26533,7 @@ "displayIcon": null, "displayName": "電幻普普 戰斧 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e02cc920-465e-3f1c-b0cf-2e9e79cbdcaa_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e02cc920-465e-3f1c-b0cf-2e9e79cbdcaa_default_universal.mp4", "uuid": "3d6a7e42-4f6b-ee22-fa38-6cb370c93943" } ], @@ -25616,7 +26558,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/e07b0750-4eb5-c92c-f863-838f159ac23e/displayicon.png", "displayName": "初始時界 等級2\n(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/e07b0750-4eb5-c92c-f863-838f159ac23e/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0915983e-411b-6042-6f8e-459f9ab780e7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0915983e-411b-6042-6f8e-459f9ab780e7_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/e07b0750-4eb5-c92c-f863-838f159ac23e/swatch.png", "uuid": "e07b0750-4eb5-c92c-f863-838f159ac23e" }, @@ -25625,7 +26567,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/8d257fcd-4fd0-a428-2566-a0b8b3332ac7/displayicon.png", "displayName": "初始時界 等級2\n(幻彩2 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/8d257fcd-4fd0-a428-2566-a0b8b3332ac7/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/44e2d567-44e3-245d-8f1f-caa076df2431_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/44e2d567-44e3-245d-8f1f-caa076df2431_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/8d257fcd-4fd0-a428-2566-a0b8b3332ac7/swatch.png", "uuid": "8d257fcd-4fd0-a428-2566-a0b8b3332ac7" }, @@ -25634,7 +26576,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/3c8953f2-4c99-0dbd-e06b-0abfadd5ec99/displayicon.png", "displayName": "初始時界 等級2\n(幻彩3 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/3c8953f2-4c99-0dbd-e06b-0abfadd5ec99/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/30e7ef67-492a-2034-9272-79be63de9b15_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/30e7ef67-492a-2034-9272-79be63de9b15_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/3c8953f2-4c99-0dbd-e06b-0abfadd5ec99/swatch.png", "uuid": "3c8953f2-4c99-0dbd-e06b-0abfadd5ec99" } @@ -25648,7 +26590,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/96fe45cd-448d-890f-f3f6-86b25516c1a0/displayicon.png", "displayName": "初始時界", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e11a0639-47f9-132b-2309-84abb385fb5d_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e11a0639-47f9-132b-2309-84abb385fb5d_default_universal.mp4", "uuid": "96fe45cd-448d-890f-f3f6-86b25516c1a0" }, { @@ -25656,7 +26598,7 @@ "displayIcon": null, "displayName": "初始時界 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4aa5a6ce-4dcc-7754-3f8c-c883e6c3ce7b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4aa5a6ce-4dcc-7754-3f8c-c883e6c3ce7b_default_universal.mp4", "uuid": "4840c1fc-4570-d487-1dff-68977a0d6e67" } ], @@ -25711,7 +26653,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/7e655ee7-4cc3-c281-d498-8181d0071f4a/displayicon.png", "displayName": "混沌大劍 等級2\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/7e655ee7-4cc3-c281-d498-8181d0071f4a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/900f08c9-4cf6-c269-b183-40b79e5cba87_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/900f08c9-4cf6-c269-b183-40b79e5cba87_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/7e655ee7-4cc3-c281-d498-8181d0071f4a/swatch.png", "uuid": "7e655ee7-4cc3-c281-d498-8181d0071f4a" }, @@ -25720,7 +26662,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/62bed7a0-4e84-a226-bef1-e1a774b0946f/displayicon.png", "displayName": "混沌大劍 等級2\n(幻彩2 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/62bed7a0-4e84-a226-bef1-e1a774b0946f/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b8ef5a7d-460c-9c29-a2da-1d80f95b19e9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b8ef5a7d-460c-9c29-a2da-1d80f95b19e9_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/62bed7a0-4e84-a226-bef1-e1a774b0946f/swatch.png", "uuid": "62bed7a0-4e84-a226-bef1-e1a774b0946f" }, @@ -25729,7 +26671,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/485f20ad-4390-fcbb-b755-68a95facfed5/displayicon.png", "displayName": "混沌大劍 等級2\n(幻彩3 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/485f20ad-4390-fcbb-b755-68a95facfed5/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/478e0cc0-4f8e-5c22-f1ad-0ab1296b9b94_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/478e0cc0-4f8e-5c22-f1ad-0ab1296b9b94_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/485f20ad-4390-fcbb-b755-68a95facfed5/swatch.png", "uuid": "485f20ad-4390-fcbb-b755-68a95facfed5" } @@ -25743,7 +26685,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d6b75f1b-409b-bae9-d378-d3adf04a3ca9/displayicon.png", "displayName": "混沌大劍", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b9a92f2d-4a2a-16ed-82d9-caafe5d64854_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b9a92f2d-4a2a-16ed-82d9-caafe5d64854_default_universal.mp4", "uuid": "d6b75f1b-409b-bae9-d378-d3adf04a3ca9" }, { @@ -25751,7 +26693,7 @@ "displayIcon": null, "displayName": "混沌大劍 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f9b811b9-41eb-ec9f-a882-46b716a98fcf_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f9b811b9-41eb-ec9f-a882-46b716a98fcf_default_universal.mp4", "uuid": "02f5a8ee-4f2f-cc11-f59c-a0bf0c488ee6" } ], @@ -25781,7 +26723,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/f3594bcc-43a9-4a74-8c40-98a4e4a4569a/displayicon.png", "displayName": "至尊龍燄 匕首", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/282c7f4a-bc4f-424a-a40d-b87ac5210ba9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/282c7f4a-bc4f-424a-a40d-b87ac5210ba9_default_universal.mp4", "uuid": "f3594bcc-43a9-4a74-8c40-98a4e4a4569a" }, { @@ -25789,7 +26731,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ef028ac5-40a2-bc8e-582b-c4abf4ed0ef3/displayicon.png", "displayName": "至尊龍燄 匕首 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/97510dc2-457c-4b55-8737-14646b3e05e9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/97510dc2-457c-4b55-8737-14646b3e05e9_default_universal.mp4", "uuid": "ef028ac5-40a2-bc8e-582b-c4abf4ed0ef3" } ], @@ -25819,7 +26761,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ea441610-42da-e46f-8d7b-1b9759c105cd/displayicon.png", "displayName": "奇點 小刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/758a25ed-43d8-ee80-bd15-1bba89d9d6c0_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/758a25ed-43d8-ee80-bd15-1bba89d9d6c0_default_universal.mp4", "uuid": "ea441610-42da-e46f-8d7b-1b9759c105cd" }, { @@ -25827,7 +26769,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/34cdb942-4829-edbf-63ce-bfb3d993bdd1/displayicon.png", "displayName": "奇點 小刀 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/290a2831-4bf2-1044-6377-ccbc6caa84dc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/290a2831-4bf2-1044-6377-ccbc6caa84dc_default_universal.mp4", "uuid": "34cdb942-4829-edbf-63ce-bfb3d993bdd1" } ], @@ -25857,7 +26799,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ed0080a9-4d77-d279-5a5c-f2bdb630307d/displayicon.png", "displayName": "蠍女神之刃", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0e03c9ca-438a-3dbf-5094-fabed5f4db5c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0e03c9ca-438a-3dbf-5094-fabed5f4db5c_default_universal.mp4", "uuid": "ed0080a9-4d77-d279-5a5c-f2bdb630307d" }, { @@ -25865,7 +26807,7 @@ "displayIcon": null, "displayName": "蠍女神之刃 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/cad6a892-4ad9-604a-3a2c-83aef3a09660_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/cad6a892-4ad9-604a-3a2c-83aef3a09660_default_universal.mp4", "uuid": "a58b52ec-454d-1222-289b-6398e704c18f" } ], @@ -25903,6 +26845,79 @@ "uuid": "45129867-4977-e2a5-bead-cb828101b623", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Esportsinvitational/Melee_Esportsinvitational_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Esportsinvitational/Chromas/Standard/Melee_Esportsinvitational_Standard_PrimaryAsset", + "displayIcon": null, + "displayName": "VCT LOCK//IN 憐憫之刃", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/465c23f5-457b-e7ea-a59a-23993c087581/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/465c23f5-457b-e7ea-a59a-23993c087581/swatch.png", + "uuid": "465c23f5-457b-e7ea-a59a-23993c087581" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Esportsinvitational/Chromas/v1/Melee_Esportsinvitational_v1_PrimaryAsset", + "displayIcon": null, + "displayName": "VCT LOCK//IN 憐憫之刃 等級3\n(幻彩1 太平洋)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/b997c0f0-48d9-c9e8-3fc1-cb8dfa6d0099/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f88a95e7-4ccd-c232-68f1-64a5e18b5a60_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/b997c0f0-48d9-c9e8-3fc1-cb8dfa6d0099/swatch.png", + "uuid": "b997c0f0-48d9-c9e8-3fc1-cb8dfa6d0099" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Esportsinvitational/Chromas/v2/Melee_Esportsinvitational_v2_PrimaryAsset", + "displayIcon": null, + "displayName": "VCT LOCK//IN 憐憫之刃 等級3\n(幻彩2 美洲)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/95e70f20-49af-d039-a466-4aae151cb993/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2a7c4e8c-4ebb-30a1-bca6-ab93f84d8624_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/95e70f20-49af-d039-a466-4aae151cb993/swatch.png", + "uuid": "95e70f20-49af-d039-a466-4aae151cb993" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Esportsinvitational/Chromas/v3/Melee_Esportsinvitational_v3_PrimaryAsset", + "displayIcon": null, + "displayName": "VCT LOCK//IN 憐憫之刃 等級3\n(幻彩3 歐非洲中東)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/c7c15414-48b9-d98a-41a4-fd894cae5200/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4ccdab73-42a2-38c4-7f5e-eebced06ddb9_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/c7c15414-48b9-d98a-41a4-fd894cae5200/swatch.png", + "uuid": "c7c15414-48b9-d98a-41a4-fd894cae5200" + } + ], + "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", + "displayIcon": "https://media.valorant-api.com/weaponskins/9a98f7dd-426c-603e-0569-e9b317c25ee4/displayicon.png", + "displayName": "VCT LOCK//IN 憐憫之刃", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Esportsinvitational/Levels/Melee_Esportsinvitational_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/e98461ab-4e29-3bbe-513b-0b82f3013050/displayicon.png", + "displayName": "VCT LOCK//IN 憐憫之刃", + "levelItem": null, + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/07adb54f-4b0e-5039-e1b9-819b8f489ade_default_universal.mp4", + "uuid": "e98461ab-4e29-3bbe-513b-0b82f3013050" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Esportsinvitational/Levels/Melee_Esportsinvitational_Lv2_PrimaryAsset", + "displayIcon": null, + "displayName": "VCT LOCK//IN 憐憫之刃 等級2", + "levelItem": "EEquippableSkinLevelItem::Animation", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/cf7566a9-4df7-ca7b-116b-0b801ce0698a_default_universal.mp4", + "uuid": "210e40cd-4537-a726-b181-86a61842ebb4" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Esportsinvitational/Levels/Melee_Esportsinvitational_Lv3_PrimaryAsset", + "displayIcon": null, + "displayName": "VCT LOCK//IN 憐憫之刃 等級3(在對戰中取得最多擊殺時才會顯示光環)", + "levelItem": "EEquippableSkinLevelItem::TopFrag", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2cbac4da-4026-3113-41a7-f1b006eb4066_default_universal.mp4", + "uuid": "ccd02c8f-4790-0e6a-d304-dbab5f211f27" + } + ], + "themeUuid": "424c4bea-4cd0-85ac-49d2-0db4da1c4835", + "uuid": "9a98f7dd-426c-603e-0569-e9b317c25ee4", + "wallpaper": "https://media.valorant-api.com/weaponskins/9a98f7dd-426c-603e-0569-e9b317c25ee4/wallpaper.png" + }, { "assetPath": "ShooterGame/Content/Equippables/Melee/Exo/Melee_Exo_PrimaryAsset", "chromas": [ @@ -25985,7 +27000,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5fecfd43-4bec-4e6a-842c-84860853df82/displayicon.png", "displayName": "棄王遺思 儀式刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e4e73515-4cfb-ef0e-5cdb-4ba9fb7e0803_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e4e73515-4cfb-ef0e-5cdb-4ba9fb7e0803_default_universal.mp4", "uuid": "5fecfd43-4bec-4e6a-842c-84860853df82" }, { @@ -25993,7 +27008,7 @@ "displayIcon": null, "displayName": "棄王遺思 儀式刀 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/47072458-486f-d4b4-2931-ebadbd98c094_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/47072458-486f-d4b4-2931-ebadbd98c094_default_universal.mp4", "uuid": "a4d6c040-49cb-bb04-b9c1-879d0037132c" } ], @@ -26050,7 +27065,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c01062ab-48ed-11a2-46bb-dba096daca59/displayicon.png", "displayName": "極速狂飆 爪刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4835719d-4d25-53f1-8332-b39e3f8f6c4f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4835719d-4d25-53f1-8332-b39e3f8f6c4f_default_universal.mp4", "uuid": "c01062ab-48ed-11a2-46bb-dba096daca59" } ], @@ -26140,7 +27155,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/656c5de8-47ca-4eeb-6051-c9aabbf37baa/displayicon.png", "displayName": "靈爭鬪魂 鐮刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8712b7b4-46cf-f920-6c27-b0947a7033d4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8712b7b4-46cf-f920-6c27-b0947a7033d4_default_universal.mp4", "uuid": "656c5de8-47ca-4eeb-6051-c9aabbf37baa" }, { @@ -26148,7 +27163,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/67761e2f-4ce9-edd9-683f-1fa1ab5d5761/displayicon.png", "displayName": "靈爭鬪魂 鐮刀 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a29a00e1-4620-467c-0bdf-009b70a05d68_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a29a00e1-4620-467c-0bdf-009b70a05d68_default_universal.mp4", "uuid": "67761e2f-4ce9-edd9-683f-1fa1ab5d5761" } ], @@ -26178,7 +27193,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/249b0e46-4a11-f045-51bb-649151cd802a/displayicon.png", "displayName": "紫金狂潮 戰斧", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/aefe0720-5997-4a4e-8b6c-56a0d00573eb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/aefe0720-5997-4a4e-8b6c-56a0d00573eb_default_universal.mp4", "uuid": "249b0e46-4a11-f045-51bb-649151cd802a" }, { @@ -26186,7 +27201,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/df1ace24-4acb-e615-24eb-6e95b7e44dc5/displayicon.png", "displayName": "紫金狂潮 戰斧 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/316137d8-1ce8-4f00-9ee5-97d3df6561de_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/316137d8-1ce8-4f00-9ee5-97d3df6561de_default_universal.mp4", "uuid": "df1ace24-4acb-e615-24eb-6e95b7e44dc5" } ], @@ -26216,7 +27231,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/167481de-4732-b44a-06ad-938625015abe/displayicon.png", "displayName": "紫金狂潮//2.0 爪刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4835719d-4d25-53f1-8332-b39e3f8f6c4f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4835719d-4d25-53f1-8332-b39e3f8f6c4f_default_universal.mp4", "uuid": "167481de-4732-b44a-06ad-938625015abe" }, { @@ -26224,7 +27239,7 @@ "displayIcon": null, "displayName": "紫金狂潮//2.0 爪刀 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2d63e78b-40ae-51b9-6723-42bad49357ff_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2d63e78b-40ae-51b9-6723-42bad49357ff_default_universal.mp4", "uuid": "a3c2dd26-4705-8e42-cce1-6bae0236ac7a" } ], @@ -26366,7 +27381,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/be97a416-46fe-1539-4bd7-8e9c54f1938b/displayicon.png", "displayName": "殞落王者之劍(幻彩1 紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/be97a416-46fe-1539-4bd7-8e9c54f1938b/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/edfd16d7-45da-74c6-df83-7fa23c923fbb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/edfd16d7-45da-74c6-df83-7fa23c923fbb_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/be97a416-46fe-1539-4bd7-8e9c54f1938b/swatch.png", "uuid": "be97a416-46fe-1539-4bd7-8e9c54f1938b" }, @@ -26375,7 +27390,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/fda6f206-4741-88fe-cc2a-3eb3233d5328/displayicon.png", "displayName": "殞落王者之劍(幻彩2 紅/黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/fda6f206-4741-88fe-cc2a-3eb3233d5328/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/beb6ceb8-4545-1b86-681d-0c92a584da30_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/beb6ceb8-4545-1b86-681d-0c92a584da30_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/fda6f206-4741-88fe-cc2a-3eb3233d5328/swatch.png", "uuid": "fda6f206-4741-88fe-cc2a-3eb3233d5328" }, @@ -26384,7 +27399,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/dc3845ca-46a1-7501-6b6b-f9b905e3cf44/displayicon.png", "displayName": "殞落王者之劍(幻彩3 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/dc3845ca-46a1-7501-6b6b-f9b905e3cf44/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5046c283-4d3a-73ca-304e-59a958472496_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5046c283-4d3a-73ca-304e-59a958472496_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/dc3845ca-46a1-7501-6b6b-f9b905e3cf44/swatch.png", "uuid": "dc3845ca-46a1-7501-6b6b-f9b905e3cf44" } @@ -26398,7 +27413,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/e94012b1-4a22-63d2-117e-90a2c1375ded/displayicon.png", "displayName": "殞落王者斷刃", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/624d6227-4677-0d94-c1be-77ac8d3169ed_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/624d6227-4677-0d94-c1be-77ac8d3169ed_default_universal.mp4", "uuid": "e94012b1-4a22-63d2-117e-90a2c1375ded" }, { @@ -26406,7 +27421,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d0b5fbd7-43ef-d2bc-80ca-66b23c7a1d47/displayicon.png", "displayName": "殞落王者之劍", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/18150402-492c-b2f2-5207-a28b45b9b2c9_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/18150402-492c-b2f2-5207-a28b45b9b2c9_default_universal.mp4", "uuid": "d0b5fbd7-43ef-d2bc-80ca-66b23c7a1d47" } ], @@ -26491,7 +27506,7 @@ "displayIcon": null, "displayName": "太極扇 等級2\n(幻彩1 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/f6eb564b-4b08-ad4c-6704-42bf4e91453e/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/8a360856-412c-d772-c116-ca92aed3d809_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/8a360856-412c-d772-c116-ca92aed3d809_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/f6eb564b-4b08-ad4c-6704-42bf4e91453e/swatch.png", "uuid": "f6eb564b-4b08-ad4c-6704-42bf4e91453e" } @@ -26505,7 +27520,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/ef67d6cb-4f7f-28ce-2973-cf90a97ae54d/displayicon.png", "displayName": "太極扇", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7d2d392a-4b3f-7cea-3573-ffaf12b25589_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7d2d392a-4b3f-7cea-3573-ffaf12b25589_default_universal.mp4", "uuid": "ef67d6cb-4f7f-28ce-2973-cf90a97ae54d" }, { @@ -26513,7 +27528,7 @@ "displayIcon": null, "displayName": "太極扇 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/229677bc-44b5-4896-131e-8097518dd336_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/229677bc-44b5-4896-131e-8097518dd336_default_universal.mp4", "uuid": "99a21016-41bf-2dfe-43e6-6f9ffe50d8c0" } ], @@ -26568,7 +27583,7 @@ "displayIcon": null, "displayName": "卡特里娜\n(幻彩1 此生)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/bf7eb630-4852-01fe-fde4-689bd889a2e9/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/483c13e9-444d-42d2-8700-2a987d9ba91f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/483c13e9-444d-42d2-8700-2a987d9ba91f_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/bf7eb630-4852-01fe-fde4-689bd889a2e9/swatch.png", "uuid": "bf7eb630-4852-01fe-fde4-689bd889a2e9" }, @@ -26577,7 +27592,7 @@ "displayIcon": null, "displayName": "卡特里娜\n(幻彩2 永恆)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/d32d79d4-4308-c3a1-d9c7-5d87d33d4e12/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e351dd98-4061-4aee-bbdb-278ec60e5804_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e351dd98-4061-4aee-bbdb-278ec60e5804_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/d32d79d4-4308-c3a1-d9c7-5d87d33d4e12/swatch.png", "uuid": "d32d79d4-4308-c3a1-d9c7-5d87d33d4e12" } @@ -26591,7 +27606,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/dc5e3cfc-466a-4819-e93b-2ba5f1847915/displayicon.png", "displayName": "卡特里娜", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/20047269-4a1a-7c0c-bca2-f5a1010fdfa2_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/20047269-4a1a-7c0c-bca2-f5a1010fdfa2_default_universal.mp4", "uuid": "dc5e3cfc-466a-4819-e93b-2ba5f1847915" } ], @@ -26651,7 +27666,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/7302d465-46cd-2a43-655f-93aee59030db/displayicon.png", "displayName": "天月耀春 摺扇", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5cee5980-4015-b99a-db3b-b68b7943265f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5cee5980-4015-b99a-db3b-b68b7943265f_default_universal.mp4", "uuid": "7302d465-46cd-2a43-655f-93aee59030db" }, { @@ -26659,7 +27674,7 @@ "displayIcon": null, "displayName": "天月耀春 摺扇 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0fce6b0c-4162-6b5b-d4a7-bc8adb193f91_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0fce6b0c-4162-6b5b-d4a7-bc8adb193f91_default_universal.mp4", "uuid": "ee4add11-4b78-250e-742a-fcbeca66ab05" } ], @@ -26746,7 +27761,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c1326ee3-47af-d823-6686-618e1bcdf0c6/displayicon.png", "displayName": "奇幻龐克 電漿劍", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f7d3d3fd-4cd6-ba57-27e2-c6b5164e41e7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f7d3d3fd-4cd6-ba57-27e2-c6b5164e41e7_default_universal.mp4", "uuid": "c1326ee3-47af-d823-6686-618e1bcdf0c6" }, { @@ -26754,7 +27769,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/aec017e4-4500-acbf-56a5-b58ba2028e53/displayicon.png", "displayName": "奇幻龐克 電漿劍 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5faa6862-4e69-4b82-c084-559d059529fd_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5faa6862-4e69-4b82-c084-559d059529fd_default_universal.mp4", "uuid": "aec017e4-4500-acbf-56a5-b58ba2028e53" } ], @@ -26779,7 +27794,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/fb8aab57-4976-8a4a-f262-c194f6029714/displayicon.png", "displayName": "奇幻龐克 電氣拳套 等級2(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/fb8aab57-4976-8a4a-f262-c194f6029714/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f61aaf70-4bda-2c52-13aa-c98670e0b772_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f61aaf70-4bda-2c52-13aa-c98670e0b772_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/fb8aab57-4976-8a4a-f262-c194f6029714/swatch.png", "uuid": "fb8aab57-4976-8a4a-f262-c194f6029714" }, @@ -26788,7 +27803,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c67186ec-423c-f3bb-8a9f-fa8e73bcd6c3/displayicon.png", "displayName": "奇幻龐克 電氣拳套 等級2(幻彩2 粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/c67186ec-423c-f3bb-8a9f-fa8e73bcd6c3/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/2b599f70-488a-59a5-8639-819a296448e8_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/2b599f70-488a-59a5-8639-819a296448e8_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/c67186ec-423c-f3bb-8a9f-fa8e73bcd6c3/swatch.png", "uuid": "c67186ec-423c-f3bb-8a9f-fa8e73bcd6c3" }, @@ -26797,7 +27812,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/2b032d73-4916-ea28-8692-84a66f231208/displayicon.png", "displayName": "奇幻龐克 電氣拳套 等級2(幻彩3 橘色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/2b032d73-4916-ea28-8692-84a66f231208/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/d9b10112-4414-4c02-6f5e-66b1e69ea289_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/d9b10112-4414-4c02-6f5e-66b1e69ea289_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/2b032d73-4916-ea28-8692-84a66f231208/swatch.png", "uuid": "2b032d73-4916-ea28-8692-84a66f231208" } @@ -26811,7 +27826,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/c5ec6a47-40c2-66ed-d546-5bad1eef6fd5/displayicon.png", "displayName": "奇幻龐克 電氣拳套", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3d0c44b3-4679-ae4e-0de5-a8ae123f790f_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3d0c44b3-4679-ae4e-0de5-a8ae123f790f_default_universal.mp4", "uuid": "c5ec6a47-40c2-66ed-d546-5bad1eef6fd5" }, { @@ -26819,7 +27834,7 @@ "displayIcon": null, "displayName": "奇幻龐克 電氣拳套 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/69cfd3b9-4838-7d61-83ba-9c879ec889f4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/69cfd3b9-4838-7d61-83ba-9c879ec889f4_default_universal.mp4", "uuid": "4379ef43-451a-a1eb-7c69-919abaff068b" } ], @@ -26879,7 +27894,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5a27fbea-4f1d-62f9-8e5f-f494b4f0d322/displayicon.png", "displayName": "紅蓮猛獸 戰鎚", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a51726ba-4b4e-1c9a-4a68-529d27f95e18_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a51726ba-4b4e-1c9a-4a68-529d27f95e18_default_universal.mp4", "uuid": "5a27fbea-4f1d-62f9-8e5f-f494b4f0d322" }, { @@ -26887,7 +27902,7 @@ "displayIcon": null, "displayName": "紅蓮猛獸 戰鎚 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e75db9e9-4312-c2ab-3388-f9b028495f13_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e75db9e9-4312-c2ab-3388-f9b028495f13_default_universal.mp4", "uuid": "ba4bb49f-4494-4698-8d5f-e5952c92604b" } ], @@ -26947,7 +27962,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/21ceb4b1-480f-dddb-1422-8aad73519181/displayicon.png", "displayName": "離子聖芒 能量劍", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c5eb2a6a-4afd-10c0-2ed0-3dbf6e0f4c52_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c5eb2a6a-4afd-10c0-2ed0-3dbf6e0f4c52_default_universal.mp4", "uuid": "21ceb4b1-480f-dddb-1422-8aad73519181" }, { @@ -26955,7 +27970,7 @@ "displayIcon": null, "displayName": "離子聖芒 能量劍 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/29bd96f7-4a83-8956-5f40-d0839a20edb1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/29bd96f7-4a83-8956-5f40-d0839a20edb1_default_universal.mp4", "uuid": "24a079a6-4194-0008-bd1c-a980889bb912" } ], @@ -26980,7 +27995,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/4d6f6fa7-4848-718f-801f-6a9077d8cee2/displayicon.png", "displayName": "離子聖芒 爪刀 等級2\n(幻彩1 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/4d6f6fa7-4848-718f-801f-6a9077d8cee2/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ccd85ba8-4574-4f92-afc7-58b6ce018f3a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ccd85ba8-4574-4f92-afc7-58b6ce018f3a_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/4d6f6fa7-4848-718f-801f-6a9077d8cee2/swatch.png", "uuid": "4d6f6fa7-4848-718f-801f-6a9077d8cee2" }, @@ -26989,7 +28004,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/c8642bb8-454d-5768-03c6-4fbc46c678c3/displayicon.png", "displayName": "離子聖芒 爪刀 等級2\n(幻彩2 黃色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/c8642bb8-454d-5768-03c6-4fbc46c678c3/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/fd0272e9-40d4-c4f1-189f-b18a0aaaed04_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/fd0272e9-40d4-c4f1-189f-b18a0aaaed04_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/c8642bb8-454d-5768-03c6-4fbc46c678c3/swatch.png", "uuid": "c8642bb8-454d-5768-03c6-4fbc46c678c3" }, @@ -26998,7 +28013,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/2798ecd0-4c79-44d2-18e0-858c98a86c70/displayicon.png", "displayName": "離子聖芒 爪刀 等級2\n(幻彩3 藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/2798ecd0-4c79-44d2-18e0-858c98a86c70/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/369f7f1a-4aee-0aa1-4d55-a1870964b6e7_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/369f7f1a-4aee-0aa1-4d55-a1870964b6e7_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/2798ecd0-4c79-44d2-18e0-858c98a86c70/swatch.png", "uuid": "2798ecd0-4c79-44d2-18e0-858c98a86c70" } @@ -27012,7 +28027,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/a45e899f-459d-469b-dc8f-8da5c0546bf0/displayicon.png", "displayName": "離子聖芒 爪刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/022faca3-4abc-ea62-a399-f081cd3a857b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/022faca3-4abc-ea62-a399-f081cd3a857b_default_universal.mp4", "uuid": "a45e899f-459d-469b-dc8f-8da5c0546bf0" }, { @@ -27020,7 +28035,7 @@ "displayIcon": null, "displayName": "離子聖芒 爪刀 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/069f2b46-4fb3-ba92-1739-779c9c1a538a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/069f2b46-4fb3-ba92-1739-779c9c1a538a_default_universal.mp4", "uuid": "4b418533-4b77-c755-e471-79902c74928b" } ], @@ -27058,7 +28073,7 @@ "displayIcon": null, "displayName": "惡鬼 利爪 等級2", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6ce47b02-4011-94e3-8d27-dea0fad98a61_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6ce47b02-4011-94e3-8d27-dea0fad98a61_default_universal.mp4", "uuid": "444af7a1-46d4-6139-a4b4-66b3112bd37b" } ], @@ -27066,6 +28081,71 @@ "uuid": "206fc3fe-45a0-6c19-c367-229b98b6a2aa", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Oni2/Melee_Oni2_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Oni2/Chromas/Standard/Melee_Oni2_Standard_PrimaryAsset", + "displayIcon": null, + "displayName": "鬼丸國綱", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/4543974c-4eaa-936d-271f-cbb3a03ced59/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/4543974c-4eaa-936d-271f-cbb3a03ced59/swatch.png", + "uuid": "4543974c-4eaa-936d-271f-cbb3a03ced59" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Oni2/Chromas/v1/Melee_Oni2_v1_PrimaryAsset", + "displayIcon": null, + "displayName": "鬼丸國綱 等級2\n(幻彩1 浮雲)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/bfedf22c-48ab-d0e4-ab83-fd8a50669ddd/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5c6460f2-48b7-7dc9-8d5f-ff858e42d736_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/bfedf22c-48ab-d0e4-ab83-fd8a50669ddd/swatch.png", + "uuid": "bfedf22c-48ab-d0e4-ab83-fd8a50669ddd" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Oni2/Chromas/v2/Melee_Oni2_v2_PrimaryAsset", + "displayIcon": null, + "displayName": "鬼丸國綱 等級2\n(幻彩2 落花)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/e0fd7ff7-4cba-80d9-c079-cbb3aecba624/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/646a2c2e-47b2-3eb7-2e24-a082b6796ae4_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/e0fd7ff7-4cba-80d9-c079-cbb3aecba624/swatch.png", + "uuid": "e0fd7ff7-4cba-80d9-c079-cbb3aecba624" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Oni2/Chromas/v3/Melee_Oni2_v3_PrimaryAsset", + "displayIcon": null, + "displayName": "鬼丸國綱 等級2\n(幻彩3 飛燕)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/0ea92c62-4483-fed2-46c3-77859912ddad/fullrender.png", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/16b2b502-45e0-7951-1dae-0eb69da2db46_default_universal.mp4", + "swatch": "https://media.valorant-api.com/weaponskinchromas/0ea92c62-4483-fed2-46c3-77859912ddad/swatch.png", + "uuid": "0ea92c62-4483-fed2-46c3-77859912ddad" + } + ], + "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", + "displayIcon": "https://media.valorant-api.com/weaponskins/4e7342a5-4820-2d79-a488-0fa51a4357f7/displayicon.png", + "displayName": "鬼丸國綱", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Oni2/Levels/Melee_Oni2_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/901abab9-4a44-09f1-b892-9887a587f079/displayicon.png", + "displayName": "鬼丸國綱", + "levelItem": null, + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f0bda274-46ab-5234-fbb0-9f869f19dbf8_default_universal.mp4", + "uuid": "901abab9-4a44-09f1-b892-9887a587f079" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Oni2/Levels/Melee_Oni2_Lv2_PrimaryAsset", + "displayIcon": null, + "displayName": "鬼丸國綱 等級2", + "levelItem": "EEquippableSkinLevelItem::SoundEffects", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/69316388-4898-1abb-ea47-36a18f619a6a_default_universal.mp4", + "uuid": "0bd22fc5-4cb4-2323-f283-d9acaea58aa6" + } + ], + "themeUuid": "a547897d-4bd4-7c77-f5e6-55973f0e89ef", + "uuid": "4e7342a5-4820-2d79-a488-0fa51a4357f7", + "wallpaper": "https://media.valorant-api.com/weaponskins/4e7342a5-4820-2d79-a488-0fa51a4357f7/wallpaper.png" + }, { "assetPath": "ShooterGame/Content/Equippables/Melee/Permafrost/Melee_Permafrost_PrimaryAsset", "chromas": [ @@ -27096,7 +28176,7 @@ "displayIcon": null, "displayName": "深度凍結 衝擊起子 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ff4cd6ef-4cf2-b4c7-ddaf-6ba111b81f24_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ff4cd6ef-4cf2-b4c7-ddaf-6ba111b81f24_default_universal.mp4", "uuid": "1ffe6891-4900-2431-ba2e-fd8460a86dd1" } ], @@ -27178,7 +28258,7 @@ "displayIcon": null, "displayName": "個人近戰單位 等級3(幻彩1 白/粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/b466b9ef-41d1-6597-b1b4-15b23a9a45c8/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0517237a-44b3-af9c-4c17-0fb7f8d59406_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0517237a-44b3-af9c-4c17-0fb7f8d59406_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/b466b9ef-41d1-6597-b1b4-15b23a9a45c8/swatch.png", "uuid": "b466b9ef-41d1-6597-b1b4-15b23a9a45c8" }, @@ -27187,7 +28267,7 @@ "displayIcon": null, "displayName": "個人近戰單位 等級3(幻彩2 紅/藍色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/0d09dc9b-4b96-e357-e05b-f6b2ae3d857b/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b24545dd-4843-1ef9-4280-439ad5617ceb_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b24545dd-4843-1ef9-4280-439ad5617ceb_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/0d09dc9b-4b96-e357-e05b-f6b2ae3d857b/swatch.png", "uuid": "0d09dc9b-4b96-e357-e05b-f6b2ae3d857b" }, @@ -27196,7 +28276,7 @@ "displayIcon": null, "displayName": "個人近戰單位 等級3(幻彩3 綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/c1f3f20b-411f-8651-09d5-069069d92844/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a2f6f182-4a34-3ac8-d94c-f7b17286b148_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a2f6f182-4a34-3ac8-d94c-f7b17286b148_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/c1f3f20b-411f-8651-09d5-069069d92844/swatch.png", "uuid": "c1f3f20b-411f-8651-09d5-069069d92844" } @@ -27210,7 +28290,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/47897cd1-49e2-da3f-4a8f-b6a1e84b0dd0/displayicon.png", "displayName": "個人近戰單位", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/58dab324-46e7-0170-6a36-a69220aba7b1_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/58dab324-46e7-0170-6a36-a69220aba7b1_default_universal.mp4", "uuid": "47897cd1-49e2-da3f-4a8f-b6a1e84b0dd0" }, { @@ -27218,7 +28298,7 @@ "displayIcon": null, "displayName": "個人近戰單位 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/13d83044-4c28-76d1-9a93-0b9fd444c343_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/13d83044-4c28-76d1-9a93-0b9fd444c343_default_universal.mp4", "uuid": "ba14e527-4dd2-6b91-69a7-03a3395665f8" }, { @@ -27226,7 +28306,7 @@ "displayIcon": null, "displayName": "個人近戰單位 等級3:在地化語音可能會因地區而異", "levelItem": "EEquippableSkinLevelItem::Voiceover", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/332ef0f9-4197-708f-0415-fd8a0922cc7a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/332ef0f9-4197-708f-0415-fd8a0922cc7a_default_universal.mp4", "uuid": "692e49fb-4a3e-6991-8e58-838498758939" } ], @@ -27264,7 +28344,7 @@ "displayIcon": null, "displayName": "流光月刃 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/32d0ec04-449a-8b54-01eb-dea85b4f5915_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/32d0ec04-449a-8b54-01eb-dea85b4f5915_default_universal.mp4", "uuid": "cbd9f020-4ee9-d9a5-d57a-9f9f9166717c" } ], @@ -27324,7 +28404,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/3710f62c-4e0c-65fd-848d-8da25d2fb833/displayicon.png", "displayName": "重力鈾能神經爆破者 短棍", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/24babfbe-42f6-aa22-a13e-6291dce64634_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/24babfbe-42f6-aa22-a13e-6291dce64634_default_universal.mp4", "uuid": "3710f62c-4e0c-65fd-848d-8da25d2fb833" }, { @@ -27332,7 +28412,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/7ef7ed92-463e-2e0c-859f-b88de57f2fb4/displayicon.png", "displayName": "重力鈾能神經爆破者 短棍 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/dd017ee0-4b52-b044-0d34-23b883fa6739_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/dd017ee0-4b52-b044-0d34-23b883fa6739_default_universal.mp4", "uuid": "7ef7ed92-463e-2e0c-859f-b88de57f2fb4" } ], @@ -27340,36 +28420,6 @@ "uuid": "0357caf1-41a9-cb1c-c080-38aab13d9a7e", "wallpaper": null }, - { - "assetPath": "ShooterGame/Content/Equippables/Melee/Snowglobe/Melee_Snowglobe_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Melee/Snowglobe/Chromas/Standard/Melee_Snowglobe_Standard_PrimaryAsset", - "displayIcon": null, - "displayName": "Standard", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/29dd7a19-4654-af07-59bb-14b11db66e1a/fullrender.png", - "streamedVideo": null, - "swatch": null, - "uuid": "29dd7a19-4654-af07-59bb-14b11db66e1a" - } - ], - "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", - "displayIcon": null, - "displayName": "魔幻冬雪 魔杖", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Melee/Snowglobe/Levels/Melee_Snowglobe_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/155ba654-4afa-1029-9e71-e0b6962d5410/displayicon.png", - "displayName": "魔幻冬雪 魔杖", - "levelItem": null, - "streamedVideo": null, - "uuid": "155ba654-4afa-1029-9e71-e0b6962d5410" - } - ], - "themeUuid": "58df025f-4077-9764-20ec-76a73df87b44", - "uuid": "52a1647c-42d9-b40e-16cf-a7821566ad81", - "wallpaper": null - }, { "assetPath": "ShooterGame/Content/Equippables/Melee/SOL/Melee_SOL_PrimaryAsset", "chromas": [ @@ -27387,7 +28437,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/54d0f235-4bef-94ae-6772-c59cb4e8e352/displayicon.png", "displayName": "哨兵聖武 等級2\n(幻彩1 粉色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/54d0f235-4bef-94ae-6772-c59cb4e8e352/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c411e835-4908-2db6-5162-e8b2c7fa118c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c411e835-4908-2db6-5162-e8b2c7fa118c_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/54d0f235-4bef-94ae-6772-c59cb4e8e352/swatch.png", "uuid": "54d0f235-4bef-94ae-6772-c59cb4e8e352" }, @@ -27396,7 +28446,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/4cbf1d8c-4144-a224-c93c-1680b2a28b8a/displayicon.png", "displayName": "哨兵聖武 等級2\n(幻彩2 紅/綠色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/4cbf1d8c-4144-a224-c93c-1680b2a28b8a/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a022eb35-4301-fa6f-c6fb-c5b0e8170613_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a022eb35-4301-fa6f-c6fb-c5b0e8170613_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/4cbf1d8c-4144-a224-c93c-1680b2a28b8a/swatch.png", "uuid": "4cbf1d8c-4144-a224-c93c-1680b2a28b8a" }, @@ -27405,7 +28455,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/1bd34c76-4cf5-f2a7-7b01-69a60f910941/displayicon.png", "displayName": "哨兵聖武 等級2\n(幻彩3 藍/紫色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/1bd34c76-4cf5-f2a7-7b01-69a60f910941/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9c91445a-4215-2177-122e-649b2b81eec6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9c91445a-4215-2177-122e-649b2b81eec6_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/1bd34c76-4cf5-f2a7-7b01-69a60f910941/swatch.png", "uuid": "1bd34c76-4cf5-f2a7-7b01-69a60f910941" } @@ -27419,7 +28469,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/315e8e49-4dc4-9769-2382-3ba5f7af87da/displayicon.png", "displayName": "哨兵聖武", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9b5276da-46a1-3539-3ae4-669713337302_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9b5276da-46a1-3539-3ae4-669713337302_default_universal.mp4", "uuid": "315e8e49-4dc4-9769-2382-3ba5f7af87da" }, { @@ -27427,7 +28477,7 @@ "displayIcon": null, "displayName": "哨兵聖武 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/1ee2d89d-4861-9e21-2965-108df6ea2118_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/1ee2d89d-4861-9e21-2965-108df6ea2118_default_universal.mp4", "uuid": "19a14e33-4597-412e-ed84-489113968a58" } ], @@ -27435,6 +28485,36 @@ "uuid": "6fd8cc46-48b3-f02c-46e3-cba372e7a328", "wallpaper": "https://media.valorant-api.com/weaponskins/6fd8cc46-48b3-f02c-46e3-cba372e7a328/wallpaper.png" }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Snowglobe/Melee_Snowglobe_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Snowglobe/Chromas/Standard/Melee_Snowglobe_Standard_PrimaryAsset", + "displayIcon": null, + "displayName": "Standard", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/29dd7a19-4654-af07-59bb-14b11db66e1a/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "29dd7a19-4654-af07-59bb-14b11db66e1a" + } + ], + "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", + "displayIcon": null, + "displayName": "魔幻冬雪 魔杖", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Snowglobe/Levels/Melee_Snowglobe_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/155ba654-4afa-1029-9e71-e0b6962d5410/displayicon.png", + "displayName": "魔幻冬雪 魔杖", + "levelItem": null, + "streamedVideo": null, + "uuid": "155ba654-4afa-1029-9e71-e0b6962d5410" + } + ], + "themeUuid": "58df025f-4077-9764-20ec-76a73df87b44", + "uuid": "52a1647c-42d9-b40e-16cf-a7821566ad81", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Melee/Soulstealer/Melee_Soulstealer_PrimaryAsset", "chromas": [ @@ -27457,7 +28537,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/d7a02a43-47a5-556c-a69f-ec9cf6ede66d/displayicon.png", "displayName": "掠奪印象 小刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f0f9b1cf-4686-0c4d-f45b-14a428832ae4_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f0f9b1cf-4686-0c4d-f45b-14a428832ae4_default_universal.mp4", "uuid": "d7a02a43-47a5-556c-a69f-ec9cf6ede66d" }, { @@ -27465,7 +28545,7 @@ "displayIcon": null, "displayName": "掠奪印象 小刀 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6cbc9c94-41f1-aed0-7be6-5ebde7ab54fc_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6cbc9c94-41f1-aed0-7be6-5ebde7ab54fc_default_universal.mp4", "uuid": "20f6764c-4561-0152-e8a1-e2a75deb1872" } ], @@ -27490,7 +28570,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/9c55fcb9-4710-48fd-642d-fd90c6c3b895/displayicon.png", "displayName": "掠奪印象 爪刀 等級2\n(幻彩1 紅色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/9c55fcb9-4710-48fd-642d-fd90c6c3b895/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/7fb98dc1-4d3d-a8b5-22a9-70b8955c1a95_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/7fb98dc1-4d3d-a8b5-22a9-70b8955c1a95_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/9c55fcb9-4710-48fd-642d-fd90c6c3b895/swatch.png", "uuid": "9c55fcb9-4710-48fd-642d-fd90c6c3b895" }, @@ -27499,7 +28579,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/517f5413-4859-ab98-fec8-4ebd39a15121/displayicon.png", "displayName": "掠奪印象 爪刀 等級2\n(幻彩2 黑色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/517f5413-4859-ab98-fec8-4ebd39a15121/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3e2a65ba-469f-3fb0-a92b-9bbf77f563c6_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3e2a65ba-469f-3fb0-a92b-9bbf77f563c6_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/517f5413-4859-ab98-fec8-4ebd39a15121/swatch.png", "uuid": "517f5413-4859-ab98-fec8-4ebd39a15121" }, @@ -27508,7 +28588,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinchromas/cf9fc0dc-48d9-34a6-95fd-cea860d2df5e/displayicon.png", "displayName": "掠奪印象 爪刀 等級2\n(幻彩3 白色)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/cf9fc0dc-48d9-34a6-95fd-cea860d2df5e/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a6e31810-420c-2df3-bd53-12b0d14d31f5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a6e31810-420c-2df3-bd53-12b0d14d31f5_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/cf9fc0dc-48d9-34a6-95fd-cea860d2df5e/swatch.png", "uuid": "cf9fc0dc-48d9-34a6-95fd-cea860d2df5e" } @@ -27522,7 +28602,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5ac106cd-45ef-a26f-2058-f382f20c64db/displayicon.png", "displayName": "掠奪印象 爪刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/9e41661a-4d9c-8f02-0ce2-33b5badc2a19_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/9e41661a-4d9c-8f02-0ce2-33b5badc2a19_default_universal.mp4", "uuid": "5ac106cd-45ef-a26f-2058-f382f20c64db" }, { @@ -27530,7 +28610,7 @@ "displayIcon": null, "displayName": "掠奪印象 爪刀 等級2", "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/f4ed33a2-49c2-1162-9553-20a005e1c55c_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/f4ed33a2-49c2-1162-9553-20a005e1c55c_default_universal.mp4", "uuid": "84d08ce6-468c-b95b-9bbb-408dcdcee76f" } ], @@ -27538,44 +28618,6 @@ "uuid": "b73d7b16-4652-bc5b-5c4c-068aabb19d0a", "wallpaper": null }, - { - "assetPath": "ShooterGame/Content/Equippables/Melee/Sovereign/Melee_Base_Sovereign_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Melee/Sovereign/Chromas/Standard/Melee_Base_Sovereign_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/3391be35-4eab-936c-f26d-ec810f4454c8/displayicon.png", - "displayName": "鎏金帝王 長劍", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/3391be35-4eab-936c-f26d-ec810f4454c8/fullrender.png", - "streamedVideo": null, - "swatch": null, - "uuid": "3391be35-4eab-936c-f26d-ec810f4454c8" - } - ], - "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", - "displayIcon": "https://media.valorant-api.com/weaponskins/2e77ac95-4681-3d87-bbdc-93a50ff6b1f6/displayicon.png", - "displayName": "鎏金帝王 長劍", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Melee/Sovereign/Melee_Base_Sovereign_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/90fe45d6-41ea-1c49-8fb9-46b0e98c0077/displayicon.png", - "displayName": "鎏金帝王 長劍", - "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/4a6a5fbb-6f44-4758-bb9a-51e0b0437ad0_default_universal.mp4", - "uuid": "90fe45d6-41ea-1c49-8fb9-46b0e98c0077" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Melee/Sovereign/Levels/Melee_Base_Sovereign_Lv2_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5e7f5d27-46ca-abd5-72d8-ecbb413ec217/displayicon.png", - "displayName": "鎏金帝王 長劍 等級2", - "levelItem": "EEquippableSkinLevelItem::VFX", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/bcf762a1-3d1b-4367-9d11-c5f7eed814f6_default_universal.mp4", - "uuid": "5e7f5d27-46ca-abd5-72d8-ecbb413ec217" - } - ], - "themeUuid": "975f7716-498d-8e0b-b7c7-02b507b8e14a", - "uuid": "2e77ac95-4681-3d87-bbdc-93a50ff6b1f6", - "wallpaper": null - }, { "assetPath": "ShooterGame/Content/Equippables/Melee/SovWorld/Melee_SovWorld_PrimaryAsset", "chromas": [ @@ -27598,7 +28640,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/12dce8f5-42fe-87c6-ef37-8aa4e55f1f64/displayicon.png", "displayName": "興盛", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/e0fbd460-4559-dcc8-9bdc-52b0b024e6d5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/e0fbd460-4559-dcc8-9bdc-52b0b024e6d5_default_universal.mp4", "uuid": "12dce8f5-42fe-87c6-ef37-8aa4e55f1f64" }, { @@ -27606,7 +28648,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5593f2d7-43ce-9c78-16ad-ab9d9330a459/displayicon.png", "displayName": "興盛與衰亡", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/a4846549-4a35-8e90-5e79-7694ba79d4ef_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/a4846549-4a35-8e90-5e79-7694ba79d4ef_default_universal.mp4", "uuid": "5593f2d7-43ce-9c78-16ad-ab9d9330a459" } ], @@ -27614,6 +28656,44 @@ "uuid": "f4e40444-43f3-e6f7-3271-bdb7d1492b05", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Sovereign/Melee_Base_Sovereign_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Sovereign/Chromas/Standard/Melee_Base_Sovereign_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/3391be35-4eab-936c-f26d-ec810f4454c8/displayicon.png", + "displayName": "鎏金帝王 長劍", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/3391be35-4eab-936c-f26d-ec810f4454c8/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "3391be35-4eab-936c-f26d-ec810f4454c8" + } + ], + "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", + "displayIcon": "https://media.valorant-api.com/weaponskins/2e77ac95-4681-3d87-bbdc-93a50ff6b1f6/displayicon.png", + "displayName": "鎏金帝王 長劍", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Sovereign/Melee_Base_Sovereign_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/90fe45d6-41ea-1c49-8fb9-46b0e98c0077/displayicon.png", + "displayName": "鎏金帝王 長劍", + "levelItem": null, + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/4a6a5fbb-6f44-4758-bb9a-51e0b0437ad0_default_universal.mp4", + "uuid": "90fe45d6-41ea-1c49-8fb9-46b0e98c0077" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Sovereign/Levels/Melee_Base_Sovereign_Lv2_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5e7f5d27-46ca-abd5-72d8-ecbb413ec217/displayicon.png", + "displayName": "鎏金帝王 長劍 等級2", + "levelItem": "EEquippableSkinLevelItem::VFX", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/bcf762a1-3d1b-4367-9d11-c5f7eed814f6_default_universal.mp4", + "uuid": "5e7f5d27-46ca-abd5-72d8-ecbb413ec217" + } + ], + "themeUuid": "975f7716-498d-8e0b-b7c7-02b507b8e14a", + "uuid": "2e77ac95-4681-3d87-bbdc-93a50ff6b1f6", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Melee/SpecOps/Melee_SpecOps_PrimaryAsset", "chromas": [ @@ -27631,7 +28711,7 @@ "displayIcon": null, "displayName": "偵察行動 蝴蝶刀 等級2\n(幻彩1 紅色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/8a68cd7b-4658-bcad-4789-49bc842ab1ae/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/b37743fb-48e0-5dee-1b1c-13b08b6ed246_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/b37743fb-48e0-5dee-1b1c-13b08b6ed246_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/8a68cd7b-4658-bcad-4789-49bc842ab1ae/swatch.png", "uuid": "8a68cd7b-4658-bcad-4789-49bc842ab1ae" }, @@ -27640,7 +28720,7 @@ "displayIcon": null, "displayName": "偵察行動 蝴蝶刀 等級2\n(幻彩2 藍色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/81877bc3-4227-1973-1af6-86b639bceaca/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/0aebce00-416e-db18-b896-1b8cd253e17a_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/0aebce00-416e-db18-b896-1b8cd253e17a_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/81877bc3-4227-1973-1af6-86b639bceaca/swatch.png", "uuid": "81877bc3-4227-1973-1af6-86b639bceaca" }, @@ -27649,7 +28729,7 @@ "displayIcon": null, "displayName": "偵察行動 蝴蝶刀 等級2\n(幻彩3 綠色迷彩)", "fullRender": "https://media.valorant-api.com/weaponskinchromas/15129610-4b75-e263-b5d6-e99b8c471cc5/fullrender.png", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/5404c57b-4147-f4db-c854-639c62524d84_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/5404c57b-4147-f4db-c854-639c62524d84_default_universal.mp4", "swatch": "https://media.valorant-api.com/weaponskinchromas/15129610-4b75-e263-b5d6-e99b8c471cc5/swatch.png", "uuid": "15129610-4b75-e263-b5d6-e99b8c471cc5" } @@ -27663,7 +28743,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/e85cf8b6-467b-bc6c-9013-959383f71b2e/displayicon.png", "displayName": "偵察行動 蝴蝶刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/3d00a7a2-4957-301b-4f4b-b9b914c287d5_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/3d00a7a2-4957-301b-4f4b-b9b914c287d5_default_universal.mp4", "uuid": "e85cf8b6-467b-bc6c-9013-959383f71b2e" }, { @@ -27671,7 +28751,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/6e6f577b-4a04-07d2-47f3-ec8cd4a684da/displayicon.png", "displayName": "偵察行動 蝴蝶刀 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/cef94c7a-4f2c-57b6-2d04-2fb1b64d4571_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/cef94c7a-4f2c-57b6-2d04-2fb1b64d4571_default_universal.mp4", "uuid": "6e6f577b-4a04-07d2-47f3-ec8cd4a684da" } ], @@ -27701,7 +28781,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/4745ba48-4d62-b01c-9cb9-48848fec9b66/displayicon.png", "displayName": "泰坦刺甲 錘矛", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c2aec530-4167-566c-dfbf-29bd280da58b_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c2aec530-4167-566c-dfbf-29bd280da58b_default_universal.mp4", "uuid": "4745ba48-4d62-b01c-9cb9-48848fec9b66" }, { @@ -27709,7 +28789,7 @@ "displayIcon": null, "displayName": "泰坦刺甲 錘矛 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/c727e5fe-4b1b-7b46-0916-359f758d7878_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/c727e5fe-4b1b-7b46-0916-359f758d7878_default_universal.mp4", "uuid": "9acc22e7-4457-f294-0861-6bbeecb46316" } ], @@ -27717,6 +28797,36 @@ "uuid": "4f6033d5-4b24-94f0-31ab-f6969a2c926c", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/StainedGlass/Melee_StainedGlass_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/StainedGlass/Chromas/Standard/Melee_StainedGlass_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/5ac15739-4913-ba1c-036a-19b0751cee3b/displayicon.png", + "displayName": "彩拼幻想 小刀", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/5ac15739-4913-ba1c-036a-19b0751cee3b/fullrender.png", + "streamedVideo": null, + "swatch": null, + "uuid": "5ac15739-4913-ba1c-036a-19b0751cee3b" + } + ], + "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", + "displayIcon": "https://media.valorant-api.com/weaponskins/5b95aba8-4223-e937-3ab7-9995c9e3064b/displayicon.png", + "displayName": "彩拼幻想 小刀", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/StainedGlass/Levels/Melee_StainedGlass_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/a8485a93-48fa-a301-a3f2-dca0175580df/displayicon.png", + "displayName": "彩拼幻想 小刀", + "levelItem": null, + "streamedVideo": null, + "uuid": "a8485a93-48fa-a301-a3f2-dca0175580df" + } + ], + "themeUuid": "e0216470-4c4a-d840-0919-3c860cbc40a8", + "uuid": "5b95aba8-4223-e937-3ab7-9995c9e3064b", + "wallpaper": "https://media.valorant-api.com/weaponskins/5b95aba8-4223-e937-3ab7-9995c9e3064b/wallpaper.png" + }, { "assetPath": "ShooterGame/Content/Equippables/Melee/Standard/Melee_Base_Standard_PrimaryAsset", "chromas": [ @@ -27747,6 +28857,63 @@ "uuid": "12cc9ed2-4430-d2fe-3064-f7a19b1ba7c7", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/StreetWear/Melee_StreetWear_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/StreetWear/Chromas/Standard/Melee_StreetWear_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/05dce4fd-4b4d-1fe5-4226-27bff185488c/displayicon.png", + "displayName": "金屬波浪 小刀", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/05dce4fd-4b4d-1fe5-4226-27bff185488c/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/05dce4fd-4b4d-1fe5-4226-27bff185488c/swatch.png", + "uuid": "05dce4fd-4b4d-1fe5-4226-27bff185488c" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/StreetWear/Chromas/v1/Melee_StreetWear_v1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/b6fa2c4d-4038-36e9-a403-859d54a2f4e0/displayicon.png", + "displayName": "金屬波浪 小刀\n(幻彩1 紅色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/b6fa2c4d-4038-36e9-a403-859d54a2f4e0/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/b6fa2c4d-4038-36e9-a403-859d54a2f4e0/swatch.png", + "uuid": "b6fa2c4d-4038-36e9-a403-859d54a2f4e0" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/StreetWear/Chromas/v2/Melee_StreetWear_v2_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/6018c398-4612-ab1b-d2d7-bc960564ece8/displayicon.png", + "displayName": "金屬波浪 小刀\n(幻彩2 紫色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/6018c398-4612-ab1b-d2d7-bc960564ece8/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/6018c398-4612-ab1b-d2d7-bc960564ece8/swatch.png", + "uuid": "6018c398-4612-ab1b-d2d7-bc960564ece8" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/StreetWear/Chromas/v3/Melee_StreetWear_v3_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/589c6a0e-441f-df4d-8ed8-fa9359ca6f7e/displayicon.png", + "displayName": "金屬波浪 小刀\n(幻彩3 綠色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/589c6a0e-441f-df4d-8ed8-fa9359ca6f7e/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/589c6a0e-441f-df4d-8ed8-fa9359ca6f7e/swatch.png", + "uuid": "589c6a0e-441f-df4d-8ed8-fa9359ca6f7e" + } + ], + "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", + "displayIcon": "https://media.valorant-api.com/weaponskins/be489303-4aa4-ba46-e6a8-02ae4c7a7b3a/displayicon.png", + "displayName": "金屬波浪 小刀", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/StreetWear/Levels/Melee_StreetWear_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/1521c8d1-4071-f91d-1d22-c4aa30590fe4/displayicon.png", + "displayName": "金屬波浪 小刀", + "levelItem": null, + "streamedVideo": null, + "uuid": "1521c8d1-4071-f91d-1d22-c4aa30590fe4" + } + ], + "themeUuid": "8a046174-4736-8d37-3f2f-9b88c9873040", + "uuid": "be489303-4aa4-ba46-e6a8-02ae4c7a7b3a", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Melee/Tiger/Melee_Tiger_PrimaryAsset", "chromas": [ @@ -27777,63 +28944,6 @@ "uuid": "5724cd18-458b-af3d-b60a-239c5a8c081a", "wallpaper": "https://media.valorant-api.com/weaponskins/5724cd18-458b-af3d-b60a-239c5a8c081a/wallpaper.png" }, - { - "assetPath": "ShooterGame/Content/Equippables/Melee/Unstoppable/Melee_Unstoppable_PrimaryAsset", - "chromas": [ - { - "assetPath": "ShooterGame/Content/Equippables/Melee/Unstoppable/Chromas/Standard/Melee_Unstoppable_Standard_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/9c8ed548-4ad7-6d82-9d1e-a0a57d7e2267/displayicon.png", - "displayName": "無人之境 小刀", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/9c8ed548-4ad7-6d82-9d1e-a0a57d7e2267/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/9c8ed548-4ad7-6d82-9d1e-a0a57d7e2267/swatch.png", - "uuid": "9c8ed548-4ad7-6d82-9d1e-a0a57d7e2267" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Melee/Unstoppable/Chromas/v1/Melee_Unstoppable_v1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/6af4123b-4266-d051-a27f-d5ab7d97e2ff/displayicon.png", - "displayName": "無人之境 小刀\n(幻彩1 紅色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/6af4123b-4266-d051-a27f-d5ab7d97e2ff/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/6af4123b-4266-d051-a27f-d5ab7d97e2ff/swatch.png", - "uuid": "6af4123b-4266-d051-a27f-d5ab7d97e2ff" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Melee/Unstoppable/Chromas/v2/Melee_Unstoppable_v2_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/a392d2bd-46df-7723-bb14-a58e05f33f12/displayicon.png", - "displayName": "無人之境 小刀\n(幻彩2 褐色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/a392d2bd-46df-7723-bb14-a58e05f33f12/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/a392d2bd-46df-7723-bb14-a58e05f33f12/swatch.png", - "uuid": "a392d2bd-46df-7723-bb14-a58e05f33f12" - }, - { - "assetPath": "ShooterGame/Content/Equippables/Melee/Unstoppable/Chromas/v3/Melee_Unstoppable_v3_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinchromas/4201457d-4144-bf26-55cc-fe979ed827f0/displayicon.png", - "displayName": "無人之境 小刀\n(幻彩3 粉色)", - "fullRender": "https://media.valorant-api.com/weaponskinchromas/4201457d-4144-bf26-55cc-fe979ed827f0/fullrender.png", - "streamedVideo": null, - "swatch": "https://media.valorant-api.com/weaponskinchromas/4201457d-4144-bf26-55cc-fe979ed827f0/swatch.png", - "uuid": "4201457d-4144-bf26-55cc-fe979ed827f0" - } - ], - "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", - "displayIcon": "https://media.valorant-api.com/weaponskins/c52fe5d7-4500-ffc0-cbcd-bfa29b7ea040/displayicon.png", - "displayName": "無人之境 小刀", - "levels": [ - { - "assetPath": "ShooterGame/Content/Equippables/Melee/Unstoppable/Levels/Melee_Unstoppable_Lv1_PrimaryAsset", - "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5bf17117-4ead-a0a8-2961-288d38985e93/displayicon.png", - "displayName": "無人之境 小刀", - "levelItem": null, - "streamedVideo": null, - "uuid": "5bf17117-4ead-a0a8-2961-288d38985e93" - } - ], - "themeUuid": "54e935e3-446f-5184-ba3a-f096c595b146", - "uuid": "c52fe5d7-4500-ffc0-cbcd-bfa29b7ea040", - "wallpaper": null - }, { "assetPath": "ShooterGame/Content/Equippables/Melee/URF/UrfKnife/Melee_Base_UrfKnife_PrimaryAsset", "chromas": [ @@ -27883,7 +28993,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/708abbc6-4579-4452-4293-07ba45e78979/displayicon.png", "displayName": "咻咻X 聚合小刀科技塗層 小刀", "levelItem": null, - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/ec1348c5-44f1-e356-84ce-34a68114f780_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/ec1348c5-44f1-e356-84ce-34a68114f780_default_universal.mp4", "uuid": "708abbc6-4579-4452-4293-07ba45e78979" }, { @@ -27891,7 +29001,7 @@ "displayIcon": "https://media.valorant-api.com/weaponskinlevels/fb180f74-460b-2a63-f3f3-0c9262c73c29/displayicon.png", "displayName": "咻咻X 聚合小刀科技塗層 小刀 等級2", "levelItem": "EEquippableSkinLevelItem::Animation", - "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.01/6070d73c-4c87-a0f8-51cc-458c92ec0370_default_universal.mp4", + "streamedVideo": "https://valorant.dyn.riotcdn.net/x/videos/release-06.04/6070d73c-4c87-a0f8-51cc-458c92ec0370_default_universal.mp4", "uuid": "fb180f74-460b-2a63-f3f3-0c9262c73c29" } ], @@ -27899,6 +29009,63 @@ "uuid": "5844ccd5-4a8d-e84d-b5b1-dfaaa8f34d84", "wallpaper": null }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Unstoppable/Melee_Unstoppable_PrimaryAsset", + "chromas": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Unstoppable/Chromas/Standard/Melee_Unstoppable_Standard_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/9c8ed548-4ad7-6d82-9d1e-a0a57d7e2267/displayicon.png", + "displayName": "無人之境 小刀", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/9c8ed548-4ad7-6d82-9d1e-a0a57d7e2267/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/9c8ed548-4ad7-6d82-9d1e-a0a57d7e2267/swatch.png", + "uuid": "9c8ed548-4ad7-6d82-9d1e-a0a57d7e2267" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Unstoppable/Chromas/v1/Melee_Unstoppable_v1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/6af4123b-4266-d051-a27f-d5ab7d97e2ff/displayicon.png", + "displayName": "無人之境 小刀\n(幻彩1 紅色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/6af4123b-4266-d051-a27f-d5ab7d97e2ff/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/6af4123b-4266-d051-a27f-d5ab7d97e2ff/swatch.png", + "uuid": "6af4123b-4266-d051-a27f-d5ab7d97e2ff" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Unstoppable/Chromas/v2/Melee_Unstoppable_v2_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/a392d2bd-46df-7723-bb14-a58e05f33f12/displayicon.png", + "displayName": "無人之境 小刀\n(幻彩2 褐色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/a392d2bd-46df-7723-bb14-a58e05f33f12/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/a392d2bd-46df-7723-bb14-a58e05f33f12/swatch.png", + "uuid": "a392d2bd-46df-7723-bb14-a58e05f33f12" + }, + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Unstoppable/Chromas/v3/Melee_Unstoppable_v3_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinchromas/4201457d-4144-bf26-55cc-fe979ed827f0/displayicon.png", + "displayName": "無人之境 小刀\n(幻彩3 粉色)", + "fullRender": "https://media.valorant-api.com/weaponskinchromas/4201457d-4144-bf26-55cc-fe979ed827f0/fullrender.png", + "streamedVideo": null, + "swatch": "https://media.valorant-api.com/weaponskinchromas/4201457d-4144-bf26-55cc-fe979ed827f0/swatch.png", + "uuid": "4201457d-4144-bf26-55cc-fe979ed827f0" + } + ], + "contentTierUuid": "e046854e-406c-37f4-6607-19a9ba8426fc", + "displayIcon": "https://media.valorant-api.com/weaponskins/c52fe5d7-4500-ffc0-cbcd-bfa29b7ea040/displayicon.png", + "displayName": "無人之境 小刀", + "levels": [ + { + "assetPath": "ShooterGame/Content/Equippables/Melee/Unstoppable/Levels/Melee_Unstoppable_Lv1_PrimaryAsset", + "displayIcon": "https://media.valorant-api.com/weaponskinlevels/5bf17117-4ead-a0a8-2961-288d38985e93/displayicon.png", + "displayName": "無人之境 小刀", + "levelItem": null, + "streamedVideo": null, + "uuid": "5bf17117-4ead-a0a8-2961-288d38985e93" + } + ], + "themeUuid": "54e935e3-446f-5184-ba3a-f096c595b146", + "uuid": "c52fe5d7-4500-ffc0-cbcd-bfa29b7ea040", + "wallpaper": null + }, { "assetPath": "ShooterGame/Content/Equippables/Melee/Winter/Melee_Winter_PrimaryAsset", "chromas": [ diff --git a/docs/log.example/ValSkinRate.json b/docs/log.example/ValSkinRate.json index b87d9b5..dc8e292 100644 --- a/docs/log.example/ValSkinRate.json +++ b/docs/log.example/ValSkinRate.json @@ -2,12 +2,12 @@ "cmp": { "best": { "kook_id": "", - "pit": 100, + "rating": 100, "skin": [] }, "worse": { "kook_id": "", - "pit": 0, + "rating": 0, "skin": [] } }, @@ -16,12 +16,12 @@ "kkn": { "best": { "kook_id": "", - "pit": 100, + "rating": 100, "skin": [] }, "worse": { "kook_id": "", - "pit": 0, + "rating": 0, "skin": [] } }, From 00453fabd4bf192a57ef27a669aebee0f74f2957 Mon Sep 17 00:00:00 2001 From: musnow Date: Mon, 13 Mar 2023 13:17:57 +0800 Subject: [PATCH 27/31] feat(api): add 'url' return in /shop-img --- code/api.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/code/api.py b/code/api.py index b384b43..11ffc35 100644 --- a/code/api.py +++ b/code/api.py @@ -53,15 +53,21 @@ async def get_shop_draw(request): content_type='application/json') -# 直接跳转图片(浏览器访问,get方法不安全) +# 直接跳转图片 @routes.get('/shop-img') async def get_shop_img(request): _log.info(f"request | /shop-img") try: + params = request.rel_url.query ret = await ApiHandler.login_request(request,"GET") if ret['code'] == 0: - return web.Response(headers={'Location': ret['message']}, status=303) # 303是直接跳转到图片 - else: + # 如果url不在,或者值不为1,则303跳转图片 + if 'url' not in params or str(params['url']) != '0': + return web.Response(headers={'Location': ret['message']}, status=303) # 303是直接跳转到图片 + else: + return web.Response(body=json.dumps(ret, indent=2, sort_keys=True, ensure_ascii=False), + content_type='application/json',status=200) + else: # 出错误了 return web.Response(body=json.dumps(ret, indent=2, sort_keys=True, ensure_ascii=False), content_type='application/json',status=200) except: From d2138896c3e638e80de1e54d1800fe9612ac2409 Mon Sep 17 00:00:00 2001 From: musnow Date: Tue, 14 Mar 2023 18:37:27 +0800 Subject: [PATCH 28/31] fix(Gtime): using datetime now with zoneinfo --- code/utils/Gtime.py | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/code/utils/Gtime.py b/code/utils/Gtime.py index 01cf9f6..5100e52 100644 --- a/code/utils/Gtime.py +++ b/code/utils/Gtime.py @@ -1,33 +1,41 @@ import time from datetime import datetime,timedelta - +from zoneinfo import ZoneInfo def getTime(): - """获取当前时间,格式为 23-01-01 00:00:00""" - return time.strftime("%y-%m-%d %H:%M:%S", time.localtime()) + """获取当前时间,格式为 `23-01-01 00:00:00`""" + a = datetime.now(ZoneInfo('Asia/Shanghai')) # 返回北京时间 + return a.strftime('%y-%m-%d %H:%M:%S') + # use time.loacltime if you aren't using BeiJing Time + # return time.strftime("%y-%m-%d %H:%M:%S", time.localtime()) def getDate(): - """获取当前日期,格式为 23-01-01""" - return time.strftime("%y-%m-%d", time.localtime()) + """获取当前日期,格式为 `23-01-01`""" + a = datetime.now(ZoneInfo('Asia/Shanghai')) # 返回北京时间 + return a.strftime('%y-%m-%d') + # use time.loacltime if you aren't using BeiJing Time + # return time.strftime("%y-%m-%d", time.localtime()) def getTimeStampOf8AM(): - """获取当日早上8点的时间戳(用于计算用户的商店图片是否过期)""" + """获取UTC+8(北京时间)当日早上8点的时间戳(用于计算用户的商店图片是否过期)""" return time.mktime(time.strptime(f"{getDate()} 08:00:00", "%y-%m-%d %H:%M:%S")) def getTimeFromStamp(timestamp:float|int): """通过时间戳获取当前的本地时间,格式 23-01-01 00:00:00""" - localtime = time.localtime(timestamp) - localtime_str = time.strftime("%y-%m-%d %H:%M:%S", localtime) - return localtime_str + # localtime = time.localtime(timestamp) + # localtime_str = time.strftime("%y-%m-%d %H:%M:%S", localtime) + a = datetime.fromtimestamp(timestamp,tz=ZoneInfo('Asia/Shanghai')) + return a.strftime("%y-%m-%d %H:%M:%S") def shop_time_remain(): """计算当前时间和明天早上8点的差值,返回值为可读时间 08:00:00""" - today = datetime.today().strftime("%y-%m-%d %H:%M:%S") #今天日期+时间 - tomorow = (datetime.today() + timedelta(days=1)).strftime("%y-%m-%d") #明天日期 + now = datetime.now(ZoneInfo('Asia/Shanghai')) # 当前的北京时间 + today = now.strftime("%y-%m-%d %H:%M:%S") #今天日期+时间 + tomorow = (now + timedelta(days=1)).strftime("%y-%m-%d") #明天日期 times_tomorow = time.mktime(time.strptime(f"{tomorow} 08:00:00", "%y-%m-%d %H:%M:%S")) #明天早上8点时间戳 times_now = time.mktime(time.strptime(f"{today}", "%y-%m-%d %H:%M:%S")) #现在的时间戳 timeout = times_tomorow - times_now #计算差值 timeout = time.strftime("%H:%M:%S", time.gmtime(timeout)) #转换成可读时间 - return timeout + return timeout \ No newline at end of file From 78577d1da52ad4ed03eb07e29cb9733abede5d90 Mon Sep 17 00:00:00 2001 From: musnow Date: Tue, 14 Mar 2023 18:37:55 +0800 Subject: [PATCH 29/31] fix(main): add json.dumps cm in notify task --- code/main.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/main.py b/code/main.py index 69e95bd..a4db59d 100644 --- a/code/main.py +++ b/code/main.py @@ -2,6 +2,7 @@ import os, io import random import time +import json import traceback from datetime import datetime, timedelta import aiohttp @@ -1979,8 +1980,8 @@ async def auto_skin_notify(): riot_user_id = "none" try: user = await bot.client.fetch_user(vip) - if vip in UserAuthCache['kook']: - cm = CardMessage() + cm = CardMessage() + if vip in UserAuthCache['kook']: start = time.perf_counter() # 开始计时这个用户 for riot_user_id in UserAuthCache['kook'][vip]: # 重新登录,如果为假说明重新登录失败 @@ -2068,6 +2069,8 @@ async def auto_skin_notify(): err_count += 1 err_str = f"VipAu:{vip} | Riot:{riot_user_id}\n```\n{traceback.format_exc()}\n```" err_str+= await Reauth.check_user_send_err(str(result),vip,True) + if 'HTTPRequester.APIRequestFailed' in err_str: + err_str+= f"\ncm.dumps: {json.dumps(cm)}" _log.error(err_str) # 发送消息到debug频道 await bot.client.send(debug_ch, err_str) From 59add4118c23452bd548af788f004a186c1d1f5b Mon Sep 17 00:00:00 2001 From: musnow Date: Tue, 14 Mar 2023 19:53:53 +0800 Subject: [PATCH 30/31] =?UTF-8?q?fix(main):=20fix=20json=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E4=B8=8D=E6=AD=A3=E7=A1=AE=20in=20notify.task?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/main.py | 85 +++++++++++++++++++++++++++++---------------- screenshot/log.png | Bin 7278 -> 7578 bytes 2 files changed, 56 insertions(+), 29 deletions(-) diff --git a/code/main.py b/code/main.py index a4db59d..ff14dfc 100644 --- a/code/main.py +++ b/code/main.py @@ -888,8 +888,12 @@ async def cache_vip_auth(kook_user_id:str,auth:EzAuth): if kook_user_id in VipShopBgDict['bg']: VipShopBgDict['bg'][kook_user_id]['status'] = False # 用于保存cookie的路径,保存vip用户登录信息 - if kook_user_id not in VipAuthLog: VipAuthLog[kook_user_id] = [] - VipAuthLog[kook_user_id].append(auth.user_id) # 插入键值 + if kook_user_id not in VipAuthLog: + VipAuthLog[kook_user_id] = [] + # 如果这个uuid不在,再插入 + if auth.user_id not in VipAuthLog[kook_user_id]: + VipAuthLog[kook_user_id].append(auth.user_id) # 插入键值 + # 保存cookie到本地 auth.save_cookies(f"./log/cookie/{auth.user_id}.cke") _log.info(f"save cookies | './log/cookie/{auth.user_id}.cke'") @@ -1949,7 +1953,13 @@ async def delete_skin_notify(msg: Message, uuid: str = "err", *arg): except Exception as result: await BotLog.BaseException_Handler("notify-del", traceback.format_exc(), msg, debug_send=debug_ch) - + +def check_night_market_status(resp:dict): + """在notifytask中判断夜市有没有开,只会判断一次""" + global NightMarketOff #true代表夜市没有开启 + if NightMarketOff and "BonusStore" in resp: #夜市字段存在 + NightMarketOff = False #夜市开启! + #独立函数,为了封装成命令+定时 async def auto_skin_notify(): global SkinNotifyDict, SkinRateDict, UserShopCache, VipShopBgDict @@ -1984,63 +1994,72 @@ async def auto_skin_notify(): if vip in UserAuthCache['kook']: start = time.perf_counter() # 开始计时这个用户 for riot_user_id in UserAuthCache['kook'][vip]: + auth = UserAuthCache['data'][riot_user_id]['auth'] + assert isinstance(auth, EzAuth) # 重新登录,如果为假说明重新登录失败 if not await Reauth.check_reauth("早八Vip用户商店", vip,riot_user_id,debug_ch): log_vip_failed += f"({vip})" + c = get_card(f"账户「{auth.Name}#{auth.Tag}」登录失败","需要您重新登录哦!",icon_cm.powder,full_cm=False) + cm.append(c) + _log.debug(f"VipAu:{vip} | Riot:{riot_user_id} | reauthorize failed | {json.dumps(cm)}") continue shop_text = "" # 空字符串认为是False a_start = time.perf_counter() # 开始计时当前拳头用户 - auth = UserAuthCache['data'][riot_user_id]['auth'] - assert isinstance(auth, EzAuth) - riotUser = auth.get_riotuser_token() - a_time = time.time() # 获取token的时间 + # 获取账户token + riotUser = auth.get_riotuser_token() + a_time = time.time() # 开始调用api的时间 resp = await fetch_daily_shop(riotUser) # 获取每日商店 - - # 判断夜市有没有开,只会判断一次 - global NightMarketOff #true代表夜市没有开启 - if NightMarketOff and "BonusStore" in resp: #夜市字段存在 - NightMarketOff = False #夜市开启! - + # 检查夜市是否开启 + check_night_market_status(resp) + # 处理商店返回值 list_shop = resp["SkinsPanelLayout"]["SingleItemOffers"] # 商店刷出来的4把枪 timeout = resp["SkinsPanelLayout"]["SingleItemOffersRemainingDurationInSeconds"] #剩余时间 timeout = time.strftime("%H:%M:%S", time.gmtime(timeout)) #将秒数转为标准时间 + # 商店获取成功,记录时间消耗 log_time = f"[Api_shop] {format(time.time()-a_time,'.4f')} " - await ShopRate.check_shop_rate(vip, list_shop) #计算用户商店得分 + # 计算用户商店得分 + await ShopRate.check_shop_rate(vip, list_shop) # vip用户会提前缓存当日商店,需要设置uuid来保证是同一个游戏用户 UserShopCache["data"][auth.user_id] = { "kook_user_id": vip, "SkinsPanelLayout":resp["SkinsPanelLayout"] } - #直接获取商店图片 - draw_time = time.time() #开始计算画图需要的时间 - img_shop_path = f"./log/img_temp_vip/shop/{vip}.png" - play_currency = await fetch_vp_rp_dict(riotUser) #获取用户的vp和rp + # 直接获取商店图片 + draw_time = time.time() # 开始计算画图需要的时间 + # 获取用户的vp和rp + play_currency = await fetch_vp_rp_dict(riotUser) # 设置用户背景图,如果在则用,否则返回err background_img = ('err' if vip not in VipShopBgDict['bg'] else VipShopBgDict['bg'][vip]["background"][0]) + # 开始画图 img_ret = await ShopImg.get_shop_img_169(list_shop, vp=play_currency['vp'], rp=play_currency['rp'], bg_img_src=background_img) # 画图成功 if img_ret['status']: - bg_shop = img_ret['value'] - bg_shop.save(img_shop_path, format='PNG') + bg_shop = img_ret['value'] # 取出pil图片对象 + img_shop_path = f"./log/img_temp_vip/shop/{vip}.png" # 缓存商店图片的本地路径 + bg_shop.save(img_shop_path, format='PNG') # 保存到本地 # 打印画图日志 - log_time += f"- [Drawing] {format(time.time() - draw_time,'.4f')} - [Au] {vip}" + log_time += f"| [Draw] {format(time.time() - draw_time,'.4f')} | [Au] {vip} | [Riot] {riot_user_id}" _log.info(log_time) - dailyshop_img_src = await bot_upimg.client.create_asset(img_shop_path) # 上传图片 + # 上传图片 + dailyshop_img_src = await bot_upimg.client.create_asset(img_shop_path) # 缓存图片的url+设置图片缓存的时间 VipShopBgDict['cache'][auth.user_id] = { 'cache_img': dailyshop_img_src,'cache_time': time.time()} - # 更新商店图片status为True,代表用户当天执行/shop命令不需再画图 + # 更新商店图片status为True,代表用户当天执行/shop命令不需再画图 if vip in VipShopBgDict['bg']: VipShopBgDict['bg'][vip]['status'] = True - else: # 如果图片没有正常返回,那就发送文字版本 + _log.info(f"VipAu:{vip} | Riot:{riot_user_id} | {dailyshop_img_src}") + # 如果图片没有正常返回,那就发送文字版本 + else: for skinuuid in list_shop: res_item = fetch_skin_bylist(skinuuid) # 从本地文件中查找 res_price = fetch_item_price_bylist(skinuuid) # 在本地文件中查找 - price = res_price['Cost']['85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741'] + price = res_price['Cost']['85ad13f7-3d1b-5128-9eb2-7cd8ee0b5741'] # 皮肤价格 shop_text += f"{res_item['data']['displayName']} - VP {price}\n" + # 获取完毕text,记录信息 _log.info(f"VipAu:{vip} | Riot:{riot_user_id} | img_draw err, using text") # 结束shop的总计时 结果为浮点数,保留两位小数 @@ -2061,7 +2080,7 @@ async def auto_skin_notify(): # 多个拳头账户遍历完毕,发送信息 using_time = format(time.perf_counter() - start, '.2f') - await user.send(cm) + if not cm: await user.send(cm) # 卡片不为空才发送信息 _log.info(f"VipAu:{vip} | notify_shop success [{using_time}]") else: #不在auth里面说明没有登录 log_vip_not_login += f"({vip})" @@ -2238,8 +2257,8 @@ async def loading_cache(bot: Bot): log_str_failed = "[BOT.TASK] load cookie failed! = Au:" log_not_exits = "[BOT.TASK] cookie path not exists = Au:" # 遍历vip的用户dict - for user, uinfo in VipAuthLog.items(): - UserAuthCache['kook'][user] = [] + TmpVipAuthLog = copy.deepcopy(VipAuthLog) + for user, uinfo in TmpVipAuthLog.items(): for ru in uinfo: # 遍历该用户已登录账户的uuid列表 cookie_path = f"./log/cookie/{ru}.cke" # 如果路径存在,那么说明已经保存了这个vip用户的cookie @@ -2247,12 +2266,19 @@ async def loading_cache(bot: Bot): auth = EzAuth() auth.load_cookies(cookie_path) # 加载cookie ret_bool = await auth.reauthorize(exp_print=False) # 尝试登录 - if ret_bool: # True登陆成功 + # True登陆成功 + if ret_bool: + # 只有登录成功了,再新建此键值 + if user not in UserAuthCache['kook']: + UserAuthCache['kook'][user] = [] + # 插入用户登录信息 UserAuthCache['kook'][user].append(auth.user_id) UserAuthCache['data'][auth.user_id] = {"auth": auth, "2fa": False} #将对象插入 log_str_success += f"({user},{ru})" + # 重登失败 else: del auth # 删除对象 + VipAuthLog[user].remove(ru) # 还需要删除该vip用户对象中的已登录信息 log_str_failed += f"({user},{ru})" continue else: @@ -2292,6 +2318,7 @@ async def loading_cache(bot: Bot): # 结束任务 _log.info("TASK.INFO\n\t" + log_str_success + "\n\t" + log_str_failed + "\n\t" + log_not_exits) _log.info(f"[BOT.TASK] loading api user cookie finished") + await save_all_file() # 保存一下所有文件 # 开机 (如果是主文件就开机) diff --git a/screenshot/log.png b/screenshot/log.png index c123b4d764295dee5be4ac482ad11c9c4e5f5a84..0c3aa01284f98bf913208bb525b3ed04dc22488f 100644 GIT binary patch literal 7578 zcmb`McQl+|zxF4H=rJLT&PbH#UGy+o^!$P#h%V9FDAA(C=n>I_7=q}%muN$X-pLR| z@1lj^-JWNi=dAZV>;3PHwXFM|QTDy}{$AhfbM0_#O=VIdS|SJpLaM5QcmjdkI0V<) z1o+_lE_WCP0%0&yMLc@y^>I7h&;F^^akrMsr_e=tHHX53C$A*%9#|2>KO{hs9+0c# zf9i9e_87&JpCFE`X*9TtUlB-0&43pa{gvbGsXTr(;kWk&J&SjE+O}{~?il8ipaadA z%NEtSK2PoL-u53{uJ_#e{v!n`At;@hqqE~@GLZgo@cQfbk8co&Iqa<&Y$YRCtKjB~ z>&x8DG6frOkt`g@Ako23(vfpxYlsGXz()EaYyjNzzl2D-gZsCtxKmj|;9i~fD_J_Y zHyeQ<*T6kVJbsyi7VAK|q;j@WGs@Jb=<)76liup__H2G(AucrQ z(O+bXb_zU82f1r^nK!O2q7?!SM23-}z` zM!^Jdrl+TS`uY@JzT})JF)mD)t+csKL`3v1GqZH`54O>>8%s4>S*Fmcy!Xc!8vWkc zT{DjY*(ja6a0g#gcf4*{TUW%+i`o;PR@fgari!{9b!6$f1}h8VXM%^}%+s z3&yXTM@k}(BhYd>l&8KjQ`^W8`7D$Jp@KYO&!<`E+@tNI z_HAUh?$yX=H4a{0C1vHXowHOCJ2}MZ&*0ltc4AI*ormkAj}ZAqMPnP!Tm2c>H9vmc z!8Ym`8AZA*Vcwv$_4TQfxYga!8sbaC9zS>Rp6GnA3@?Nd;K4T<|8kdO+yv`<{|Hu8 zR#yA}J~-g_KCt9AX?jNOZQAT}S2T@OL`0;{W0MNIbqg`f;QMC z@fx>(eS`Z5Vf*UUNXg{bSRiU|EjxB`W4sVLyS26^r=*0>==JkWouwI^Re20UXw%fd zo42}@4q*$L->v;MlpVclS?(|^N)BaHPY(ROI;hND>$a*%t~2$1ikPnn0&n-6_p_|1}_gF4d3(n%)irlV5QYN_UQU9R7sBs-NoA6O8 z5=K4`F+28YCRAMgitVxJ{lK}lwl*Yq_u~9S*}{Sq@^iDaRjJkgLJr}zT|H@DQ;*y> z1Wyt0cOMK?|JVI=1ig>&;_%VixA;7FG%axm5EIH=Jrq;V)QqIteh*{(*Wt2tB=xsy}ezU*TG{wB^T7O4$08(b&MMMs@?oSQ<_>rC*I_Gy{yxlUj z7N3$5PD&@*X?ywwy=S0jrBKz;gztT@Md5B zZ|uWxPl@yf8*)F4(D1e52nq^n>*|K4i8-Yv*8BdcNPH~z#MCr)p(D)5F;bOuYbYLN z|11g`%I|MHUBv2C5?*DbcgTuPL%`X+1z%XxTP<0MdY2o@zR#lS!;3&Cmz)QGszg)kXF^Wx-@OXeCko4T?>d@F29$a2gQE{sIzFOjowxFAdv*u55B@gehIQ0mq-A;X|59+CQ zwpd86oh40C6z)L(l033nDefjYzE}pT%T_K5GyFZJPf)Rti72#c@DWg%i_0=w4oae~ zsH!3veIp~f-rnA-;|%W=8terc4Y#zmhQmk}f#8DTR&;R@;5BK2O-!(7`r^Rbd*WED zk51;I{>DI-JUJxA|D22Utq_FSyXTa zGeEA9l9J8{p@dudmIaN8$^^-fyK~V+McgDXe#mUC(rJe%*vlJ(-r#;Htoqh z9#V|41LUcn1+12+Ih#47Vy4vDqN3;-lGE=}Z@!hM+P{L2k`v&$>!489kPBiV^f>h( z+erAqFFDww`sZ-Iwz!ABr~D{_uCA`r%ky2A-zyqmofo^PO~-oGGo)z7$HyCd5)yzg zHSJ^Q8aBbt<;Gb$Da>V>MZJyofgfrjP1?(8jhJYAj{8yXpJ@pz3CW!j z8$Q)le11W*RMEbey2Gptew&9%#8Nary&s$MD&tK5{UEmj0ic@)z!7iHBHn32f9#P zJ6Cb|=d)x5WAA**X-ww{JN<{L8+^*^@Ceb@40qve@@$Ej%)fP zH;;(0vf>&T7%)fph6w2acho^9t=c2x0u|{I+EkI{H>=T65hcga)Nj#;vb-Plv`%ws zGI4s&DLD=Kb`X9rB*Egs9AQONMo3(+)B4T3V4)p%U#;Ym&8pnXVugy{P29ZS(C_O8N z1cs7nHf=fC8^Uh36(xO|v-bK8UOF08yS)W6v|7aoAL8`kEIJ|8I80?7uZfc#eWNwS z?O`Oa)`g}QM7a1Q1Zk9@t&w!cGEMe+xVwLaKkm9XnRjZ?`ughM4;$XoXcnFJ zA_Tg=F;hm<&WxOllnyE9pWVCH+Qj;V=*Kft7{=D42+pR7{liKPcBj|DH}>JyfPh~s zE9N^t>Q6TcORLU7uSk~h^Qk>b;_Zp&{d4{XeuzHTm-hMZe1!ywY2HW3XhElODhCy;@VuDI1LnTk_&dbPk z8bL^4a*n{OF^+A|ZfVBb(&t;1oQbG)B1nE!)rYx&D?eIUf8TGgx4Ok-{qgx51E;nuUwK}lK_Rc9L?2us;{q%Y)m&aG@R-Y zc-fc0rEj}2_632M!JF7T8YwcUe8Nf9arodY$1u=+IrHi-JCLoozGZat>ytas;Vgx) zH6WjyiBV<^nc#Q9TdSD?ngs>m0=SqboOe17C8o02-vC@YTVlFWi9l;RIPd_~i^Dns zLfhKfqEzeV$M#9?HYvP5-pT?irVS=RBTY0Kg~BJL{b2qLmg{MzRt;J2xx6_4^7(Tp za(hM*fmj_#&rVFFauuiF8cM0M02}R>vv}173%gdvJve$eTRHCu_uF-kYk9kVE3D(u zKe_5z*VI`3>hAP5a;Cyctw7Nt*-=qluj`k`?p$+~|Amih{c~Zf-VfJfY9gpC07i*MTl8l}M zn}+vTP3=obNel}0RQGeN%o!^EVSM7R)z$cpg-^g&yu&)KW~Y$E%b!ls{+pPa`u+zH z|1U80|Hhy27yT&d8KV?Us|Z&A3stC@5B)?yZXsZPf2yjQni0T7*DDjlB%ATdrQv&5 zB=wh?nnXZc3ZbE)Rj$jAiSUEJP!;Mk(_4U7fnvFO!@6udEl2`niI2CY6~f3E;BYk9 zOu5f!H@%uoXdk-X^Oj=VHgt0nN=Ql?O>=5d?eFiWB*3%XoG7mH+Fzu6JoEY)SV_SD zIfhYnDv6i1)zvzW9^L3q5efqwuB@S<;W92Zx*L4!_Q?8Z-WN1F2q>&=Um_0{UT9#d z{xQ((5;U)yVI6VK7jn!H;9cIneOtE?D$fFVkQ|C4;7#H(qk&hO0)_(??QnaR+S}VZ zS=2hRsi4X=*IM^Fe<68ju1#sDGxA{a4F$EN*R)#J+FDvT?0`D5tuLRrkm<`1S50?8blw6Z`K z0IU2)j=99gv6c>j2e_&cOBUN5Uq)hGWYTPCdB<~4<-xXB0}E3zw=aA*9_DTGdzk$2w%>3i9^p+{coAVZYUnk z8x+|<0gF4}>{&1eF5j{_h$t1`46X)a9hEsKAO9+cS2!=olS6?Rz9psG`}=#)PDc$i z5(x>3z1r3b($>GreC0kzujs{{At0Vf&6+MV3!az&hEBlm%$*$ifQxH*csOfw^WVfy z*4Sd*PfHG!0le<$C%VGh&Pf3UjjYqPS>x))Pf)w!E{k~A?s#U#Fp5r$3=z`MAYoi@ zd**kvp*v+SIyN@;6YMHTV5Q9`(K=y9j*;G*f!?o;v+(o znfxgAOHD`%YaOu?AaarS+y-NZi90i+2*6&({?=B9!AGK(DPN~urh#XB16-8U-dEg) z&Edn>Kn$7DW%om=O}uU(LUvoud5bbt{x#p`phkt4ez{9f6!6ihw9Yf>8^`4yo?l!? zN|Uv~5mOKS_(6~Ko2h!4EMk}VGCeQDhX{<4spap1+V;#!f7&BN&%gjCMaV{dGu%FK zs}B4xVtBhntTcwR>mHipvAoa6oiis4Pa3PY&EeLdhFW^rka{K?HYj_P8I+^pI+)vrr3X!zuC%ds23?@g4I9uyY_Y&pn z!pl@Rly2T>bi?CA~GBUR~v)GOtT715?>bL6B|6XU!ItXb$zKDdM7 zjw6*um#UG7GUzFp)JBc9z8kE=eKv<0iyu~1R=#zefdEYp!AgQq51#}U z2)4g*g!6cTF7q|qy)C{;YXJ5FilEZEUmgU0C<3rZjzbk{-u@z$hP(bs1^>D3 zI4{F}!6mJLGYX*Vp>$%7YbBmYqwRFIemM7|5@3KH^;lSOFfTG)fYjBhFdFPc2Cj<4ntkuM~Cr44qT|R z%|6&%Ew<_rgv!sPW~Z=xV7#)*Ua~HJMvSv2IJ3F$gquOKVbMQh~Esc07r=Y-^Ak>0N+5R~% zHKpP(jaYVY5-EKkKdY*{=TdAzf#GWm0n3vyzTPumnc}Etvcj78I^80A5Fg^tp_Axl zl!7ngKI2WnrC;CTugj9osR>&CJulNg!u$717Kn+i-vlnrrmD6!yR3{{$Yx+Hfr3+I ziT4i>e2|yDKDOT$+SCmG>!v&*S&5qV`qj7K{ME5GOtI(yZ!$k~F$2(r_{6iTeglxM zgH*QVtl+w$GsRtS5Fueq{?8^SfGC(%PCGC6-o+lN{AUqyloa6fMFJ1v`iKK>rh1ZQYd z1$0N#;%>OzWJy+C-IVLu!A!N?X$RBgC+S)6%sR%##a#aw7!bloG|0)AWI!MY(vp^| z%hx}eyeU#rQoQ!Ns2h*G{Ywz8B{*586`BNj?4tSMRuA$(i@?8q|ezaI~zy?of~bGN zSx#5C?l~{^>wAW3z+nku5^mEkdgFYV$x#hodbW{v4ungrbZQT=93!X$5ik+ee3sBb zmOOzjp`O8Q*ZQHMAqW`KxQI1FQBfvF!N!K&dN3mzSRh0Hm&zaouX;Huhv4Ai>X>zE zjRrB=rs%2f@wCm1UmIw(Ab4JklQ&b-`QpJtH$`#2O5u7b?}Y3Z(5zl) z!|J2vTT41 z70?$THH)PI7lkE%K?E5N1XLrpcFu>`!NGy!!2=M-h1Oj9|A&+t7Tug1vH3s?S!1Pw zz~)bBF&AQpV|9L{pb)It8rbN=s`c2)_&tb54WIJ3x7!Cq&=VRx#F;QUG_?lUld9SG zY}lz>Qu@F6*MI9f=mp#V>gTHWMsD*Gbn}9<7{ItTu znbT=iKOAcl%|FD=Cok`NxxZCYR|#yCJXJ*851>+7V&``w3+H!P>?~V_1^~rLZEFJY z{q@<&He_cs@Al>8Nvqwqu&Ai{(5FYt4ZnFe+uPgAY*$bBmtbO!^c58qdqWDh%>dOj zFa@f5{@VRVR~L(?i`lYG<)G_-(=`I(H@iPQMoz;4DgUBp(NR{P^25gLY~1SV>b2Qg zzMa;qOB6ei`M*`D?Yc>{Ie5qs1zU6TiS{c>W^$oVy#^{GOugT;vcKUMjzA-@L-(U% z1a7Va8}nE5Rb2YoMy#&y;jl7H+DG^d^ww*~^7nNAwBN};I9B!&2F{3XLFga4;#qXZ zj7QlS7|?)@*{w33*B-aTGsV0XH-*9yKm^Aw16TlfKiG{?}QFPRJt_jO?nqXZ&E`MzI&%&$$Xwx%l873M1t2!!h41LR`}gkT?B zYm<|L-#ff9-4Fd4jL;GL`Wer4!t}YgXKrOJZ=RpT|2-W%`QAPy4OMFA3~y2&#QbY^ih#dCcKloOHe4LoWM+}=L+96H+tCEX?u=OFLo)38##%5izA zG@TsAe|aGlM(nLfORV^X;CAlS%MYkI2+Y7e?K23)8n_RCN%TPB2Dp!8RUpJ(KKm0w zH%tN^xk>giEL)jX+9!dOn)QKhk@~uWPF1hhkgO^R2}zCpP8u4t+nhY>g&j_~|}jQR4xZh(1Xx?TV` zF)^AhVvj&Z2XX0}abxAkGi3vPQaJl$k(2Ixm#^HMtSp8}`_Mv1R^^Tw-z~2WJHyf{lA3gWUlzIuay*vxlUg`P`2H|pw*(d1jIkFoBBg@sW?8gK8< z9}oJj6(q^!hyGn+_r_0s+?T%nPNfvvYCpv0Mav_3D;?8zyz*90M@P}5&ShQUPLzQ{ z!*cBXf?-iABr!a^XX)V+Ia=~CbgrXuud50i>W~qw!0|Gr+_hxqAYed_4hm0x(D|E> zkFQ}9(`3C7blhjropZj=t$I|^pDjDhYiMW~;~<*xj6Je0xfDYb*0)Ru?O5Hbjfkw+ z^^@^vG=+`U^_sZ1MD?(Tvf^+!9zH%59UW+CS=q;r^Zf7e zAwK*iF~wRvd55JSM)!xps!vm%qw(XO&(wp039pw0DZ6w82fTxQer6PvkcOZKx1{Od;qyCMQ<$Emk0^*{mW|0~*`FY}F#_gjg38IwhHWtY9&5ul%gve? z_ErYEUfxtzK)$c6^!1j%b|tT&fe{(063;*Y$;imiHaAcFXwy?PPIFT#mNc_u4dGz} zDcKCD`y>{NgnJ&CZK(+d4w4SZU&w5?9GQ!Xidt??RFFq0r3qRQqRHcL2#EJdjT~_2 z1koWQU8n16&k&QFn+x%s^DizqUFu0n^6X^~{VQ~Gv_k{$)YX!GQ^%_0Jf83!v7oL$ ziCaI`BMn=pqmF@*>?03n%tgh-^1N0D-e9ibDb8ag+@~{h4-Zj++w9($`0HXI<4|t>K6a{PyGAm z68iZgJk92nTWs-qs4RQbDDGQbCy{YkD_7O(;g1e7c4V<;)(7`_xxEZ}Gj}H^;YnQj zz*~t3^l)3~MdDgq?qzM3s^clOt9}j{q^W(&JT^MT?YbxreCB8t*8B1N&XMxufkFCJ zX}h-h`4v1Xgn{=71m2n2x?lM2h+8w09Nu}jHT}`Hk6|DGjlQMdQYP3t91*5bSA&}?H*Ew{XrJxRwSuKLv#4`nLX(53 z7TG-8Fl-})E>6#%`vm%`eBdCE?R&2{j<~z3&NYiyob`CcV*{2-k(U}bkF@7#v{kzx z<)5Hd1D4>-@ztHLZe%jVxDE~yEW}&&k&v%nv&9MtwLgM1$w80kE%tCZ* z`7F&edhzh^w1*K8edkr<@8D*9(lg$1Z|HI1>8TVB#UU=DC6UWDs@hanj>!3{*gUPuy?ZuA-w7l~5A1V-8Nj~!vlDvZJW*CzNd~oAA1!n|)c$gf zZnzq~@uZxIM7picWkN?{^3yb5-#f{kW8setBYkJos!dhRB63)^PJ zn3y%)=(Vb?r$-F$oNEbuHJ2mp%a8S554Y-ywpty`f`rXB`9`1x?FU&^T~~-k9LE1< z;SV2pgsJ-)*3+9APV1ofabX$i?9Vru8ooy}@9P`s*1FeE&pIts4n8s>yH_fEyE-Bz zg@F==5XHa{U_)j55h_Ph#+CqxBZGG)!lWN>l)d!7ooi2lQcj%R&o%R)is||l&>}>Q zCaN;C>tdPt!6Z~E_L~3#h^M3h;qjm&HkN*!Zjt32W$>R9yV zQQP^i82Pl#V1TW6=E=f1)l$OHzqXrpxLgG+wCACgXH+;y@%gz=wG`{iisz!~7^08P z6Xm`o#CqH(4qHi9j6$~ML@b*NQpvK_{Z0xr#DsS2e$4YryHormU?{r9n(5E@OdDtc zpJ|+AJwXNk{`nO^hLU>vNP%hu+5;fmyCM3jc;bEDJOqccL5XHpS$EH1BrK9Sa%=Es z6;ZVp;<-XQl_wysS<&`SB*y3UaXOn` zbn6HYOno6t^G{|ZvNiR{$neCtXY0+xJ&AE~SEeb4*U!of zEAs=7w*BxQdxYUb6^U5+t_&)ZgUAC-Ds$GU@__f}bFtpDrD`(QF&p$3DZAcgFv#uE z9={0d=;CJFPUN!2)1e7je%5w>!Me>%zDT>e)xsEy$G7rXmHCbMM##=VIDOPC$vn;JN zcXe?ghAy_AZmVs|LGa&euOcHQ=KO9I)_J|L6l9dh^(yK`bUcr%ej+yPweVP?fMC+~ zewI@G239|H#;rd6piJOB_!`fMT&Ekc`^l$P_7W~*<*!_-XSj2QZcJt$r~joq&j$Y~ zMgBNA4%N*88_bb+*L*WMK0cN5aqOT#HOcxD8p?C$j$#s2n;{fR_PE-@37;nW0IHu0M=!ZfnH6@!+@_k>uPx}PgDB+z|wtb^m8q@g^X@_AB(_>bA>~{fyq0G#TpEa7UjMC7uyr*AB2VA+8EcbnYVRu(@ zu)iYs!yM6%>FR)x99u*Cxbda8?WjN-`Q$hle!89pu%zAT?*42nCPy}q0U5d6m&)yG z_(cvNWF&%awOkQq)N@Ki@52(MM`i^}F6&5!B_o3E>yNv4j*3NXixC{P**KxygfRX4 z&cQgH(w?`Hdn-&N_h-wWp0)bXE@YIf$O2q0Q&G>kp@UCC2+R z?DZv0^ig_L4L)xbo=*|vnknd_%&5NmG>smsh{cBJ7N0oC*3#|pc~6A7Wj&0u9}3E{ zaCfdXYkE#5KOGA*Z4F|&%D^kA<#~;P;m7A276~SEv6#JhyB}wYxAKCM!?IPzXFp76 z2;z~#wc_QS)Iz!fhnDtM^@|UK{Z*UqcsK|9B*bn=Mv-Z1lJcCL9CQH^$vHez;0Rmn ziYaJpl;Sh;f}w^B&)GIczItCgvXB|)NZUSTeLSMN$@|(Y)Ne0KOhhZ1d97mg4^y3M zm!OMQ*Qe?T*}%hGEcSa)h=vB0&(0jokf9hmNK^_|5dvTMQUl<3y1Ls_=xA|aA&I`e zzNE*3g7Hz*&nF@dH&K#%LqAzKY1m}YZnM}tlX^Es2{+aWjM>|doCWe1$3r~4yszom zB`8QB3Q7ik$IGcDt*zOj8U@-sNGxUy5WloBui_WUoS@$nFPO#R&}gMRS}64REQDFY z%~Umx^J)6lbp2SVewo887Nw`HJv{Q`r)(6APXY6LvhDoM#^&bNrQP9ZDi$=_p(hcx z|CKw(`@_@lm;Nh*S!zh+PV*i$Q?w!y8AHRq{UABg$Fe_7s3znrfMP|00xTK@FE5dS zbdeZuvts|f6&=t3$Bg?(q^+$jj5mwpX^Nq_f7C>!g%;3^MdmF5BS50XqThpI!g$j; ze%??4h45GT@7V#TQxkCD1Z<5Do-s=4CRpBd!%>+_g{kK7)IOCYncw74Xv@)DAQGvk zua8T%rcj!@Ng#W*8T{$zvqp!XUy{dXX4LmqhqyJy)^4=@QBjTOB4>&sE0gh?{a{7J zXIz7pVWWA$DpeIxNFVuEi7aVS-g}k9o0V;vJxT1vxH3asfZYgVQN=Gj zW=%ev@O&_j|IF_c1NEG2#VG1N*G!$FPWzh%K!GJNXL=SET1aHH)i4&dc{}Z@)I;#} zm*r<8ue9VIW)vk4t%?-SktjM?{G7`8mm{p|`@i>${~v7U|HCWXn1STDPeexj?v8Ge zcMVVY@HYDVs;dei)lTu$ZHKgeGFJQOUkP#i}N~up?wPcjO0tM*o}tfkGm)|#D;Oq5c{>5(?ZeYSd4EP zt7;;vqQ8IRovWcv&dxTypz~BH6l&!xTQ<=8;{1#vr{z-MZcfs)U7YPye~W7FS$_5$ zO-o5CZG5d~hWCUR{vD)e_e~ zCijC_0Rkb8=n$8t?-Eo%qLJ`BxF!6jEg$7EQ6RG~N1&`6u`YwF!XNqhKAD zv>8R5{XWyZUy5yH?8pdI*9lTJc^|9trR&6{-L zl+;ukz|3g~)Lj6Q&M98jME}#K+9{Yf`+2IjAP-5=FP<_}toc8XWOb`n_G+4C@^lDk zo9|C(Hh1q$*T2h(@FwTvYs1kVKfgc|*yZI`0#E)d zC5^O&hSEZ_12#(1uw%tqWYEQ{7JmqVlX+7cLNU3hE@7nIuX=WIP#H=E?;Orkw(*{e zqi6XrIzApbm?d2RmK#^KmYsXp)Po`rDWwg5-SR2cw?MsI^pGsX%4jfA$AILa_aJL@ zW+tH{g6vXMg54yv+~TnqZnUx(!|t|R!xpf16Btq|mT2I-pQ8nzexbeO#YGRsqZzNH z1b@dyfA=Y)kBmr);2Mi5m%Y8oFHJFzfu;#*j94ET;au_d7>sQ+~sV>OEC9e_~*M zdd|;IcY(zXLwl@d`F6iHs&%@KCcmYc`033(!~TRyQ2vV-FVZAEf&ZJXckfBzGa0V7 z*BYOg$k)n|3;alI6YbLJ9Hbppgsk(J2Rt|rs%T}c`)B)!W&rI=0hX7O=?Tjt;gckuiE}D3xK`ZHGh660crowP^c4-;(>u} z=&uMcDnYjyNpHaC$Vfwr;Oh`U%XSD*HhBOAvJj~7>8R_B_c%FqL^(FC~GYO}3a<8pXggg^R7pXvBX=DQ#A7 zO>pZs;)Pj#(tN1ZT;;QgBq$3sRAV6vpo{I&JIyxdrvno6#89h=a-+KC3f0jxP;I_i zDnFyR3!~5W3E__7r%DrhBDUhIO-C+1{r#QVMhwj>D(d#(Gv&;t5(J)-5#jybwJmGv-xH&P&%AsC zY`xm+aTb|0*P{`dr+379wM_zo6NUj?Pb)|3ir4ldfO}kv%Iob&ZN{_p3_Gfp;%2> z$!<(WH={ME-jMm7+Cps~PJJ#Xd^}OP6TB110sp(36zYO9Z-jkTr3UdODq#D+rW9JMi}MeJ=KH!aqn1qYu<@6x0FDiZ4=2X54)HU!!i*#rn7Q zED24{G_sPpfW??8``U6&5*vuF9r1(a$Sh>kod zK}zFISU$s_dKF|=OS_-SD@vY!Uw-!abv>yU&Z;y$=r-NMhLSIv2N^@ws|5%(6gIgS zigV^q?F*9Y>pasg7HXt%YLjK7A$$%2{?TX>vAOW{tcEY>usR2@xJub(lH3Uonj8Sv zJOP9~cprM@%9Rg6$Iqr$|J%l{oVbUcn#=?r%?hzZU2etv&CS$CN-_cI9t^cPjyFw2 zPfXd6s06Dyz-~4mc%1jDkLZK6q znPC=`cIn1Hk8aZmRXa^kG@adX;==zVe`gD2KSMSq7E_xY_teXDz)CHdK2LL_{CdEGAzxnZ!{Ger_pSLM3{bf^Kw^xMW9U|k`= zsNU99cltCksw~_4mJQ{bmoN$ptH4!3Klf^W!gO31mF`ukVW^&Gm-rB>}ab` zl-m0E#3IjcNCMvU?9;Q59@V+u4=>tIaFzKrH8uKea=_6oEp$ZKNfnEG9RIfEeewYU zRt*RI--gyjpFg=}x$Iw~i+nL%qFAL|owBOo6+5{4j3KAj$l&~*meb0o4+SGA*~KD3 zAH>9+2Ov^h@qN69M{->}`3!*3qX*`@0CH8=08I|s_Fs!#BQrCs_3Ab@x7hp^2wuN_ zovWI}=C_s?^9yiyP06eY0jlw&acJ9Ycx4z{=AP*Yuq{#+~>+9(aH~a4)j9+Ii zo6Mgu3}i~Z>P}!98_5UfYCU<%F>B5ir_5033r3;vBF(HvKz|f=b}CK(wszl&|F1JP re2o6(nHtB; Date: Wed, 15 Mar 2023 12:40:39 +0800 Subject: [PATCH 31/31] fix(main): fix err in notify task and cache auth obj --- code/main.py | 2 +- code/utils/valorant/AuthCache.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/main.py b/code/main.py index ff14dfc..9cf3c77 100644 --- a/code/main.py +++ b/code/main.py @@ -2080,7 +2080,7 @@ async def auto_skin_notify(): # 多个拳头账户遍历完毕,发送信息 using_time = format(time.perf_counter() - start, '.2f') - if not cm: await user.send(cm) # 卡片不为空才发送信息 + if cm: await user.send(cm) # 卡片不为空才发送信息 _log.info(f"VipAu:{vip} | notify_shop success [{using_time}]") else: #不在auth里面说明没有登录 log_vip_not_login += f"({vip})" diff --git a/code/utils/valorant/AuthCache.py b/code/utils/valorant/AuthCache.py index 702984f..105d33e 100644 --- a/code/utils/valorant/AuthCache.py +++ b/code/utils/valorant/AuthCache.py @@ -17,12 +17,13 @@ async def cache_auth_object(platfrom:str,key:str,auth:EzAuth) -> None: return # 如果键值存在,认为是tfa登陆成功,删除临时键值 elif auth.is2fa and key in Auth2faCache: + if not auth.is_init(): return # 前提是已经初始化完毕了 del Auth2faCache[key] # 如果对象没有成功初始化,说明还是有问题;不进行缓存,让用户重登 if not auth.is_init(): _log.warning(f"key:{key} | auth obj not init!") - return + raise Exception("cache auth obj before init!") # 在data中插入对象 UserAuthCache['data'][auth.user_id] = {"auth": auth, "2fa": auth.is2fa}