mirror of
https://github.com/KimigaiiWuyi/GenshinUID.git
synced 2025-06-03 05:59:51 +08:00
新增:引入avatarOffsetMap.json
This commit is contained in:
parent
24349d5e24
commit
5dc2154073
@ -2,12 +2,11 @@ import math
|
|||||||
import json
|
import json
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import string
|
|
||||||
from io import BytesIO
|
|
||||||
from base64 import b64encode
|
from base64 import b64encode
|
||||||
|
|
||||||
from PIL import Image, ImageDraw, ImageFont
|
from PIL import Image, ImageDraw, ImageFont
|
||||||
from httpx import get
|
from httpx import get
|
||||||
|
from nonebot import logger
|
||||||
|
|
||||||
R_PATH = Path(__file__).parents[0]
|
R_PATH = Path(__file__).parents[0]
|
||||||
TEXT_PATH = R_PATH / 'texture2D'
|
TEXT_PATH = R_PATH / 'texture2D'
|
||||||
@ -16,6 +15,7 @@ GACHA_PATH = R_PATH / 'gachaImg'
|
|||||||
PLAYER_PATH = R_PATH / 'player'
|
PLAYER_PATH = R_PATH / 'player'
|
||||||
RELIC_PATH = R_PATH / 'relicIcon'
|
RELIC_PATH = R_PATH / 'relicIcon'
|
||||||
MAP_PATH = R_PATH / 'map'
|
MAP_PATH = R_PATH / 'map'
|
||||||
|
ETC_PATH = R_PATH / 'etc'
|
||||||
|
|
||||||
COLOR_MAP = {'Anemo' : (3, 90, 77), 'Cryo': (5, 85, 151), 'Dendro': (4, 87, 3),
|
COLOR_MAP = {'Anemo' : (3, 90, 77), 'Cryo': (5, 85, 151), 'Dendro': (4, 87, 3),
|
||||||
'Electro': (47, 1, 85), 'Geo': (85, 34, 1), 'Hydro': (4, 6, 114), 'Pyro': (88, 4, 4)}
|
'Electro': (47, 1, 85), 'Geo': (85, 34, 1), 'Hydro': (4, 6, 114), 'Pyro': (88, 4, 4)}
|
||||||
@ -56,35 +56,53 @@ def strLenth(r: str, size: int, limit: int = 540) -> str:
|
|||||||
async def draw_char_card(raw_data: dict, charUrl: str = None) -> bytes:
|
async def draw_char_card(raw_data: dict, charUrl: str = None) -> bytes:
|
||||||
img = Image.open(TEXT_PATH / '{}.png'.format(raw_data['avatarElement']))
|
img = Image.open(TEXT_PATH / '{}.png'.format(raw_data['avatarElement']))
|
||||||
char_info_1 = Image.open(TEXT_PATH / 'char_info_1.png')
|
char_info_1 = Image.open(TEXT_PATH / 'char_info_1.png')
|
||||||
char_imfo_mask = Image.open(TEXT_PATH / 'char_info_mask.png')
|
char_info_mask = Image.open(TEXT_PATH / 'char_info_mask.png')
|
||||||
|
|
||||||
|
char_name = raw_data['avatarName']
|
||||||
|
char_level = raw_data['avatarLevel']
|
||||||
|
char_fetter = raw_data['avatarFetter']
|
||||||
|
|
||||||
|
# 引入offset
|
||||||
|
with open(ETC_PATH / 'avatarOffsetMap.json', 'r', encoding='UTF-8') as f:
|
||||||
|
avatarOffsetMap = json.load(f)
|
||||||
|
|
||||||
#based_w, based_h = 320, 1024
|
#based_w, based_h = 320, 1024
|
||||||
based_w, based_h = 600, 1200
|
based_w, based_h = 600, 1200
|
||||||
if charUrl:
|
if charUrl:
|
||||||
|
offset_x, offset_y = 200, 0
|
||||||
char_img = Image.open(BytesIO(get(charUrl).content)).convert('RGBA')
|
char_img = Image.open(BytesIO(get(charUrl).content)).convert('RGBA')
|
||||||
else:
|
else:
|
||||||
|
if char_name in avatarOffsetMap:
|
||||||
|
offset_x, offset_y = avatarOffsetMap[char_name][0], avatarOffsetMap[char_name][1]
|
||||||
|
else:
|
||||||
|
offset_x, offset_y = 200, 0
|
||||||
char_img = Image.open(GACHA_PATH / 'UI_Gacha_AvatarImg_{}.png'.format(raw_data['avatarEnName'])) #角色图像
|
char_img = Image.open(GACHA_PATH / 'UI_Gacha_AvatarImg_{}.png'.format(raw_data['avatarEnName'])) #角色图像
|
||||||
|
|
||||||
# 确定图片的长宽
|
# 确定图片的长宽
|
||||||
w, h = char_img.size
|
w, h = char_img.size
|
||||||
if (w, h) != (based_w, based_h):
|
if (w, h) != (based_w, based_h):
|
||||||
offset = 200
|
#offset_all = offset_x if offset_x >= offset_y else offset_y
|
||||||
based_new_w, based_new_h = based_w + offset, based_h + offset
|
based_new_w, based_new_h = based_w + offset_x, based_h + offset_y
|
||||||
based_scale = '%.3f' % (based_new_w / based_new_h)
|
based_scale = '%.3f' % (based_new_w / based_new_h)
|
||||||
scale_f = '%.3f' % (w / h)
|
scale_f = '%.3f' % (w / h)
|
||||||
new_w = math.ceil(based_new_h * float(scale_f))
|
new_w = math.ceil(based_new_h * float(scale_f))
|
||||||
new_h = math.ceil(based_new_w / float(scale_f))
|
new_h = math.ceil(based_new_w / float(scale_f))
|
||||||
if scale_f > based_scale:
|
if scale_f > based_scale:
|
||||||
bg_img2 = char_img.resize((new_w, based_new_h), Image.Resampling.LANCZOS)
|
bg_img2 = char_img.resize((new_w, based_new_h), Image.Resampling.LANCZOS)
|
||||||
char_img = bg_img2.crop((new_w/2 - based_new_w /2 + offset, 0, new_w/2 + based_new_w /2 , based_new_h - offset))
|
x1 = new_w/2 - based_new_w /2 + offset_x
|
||||||
|
y1 = 0
|
||||||
|
x2 = new_w/2 + based_new_w /2
|
||||||
|
y2 = based_new_h - offset_y
|
||||||
else:
|
else:
|
||||||
bg_img2 = char_img.resize((based_new_w , new_h), Image.Resampling.LANCZOS)
|
bg_img2 = char_img.resize((based_new_w , new_h), Image.Resampling.LANCZOS)
|
||||||
char_img = bg_img2.crop((0 + offset , new_h/2 - based_new_h/2, based_new_w , new_h/2 + based_new_h/2 - offset))
|
x1 = 0 + offset_x
|
||||||
else:
|
y1 = new_h/2 - based_new_h/2
|
||||||
pass
|
x2 = based_new_w
|
||||||
|
y2 = new_h/2 + based_new_h/2 - offset_y
|
||||||
|
char_img = bg_img2.crop((x1, y1, x2, y2))
|
||||||
|
|
||||||
img_temp = Image.new('RGBA', (based_w, based_h), (0,0,0,0))
|
img_temp = Image.new('RGBA', (based_w, based_h), (0,0,0,0))
|
||||||
img_temp.paste(char_img,(0,0),char_imfo_mask)
|
img_temp.paste(char_img,(0,0),char_info_mask)
|
||||||
img.paste(img_temp, (0, 0), img_temp)
|
img.paste(img_temp, (0, 0), img_temp)
|
||||||
img.paste(char_info_1, (0, 0), char_info_1)
|
img.paste(char_info_1, (0, 0), char_info_1)
|
||||||
|
|
||||||
@ -267,10 +285,6 @@ async def draw_char_card(raw_data: dict, charUrl: str = None) -> bytes:
|
|||||||
else:
|
else:
|
||||||
equipMain += mainName[0]
|
equipMain += mainName[0]
|
||||||
|
|
||||||
char_name = raw_data['avatarName']
|
|
||||||
char_level = raw_data['avatarLevel']
|
|
||||||
char_fetter = raw_data['avatarFetter']
|
|
||||||
|
|
||||||
# 评分算法
|
# 评分算法
|
||||||
# 圣遗物总分 + 角色等级 + (a+e+q)*4 + 武器等级 * ( 1+(武器精炼数 -1) * 0.25)
|
# 圣遗物总分 + 角色等级 + (a+e+q)*4 + 武器等级 * ( 1+(武器精炼数 -1) * 0.25)
|
||||||
'''
|
'''
|
||||||
@ -332,124 +346,127 @@ async def draw_char_card(raw_data: dict, charUrl: str = None) -> bytes:
|
|||||||
attack_green = fight_prop['addAtk']
|
attack_green = fight_prop['addAtk']
|
||||||
defense_green = fight_prop['addDef']
|
defense_green = fight_prop['addDef']
|
||||||
|
|
||||||
with open(MAP_PATH / 'dmgMap.json', 'r', encoding='UTF-8') as f:
|
with open(ETC_PATH / 'dmgMap.json', 'r', encoding='UTF-8') as f:
|
||||||
dmgMap = json.load(f)
|
dmgMap = json.load(f)
|
||||||
|
|
||||||
for action in dmgMap[char_name]:
|
if char_name in dmgMap:
|
||||||
if action['seq'] == seq:
|
for action in dmgMap[char_name]:
|
||||||
cal = action
|
if action['seq'] == seq:
|
||||||
break
|
cal = action
|
||||||
else:
|
break
|
||||||
if '钟离' in char_name:
|
|
||||||
cal = dmgMap[char_name][-1]
|
|
||||||
else:
|
else:
|
||||||
cal = dmgMap[char_name][0]
|
if '钟离' in char_name:
|
||||||
|
cal = dmgMap[char_name][-1]
|
||||||
|
else:
|
||||||
|
cal = dmgMap[char_name][0]
|
||||||
|
|
||||||
print(seq)
|
print(seq)
|
||||||
print(cal)
|
print(cal)
|
||||||
if cal['action'] == 'E刹那之花':
|
if cal['action'] == 'E刹那之花':
|
||||||
effect_prop = defense
|
effect_prop = defense
|
||||||
elif cal['key'] == '攻击力':
|
elif cal['key'] == '攻击力':
|
||||||
effect_prop = attack
|
effect_prop = attack
|
||||||
elif cal['key'] == '防御力':
|
elif cal['key'] == '防御力':
|
||||||
effect_prop = defense
|
effect_prop = defense
|
||||||
elif cal['key'] == '血量':
|
elif cal['key'] == '血量':
|
||||||
effect_prop = hp
|
effect_prop = hp
|
||||||
|
|
||||||
if '踩班' in cal['action']:
|
|
||||||
effect_prop += 1202
|
|
||||||
effect_prop += fight_prop['baseAtk'] * 0.25
|
|
||||||
|
|
||||||
if '蒸发' in cal['action'] or '融化' in cal['action']:
|
|
||||||
if '蒸发' in cal['action']:
|
|
||||||
if raw_data['avatarElement'] == 'Pyro':
|
|
||||||
k = 1.5
|
|
||||||
else:
|
|
||||||
k = 2
|
|
||||||
elif '融化' in cal['action']:
|
|
||||||
if raw_data['avatarElement'] == 'Pyro':
|
|
||||||
k = 2
|
|
||||||
else:
|
|
||||||
k = 1.5
|
|
||||||
|
|
||||||
if '魔女' in equipSets['set']:
|
if '踩班' in cal['action']:
|
||||||
a = 0.15
|
effect_prop += 1202
|
||||||
else:
|
effect_prop += fight_prop['baseAtk'] * 0.25
|
||||||
a = 0
|
|
||||||
add_dmg = k*(1+(2.78*em)/(em+1400)+a)
|
if '蒸发' in cal['action'] or '融化' in cal['action']:
|
||||||
else:
|
if '蒸发' in cal['action']:
|
||||||
add_dmg = 1
|
if raw_data['avatarElement'] == 'Pyro':
|
||||||
|
k = 1.5
|
||||||
if equipSets['type'] in ['2','']:
|
else:
|
||||||
dmgBonus_cal = dmgBonus
|
k = 2
|
||||||
else:
|
elif '融化' in cal['action']:
|
||||||
if '追忆' in equipSets['set']:
|
if raw_data['avatarElement'] == 'Pyro':
|
||||||
dmgBonus_cal = dmgBonus + 0.5
|
k = 2
|
||||||
elif '绝缘' in equipSets['set']:
|
else:
|
||||||
Bouns = ce * 0.25 if ce * 0.25 <= 0.75 else 0.75
|
k = 1.5
|
||||||
dmgBonus_cal = dmgBonus + Bouns
|
|
||||||
|
if '魔女' in equipSets['set']:
|
||||||
|
a = 0.15
|
||||||
|
else:
|
||||||
|
a = 0
|
||||||
|
add_dmg = k*(1+(2.78*em)/(em+1400)+a)
|
||||||
else:
|
else:
|
||||||
|
add_dmg = 1
|
||||||
|
|
||||||
|
if equipSets['type'] in ['2','']:
|
||||||
dmgBonus_cal = dmgBonus
|
dmgBonus_cal = dmgBonus
|
||||||
|
|
||||||
critdmg_cal = critdmg
|
|
||||||
|
|
||||||
if '胡桃' in char_name:
|
|
||||||
effect_prop += 0.4 * hp if 0.4 * hp <= fight_prop['baseAtk'] * 4 else fight_prop['baseAtk'] * 4
|
|
||||||
elif '魈' in char_name:
|
|
||||||
dmgBonus_cal += 0.906
|
|
||||||
elif '绫华' in char_name:
|
|
||||||
dmgBonus_cal += 0.18
|
|
||||||
elif '宵宫' in char_name:
|
|
||||||
dmgBonus_cal += 0.5
|
|
||||||
elif '九条' in char_name:
|
|
||||||
effect_prop += 0.9129 * fight_prop['baseAtk']
|
|
||||||
critdmg_cal += 0.6
|
|
||||||
|
|
||||||
if '雾切' in weaponName:
|
|
||||||
dmgBonus_cal += 0.28
|
|
||||||
elif '弓藏' in weaponName and '首' in cal['action']:
|
|
||||||
dmgBonus_cal += 0.8
|
|
||||||
elif '飞雷' in weaponName and '首' in cal['action']:
|
|
||||||
dmgBonus_cal += 0.4
|
|
||||||
elif '试作澹月' in weaponName:
|
|
||||||
effect_prop += fight_prop['baseAtk'] * 0.72
|
|
||||||
elif '冬极' in weaponName:
|
|
||||||
effect_prop += fight_prop['baseAtk'] * 0.48
|
|
||||||
dmgBonus_cal += 0.12
|
|
||||||
|
|
||||||
if cal['action'] == '扩散':
|
|
||||||
dmg = 868 * 1.15 * (1+0.6+(16*em)/(em+2000))
|
|
||||||
elif '霄宫' in char_name:
|
|
||||||
dmg = effect_prop * cal['power'] * (1 + critdmg_cal) * (1 + dmgBonus_cal) * 0.5 * 0.9 * add_dmg * 1.5879
|
|
||||||
elif cal['action'] == '开Q普攻' and '心海' in char_name:
|
|
||||||
dmg = (effect_prop * cal['power'] + hp*(0.871+0.15*dmgBonus_cal)) * (1 + critdmg_cal) * (1 + dmgBonus_cal) * 0.5 * 0.9 * add_dmg
|
|
||||||
elif '绫人' in char_name:
|
|
||||||
dmg = (effect_prop * cal['power'] + 0.0222 * hp) * (1 + critdmg_cal) * (1 + dmgBonus_cal) * 0.5 * 0.9 * add_dmg * 1.5879
|
|
||||||
elif '迪奥娜' in char_name:
|
|
||||||
dmg = (effect_prop * cal['power'] + 1905) * 1.9
|
|
||||||
elif cal['action'] == 'Q开盾天星':
|
|
||||||
effect_prop = attack
|
|
||||||
dmg = (effect_prop * cal['power'] + 0.33 * hp) * (1 + critdmg_cal) * (1 + dmgBonus_cal) * 0.5 * 0.9 * add_dmg
|
|
||||||
elif isinstance(cal['power'], str):
|
|
||||||
if cal['power'] == '攻击力':
|
|
||||||
dmg = attack
|
|
||||||
elif cal['power'] == '防御力':
|
|
||||||
dmg = defense
|
|
||||||
else:
|
else:
|
||||||
power = cal['power'].split('+')
|
if '追忆' in equipSets['set']:
|
||||||
dmg = effect_prop * float(power[0]) / 100 + float(power[1])
|
dmgBonus_cal = dmgBonus + 0.5
|
||||||
elif cal['val'] != 'any':
|
elif '绝缘' in equipSets['set']:
|
||||||
dmg = effect_prop * cal['power'] * (1 + critdmg_cal) * (1 + dmgBonus_cal) * 0.5 * 0.9 * add_dmg
|
Bouns = ce * 0.25 if ce * 0.25 <= 0.75 else 0.75
|
||||||
|
dmgBonus_cal = dmgBonus + Bouns
|
||||||
|
else:
|
||||||
|
dmgBonus_cal = dmgBonus
|
||||||
|
|
||||||
|
critdmg_cal = critdmg
|
||||||
|
|
||||||
|
if '胡桃' in char_name:
|
||||||
|
effect_prop += 0.4 * hp if 0.4 * hp <= fight_prop['baseAtk'] * 4 else fight_prop['baseAtk'] * 4
|
||||||
|
elif '魈' in char_name:
|
||||||
|
dmgBonus_cal += 0.906
|
||||||
|
elif '绫华' in char_name:
|
||||||
|
dmgBonus_cal += 0.18
|
||||||
|
elif '宵宫' in char_name:
|
||||||
|
dmgBonus_cal += 0.5
|
||||||
|
elif '九条' in char_name:
|
||||||
|
effect_prop += 0.9129 * fight_prop['baseAtk']
|
||||||
|
critdmg_cal += 0.6
|
||||||
|
|
||||||
|
if '雾切' in weaponName:
|
||||||
|
dmgBonus_cal += 0.28
|
||||||
|
elif '弓藏' in weaponName and '首' in cal['action']:
|
||||||
|
dmgBonus_cal += 0.8
|
||||||
|
elif '飞雷' in weaponName and '首' in cal['action']:
|
||||||
|
dmgBonus_cal += 0.4
|
||||||
|
elif '试作澹月' in weaponName:
|
||||||
|
effect_prop += fight_prop['baseAtk'] * 0.72
|
||||||
|
elif '冬极' in weaponName:
|
||||||
|
effect_prop += fight_prop['baseAtk'] * 0.48
|
||||||
|
dmgBonus_cal += 0.12
|
||||||
|
|
||||||
|
if cal['action'] == '扩散':
|
||||||
|
dmg = 868 * 1.15 * (1+0.6+(16*em)/(em+2000))
|
||||||
|
elif '霄宫' in char_name:
|
||||||
|
dmg = effect_prop * cal['power'] * (1 + critdmg_cal) * (1 + dmgBonus_cal) * 0.5 * 0.9 * add_dmg * 1.5879
|
||||||
|
elif cal['action'] == '开Q普攻' and '心海' in char_name:
|
||||||
|
dmg = (effect_prop * cal['power'] + hp*(0.871+0.15*dmgBonus_cal)) * (1 + critdmg_cal) * (1 + dmgBonus_cal) * 0.5 * 0.9 * add_dmg
|
||||||
|
elif '绫人' in char_name:
|
||||||
|
dmg = (effect_prop * cal['power'] + 0.0222 * hp) * (1 + critdmg_cal) * (1 + dmgBonus_cal) * 0.5 * 0.9 * add_dmg * 1.5879
|
||||||
|
elif '迪奥娜' in char_name:
|
||||||
|
dmg = (effect_prop * cal['power'] + 1905) * 1.9
|
||||||
|
elif cal['action'] == 'Q开盾天星':
|
||||||
|
effect_prop = attack
|
||||||
|
dmg = (effect_prop * cal['power'] + 0.33 * hp) * (1 + critdmg_cal) * (1 + dmgBonus_cal) * 0.5 * 0.9 * add_dmg
|
||||||
|
elif isinstance(cal['power'], str):
|
||||||
|
if cal['power'] == '攻击力':
|
||||||
|
dmg = attack
|
||||||
|
elif cal['power'] == '防御力':
|
||||||
|
dmg = defense
|
||||||
|
else:
|
||||||
|
power = cal['power'].split('+')
|
||||||
|
dmg = effect_prop * float(power[0]) / 100 + float(power[1])
|
||||||
|
elif cal['val'] != 'any':
|
||||||
|
dmg = effect_prop * cal['power'] * (1 + critdmg_cal) * (1 + dmgBonus_cal) * 0.5 * 0.9 * add_dmg
|
||||||
|
else:
|
||||||
|
dmg = attack
|
||||||
|
print(dmg)
|
||||||
|
|
||||||
|
if cal['val'] != 'any':
|
||||||
|
percent = '{:.2f}'.format(dmg / cal['val'] * 100)
|
||||||
|
elif cal['power'] == '攻击力':
|
||||||
|
percent = '{:.2f}'.format(dmg / cal['atk'] * 100)
|
||||||
|
else:
|
||||||
|
percent = '{:.2f}'.format(dmg / cal['other'] * 100)
|
||||||
else:
|
else:
|
||||||
dmg = attack
|
percent = 0.00
|
||||||
print(dmg)
|
|
||||||
|
|
||||||
if cal['val'] != 'any':
|
|
||||||
percent = '{:.2f}'.format(dmg / cal['val'] * 100)
|
|
||||||
elif cal['power'] == '攻击力':
|
|
||||||
percent = '{:.2f}'.format(dmg / cal['atk'] * 100)
|
|
||||||
else:
|
|
||||||
percent = '{:.2f}'.format(dmg / cal['other'] * 100)
|
|
||||||
|
|
||||||
# 属性
|
# 属性
|
||||||
img_text.text((785, 174), str(round(hp)), (255, 255, 255), genshin_font_origin(28), anchor='rm')
|
img_text.text((785, 174), str(round(hp)), (255, 255, 255), genshin_font_origin(28), anchor='rm')
|
||||||
|
1
enkaToData/etc/avatarOffsetMap.json
Normal file
1
enkaToData/etc/avatarOffsetMap.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"凯特": [200, 0], "神里绫华": [200, 0], "琴": [200, 0], "旅行者": [200, 0], "丽莎": [200, 0], "芭芭拉": [200, 0], "凯亚": [200, 0], "迪卢克": [200, 0], "雷泽": [200, 0], "安柏": [200, 0], "温迪": [200, 0], "香菱": [200, 0], "北斗": [200, 0], "行秋": [200, 0], "魈": [200, 0], "凝光": [200, 0], "可莉": [-100, -150], "钟离": [200, 0], "菲谢尔": [200, 0], "班尼特": [200, 0], "达达利亚": [0, -100], "诺艾尔": [200, 0], "七七": [200, -100], "重云": [200, 0], "甘雨": [100, -100], "阿贝多": [200, 0], "迪奥娜": [200, 0], "莫娜": [200, 0], "刻晴": [200, -200], "砂糖": [200, 0], "辛焱": [200, 0], "罗莎莉亚": [200, 0], "胡桃": [560, 0], "枫原万叶": [200, 0], "烟绯": [200, 0], "宵宫": [200, 0], "托马": [200, 0], "优菈": [-200, 0], "雷电将军": [200, 0], "早柚": [200, 0], "珊瑚宫心海": [200, 0], "五郎": [200, 0], "九条裟罗": [200, 0], "荒泷一斗": [200, 0], "八重神子": [200, 0], "夜兰": [200, 0], "埃洛伊": [200, 0], "申鹤": [360, 0], "云堇": [200, 0], "久岐忍": [200, 0], "神里绫人": [200, 0], "队伍测试4号": [200, 0], "场景测试": [200, 0], "裸模1号": [200, 0], "裸男": [200, 0], "联机测试": [200, 0], "成男体型测试": [200, 0], "成女体型测试": [200, 0], "少女体型测试": [200, 0], "阿葵丽雅": [200, 0], "瑶瑶": [200, 0], "少女体型测试-二号机": [200, 0], "白盒少女": [200, 0], "大剑少女": [200, 0], "后武器测试A": [200, 0], "后武器测试B": [200, 0], "后武器测试C": [200, 0], "后武器测试D": [200, 0], "长枪成女": [200, 0], "单手剑成女测试": [200, 0], "Rx白盒": [200, 0], "少男体型测试": [200, 0], "女主新普攻": [200, 0], "男主新普攻": [200, 0], "重云(测试)": [200, 0], "测试角色": [200, 0], "七七(测试)": [200, 0], "迪奥娜(测试)": [200, 0]}
|
Loading…
x
Reference in New Issue
Block a user