mirror of
https://github.com/baiqwerdvd/StarRailUID.git
synced 2025-05-04 10:47:33 +08:00
ruff format
This commit is contained in:
parent
d2d56a1c18
commit
bdf5cc9358
@ -12,11 +12,6 @@ repos:
|
||||
hooks:
|
||||
- id: isort
|
||||
|
||||
- repo: https://github.com/psf/black
|
||||
rev: 23.1.0
|
||||
hooks:
|
||||
- id: black
|
||||
|
||||
- repo: https://github.com/pycqa/flake8
|
||||
rev: 6.0.0
|
||||
hooks:
|
||||
@ -29,19 +24,7 @@ repos:
|
||||
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
# Ruff version.
|
||||
rev: v0.0.289
|
||||
rev: "v0.1.2"
|
||||
hooks:
|
||||
- id: ruff
|
||||
args: [--fix, --exit-non-zero-on-fix]
|
||||
|
||||
# - repo: https://github.com/pdm-project/pdm
|
||||
# rev: 2.9.2
|
||||
# hooks:
|
||||
# - id: pdm-lock-check
|
||||
|
||||
# - repo: https://github.com/pdm-project/pdm
|
||||
# rev: 2.9.2
|
||||
# hooks:
|
||||
# - id: pdm-export
|
||||
# args: ["-o", "requirements.txt", "--without-hashes"]
|
||||
# files: ^pdm.lock$
|
||||
|
@ -40,9 +40,9 @@ async def get_lightcone_data(
|
||||
return None
|
||||
|
||||
|
||||
async def get_character_index() -> Union[
|
||||
Dict[str, HakushHsrCharacterIndex], None
|
||||
]:
|
||||
async def get_character_index() -> (
|
||||
Union[Dict[str, HakushHsrCharacterIndex], None]
|
||||
):
|
||||
async with AsyncClient(
|
||||
base_url='https://api.hakush.in/hsr/data',
|
||||
headers=_HEADER,
|
||||
@ -54,9 +54,9 @@ async def get_character_index() -> Union[
|
||||
return None
|
||||
|
||||
|
||||
async def get_lightcone_index() -> Union[
|
||||
Dict[str, HakushHsrLightconeIndex], None
|
||||
]:
|
||||
async def get_lightcone_index() -> (
|
||||
Union[Dict[str, HakushHsrLightconeIndex], None]
|
||||
):
|
||||
async with AsyncClient(
|
||||
base_url='https://api.hakush.in/hsr/data',
|
||||
headers=_HEADER,
|
||||
|
@ -1,60 +1,70 @@
|
||||
# flake8: noqa
|
||||
OLD_URL = "https://api-takumi.mihoyo.com"
|
||||
OS_OLD_URL = "https://api-os-takumi.mihoyo.com"
|
||||
NEW_URL = "https://api-takumi-record.mihoyo.com"
|
||||
OS_URL = "https://sg-public-api.hoyolab.com"
|
||||
OS_INFO_URL = "https://bbs-api-os.hoyolab.com"
|
||||
OLD_URL = 'https://api-takumi.mihoyo.com'
|
||||
OS_OLD_URL = 'https://api-os-takumi.mihoyo.com'
|
||||
NEW_URL = 'https://api-takumi-record.mihoyo.com'
|
||||
OS_URL = 'https://sg-public-api.hoyolab.com'
|
||||
OS_INFO_URL = 'https://bbs-api-os.hoyolab.com'
|
||||
|
||||
STAR_RAIL_SIGN_INFO_URL = f"{OLD_URL}/event/luna/info"
|
||||
STAR_RAIL_SIGN_INFO_URL_OS = f"{OS_URL}/event/luna/os/info"
|
||||
STAR_RAIL_SIGN_LIST_URL = f"{OLD_URL}/event/luna/home"
|
||||
STAR_RAIL_SIGN_LIST_URL_OS = f"{OS_URL}/event/luna/os/home"
|
||||
STAR_RAIL_SIGN_EXTRA_INFO_URL = f"{OLD_URL}/event/luna/extra_info"
|
||||
STAR_RAIL_SIGN_EXTRA_REWARD_URL = f"{OLD_URL}/event/luna/extra_reward"
|
||||
STAR_RAIL_SIGN_URL = f"{OLD_URL}/event/luna/sign"
|
||||
STAR_RAIL_SIGN_URL_OS = f"{OS_URL}/event/luna/os/sign"
|
||||
STAR_RAIL_MONTH_INFO_URL = f"{OLD_URL}/event/srledger/month_info" # 开拓阅历接口
|
||||
STAR_RAIL_SIGN_INFO_URL = f'{OLD_URL}/event/luna/info'
|
||||
STAR_RAIL_SIGN_INFO_URL_OS = f'{OS_URL}/event/luna/os/info'
|
||||
STAR_RAIL_SIGN_LIST_URL = f'{OLD_URL}/event/luna/home'
|
||||
STAR_RAIL_SIGN_LIST_URL_OS = f'{OS_URL}/event/luna/os/home'
|
||||
STAR_RAIL_SIGN_EXTRA_INFO_URL = f'{OLD_URL}/event/luna/extra_info'
|
||||
STAR_RAIL_SIGN_EXTRA_REWARD_URL = f'{OLD_URL}/event/luna/extra_reward'
|
||||
STAR_RAIL_SIGN_URL = f'{OLD_URL}/event/luna/sign'
|
||||
STAR_RAIL_SIGN_URL_OS = f'{OS_URL}/event/luna/os/sign'
|
||||
STAR_RAIL_MONTH_INFO_URL = (
|
||||
f'{OLD_URL}/event/srledger/month_info'
|
||||
) # 开拓阅历接口
|
||||
STAR_RAIL_MONTH_DETAIL_URL = (
|
||||
f"{OLD_URL}/event/srledger/month_detail" # 开拓阅历详情接口
|
||||
f'{OLD_URL}/event/srledger/month_detail' # 开拓阅历详情接口
|
||||
)
|
||||
|
||||
STAR_RAIL_NOTE_URL = f"{NEW_URL}/game_record/app/hkrpg/api/note" # 实时便签接口
|
||||
STAR_RAIL_NOTE_URL_OS = f"{OS_INFO_URL}/game_record/hkrpg/api/note" # OS实时便签接口
|
||||
STAR_RAIL_INDEX_URL = f"{NEW_URL}/game_record/app/hkrpg/api/index" # 角色橱窗接口
|
||||
STAR_RAIL_NOTE_URL = (
|
||||
f'{NEW_URL}/game_record/app/hkrpg/api/note'
|
||||
) # 实时便签接口
|
||||
STAR_RAIL_NOTE_URL_OS = (
|
||||
f'{OS_INFO_URL}/game_record/hkrpg/api/note'
|
||||
) # OS实时便签接口
|
||||
STAR_RAIL_INDEX_URL = (
|
||||
f'{NEW_URL}/game_record/app/hkrpg/api/index'
|
||||
) # 角色橱窗接口
|
||||
STAR_RAIL_INDEX_URL_OS = (
|
||||
f"{OS_INFO_URL}/game_record/hkrpg/api/index" # OS角色橱窗接口
|
||||
f'{OS_INFO_URL}/game_record/hkrpg/api/index' # OS角色橱窗接口
|
||||
)
|
||||
STAR_RAIL_AVATAR_BASIC_URL = (
|
||||
f"{NEW_URL}/game_record/app/hkrpg/api/avatar/basic" # 全部角色接口
|
||||
f'{NEW_URL}/game_record/app/hkrpg/api/avatar/basic' # 全部角色接口
|
||||
)
|
||||
STAR_RAIL_ROLE_BASIC_INFO_URL = (
|
||||
f"{NEW_URL}/game_record/app/hkrpg/api/role/basicInfo" # 角色基础信息接口
|
||||
f'{NEW_URL}/game_record/app/hkrpg/api/role/basicInfo' # 角色基础信息接口
|
||||
)
|
||||
STAR_RAIL_ROLE_BASIC_INFO_URL_OS = f"{OS_INFO_URL}/game_record/hkrpg/api/index"
|
||||
STAR_RAIL_ROLE_BASIC_INFO_URL_OS = f'{OS_INFO_URL}/game_record/hkrpg/api/index'
|
||||
STAR_RAIL_AVATAR_INFO_URL = (
|
||||
f"{NEW_URL}/game_record/app/hkrpg/api/avatar/info" # 角色详细信息接口
|
||||
f'{NEW_URL}/game_record/app/hkrpg/api/avatar/info' # 角色详细信息接口
|
||||
)
|
||||
STAR_RAIL_AVATAR_INFO_URL_OS = (
|
||||
f"{OS_INFO_URL}/game_record/hkrpg/api/avatar/info" # OS角色详细信息接口
|
||||
f'{OS_INFO_URL}/game_record/hkrpg/api/avatar/info' # OS角色详细信息接口
|
||||
)
|
||||
|
||||
CHALLENGE_INFO_URL = f"{NEW_URL}/game_record/app/hkrpg/api/challenge"
|
||||
CHALLENGE_INFO_URL_OS = f"{OS_INFO_URL}/game_record/hkrpg/api/challenge"
|
||||
CHALLENGE_INFO_URL = f'{NEW_URL}/game_record/app/hkrpg/api/challenge'
|
||||
CHALLENGE_INFO_URL_OS = f'{OS_INFO_URL}/game_record/hkrpg/api/challenge'
|
||||
|
||||
ROGUE_INFO_URL = f"{NEW_URL}/game_record/app/hkrpg/api/rogue" # 角色模拟宇宙信息接口
|
||||
ROGUE_INFO_URL = (
|
||||
f'{NEW_URL}/game_record/app/hkrpg/api/rogue'
|
||||
) # 角色模拟宇宙信息接口
|
||||
ROGUE_LOCUST_INFO_URL = (
|
||||
f"{NEW_URL}/game_record/app/hkrpg/api/rogue_locust" # 角色寰宇蝗灾信息接口
|
||||
f'{NEW_URL}/game_record/app/hkrpg/api/rogue_locust' # 角色寰宇蝗灾信息接口
|
||||
)
|
||||
|
||||
STAR_RAIL_GACHA_LOG_URL = f"{OLD_URL}/common/gacha_record/api/getGachaLog"
|
||||
STAR_RAIL_GACHA_LOG_URL = f'{OLD_URL}/common/gacha_record/api/getGachaLog'
|
||||
STAR_RAIL_GACHA_LOG_URL_OS = (
|
||||
f"{OS_OLD_URL}/common/gacha_record/api/getGachaLog"
|
||||
f'{OS_OLD_URL}/common/gacha_record/api/getGachaLog'
|
||||
)
|
||||
|
||||
GET_FP_URL = "https://public-data-api.mihoyo.com/device-fp/api/getFp"
|
||||
GET_FP_URL_OS = "https://sg-public-data-api.hoyoverse.com/device-fp/api/getFp"
|
||||
GET_FP_URL = 'https://public-data-api.mihoyo.com/device-fp/api/getFp'
|
||||
GET_FP_URL_OS = 'https://sg-public-data-api.hoyoverse.com/device-fp/api/getFp'
|
||||
# CREATE_QRCODE = f'{OLD_URL}/event/bbs_sign_reward/gen_auth_code'
|
||||
|
||||
STAR_RAIL_WIDGRT_URL = f"{NEW_URL}/game_record/app/hkrpg/aapi/widget"
|
||||
STAR_RAIL_WIDGRT_URL = f'{NEW_URL}/game_record/app/hkrpg/aapi/widget'
|
||||
|
||||
_API = locals()
|
||||
|
@ -2,10 +2,10 @@ import copy
|
||||
from typing import Dict, List
|
||||
|
||||
from gsuid_core.logger import logger
|
||||
import math
|
||||
|
||||
from ..Base.AvatarBase import BaseAvatar, BaseAvatarBuff
|
||||
from ..Base.model import DamageInstanceSkill, DamageInstanceAvatar
|
||||
from ..Role import calculate_heal, calculate_damage, calculate_shield
|
||||
from ..Base.model import DamageInstanceAvatar, DamageInstanceSkill
|
||||
from ..Role import calculate_damage, calculate_heal, calculate_shield
|
||||
|
||||
|
||||
class Seele(BaseAvatar):
|
||||
@ -117,7 +117,9 @@ class Seele(BaseAvatar):
|
||||
self.avatar_level,
|
||||
)
|
||||
damagelist4[2] += damage3
|
||||
skill_info_list.append({'name': '银狼降防终结技', 'damagelist': damagelist4})
|
||||
skill_info_list.append(
|
||||
{'name': '银狼降防终结技', 'damagelist': damagelist4}
|
||||
)
|
||||
|
||||
logger.info(skill_info_list)
|
||||
return skill_info_list
|
||||
@ -148,7 +150,9 @@ class JingYuan(BaseAvatar):
|
||||
|
||||
def extra_ability(self):
|
||||
logger.info('额外能力')
|
||||
logger.info('【神君】下回合的攻击段数大于等于6段, 则其下回合的暴击伤害提高25%。')
|
||||
logger.info(
|
||||
'【神君】下回合的攻击段数大于等于6段, 则其下回合的暴击伤害提高25%。'
|
||||
)
|
||||
self.extra_ability_attribute['CriticalDamageBase'] = 0.25
|
||||
logger.info('施放战技后, 暴击率提升10%')
|
||||
self.extra_ability_attribute['CriticalChanceBase'] = 0.1
|
||||
@ -223,7 +227,9 @@ class JingYuan(BaseAvatar):
|
||||
self.avatar_level,
|
||||
)
|
||||
damagelist4[2] += damage3
|
||||
skill_info_list.append({'name': '10层神君伤害', 'damagelist': damagelist4})
|
||||
skill_info_list.append(
|
||||
{'name': '10层神君伤害', 'damagelist': damagelist4}
|
||||
)
|
||||
|
||||
logger.info(skill_info_list)
|
||||
return skill_info_list
|
||||
@ -249,7 +255,9 @@ class Welt(BaseAvatar):
|
||||
|
||||
def extra_ability(self):
|
||||
logger.info('额外能力')
|
||||
logger.info('施放终结技时, 有100%基础概率使目标受到的伤害提高12%, 持续2回合。')
|
||||
logger.info(
|
||||
'施放终结技时, 有100%基础概率使目标受到的伤害提高12%, 持续2回合。'
|
||||
)
|
||||
self.extra_ability_attribute['DmgRatio'] = 0.12
|
||||
logger.info('对被弱点击破的敌方目标造成的伤害提高20')
|
||||
self.extra_ability_attribute['AllDamageAddedRatio'] = 0.20
|
||||
@ -333,7 +341,9 @@ class Welt(BaseAvatar):
|
||||
damagelist4[1] = damagelist1[1] + damagelist4[1]
|
||||
damagelist4[2] = damagelist1[2] + damagelist4[2]
|
||||
damagelist4[2] += damage3
|
||||
skill_info_list.append({'name': '强化普攻', 'damagelist': damagelist4})
|
||||
skill_info_list.append(
|
||||
{'name': '强化普攻', 'damagelist': damagelist4}
|
||||
)
|
||||
|
||||
skill_multiplier = (self.Skill_num('BPSkill', 'BPSkill') / 3) * 0.8
|
||||
damagelist5 = await calculate_damage(
|
||||
@ -349,7 +359,9 @@ class Welt(BaseAvatar):
|
||||
damagelist5[1] = damagelist2[1] + damagelist5[1]
|
||||
damagelist5[2] = damagelist2[2] + damagelist5[2]
|
||||
damagelist5[2] += damage3
|
||||
skill_info_list.append({'name': '强化战技', 'damagelist': damagelist5})
|
||||
skill_info_list.append(
|
||||
{'name': '强化战技', 'damagelist': damagelist5}
|
||||
)
|
||||
|
||||
logger.info(skill_info_list)
|
||||
return skill_info_list
|
||||
@ -378,7 +390,9 @@ class Danhengil(BaseAvatar):
|
||||
|
||||
def extra_ability(self):
|
||||
logger.info('额外能力')
|
||||
logger.info('对拥有虚数属性弱点的敌方目标造成伤害时, 暴击伤害提高24%。')
|
||||
logger.info(
|
||||
'对拥有虚数属性弱点的敌方目标造成伤害时, 暴击伤害提高24%。'
|
||||
)
|
||||
self.extra_ability_attribute['CriticalDamageBase'] = 0.24
|
||||
|
||||
async def getdamage(
|
||||
@ -410,15 +424,14 @@ class Danhengil(BaseAvatar):
|
||||
for i in range(1, 3):
|
||||
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
||||
damage_buff = min(max_buff, start_buff + (i - 1) * add_buff)
|
||||
add_attr_bonus[
|
||||
'AllDamageAddedRatio'
|
||||
] = damage_buff * injury_add + add_attr_bonus.get(
|
||||
'AllDamageAddedRatio', 0
|
||||
add_attr_bonus['AllDamageAddedRatio'] = (
|
||||
damage_buff * injury_add
|
||||
+ add_attr_bonus.get('AllDamageAddedRatio', 0)
|
||||
)
|
||||
if self.avatar_rank >= 4:
|
||||
add_attr_bonus[
|
||||
'CriticalDamageBase'
|
||||
] = critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
add_attr_bonus['CriticalDamageBase'] = (
|
||||
critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
)
|
||||
damage1, damage2, damage3 = await calculate_damage(
|
||||
base_attr,
|
||||
add_attr_bonus,
|
||||
@ -454,15 +467,14 @@ class Danhengil(BaseAvatar):
|
||||
for i in range(1, 4):
|
||||
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
||||
damage_buff = min(max_buff, start_buff + (i - 1) * add_buff)
|
||||
add_attr_bonus[
|
||||
'AllDamageAddedRatio'
|
||||
] = damage_buff * injury_add + add_attr_bonus.get(
|
||||
'AllDamageAddedRatio', 0
|
||||
add_attr_bonus['AllDamageAddedRatio'] = (
|
||||
damage_buff * injury_add
|
||||
+ add_attr_bonus.get('AllDamageAddedRatio', 0)
|
||||
)
|
||||
if self.avatar_rank >= 4:
|
||||
add_attr_bonus[
|
||||
'CriticalDamageBase'
|
||||
] = critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
add_attr_bonus['CriticalDamageBase'] = (
|
||||
critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
)
|
||||
damage1, damage2, damage3 = await calculate_damage(
|
||||
base_attr,
|
||||
add_attr_bonus,
|
||||
@ -498,20 +510,19 @@ class Danhengil(BaseAvatar):
|
||||
for i in range(1, 6):
|
||||
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
||||
damage_buff = min(max_buff, start_buff + (i - 1) * add_buff)
|
||||
add_attr_bonus[
|
||||
'AllDamageAddedRatio'
|
||||
] = damage_buff * injury_add + add_attr_bonus.get(
|
||||
'AllDamageAddedRatio', 0
|
||||
add_attr_bonus['AllDamageAddedRatio'] = (
|
||||
damage_buff * injury_add
|
||||
+ add_attr_bonus.get('AllDamageAddedRatio', 0)
|
||||
)
|
||||
if self.avatar_rank >= 4:
|
||||
add_attr_bonus[
|
||||
'CriticalDamageBase'
|
||||
] = critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
add_attr_bonus['CriticalDamageBase'] = (
|
||||
critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
)
|
||||
elif i >= 4:
|
||||
critical_buff = (i - 3) * critical_damage_add
|
||||
add_attr_bonus[
|
||||
'CriticalDamageBase'
|
||||
] = critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
add_attr_bonus['CriticalDamageBase'] = (
|
||||
critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
)
|
||||
damage1, damage2, damage3 = await calculate_damage(
|
||||
base_attr,
|
||||
add_attr_bonus,
|
||||
@ -547,20 +558,19 @@ class Danhengil(BaseAvatar):
|
||||
for i in range(1, 8):
|
||||
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
||||
damage_buff = min(max_buff, start_buff + (i - 1) * add_buff)
|
||||
add_attr_bonus[
|
||||
'AllDamageAddedRatio'
|
||||
] = damage_buff * injury_add + add_attr_bonus.get(
|
||||
'AllDamageAddedRatio', 0
|
||||
add_attr_bonus['AllDamageAddedRatio'] = (
|
||||
damage_buff * injury_add
|
||||
+ add_attr_bonus.get('AllDamageAddedRatio', 0)
|
||||
)
|
||||
if self.avatar_rank >= 4:
|
||||
add_attr_bonus[
|
||||
'CriticalDamageBase'
|
||||
] = critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
add_attr_bonus['CriticalDamageBase'] = (
|
||||
critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
)
|
||||
elif i >= 4:
|
||||
critical_buff = (i - 3) * critical_damage_add
|
||||
add_attr_bonus[
|
||||
'CriticalDamageBase'
|
||||
] = critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
add_attr_bonus['CriticalDamageBase'] = (
|
||||
critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
)
|
||||
damage1, damage2, damage3 = await calculate_damage(
|
||||
base_attr,
|
||||
add_attr_bonus,
|
||||
@ -596,15 +606,14 @@ class Danhengil(BaseAvatar):
|
||||
for _ in range(1, 4):
|
||||
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
||||
damage_buff = min(max_buff, 10)
|
||||
add_attr_bonus[
|
||||
'AllDamageAddedRatio'
|
||||
] = damage_buff * injury_add + add_attr_bonus.get(
|
||||
'AllDamageAddedRatio', 0
|
||||
add_attr_bonus['AllDamageAddedRatio'] = (
|
||||
damage_buff * injury_add
|
||||
+ add_attr_bonus.get('AllDamageAddedRatio', 0)
|
||||
)
|
||||
critical_buff = 4 * critical_damage_add
|
||||
add_attr_bonus[
|
||||
'CriticalDamageBase'
|
||||
] = critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
add_attr_bonus['CriticalDamageBase'] = (
|
||||
critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||
)
|
||||
damage1, damage2, damage3 = await calculate_damage(
|
||||
base_attr,
|
||||
add_attr_bonus,
|
||||
@ -666,17 +675,16 @@ class Argenti(BaseAvatar):
|
||||
attribute_bonus: Dict[str, float],
|
||||
):
|
||||
talent_cc_add = self.Skill_num('Talent', 'Talent')
|
||||
attribute_bonus[
|
||||
'CriticalChanceBase'
|
||||
] = talent_cc_add * 10 + attribute_bonus.get('CriticalChanceBase', 0)
|
||||
attribute_bonus['CriticalChanceBase'] = (
|
||||
talent_cc_add * 10 + attribute_bonus.get('CriticalChanceBase', 0)
|
||||
)
|
||||
if self.avatar_rank >= 4:
|
||||
attribute_bonus['CriticalDamageBase'] = 0.08 + attribute_bonus.get(
|
||||
'CriticalDamageBase', 0
|
||||
)
|
||||
attribute_bonus[
|
||||
'CriticalChanceBase'
|
||||
] = talent_cc_add * 2 + attribute_bonus.get(
|
||||
'CriticalChanceBase', 0
|
||||
attribute_bonus['CriticalChanceBase'] = (
|
||||
talent_cc_add * 2
|
||||
+ attribute_bonus.get('CriticalChanceBase', 0)
|
||||
)
|
||||
|
||||
damage1, damage2, damage3 = await calculate_damage(
|
||||
@ -1108,7 +1116,9 @@ class Kafka(BaseAvatar):
|
||||
self.avatar_level,
|
||||
)
|
||||
damagelist4[2] += damage3
|
||||
skill_info_list.append({'name': '单次持续伤害', 'damagelist': damagelist4})
|
||||
skill_info_list.append(
|
||||
{'name': '单次持续伤害', 'damagelist': damagelist4}
|
||||
)
|
||||
|
||||
# 计算追加攻击伤害
|
||||
skill_multiplier = self.Skill_num('Talent', 'Talent')
|
||||
@ -1372,7 +1382,9 @@ class Fuxuan(BaseAvatar):
|
||||
0.05,
|
||||
133,
|
||||
)
|
||||
skill_info_list.append({'name': '终结技治疗', 'damagelist': damagelist3})
|
||||
skill_info_list.append(
|
||||
{'name': '终结技治疗', 'damagelist': damagelist3}
|
||||
)
|
||||
|
||||
return skill_info_list
|
||||
|
||||
@ -1668,7 +1680,9 @@ class Qingque(BaseAvatar):
|
||||
self.avatar_level,
|
||||
)
|
||||
damagelist2[2] += damage3
|
||||
skill_info_list.append({'name': '杠上开花!', 'damagelist': damagelist2})
|
||||
skill_info_list.append(
|
||||
{'name': '杠上开花!', 'damagelist': damagelist2}
|
||||
) # noqa: RUF001
|
||||
|
||||
# 计算终结技伤害
|
||||
skill_multiplier = self.Skill_num('Ultra', 'Ultra')
|
||||
@ -2012,7 +2026,9 @@ class Guinaifen(BaseAvatar):
|
||||
self.avatar_level,
|
||||
)
|
||||
damagelist4[2] += damage3
|
||||
skill_info_list.append({'name': '单次持续伤害', 'damagelist': damagelist4})
|
||||
skill_info_list.append(
|
||||
{'name': '单次持续伤害', 'damagelist': damagelist4}
|
||||
)
|
||||
|
||||
return skill_info_list
|
||||
|
||||
@ -2091,7 +2107,9 @@ class Gepard(BaseAvatar):
|
||||
skill_multiplier,
|
||||
skill_num,
|
||||
)
|
||||
skill_info_list.append({'name': '终结技(护盾)', 'damagelist': damagelist3})
|
||||
skill_info_list.append(
|
||||
{'name': '终结技(护盾)', 'damagelist': damagelist3}
|
||||
)
|
||||
|
||||
return skill_info_list
|
||||
|
||||
@ -2175,7 +2193,9 @@ class Luocha(BaseAvatar):
|
||||
skill_num,
|
||||
1,
|
||||
)
|
||||
skill_info_list.append({'name': '战技治疗量', 'damagelist': damagelist3})
|
||||
skill_info_list.append(
|
||||
{'name': '战技治疗量', 'damagelist': damagelist3}
|
||||
)
|
||||
if self.avatar_rank >= 2:
|
||||
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
||||
add_attr_bonus['HealRatioBase'] = (
|
||||
@ -2190,7 +2210,10 @@ class Luocha(BaseAvatar):
|
||||
1,
|
||||
)
|
||||
skill_info_list.append(
|
||||
{'name': '战技治疗量(生命<50%)(2魂)', 'damagelist': damagelist4}
|
||||
{
|
||||
'name': '战技治疗量(生命<50%)(2魂)',
|
||||
'damagelist': damagelist4,
|
||||
}
|
||||
)
|
||||
|
||||
damagelist5 = await calculate_shield(
|
||||
@ -2201,7 +2224,10 @@ class Luocha(BaseAvatar):
|
||||
1,
|
||||
)
|
||||
skill_info_list.append(
|
||||
{'name': '战技护盾量(生命>50%)(2魂)', 'damagelist': damagelist5}
|
||||
{
|
||||
'name': '战技护盾量(生命>50%)(2魂)',
|
||||
'damagelist': damagelist5,
|
||||
}
|
||||
)
|
||||
|
||||
# 计算天赋治疗量
|
||||
@ -2215,7 +2241,9 @@ class Luocha(BaseAvatar):
|
||||
skill_num,
|
||||
1,
|
||||
)
|
||||
skill_info_list.append({'name': '天赋治疗量', 'damagelist': damagelist6})
|
||||
skill_info_list.append(
|
||||
{'name': '天赋治疗量', 'damagelist': damagelist6}
|
||||
)
|
||||
|
||||
# 计算技能树额外能力治疗量
|
||||
damagelist7 = await calculate_heal(
|
||||
@ -2226,7 +2254,9 @@ class Luocha(BaseAvatar):
|
||||
93,
|
||||
1,
|
||||
)
|
||||
skill_info_list.append({'name': '技能树治疗量', 'damagelist': damagelist7})
|
||||
skill_info_list.append(
|
||||
{'name': '技能树治疗量', 'damagelist': damagelist7}
|
||||
)
|
||||
|
||||
return skill_info_list
|
||||
|
||||
@ -2299,7 +2329,9 @@ class Bailu(BaseAvatar):
|
||||
for i in range(1, 3):
|
||||
beilv = 1 - (i * 0.15)
|
||||
damagelist2[0] = damagelist2[0] + heal_num * beilv
|
||||
skill_info_list.append({'name': '战技治疗量', 'damagelist': damagelist2})
|
||||
skill_info_list.append(
|
||||
{'name': '战技治疗量', 'damagelist': damagelist2}
|
||||
)
|
||||
|
||||
# 计算终结技治疗量
|
||||
skill_multiplier = self.Skill_num('Ultra', 'Ultra')
|
||||
@ -2311,7 +2343,9 @@ class Bailu(BaseAvatar):
|
||||
skill_multiplier,
|
||||
skill_num,
|
||||
)
|
||||
skill_info_list.append({'name': '终结技治疗量', 'damagelist': damagelist3})
|
||||
skill_info_list.append(
|
||||
{'name': '终结技治疗量', 'damagelist': damagelist3}
|
||||
)
|
||||
|
||||
# 计算天赋生息治疗量
|
||||
skill_multiplier = self.Skill_num('Talent', 'Talent')
|
||||
@ -2419,7 +2453,9 @@ class Lynx(BaseAvatar):
|
||||
skill_multiplier,
|
||||
skill_num,
|
||||
)
|
||||
skill_info_list.append({'name': '战技治疗量', 'damagelist': damagelist2})
|
||||
skill_info_list.append(
|
||||
{'name': '战技治疗量', 'damagelist': damagelist2}
|
||||
)
|
||||
damagelist3 = []
|
||||
damagelist3.append(hp_add)
|
||||
skill_info_list.append(
|
||||
@ -2436,7 +2472,9 @@ class Lynx(BaseAvatar):
|
||||
skill_multiplier,
|
||||
skill_num,
|
||||
)
|
||||
skill_info_list.append({'name': '终结技治疗量', 'damagelist': damagelist4})
|
||||
skill_info_list.append(
|
||||
{'name': '终结技治疗量', 'damagelist': damagelist4}
|
||||
)
|
||||
|
||||
# 计算天赋治疗量
|
||||
skill_multiplier = self.Skill_num('Talent', 'Talent')
|
||||
@ -2448,7 +2486,9 @@ class Lynx(BaseAvatar):
|
||||
skill_multiplier,
|
||||
skill_num,
|
||||
)
|
||||
skill_info_list.append({'name': '天赋缓回治疗量', 'damagelist': damagelist5})
|
||||
skill_info_list.append(
|
||||
{'name': '天赋缓回治疗量', 'damagelist': damagelist5}
|
||||
)
|
||||
|
||||
# 计算天赋求生反应治疗量
|
||||
skill_multiplier = self.Skill_num(
|
||||
@ -2548,7 +2588,9 @@ class Natasha(BaseAvatar):
|
||||
skill_multiplier,
|
||||
skill_num,
|
||||
)
|
||||
skill_info_list.append({'name': '战技治疗量', 'damagelist': damagelist2})
|
||||
skill_info_list.append(
|
||||
{'name': '战技治疗量', 'damagelist': damagelist2}
|
||||
)
|
||||
|
||||
# 计算战技缓回治疗量
|
||||
skill_multiplier = self.Skill_num('BPSkill', 'BPSkill1')
|
||||
@ -2560,7 +2602,9 @@ class Natasha(BaseAvatar):
|
||||
skill_multiplier,
|
||||
skill_num,
|
||||
)
|
||||
skill_info_list.append({'name': '战技缓回治疗量', 'damagelist': damagelist3})
|
||||
skill_info_list.append(
|
||||
{'name': '战技缓回治疗量', 'damagelist': damagelist3}
|
||||
)
|
||||
|
||||
# 计算终结技治疗量
|
||||
skill_multiplier = self.Skill_num('Ultra', 'Ultra')
|
||||
@ -2572,7 +2616,9 @@ class Natasha(BaseAvatar):
|
||||
skill_multiplier,
|
||||
skill_num,
|
||||
)
|
||||
skill_info_list.append({'name': '终结技治疗量', 'damagelist': damagelist4})
|
||||
skill_info_list.append(
|
||||
{'name': '终结技治疗量', 'damagelist': damagelist4}
|
||||
)
|
||||
|
||||
return skill_info_list
|
||||
|
||||
@ -2637,7 +2683,9 @@ class Mar7th(BaseAvatar):
|
||||
skill_multiplier,
|
||||
skill_num,
|
||||
)
|
||||
skill_info_list.append({'name': '战技护盾量', 'damagelist': damagelist2})
|
||||
skill_info_list.append(
|
||||
{'name': '战技护盾量', 'damagelist': damagelist2}
|
||||
)
|
||||
|
||||
# 计算终结技
|
||||
skill_multiplier = self.Skill_num('Ultra', 'Ultra')
|
||||
@ -2691,6 +2739,7 @@ class Mar7th(BaseAvatar):
|
||||
|
||||
return skill_info_list
|
||||
|
||||
|
||||
class Bronya(BaseAvatar):
|
||||
Buff: BaseAvatarBuff
|
||||
|
||||
@ -2731,9 +2780,17 @@ class Bronya(BaseAvatar):
|
||||
)
|
||||
|
||||
# 终结技增加伤害
|
||||
attribute_bonus['AttackAddedRatio'] = attribute_bonus.get('AttackAddedRatio', 0) + self.Skill_num('Ultra', 'Ultra_A')
|
||||
add_critical_damage_base = (attribute_bonus.get('CriticalDamageBase', 0) * self.Skill_num('Ultra', 'Ultra')) + self.Skill_num('Ultra', 'Ultra_G')
|
||||
attribute_bonus['CriticalDamageBase'] = attribute_bonus.get('CriticalDamageBase', 0) + add_critical_damage_base
|
||||
attribute_bonus['AttackAddedRatio'] = attribute_bonus.get(
|
||||
'AttackAddedRatio', 0
|
||||
) + self.Skill_num('Ultra', 'Ultra_A')
|
||||
add_critical_damage_base = (
|
||||
attribute_bonus.get('CriticalDamageBase', 0)
|
||||
* self.Skill_num('Ultra', 'Ultra')
|
||||
) + self.Skill_num('Ultra', 'Ultra_G')
|
||||
attribute_bonus['CriticalDamageBase'] = (
|
||||
attribute_bonus.get('CriticalDamageBase', 0)
|
||||
+ add_critical_damage_base
|
||||
)
|
||||
|
||||
skill_info_list = []
|
||||
# 计算普攻伤害
|
||||
@ -2754,10 +2811,13 @@ class Bronya(BaseAvatar):
|
||||
critical_damage_base_str = add_critical_damage_base * 100
|
||||
damagelist2 = []
|
||||
damagelist2.append(critical_damage_base_str)
|
||||
skill_info_list.append({'name': '终结技提升爆伤(%)', 'damagelist': damagelist2})
|
||||
skill_info_list.append(
|
||||
{'name': '终结技提升爆伤(%)', 'damagelist': damagelist2}
|
||||
)
|
||||
|
||||
return skill_info_list
|
||||
|
||||
|
||||
class Yukong(BaseAvatar):
|
||||
Buff: BaseAvatarBuff
|
||||
|
||||
@ -2798,9 +2858,15 @@ class Yukong(BaseAvatar):
|
||||
)
|
||||
|
||||
# 终结技增加伤害
|
||||
attribute_bonus['AttackAddedRatio'] = attribute_bonus.get('AttackAddedRatio', 0) + self.Skill_num('BPSkill', 'BPSkill')
|
||||
attribute_bonus['CriticalChanceBase'] = attribute_bonus.get('CriticalChanceBase', 0) + self.Skill_num('Ultra', 'Ultra_CC')
|
||||
attribute_bonus['CriticalDamageBase'] = attribute_bonus.get('CriticalDamageBase', 0) + self.Skill_num('Ultra', 'Ultra_CD')
|
||||
attribute_bonus['AttackAddedRatio'] = attribute_bonus.get(
|
||||
'AttackAddedRatio', 0
|
||||
) + self.Skill_num('BPSkill', 'BPSkill')
|
||||
attribute_bonus['CriticalChanceBase'] = attribute_bonus.get(
|
||||
'CriticalChanceBase', 0
|
||||
) + self.Skill_num('Ultra', 'Ultra_CC')
|
||||
attribute_bonus['CriticalDamageBase'] = attribute_bonus.get(
|
||||
'CriticalDamageBase', 0
|
||||
) + self.Skill_num('Ultra', 'Ultra_CD')
|
||||
|
||||
skill_info_list = []
|
||||
# 计算普攻伤害
|
||||
@ -2846,6 +2912,7 @@ class Yukong(BaseAvatar):
|
||||
|
||||
return skill_info_list
|
||||
|
||||
|
||||
class Sushang(BaseAvatar):
|
||||
Buff: BaseAvatarBuff
|
||||
|
||||
@ -2862,9 +2929,13 @@ class Sushang(BaseAvatar):
|
||||
pass
|
||||
|
||||
def eidolons(self):
|
||||
self.eidolon_attribute['SpeedAddedRatio'] = self.Skill_num('Talent', 'Talent')
|
||||
self.eidolon_attribute['SpeedAddedRatio'] = self.Skill_num(
|
||||
'Talent', 'Talent'
|
||||
)
|
||||
if self.avatar_rank >= 6:
|
||||
self.eidolon_attribute['SpeedAddedRatio'] = self.Skill_num('Talent', 'Talent') * 2
|
||||
self.eidolon_attribute['SpeedAddedRatio'] = (
|
||||
self.Skill_num('Talent', 'Talent') * 2
|
||||
)
|
||||
|
||||
def extra_ability(self):
|
||||
self.extra_ability_attribute['jianshiDmgAdd'] = 0.2
|
||||
@ -2943,7 +3014,9 @@ class Sushang(BaseAvatar):
|
||||
damagelist4[2] += damage3 + damagelist2[2] * 3
|
||||
skill_info_list.append({'name': '强化战技', 'damagelist': damagelist4})
|
||||
|
||||
skill_info_list.append({'name': '剑势附加伤害', 'damagelist': damagelist2})
|
||||
skill_info_list.append(
|
||||
{'name': '剑势附加伤害', 'damagelist': damagelist2}
|
||||
)
|
||||
|
||||
# 计算终结技伤害
|
||||
skill_multiplier = self.Skill_num('Ultra', 'Ultra')
|
||||
@ -2961,6 +3034,7 @@ class Sushang(BaseAvatar):
|
||||
|
||||
return skill_info_list
|
||||
|
||||
|
||||
class AvatarDamage:
|
||||
@classmethod
|
||||
def create(
|
||||
|
@ -1,9 +1,9 @@
|
||||
import json
|
||||
from typing import Dict
|
||||
from pathlib import Path
|
||||
from typing import Dict
|
||||
|
||||
from ..Base.WeaponBase import BaseWeapon
|
||||
from ..Base.model import DamageInstanceWeapon
|
||||
from ..Base.WeaponBase import BaseWeapon
|
||||
|
||||
path = Path(__file__).parent.parent
|
||||
with Path.open(path / 'Excel' / 'weapon_effect.json', encoding='utf-8') as f:
|
||||
@ -269,16 +269,19 @@ class BeforeDawn(BaseWeapon):
|
||||
attribute_bonus: Dict[str, float],
|
||||
):
|
||||
bp_skill_dmg_add = attribute_bonus.get('BPSkillDmgAdd', 0)
|
||||
attribute_bonus['BPSkillDmgAdd'] = bp_skill_dmg_add + (
|
||||
weapon_effect['23010']['Param']['e_dmg'][self.weapon_rank - 1]
|
||||
attribute_bonus['BPSkillDmgAdd'] = (
|
||||
bp_skill_dmg_add
|
||||
+ (weapon_effect['23010']['Param']['e_dmg'][self.weapon_rank - 1])
|
||||
)
|
||||
ultra_dmg_add = attribute_bonus.get('UltraDmgAdd', 0)
|
||||
attribute_bonus['UltraDmgAdd'] = ultra_dmg_add + (
|
||||
weapon_effect['23010']['Param']['r_dmg'][self.weapon_rank - 1]
|
||||
attribute_bonus['UltraDmgAdd'] = (
|
||||
ultra_dmg_add
|
||||
+ (weapon_effect['23010']['Param']['r_dmg'][self.weapon_rank - 1])
|
||||
)
|
||||
talent_dmg_add = attribute_bonus.get('TalentDmgAdd', 0)
|
||||
attribute_bonus['TalentDmgAdd'] = talent_dmg_add + (
|
||||
weapon_effect['23010']['Param']['t_dmg'][self.weapon_rank - 1]
|
||||
attribute_bonus['TalentDmgAdd'] = (
|
||||
talent_dmg_add
|
||||
+ (weapon_effect['23010']['Param']['t_dmg'][self.weapon_rank - 1])
|
||||
)
|
||||
return attribute_bonus
|
||||
|
||||
@ -492,11 +495,14 @@ class GeniusesRepose(BaseWeapon):
|
||||
):
|
||||
if await self.check():
|
||||
critical_chance_base = attribute_bonus.get('CriticalDamageBase', 0)
|
||||
attribute_bonus['CriticalDamageBase'] = critical_chance_base + (
|
||||
attribute_bonus['CriticalDamageBase'] = (
|
||||
critical_chance_base
|
||||
+ (
|
||||
weapon_effect['21020']['Param']['CriticalDamageBase'][
|
||||
self.weapon_rank - 1
|
||||
]
|
||||
)
|
||||
)
|
||||
return attribute_bonus
|
||||
|
||||
|
||||
@ -518,8 +524,9 @@ class MaketheWorldClamor(BaseWeapon):
|
||||
attribute_bonus: Dict[str, float],
|
||||
):
|
||||
ultra_dmg_add = attribute_bonus.get('UltraDmgAdd', 0)
|
||||
attribute_bonus['UltraDmgAdd'] = ultra_dmg_add + (
|
||||
weapon_effect['21013']['Param']['r_dmg'][self.weapon_rank - 1]
|
||||
attribute_bonus['UltraDmgAdd'] = (
|
||||
ultra_dmg_add
|
||||
+ (weapon_effect['21013']['Param']['r_dmg'][self.weapon_rank - 1])
|
||||
)
|
||||
return attribute_bonus
|
||||
|
||||
@ -544,8 +551,13 @@ class TheBirthoftheSelf(BaseWeapon):
|
||||
):
|
||||
if await self.check():
|
||||
talent_dmg_add = attribute_bonus.get('TalentDmgAdd', 0)
|
||||
attribute_bonus['TalentDmgAdd'] = talent_dmg_add + (
|
||||
weapon_effect['21006']['Param']['t_dmg'][self.weapon_rank - 1]
|
||||
attribute_bonus['TalentDmgAdd'] = (
|
||||
talent_dmg_add
|
||||
+ (
|
||||
weapon_effect['21006']['Param']['t_dmg'][
|
||||
self.weapon_rank - 1
|
||||
]
|
||||
)
|
||||
)
|
||||
return attribute_bonus
|
||||
return attribute_bonus
|
||||
@ -1473,12 +1485,14 @@ class CollapsingSky(BaseWeapon):
|
||||
attribute_bonus: Dict[str, float],
|
||||
):
|
||||
normal_dmg_add = attribute_bonus.get('NormalDmgAdd', 0)
|
||||
attribute_bonus['NormalDmgAdd'] = normal_dmg_add + (
|
||||
weapon_effect['20002']['Param']['a_dmg'][self.weapon_rank - 1]
|
||||
attribute_bonus['NormalDmgAdd'] = (
|
||||
normal_dmg_add
|
||||
+ (weapon_effect['20002']['Param']['a_dmg'][self.weapon_rank - 1])
|
||||
)
|
||||
bp_skill_dmg_add = attribute_bonus.get('BPSkillDmgAdd', 0)
|
||||
attribute_bonus['BPSkillDmgAdd'] = bp_skill_dmg_add + (
|
||||
weapon_effect['20002']['Param']['e_dmg'][self.weapon_rank - 1]
|
||||
attribute_bonus['BPSkillDmgAdd'] = (
|
||||
bp_skill_dmg_add
|
||||
+ (weapon_effect['20002']['Param']['e_dmg'][self.weapon_rank - 1])
|
||||
)
|
||||
return attribute_bonus
|
||||
|
||||
@ -1631,8 +1645,9 @@ class DataBank(BaseWeapon):
|
||||
attribute_bonus: Dict[str, float],
|
||||
):
|
||||
ultra_dmg_add = attribute_bonus.get('UltraDmgAdd', 0)
|
||||
attribute_bonus['UltraDmgAdd'] = ultra_dmg_add + (
|
||||
weapon_effect['20006']['Param']['r_dmg'][self.weapon_rank - 1]
|
||||
attribute_bonus['UltraDmgAdd'] = (
|
||||
ultra_dmg_add
|
||||
+ (weapon_effect['20006']['Param']['r_dmg'][self.weapon_rank - 1])
|
||||
)
|
||||
return attribute_bonus
|
||||
|
||||
@ -1670,13 +1685,14 @@ class Thisbodyisasword(BaseWeapon):
|
||||
resistance_penetration = attribute_bonus.get(
|
||||
'AllDamageResistancePenetration', 0
|
||||
)
|
||||
attribute_bonus[
|
||||
'AllDamageResistancePenetration'
|
||||
] = resistance_penetration + (
|
||||
attribute_bonus['AllDamageResistancePenetration'] = (
|
||||
resistance_penetration
|
||||
+ (
|
||||
weapon_effect['23014']['Param']['ResistancePenetration'][
|
||||
self.weapon_rank - 1
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
return attribute_bonus
|
||||
|
||||
@ -1748,7 +1764,7 @@ class WorrisomeBlissf(BaseWeapon):
|
||||
return attribute_bonus
|
||||
|
||||
|
||||
# 片刻,留在眼底
|
||||
# 片刻, 留在眼底
|
||||
class AnInstanceBeforeAGaze(BaseWeapon):
|
||||
weapon_base_attributes: Dict
|
||||
|
||||
@ -1756,7 +1772,7 @@ class AnInstanceBeforeAGaze(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 当装备者施放终结技时,根据装备者的能量上限,提高装备者终结技造成的伤害:每点能量提高0.36%,最多计入180点。
|
||||
# 当装备者施放终结技时, 根据装备者的能量上限, 提高装备者终结技造成的伤害: 每点能量提高0.36%, 最多计入180点。
|
||||
return True
|
||||
|
||||
async def weapon_ability(
|
||||
@ -1787,7 +1803,7 @@ class TimeWaitsforNoOne(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 当装备者对我方目标提供治疗时,记录治疗量。当任意我方目标施放攻击后,根据记录治疗量的36%,对随机1个受到攻击的敌方目标造成基于装备者属性的附加伤害
|
||||
# 当装备者对我方目标提供治疗时,记录治疗量。当任意我方目标施放攻击后,根据记录治疗量的36%,对随机1个受到攻击的敌方目标造成基于装备者属性的附加伤害
|
||||
pass
|
||||
|
||||
async def weapon_ability(
|
||||
@ -1807,7 +1823,7 @@ class EchoesoftheCoffin(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 当装备者施放终结技后,使我方全体速度提高12点,持续1回合。
|
||||
# 当装备者施放终结技后,使我方全体速度提高12点,持续1回合。
|
||||
return True
|
||||
|
||||
async def weapon_ability(
|
||||
@ -1818,8 +1834,13 @@ class EchoesoftheCoffin(BaseWeapon):
|
||||
):
|
||||
if await self.check():
|
||||
speed_delta = attribute_bonus.get('SpeedDelta', 0)
|
||||
attribute_bonus['SpeedDelta'] = speed_delta + (
|
||||
weapon_effect['23008']['Param']['speed'][self.weapon_rank - 1]
|
||||
attribute_bonus['SpeedDelta'] = (
|
||||
speed_delta
|
||||
+ (
|
||||
weapon_effect['23008']['Param']['speed'][
|
||||
self.weapon_rank - 1
|
||||
]
|
||||
)
|
||||
)
|
||||
return attribute_bonus
|
||||
|
||||
@ -1832,7 +1853,7 @@ class NightofFright(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 当装备者为我方目标提供治疗时,使该目标的攻击力提高2.3%,该效果最多叠加5层
|
||||
# 当装备者为我方目标提供治疗时,使该目标的攻击力提高2.3%,该效果最多叠加5层
|
||||
return True
|
||||
|
||||
async def weapon_ability(
|
||||
@ -1874,11 +1895,14 @@ class PostOpConversation(BaseWeapon):
|
||||
):
|
||||
if await self.check():
|
||||
Ultra_HealRatioBase = attribute_bonus.get('Ultra_HealRatioBase', 0)
|
||||
attribute_bonus['Ultra_HealRatioBase'] = Ultra_HealRatioBase + (
|
||||
attribute_bonus['Ultra_HealRatioBase'] = (
|
||||
Ultra_HealRatioBase
|
||||
+ (
|
||||
weapon_effect['21000']['Param']['Ultra_HealRatioBase'][
|
||||
self.weapon_rank - 1
|
||||
]
|
||||
)
|
||||
)
|
||||
return attribute_bonus
|
||||
|
||||
|
||||
@ -1910,7 +1934,7 @@ class PerfectTiming(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 使装备者的治疗量提高,提高数值等同于效果抵抗的33%,最多使治疗量提高15%。
|
||||
# 使装备者的治疗量提高, 提高数值等同于效果抵抗的33%, 最多使治疗量提高15%。
|
||||
return True
|
||||
|
||||
async def weapon_ability(
|
||||
@ -1965,7 +1989,7 @@ class WarmthShortensColdNights(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 施放普攻或战技后,为我方全体回复等同于各自生命上限2%的生命值。
|
||||
# 施放普攻或战技后, 为我方全体回复等同于各自生命上限2%的生命值。
|
||||
pass
|
||||
|
||||
async def weapon_ability(
|
||||
@ -1977,7 +2001,7 @@ class WarmthShortensColdNights(BaseWeapon):
|
||||
return attribute_bonus
|
||||
|
||||
|
||||
# 嘿,我在这儿
|
||||
# 嘿,我在这儿
|
||||
class HeyOverHere(BaseWeapon):
|
||||
weapon_base_attributes: Dict
|
||||
|
||||
@ -1985,7 +2009,7 @@ class HeyOverHere(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 当装备者施放战技时,治疗量提高16%,持续2回合。
|
||||
# 当装备者施放战技时, 治疗量提高16%,持续2回合。
|
||||
return True
|
||||
|
||||
async def weapon_ability(
|
||||
@ -1996,11 +2020,14 @@ class HeyOverHere(BaseWeapon):
|
||||
):
|
||||
if await self.check():
|
||||
HealRatioBase = attribute_bonus.get('HealRatioBase', 0)
|
||||
attribute_bonus['HealRatioBase'] = HealRatioBase + (
|
||||
attribute_bonus['HealRatioBase'] = (
|
||||
HealRatioBase
|
||||
+ (
|
||||
weapon_effect['22001']['Param']['HealRatioBase'][
|
||||
self.weapon_rank - 1
|
||||
]
|
||||
)
|
||||
)
|
||||
return attribute_bonus
|
||||
|
||||
|
||||
@ -2012,7 +2039,7 @@ class Cornucopia(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 装备者施放战技和终结技时,治疗量提高12%。
|
||||
# 装备者施放战技和终结技时, 治疗量提高12%。
|
||||
return True
|
||||
|
||||
async def weapon_ability(
|
||||
@ -2023,21 +2050,25 @@ class Cornucopia(BaseWeapon):
|
||||
):
|
||||
if await self.check():
|
||||
Ultra_HealRatioBase = attribute_bonus.get('Ultra_HealRatioBase', 0)
|
||||
attribute_bonus['Ultra_HealRatioBase'] = Ultra_HealRatioBase + (
|
||||
attribute_bonus['Ultra_HealRatioBase'] = (
|
||||
Ultra_HealRatioBase
|
||||
+ (
|
||||
weapon_effect['20001']['Param']['HealRatioBase'][
|
||||
self.weapon_rank - 1
|
||||
]
|
||||
)
|
||||
)
|
||||
BPSkill_HealRatioBase = attribute_bonus.get(
|
||||
'BPSkill_HealRatioBase', 0
|
||||
)
|
||||
attribute_bonus[
|
||||
'BPSkill_HealRatioBase'
|
||||
] = BPSkill_HealRatioBase + (
|
||||
attribute_bonus['BPSkill_HealRatioBase'] = (
|
||||
BPSkill_HealRatioBase
|
||||
+ (
|
||||
weapon_effect['20001']['Param']['HealRatioBase'][
|
||||
self.weapon_rank - 1
|
||||
]
|
||||
)
|
||||
)
|
||||
return attribute_bonus
|
||||
|
||||
|
||||
@ -2049,7 +2080,7 @@ class FineFruit(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 战斗开始时,立即为我方全体恢复6点能量。
|
||||
# 战斗开始时, 立即为我方全体恢复6点能量。
|
||||
pass
|
||||
|
||||
async def weapon_ability(
|
||||
@ -2069,7 +2100,7 @@ class Multiplication(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 战斗开始时,立即为我方全体恢复6点能量。
|
||||
# 战斗开始时, 立即为我方全体恢复6点能量。
|
||||
pass
|
||||
|
||||
async def weapon_ability(
|
||||
@ -2089,7 +2120,7 @@ class ButtheBattleIsnotOver(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 当装备者施放战技后,使下一个行动的我方【其他目标】造成的伤害提高30%
|
||||
# 当装备者施放战技后, 使下一个行动的我方【其他目标】造成的伤害提高30%
|
||||
pass
|
||||
|
||||
async def weapon_ability(
|
||||
@ -2109,7 +2140,7 @@ class MemoriesofthePast(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 装备者施放攻击后,额外恢复4点能量
|
||||
# 装备者施放攻击后, 额外恢复4点能量
|
||||
pass
|
||||
|
||||
async def weapon_ability(
|
||||
@ -2129,7 +2160,7 @@ class PlanetaryRendezvous(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 当我方目标造成与装备者相同属性的伤害时,造成的伤害提高12%。
|
||||
# 当我方目标造成与装备者相同属性的伤害时, 造成的伤害提高12%。
|
||||
pass
|
||||
|
||||
async def weapon_ability(
|
||||
@ -2139,15 +2170,18 @@ class PlanetaryRendezvous(BaseWeapon):
|
||||
attribute_bonus: Dict[str, float],
|
||||
):
|
||||
all_damage_added_ratio = attribute_bonus.get('AllDamageAddedRatio', 0)
|
||||
attribute_bonus['AllDamageAddedRatio'] = all_damage_added_ratio + (
|
||||
attribute_bonus['AllDamageAddedRatio'] = (
|
||||
all_damage_added_ratio
|
||||
+ (
|
||||
weapon_effect['21011']['Param']['AllDamageAddedRatio'][
|
||||
self.weapon_rank - 1
|
||||
]
|
||||
)
|
||||
)
|
||||
return attribute_bonus
|
||||
|
||||
|
||||
# 舞!舞!舞!
|
||||
# 舞! 舞! 舞!
|
||||
class DanceDanceDance(BaseWeapon):
|
||||
weapon_base_attributes: Dict
|
||||
|
||||
@ -2155,7 +2189,7 @@ class DanceDanceDance(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 当装备者施放终结技后,我方全体行动提前16%。
|
||||
# 当装备者施放终结技后, 我方全体行动提前16%。
|
||||
pass
|
||||
|
||||
async def weapon_ability(
|
||||
@ -2195,7 +2229,7 @@ class CarvetheMoonWeavetheClouds(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 在战斗开始时以及当装备者回合开始时,随机生效1个效果
|
||||
# 在战斗开始时以及当装备者回合开始时,随机生效1个效果
|
||||
# 使我方全体攻击力提高10%
|
||||
# 使我方全体暴击伤害提高12%
|
||||
# 暂时固定只算攻击
|
||||
@ -2208,11 +2242,14 @@ class CarvetheMoonWeavetheClouds(BaseWeapon):
|
||||
attribute_bonus: Dict[str, float],
|
||||
):
|
||||
AttackAddedRatio = attribute_bonus.get('AttackAddedRatio', 0)
|
||||
attribute_bonus['AttackAddedRatio'] = AttackAddedRatio + (
|
||||
attribute_bonus['AttackAddedRatio'] = (
|
||||
AttackAddedRatio
|
||||
+ (
|
||||
weapon_effect['21032']['Param']['AttackAddedRatio'][
|
||||
self.weapon_rank - 1
|
||||
]
|
||||
)
|
||||
)
|
||||
return attribute_bonus
|
||||
|
||||
|
||||
@ -2224,7 +2261,7 @@ class Chorus(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 进入战斗后,使我方全体的攻击力提高8%
|
||||
# 进入战斗后,使我方全体的攻击力提高8%
|
||||
pass
|
||||
|
||||
async def weapon_ability(
|
||||
@ -2234,11 +2271,14 @@ class Chorus(BaseWeapon):
|
||||
attribute_bonus: Dict[str, float],
|
||||
):
|
||||
AttackAddedRatio = attribute_bonus.get('AttackAddedRatio', 0)
|
||||
attribute_bonus['AttackAddedRatio'] = AttackAddedRatio + (
|
||||
attribute_bonus['AttackAddedRatio'] = (
|
||||
AttackAddedRatio
|
||||
+ (
|
||||
weapon_effect['20005']['Param']['AttackAddedRatio'][
|
||||
self.weapon_rank - 1
|
||||
]
|
||||
)
|
||||
)
|
||||
return attribute_bonus
|
||||
|
||||
|
||||
@ -2250,7 +2290,7 @@ class MeshingCogs(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 使装备者施放攻击或受到攻击后,额外恢复4点能量
|
||||
# 使装备者施放攻击或受到攻击后,额外恢复4点能量
|
||||
pass
|
||||
|
||||
async def weapon_ability(
|
||||
@ -2270,7 +2310,7 @@ class Mediation(BaseWeapon):
|
||||
super().__init__(weapon)
|
||||
|
||||
async def check(self):
|
||||
# 当装备者施放终结技后,使我方全体速度提高12点,持续1回合。
|
||||
# 当装备者施放终结技后,使我方全体速度提高12点,持续1回合。
|
||||
return True
|
||||
|
||||
async def weapon_ability(
|
||||
@ -2281,8 +2321,13 @@ class Mediation(BaseWeapon):
|
||||
):
|
||||
if await self.check():
|
||||
speed_delta = attribute_bonus.get('SpeedDelta', 0)
|
||||
attribute_bonus['SpeedDelta'] = speed_delta + (
|
||||
weapon_effect['20019']['Param']['speed'][self.weapon_rank - 1]
|
||||
attribute_bonus['SpeedDelta'] = (
|
||||
speed_delta
|
||||
+ (
|
||||
weapon_effect['20019']['Param']['speed'][
|
||||
self.weapon_rank - 1
|
||||
]
|
||||
)
|
||||
)
|
||||
return attribute_bonus
|
||||
|
||||
|
@ -5,29 +5,14 @@ import textwrap
|
||||
from pathlib import Path
|
||||
from typing import Dict, Union
|
||||
|
||||
from PIL import Image, ImageDraw
|
||||
from gsuid_core.logger import logger
|
||||
from gsuid_core.utils.image.convert import convert_img
|
||||
from gsuid_core.utils.image.image_tools import draw_text_by_line
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
from .to_data import api_to_dict
|
||||
from ..utils.error_reply import CHAR_HINT
|
||||
from .cal_damage import cal_info, cal_char_info
|
||||
from ..utils.fonts.first_world import fw_font_28
|
||||
from ..utils.excel.read_excel import light_cone_ranks
|
||||
from ..utils.map.name_covert import name_to_avatar_id, alias_to_char_name
|
||||
from ..utils.map.SR_MAP_PATH import (
|
||||
RelicId2Rarity,
|
||||
AvatarRelicScore,
|
||||
avatarId2Name,
|
||||
)
|
||||
from ..utils.resource.RESOURCE_PATH import (
|
||||
RELIC_PATH,
|
||||
SKILL_PATH,
|
||||
PLAYER_PATH,
|
||||
WEAPON_PATH,
|
||||
CHAR_PORTRAIT_PATH,
|
||||
)
|
||||
from ..utils.fonts.first_world import fw_font_28
|
||||
from ..utils.fonts.starrail_fonts import (
|
||||
sr_font_18,
|
||||
sr_font_20,
|
||||
@ -38,6 +23,21 @@ from ..utils.fonts.starrail_fonts import (
|
||||
sr_font_34,
|
||||
sr_font_38,
|
||||
)
|
||||
from ..utils.map.name_covert import alias_to_char_name, name_to_avatar_id
|
||||
from ..utils.map.SR_MAP_PATH import (
|
||||
AvatarRelicScore,
|
||||
RelicId2Rarity,
|
||||
avatarId2Name,
|
||||
)
|
||||
from ..utils.resource.RESOURCE_PATH import (
|
||||
CHAR_PORTRAIT_PATH,
|
||||
PLAYER_PATH,
|
||||
RELIC_PATH,
|
||||
SKILL_PATH,
|
||||
WEAPON_PATH,
|
||||
)
|
||||
from .cal_damage import cal_char_info, cal_info
|
||||
from .to_data import api_to_dict
|
||||
|
||||
Excel_path = Path(__file__).parent / 'damage'
|
||||
with Path.open(Excel_path / 'Excel' / 'SkillData.json', encoding='utf-8') as f:
|
||||
|
@ -130,7 +130,9 @@ async def get_char_args(
|
||||
if isinstance(char_data, str):
|
||||
return char_data
|
||||
else:
|
||||
for i, s in enumerate(['头部', '手部', '躯干', '腿部', '位面球', '连结绳']):
|
||||
for i, s in enumerate(
|
||||
['头部', '手部', '躯干', '腿部', '位面球', '连结绳']
|
||||
):
|
||||
if '赤沙' in part:
|
||||
continue
|
||||
if part[-1] in PieceName_ilst[i]:
|
||||
|
@ -96,18 +96,18 @@ class Character:
|
||||
set_property = status_add.Property
|
||||
set_value = status_add.Value
|
||||
if set_property != '':
|
||||
self.add_attr[
|
||||
set_property
|
||||
] = set_value + self.add_attr.get(set_property, 0)
|
||||
self.add_attr[set_property] = (
|
||||
set_value + self.add_attr.get(set_property, 0)
|
||||
)
|
||||
if count == 4:
|
||||
status_add = RelicSetSkill.RelicSet[str(set_id)]['4']
|
||||
if status_add:
|
||||
set_property = status_add.Property
|
||||
set_value = status_add.Value
|
||||
if set_property != '':
|
||||
self.add_attr[
|
||||
set_property
|
||||
] = set_value + self.add_attr.get(set_property, 0)
|
||||
self.add_attr[set_property] = (
|
||||
set_value + self.add_attr.get(set_property, 0)
|
||||
)
|
||||
|
||||
# logger.info(json.dumps(self.base_attributes))
|
||||
# logger.info(json.dumps(self.add_attr))
|
||||
|
@ -54,7 +54,9 @@ async def draw_enka_card(uid: str, char_list: List, showfrom: int = 0):
|
||||
return await convert_img(Image.new('RGBA', (0, 1), (255, 255, 255)))
|
||||
else:
|
||||
line1 = f'UID {uid} 刷新成功'
|
||||
line2 = f'可以使用 sr查询{char_data_list[0]["avatarName"]} 查询详情角色面板'
|
||||
line2 = (
|
||||
f'可以使用 sr查询{char_data_list[0]["avatarName"]} 查询详情角色面板'
|
||||
)
|
||||
char_num = len(char_data_list)
|
||||
if char_num <= 4:
|
||||
based_w, based_h = 1380, 926
|
||||
|
@ -8,7 +8,9 @@ from gsuid_core.utils.plugins_config.models import (
|
||||
)
|
||||
|
||||
CONIFG_DEFAULT: Dict[str, GSC] = {
|
||||
'SignTime': GsListStrConfig('每晚签到时间设置', '每晚米游社签到时间设置(时,分)', ['0', '38']),
|
||||
'SignTime': GsListStrConfig(
|
||||
'每晚签到时间设置', '每晚米游社签到时间设置(时,分)', ['0', '38']
|
||||
),
|
||||
'SignReportSimple': GsBoolConfig(
|
||||
'简洁签到报告',
|
||||
'开启后可以大大减少每日签到报告字数',
|
||||
|
@ -39,6 +39,8 @@ async def get_gachalog_by_link(bot: Bot, ev: Event):
|
||||
if ev.command.startswith('强制'):
|
||||
await bot.logger.info('[WARNING]本次为强制刷新')
|
||||
is_force = True
|
||||
await bot.send(f'UID{uid}开始执行[刷新抽卡记录],需要一定时间...请勿重复触发!')
|
||||
await bot.send(
|
||||
f'UID{uid}开始执行[刷新抽卡记录],需要一定时间...请勿重复触发!'
|
||||
)
|
||||
im = await save_gachalogs(uid, gacha_url, None, is_force)
|
||||
return await bot.send(im)
|
||||
|
@ -1,13 +1,13 @@
|
||||
from gsuid_core.sv import SV
|
||||
from gsuid_core.bot import Bot
|
||||
from gsuid_core.models import Event
|
||||
from gsuid_core.sv import SV
|
||||
from gsuid_core.utils.database.models import GsUser
|
||||
|
||||
from .note_text import award
|
||||
from ..utils.api import get_sqla
|
||||
from ..utils.convert import get_uid
|
||||
from ..utils.sr_prefix import PREFIX
|
||||
from ..utils.error_reply import UID_HINT
|
||||
from ..utils.sr_prefix import PREFIX
|
||||
from .draw_note_card import draw_note_img
|
||||
from .note_text import award
|
||||
|
||||
sv_get_monthly_data = SV('sr查询月历')
|
||||
|
||||
@ -15,8 +15,7 @@ sv_get_monthly_data = SV('sr查询月历')
|
||||
# 群聊内 每月统计 功能
|
||||
@sv_get_monthly_data.on_fullmatch(f'{PREFIX}每月统计')
|
||||
async def send_monthly_data(bot: Bot, ev: Event):
|
||||
sqla = get_sqla(ev.bot_id)
|
||||
sr_uid = await sqla.get_bind_sruid(ev.user_id)
|
||||
sr_uid = await GsUser.get_bind_sruid(ev.user_id)
|
||||
if sr_uid is None:
|
||||
return UID_HINT
|
||||
await bot.send(await award(sr_uid))
|
||||
|
@ -3,7 +3,7 @@ from datetime import datetime
|
||||
from ..utils.mys_api import mys_api
|
||||
from ..utils.error_reply import get_error
|
||||
|
||||
month_im = '''==============
|
||||
month_im = """==============
|
||||
SR_UID:{}
|
||||
==============
|
||||
本日获取星琼:{}
|
||||
@ -19,7 +19,7 @@ SR_UID:{}
|
||||
上月获取星轨通票&星轨专票:{}
|
||||
==============
|
||||
星琼收入组成:
|
||||
{}=============='''
|
||||
{}=============="""
|
||||
|
||||
|
||||
async def award(uid) -> str:
|
||||
|
@ -17,5 +17,7 @@ async def send_download_resource_msg(bot: Bot, ev: Event):
|
||||
|
||||
|
||||
async def startup():
|
||||
logger.info('[sr资源文件下载] 正在检查与下载缺失的资源文件,可能需要较长时间,请稍等')
|
||||
logger.info(
|
||||
'[sr资源文件下载] 正在检查与下载缺失的资源文件,可能需要较长时间,请稍等'
|
||||
)
|
||||
logger.info(f'[sr资源文件下载] {await check_use()}')
|
||||
|
@ -65,7 +65,9 @@ async def send_daily_sign():
|
||||
single['msg'], 'direct', qid, single['bot_id'], '', ''
|
||||
)
|
||||
except Exception as e:
|
||||
logger.warning(f'[SR每日全部签到] QQ {qid} 私聊推送失败!错误信息:{e}')
|
||||
logger.warning(
|
||||
f'[SR每日全部签到] QQ {qid} 私聊推送失败!错误信息:{e}'
|
||||
)
|
||||
await asyncio.sleep(0.5)
|
||||
logger.info('[SR每日全部签到]私聊推送完成')
|
||||
|
||||
@ -74,7 +76,9 @@ async def send_daily_sign():
|
||||
# 根据succee数判断是否为简洁推送
|
||||
if group_msg_list[gid]['success'] >= 0:
|
||||
report = (
|
||||
'以下为签到失败报告:{}'.format(group_msg_list[gid]['push_message'])
|
||||
'以下为签到失败报告:{}'.format(
|
||||
group_msg_list[gid]['push_message']
|
||||
)
|
||||
if group_msg_list[gid]['push_message'] != ''
|
||||
else ''
|
||||
)
|
||||
|
@ -57,11 +57,15 @@ async def sign_in(sr_uid: str) -> str:
|
||||
Header['x-rpc-challenge'] = ch
|
||||
Header['x-rpc-validate'] = vl
|
||||
Header['x-rpc-seccode'] = f'{vl}|jordan'
|
||||
logger.info(f'[SR签到] {sr_uid} 已获取验证码, 等待时间{delay}秒')
|
||||
logger.info(
|
||||
f'[SR签到] {sr_uid} 已获取验证码, 等待时间{delay}秒'
|
||||
)
|
||||
await asyncio.sleep(delay)
|
||||
else:
|
||||
delay = 605 + random.randint(1, 120)
|
||||
logger.info(f'[SR签到] {sr_uid} 未获取验证码,等待{delay}秒后重试...')
|
||||
logger.info(
|
||||
f'[SR签到] {sr_uid} 未获取验证码,等待{delay}秒后重试...'
|
||||
)
|
||||
await asyncio.sleep(delay)
|
||||
continue
|
||||
logger.info('配置文件暂未开启[跳过无感验证],结束本次任务...')
|
||||
@ -70,7 +74,9 @@ async def sign_in(sr_uid: str) -> str:
|
||||
if index == 0:
|
||||
logger.info(f'[SR签到] {sr_uid} 该用户无校验码!')
|
||||
else:
|
||||
logger.info(f'[SR签到] [无感验证] {sr_uid} 该用户重试 {index} 次验证成功!')
|
||||
logger.info(
|
||||
f'[SR签到] [无感验证] {sr_uid} 该用户重试 {index} 次验证成功!'
|
||||
)
|
||||
break
|
||||
if (int(str(sr_uid)[0]) > 5) and (sign_data.code == 'ok'):
|
||||
# 国际服签到无risk_code字段
|
||||
@ -103,7 +109,9 @@ async def sign_in(sr_uid: str) -> str:
|
||||
sign_missed -= 1
|
||||
sign_missed = sign_info.sign_cnt_missed or sign_missed
|
||||
im = f'{mes_im}!\n{get_im}\n本月漏签次数:{sign_missed}'
|
||||
logger.info(f'[SR签到] {sr_uid} 签到完成, 结果: {mes_im}, 漏签次数: {sign_missed}')
|
||||
logger.info(
|
||||
f'[SR签到] {sr_uid} 签到完成, 结果: {mes_im}, 漏签次数: {sign_missed}'
|
||||
)
|
||||
return im
|
||||
|
||||
|
||||
@ -163,7 +171,9 @@ async def daily_sign():
|
||||
delay = 1
|
||||
else:
|
||||
delay = 50 + random.randint(3, 45)
|
||||
logger.info(f'[SR签到] 已签到{len(tasks)}个用户, 等待{delay}秒进行下一次签到')
|
||||
logger.info(
|
||||
f'[SR签到] 已签到{len(tasks)}个用户, 等待{delay}秒进行下一次签到'
|
||||
)
|
||||
tasks.clear()
|
||||
already = 0
|
||||
await asyncio.sleep(delay)
|
||||
|
@ -5,12 +5,12 @@ from gsuid_core.logger import logger
|
||||
from ..utils.mys_api import mys_api
|
||||
from ..utils.error_reply import get_error
|
||||
|
||||
daily_im = '''*数据刷新可能存在一定延迟,请以当前游戏实际数据为准
|
||||
daily_im = """*数据刷新可能存在一定延迟,请以当前游戏实际数据为准
|
||||
==============
|
||||
开拓力:{}/{}{}
|
||||
委托执行:
|
||||
总数/完成/上限:{}/{}/{}
|
||||
{}'''
|
||||
{}"""
|
||||
|
||||
|
||||
def seconds2hours(seconds: int) -> str:
|
||||
|
@ -2,11 +2,11 @@ from typing import List
|
||||
|
||||
from gsuid_core.models import Message
|
||||
|
||||
CK_QRCODE_LOGIN = '''先发送【绑定uidxxx】绑定UID,
|
||||
CK_QRCODE_LOGIN = """先发送【绑定uidxxx】绑定UID,
|
||||
然后发送【扫码登陆】, 使用米游社APP扫码完成绑定, [或者]选择以下方法
|
||||
'''
|
||||
"""
|
||||
|
||||
CK_CONSOLE = '''var cookie = document.cookie;
|
||||
CK_CONSOLE = """var cookie = document.cookie;
|
||||
var Str_Num = cookie.indexOf('_MHYUUID=');
|
||||
cookie = '添加 ' + cookie.substring(Str_Num);
|
||||
var ask = confirm('Cookie:' + cookie + '\\n\\n按确认,然后粘贴发送给机器人');
|
||||
@ -16,21 +16,21 @@ if (ask == true) {
|
||||
} else {
|
||||
msg = 'Cancel'
|
||||
}
|
||||
'''
|
||||
"""
|
||||
|
||||
CK_URL = '''1.复制上面全部代码,然后打开下面的网站
|
||||
CK_URL = """1.复制上面全部代码,然后打开下面的网站
|
||||
https://bbs.mihoyo.com/ys/obc/?bbs_presentation_style=no_header(国服)
|
||||
https://www.hoyolab.com/home(国际服)
|
||||
2.在页面上右键检查或者Ctrl+Shift+i
|
||||
3.选择控制台(Console),粘贴,回车,在弹出的窗口点确认(点完自动复制)
|
||||
4.然后在和机器人的私聊窗口,粘贴发送即可
|
||||
'''
|
||||
"""
|
||||
|
||||
SK_URL = '''如果想获取SK,操作方法和上面一致,网址更换为
|
||||
SK_URL = """如果想获取SK,操作方法和上面一致,网址更换为
|
||||
http://user.mihoyo.com/(国服)
|
||||
登陆后,进入控制台粘贴代码
|
||||
然后在和机器人的私聊窗口,粘贴发送即可
|
||||
'''
|
||||
"""
|
||||
|
||||
|
||||
async def get_ck_help() -> List[Message]:
|
||||
|
@ -15,12 +15,12 @@ from gsuid_core.segment import MessageSegment
|
||||
from ..utils.api import get_sqla
|
||||
from ..utils.mys_api import mys_api
|
||||
|
||||
disnote = '''免责声明:您将通过扫码完成获取米游社sk以及ck。
|
||||
disnote = """免责声明:您将通过扫码完成获取米游社sk以及ck。
|
||||
本Bot将不会保存您的登录状态。
|
||||
我方仅提供米游社查询及相关游戏内容服务
|
||||
若您的账号封禁、被盗等处罚与我方无关。
|
||||
害怕风险请勿扫码!
|
||||
'''
|
||||
"""
|
||||
|
||||
|
||||
def get_qrcode_base64(url):
|
||||
|
@ -2,19 +2,19 @@ from typing import Union
|
||||
|
||||
UID_HINT = '你还没有绑定过uid哦!\n请使用[sr绑定uid123456]命令绑定!'
|
||||
MYS_HINT = '你还没有绑定过mysid哦!\n请使用[绑定mys1234]命令绑定!'
|
||||
CK_HINT = '''你还没有绑定过Cookie哦!发送【ck帮助】获取帮助!
|
||||
警告:绑定Cookie可能会带来未知的账号风险,请确保信任机器人管理员'''
|
||||
CK_HINT = """你还没有绑定过Cookie哦!发送【ck帮助】获取帮助!
|
||||
警告:绑定Cookie可能会带来未知的账号风险,请确保信任机器人管理员"""
|
||||
CHAR_HINT = '您的支援/星海同行角色没有{}的数据哦!\n请先把{}放入支援/星海同行中再使用【sr强制刷新】命令来缓存数据进行查询! !'
|
||||
VERIFY_HINT = '''出现验证码!
|
||||
VERIFY_HINT = """出现验证码!
|
||||
如已绑定CK: 请至米游社软件->我的->我的角色处解锁验证码
|
||||
(可使用[gs关闭推送]命令关闭体力推送以减少出现验证码风险)
|
||||
如未绑定CK: 可联系管理员使用[gs清除缓存]命令
|
||||
'''
|
||||
"""
|
||||
SK_HINT = '你还没有绑定过Stoken或者Stoken已失效~\n请群聊发送 [扫码登陆] 或加好友私聊Bot [添加]后跟SK格式 以绑定SK'
|
||||
UPDATE_HINT = '''更新失败!更多错误信息请查看控制台...
|
||||
UPDATE_HINT = """更新失败!更多错误信息请查看控制台...
|
||||
>> 可以尝试使用
|
||||
>> [gs强制更新](危险)
|
||||
>> [gs强行强制更新](超级危险)!'''
|
||||
>> [gs强行强制更新](超级危险)!"""
|
||||
|
||||
|
||||
def get_error(retcode: Union[int, str]) -> str:
|
||||
|
@ -2,33 +2,33 @@ import asyncio
|
||||
from pathlib import Path
|
||||
from typing import Dict, List, Tuple, Union
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
from msgspec import json as msgjson
|
||||
from gsuid_core.logger import logger
|
||||
from aiohttp import ClientTimeout, TCPConnector
|
||||
from aiohttp.client import ClientSession
|
||||
from aiohttp import TCPConnector, ClientTimeout
|
||||
from bs4 import BeautifulSoup
|
||||
from gsuid_core.logger import logger
|
||||
from gsuid_core.utils.download_resource.download_core import find_fastest_url
|
||||
from gsuid_core.utils.download_resource.download_file import download
|
||||
from gsuid_core.utils.download_resource.download_core import check_url
|
||||
from msgspec import json as msgjson
|
||||
|
||||
from .download_url import download_file
|
||||
from .RESOURCE_PATH import (
|
||||
WIKI_PATH,
|
||||
CHAR_ICON_PATH,
|
||||
CHAR_PORTRAIT_PATH,
|
||||
CHAR_PREVIEW_PATH,
|
||||
CONSUMABLE_PATH,
|
||||
ELEMENT_PATH,
|
||||
GUIDE_CHARACTER_PATH,
|
||||
GUIDE_LIGHT_CONE_PATH,
|
||||
GUIDE_PATH,
|
||||
RELIC_PATH,
|
||||
RESOURCE_PATH,
|
||||
SKILL_PATH,
|
||||
WEAPON_PATH,
|
||||
ELEMENT_PATH,
|
||||
RESOURCE_PATH,
|
||||
CHAR_ICON_PATH,
|
||||
WIKI_ROLE_PATH,
|
||||
CONSUMABLE_PATH,
|
||||
WIKI_RELIC_PATH,
|
||||
CHAR_PREVIEW_PATH,
|
||||
CHAR_PORTRAIT_PATH,
|
||||
GUIDE_CHARACTER_PATH,
|
||||
WIKI_LIGHT_CONE_PATH,
|
||||
GUIDE_LIGHT_CONE_PATH,
|
||||
WIKI_MATERIAL_FOR_ROLE,
|
||||
WIKI_PATH,
|
||||
WIKI_RELIC_PATH,
|
||||
WIKI_ROLE_PATH,
|
||||
)
|
||||
|
||||
with Path.open(
|
||||
@ -40,30 +40,6 @@ with Path.open(
|
||||
)
|
||||
|
||||
|
||||
async def find_fastest_url(urls: Dict[str, str]):
|
||||
tasks = []
|
||||
for tag in urls:
|
||||
tasks.append(asyncio.create_task(check_url(tag, urls[tag])))
|
||||
|
||||
results: list[
|
||||
tuple[str, str, float] | BaseException
|
||||
] = await asyncio.gather(*tasks, return_exceptions=True)
|
||||
fastest_tag = ''
|
||||
fastest_url = ''
|
||||
fastest_time = float('inf')
|
||||
|
||||
for result in results:
|
||||
if isinstance(result, BaseException):
|
||||
continue
|
||||
tag, url, elapsed_time = result
|
||||
if elapsed_time < fastest_time:
|
||||
fastest_url = url
|
||||
fastest_time = elapsed_time
|
||||
fastest_tag = tag
|
||||
|
||||
return fastest_tag, fastest_url
|
||||
|
||||
|
||||
async def check_speed():
|
||||
logger.info('[GsCore资源下载]测速中...')
|
||||
|
||||
@ -171,7 +147,9 @@ async def download_all_file_from_cos():
|
||||
or not Path.stat(path).st_size
|
||||
or not is_diff
|
||||
):
|
||||
logger.info(f'[cos]开始下载[{resource_type}]_[{name}]...')
|
||||
logger.info(
|
||||
f'[cos]开始下载[{resource_type}]_[{name}]...'
|
||||
)
|
||||
temp_num += 1
|
||||
if isinstance(url, int):
|
||||
logger.error(
|
||||
@ -209,7 +187,9 @@ async def download_all_file_from_cos():
|
||||
await _download(TASKS)
|
||||
await _download(TASKS)
|
||||
if count := len(failed_list):
|
||||
logger.error(f'[cos]仍有{count}个文件未下载,请使用命令 `下载全部资源` 重新下载')
|
||||
logger.error(
|
||||
f'[cos]仍有{count}个文件未下载,请使用命令 `下载全部资源` 重新下载'
|
||||
)
|
||||
|
||||
|
||||
async def _get_url(url: str, sess: ClientSession):
|
||||
@ -236,7 +216,9 @@ async def download_all_file(
|
||||
pre_data = content_bs.find_all('pre')[0]
|
||||
data_list = pre_data.find_all('a')
|
||||
size_list = list(content_bs.strings)
|
||||
logger.info(f'{TAG} 数据库 {endpoint} 中存在 {len(data_list)} 个内容!')
|
||||
logger.info(
|
||||
f'{TAG} 数据库 {endpoint} 中存在 {len(data_list)} 个内容!'
|
||||
)
|
||||
|
||||
temp_num = 0
|
||||
for index, data in enumerate(data_list):
|
||||
|
@ -1,11 +1,3 @@
|
||||
[tool.black]
|
||||
line-length = 79
|
||||
target-version = ["py38", "py39", "py310", "py311"]
|
||||
include = '\.pyi?$'
|
||||
skip-string-normalization = true
|
||||
extend-exclude = '''
|
||||
'''
|
||||
|
||||
[tool.isort]
|
||||
profile = "black"
|
||||
line_length = 79
|
||||
@ -40,7 +32,6 @@ secondary = true
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
flake8 = "^6.0.0"
|
||||
black = "^23.1.0"
|
||||
isort = "^5.12.0"
|
||||
pre-commit = "^2.21.0"
|
||||
pycln = "^2.1.2"
|
||||
@ -80,6 +71,7 @@ select = [
|
||||
"Q", # flake8-quotes
|
||||
]
|
||||
ignore = [
|
||||
"ISC",
|
||||
"PLR2004",
|
||||
"A003",
|
||||
"E501",
|
||||
@ -101,4 +93,6 @@ target-version = "py38"
|
||||
|
||||
[tool.ruff.flake8-quotes]
|
||||
inline-quotes = "single"
|
||||
multiline-quotes = "single"
|
||||
|
||||
[tool.ruff.format]
|
||||
quote-style = "single"
|
||||
|
Loading…
x
Reference in New Issue
Block a user