From b89b32ad87bae84b0982ce400fd8cd483044240d Mon Sep 17 00:00:00 2001 From: a376148946 <376148946@qq.com> Date: Fri, 27 Oct 2023 13:24:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=98=E5=B8=95=E4=BC=A4?= =?UTF-8?q?=E5=AE=B3=E8=AE=A1=E7=AE=97=E9=94=99=E8=AF=AF=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=83=A8=E5=88=86=E8=A7=92=E8=89=B2=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../damage/AvatarDamage/AvatarDamage.py | 146 +++++++++++++++++- .../damage/Excel/SkillData.json | 31 ++++ .../starrailuid_charinfo/draw_char_img.py | 10 +- 3 files changed, 181 insertions(+), 6 deletions(-) diff --git a/StarRailUID/starrailuid_charinfo/damage/AvatarDamage/AvatarDamage.py b/StarRailUID/starrailuid_charinfo/damage/AvatarDamage/AvatarDamage.py index 3a48664..15190bd 100644 --- a/StarRailUID/starrailuid_charinfo/damage/AvatarDamage/AvatarDamage.py +++ b/StarRailUID/starrailuid_charinfo/damage/AvatarDamage/AvatarDamage.py @@ -848,6 +848,40 @@ class Clara(BaseAvatar): damagelist4[2] += damage3 skill_info_list.append({'name': '强化反击', 'damagelist': damagelist4}) + # 计算1+1托帕反击伤害 + skill_multiplier = self.Skill_num('Talent', 'Talent') + add_attr_bonus = copy.deepcopy(attribute_bonus) + add_attr_bonus['Talent_DmgRatio'] = add_attr_bonus.get('Talent_DmgRatio', 0) + 0.5 + add_attr_bonus['Talent_CriticalDamageBase'] = add_attr_bonus.get('Talent_CriticalDamageBase', 0) + 0.74 + damagelist5 = await calculate_damage( + base_attr, + add_attr_bonus, + 'Talent', + 'Talent', + self.avatar_element, + skill_multiplier, + self.avatar_level, + ) + damagelist5[2] += damage3 + skill_info_list.append({'name': '(1+1托帕)反击', 'damagelist': damagelist5}) + + # 计算反击伤害 + skill_multiplier = self.Skill_num('Talent', 'Talent') + self.Skill_num('Ultra', 'Talent1') + add_attr_bonus = copy.deepcopy(attribute_bonus) + add_attr_bonus['Talent_DmgRatio'] = add_attr_bonus.get('Talent_DmgRatio', 0) + 0.5 + add_attr_bonus['Talent_CriticalDamageBase'] = add_attr_bonus.get('Talent_CriticalDamageBase', 0) + 0.74 + damagelist6 = await calculate_damage( + base_attr, + add_attr_bonus, + 'Talent', + 'Talent', + self.avatar_element, + skill_multiplier, + self.avatar_level, + ) + damagelist6[2] += damage3 + skill_info_list.append({'name': '(1+1托帕)强化反击', 'damagelist': damagelist6}) + return skill_info_list class Silverwolf(BaseAvatar): @@ -1761,7 +1795,7 @@ class Topaz(BaseAvatar): 'Talent1_CriticalDamageBase' ] = self.Skill_num('Ultra', 'Ultra_CD') logger.info('【负债证明】状态,使其受到的追加攻击伤害提高') - self.extra_ability_attribute['TalentDmgAdd'] = self.Skill_num( + self.extra_ability_attribute['Talent_DmgRatio'] = self.Skill_num( 'BPSkill', 'BPSkill_add' ) @@ -2462,11 +2496,121 @@ class Natasha(BaseAvatar): return skill_info_list +class Mar7th(BaseAvatar): + Buff: BaseAvatarBuff + + def __init__( + self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill] + ): + super().__init__(char=char, skills=skills) + self.eidolon_attribute: Dict[str, float] = {} + self.extra_ability_attribute: Dict[str, float] = {} + self.eidolons() + self.extra_ability() + + def Technique(self): + pass + + def eidolons(self): + pass + + def extra_ability(self): + pass + + async def getdamage( + self, + base_attr: Dict[str, float], + attribute_bonus: Dict[str, float], + ): + damage1, damage2, damage3 = await calculate_damage( + base_attr, + attribute_bonus, + 'fujia', + 'fujia', + 'Thunder', + 0.44, + self.avatar_level, + ) + + skill_info_list = [] + # 计算普攻伤害 + skill_multiplier = self.Skill_num('Normal', 'Normal') + damagelist1 = await calculate_damage( + base_attr, + attribute_bonus, + 'Normal', + 'Normal', + self.avatar_element, + skill_multiplier, + self.avatar_level, + ) + damagelist1[2] += damage3 + skill_info_list.append({'name': '普攻', 'damagelist': damagelist1}) + + # 计算战技护盾 + skill_multiplier = self.Skill_num('BPSkill', 'BPSkill') + skill_num = self.Skill_num('BPSkill', 'BPSkill_G') + damagelist2 = await calculate_shield( + base_attr, + attribute_bonus, + skill_multiplier, + skill_num, + ) + skill_info_list.append({'name': '战技护盾量', 'damagelist': damagelist2}) + + # 计算终结技 + skill_multiplier = self.Skill_num('Ultra', 'Ultra') + damagelist3 = await calculate_damage( + base_attr, + attribute_bonus, + 'Ultra', + 'Ultra', + self.avatar_element, + skill_multiplier, + self.avatar_level, + ) + damagelist3[2] += damage3 + skill_info_list.append({'name': '终结技', 'damagelist': damagelist3}) + + # 计算追加攻击 + skill_multiplier = self.Skill_num('Talent', 'Talent') + damagelist4 = await calculate_damage( + base_attr, + attribute_bonus, + 'Talent', + 'Talent', + self.avatar_element, + skill_multiplier, + self.avatar_level, + ) + damagelist4[2] += damage3 + if self.avatar_rank >= 4: + defence = base_attr['defence'] * (1 + attribute_bonus['DefenceAddedRatio']) + attribute_bonus['DefenceDelta'] + damage_add = defence * 0.3 + damagelist4[0] += damage_add + damagelist4[1] += damage_add + damagelist4[2] += damage_add + skill_info_list.append({'name': '追加攻击', 'damagelist': damagelist4}) + + # 计算2命护盾 + if self.avatar_rank >= 2: + damagelist5 = await calculate_shield( + base_attr, + attribute_bonus, + 0.24, + 320, + ) + skill_info_list.append({'name': '开场护盾(2命)', 'damagelist': damagelist5}) + + return skill_info_list + class AvatarDamage: @classmethod def create( cls, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill] ): + if char.id_ == 1001: + return Mar7th(char, skills) if char.id_ == 1105: return Natasha(char, skills) if char.id_ == 1110: diff --git a/StarRailUID/starrailuid_charinfo/damage/Excel/SkillData.json b/StarRailUID/starrailuid_charinfo/damage/Excel/SkillData.json index af03190..f75ed08 100644 --- a/StarRailUID/starrailuid_charinfo/damage/Excel/SkillData.json +++ b/StarRailUID/starrailuid_charinfo/damage/Excel/SkillData.json @@ -798,5 +798,36 @@ ], "Maze": [20], "Ultra_Use": [100] + }, + "1001": { + "Normal": [ + 0.5000000004656613, 0.6000000005587935, 0.7000000006519258, + 0.8000000007450581, 0.9000000008381903, 1.0000000000931323, + 1.1000000000931323, 1.2000000001862645, 1.3000000002793968 + ], + "BPSkill": [ + 0.3800000003539026, 0.40375000098720193, 0.4275000002235174, + 0.45125000085681677, 0.47500000009313226, 0.4940000001806766, + 0.5130000002682209, 0.5320000003557652, 0.5510000004433095, + 0.5700000005308539, 0.5889999999199063, 0.6080000000074506, + 0.6270000000949949, 0.6460000001825392, 0.6650000002700835 + ], + "BPSkill_G": [190, 304, 389, 475, 532, 589, 631, 674, 717, 760, 803, 845, 888, 931, 973], + "Ultra": [ + 0.9000000008381903, 0.9600000008940697, 1.0200000000186265, + 1.0800000000745058, 1.1400000001303852, 1.2000000001862645, + 1.2749999999068677, 1.350000000325963, 1.4250000000465661, + 1.5000000004656613, 1.5600000005215406, 1.62000000057742, + 1.6800000006332994, 1.7400000006891787, 1.800000000745058 + ], + "Talent": [ + 0.5000000004656613, 0.5500000005122274, 0.6000000005587935, + 0.6500000006053597, 0.7000000006519258, 0.7500000006984919, + 0.8125000009313226, 0.8750000004656613, 0.9375000006984919, + 1, 1.0500000000465661, 1.1000000000931323, + 1.1500000001396984, 1.2000000001862645, 1.2500000002328306 + ], + "Maze": [20], + "Ultra_Use": [100] } } diff --git a/StarRailUID/starrailuid_charinfo/draw_char_img.py b/StarRailUID/starrailuid_charinfo/draw_char_img.py index ad00d1a..5ad1915 100644 --- a/StarRailUID/starrailuid_charinfo/draw_char_img.py +++ b/StarRailUID/starrailuid_charinfo/draw_char_img.py @@ -581,19 +581,19 @@ async def draw_char_img(char_data: Dict, sr_uid: str, msg: str): relic_img, RELIC_POS[str(relic['Type'])], relic_img ) relic_score += single_relic_score - if relic_score > 230: + if relic_score > 210: relic_value_level = Image.open(TEXT_PATH / 'CommonIconSSS.png') char_info.paste(relic_value_level, (825, 963), relic_value_level) - elif relic_score > 210: + elif relic_score > 190: relic_value_level = Image.open(TEXT_PATH / 'CommonIconSS.png') char_info.paste(relic_value_level, (825, 963), relic_value_level) - elif relic_score > 180: + elif relic_score > 160: relic_value_level = Image.open(TEXT_PATH / 'CommonIconS.png') char_info.paste(relic_value_level, (825, 963), relic_value_level) - elif relic_score > 150: + elif relic_score > 130: relic_value_level = Image.open(TEXT_PATH / 'CommonIconA.png') char_info.paste(relic_value_level, (825, 963), relic_value_level) - elif relic_score > 100: + elif relic_score > 80: relic_value_level = Image.open(TEXT_PATH / 'CommonIconB.png') char_info.paste(relic_value_level, (825, 963), relic_value_level) elif relic_score > 0: