From 2502450e5ba779c034b6291cfe5f5a7646a77f7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E7=93=9C=C2=B0?= Date: Sun, 23 Mar 2025 16:12:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/core/basic/character.py | 66 ++++++++++++++++++++++----------- backend/core/basic/formula.py | 8 ++-- 2 files changed, 48 insertions(+), 26 deletions(-) diff --git a/backend/core/basic/character.py b/backend/core/basic/character.py index 559e0696..816f5e9e 100644 --- a/backend/core/basic/character.py +++ b/backend/core/basic/character.py @@ -5,11 +5,11 @@ from typing import Literal from core.basic.property import CharacterInfo from core.basic.skill import Skill -from core.basic.equipment import get_equipment, EquEffect,Equ +from core.basic.equipment import get_equipment, EquEffect, Equ # from core.basic.equipment import equipments # from core.basic.skill import Skill, ActiveSkill, PassiveSkill -from .formula import 增幅计算, 精通计算, 获取基础属性 +from .formula import 增幅计算, 强化技攻, 武器强化计算, 精通计算, 获取基础属性, 耳环计算, 左右计算, 锻造计算 from .roleinfo import CharacterEquipInfo, get_key_by_value # from .property import 精通计算, 角色基础, CharacterInfo @@ -48,7 +48,7 @@ class Character: ElementA: dict[str, float] """属性攻击""" - ElementIncrease:float + ElementIncrease: float """属性增幅""" ElementDB: dict[str, float] @@ -268,6 +268,8 @@ class Character: 'AttackP', 'Buffer', 'BufferP', + 'Spirit', + 'Vitality' } for key in kwargs: if key not in allowed_kwargs: @@ -298,7 +300,7 @@ class Character: self.BufferP += 增益量P + kwargs.get('BufferP', 0) pass - def AddSkillLv(self, min:int, max:int, lv:int, type=-1) -> None: + def AddSkillLv(self, min: int, max: int, lv: int, type=-1) -> None: """ 增加技能等级 type: -1 全部, 0 被动, 1 主动 @@ -443,26 +445,22 @@ class Character: # 当前部位的打造 cur = self.charEquipInfo[part] # 当前部位适用调试后的属性 - partEqu = equs.equ_dict.get(cur.id).adapt(cur.adaptation) + partEqu = equs.equ_dict.get(cur.id).adapt(cur.adaptation) # 设置当前部位的装备 self.charEquipInfo[part].equInfo = equs.equ_dict.get(cur.id) # 套装属性设置 for suit in partEqu.suit: if suitInfo.get(suit, None) is None: suitInfo[suit] = { - "point": 0, - "count": 0, + 'point': 0, + 'count': 0, } if partEqu.Point == 0: suitInfo[suit]['count'] += 1 else: suitInfo[suit]['point'] += partEqu.Point # 取得点数最高的套装 - max_point_suit = max( - (suit for suit in suitInfo if suitInfo[suit]['point'] > 0), - key=lambda suit: suitInfo[suit]['point'], - default=None - ) + max_point_suit = max((suit for suit in suitInfo if suitInfo[suit]['point'] > 0), key=lambda suit: suitInfo[suit]['point'], default=None) # 处理没有点数的老套装 zero_point_suits = [suit for suit in suitInfo if suitInfo[suit]['point'] == 0] suits = zero_point_suits + ([max_point_suit] if max_point_suit is not None else []) @@ -481,21 +479,45 @@ class Character: cur = self.charEquipInfo[part] equ = cur.equInfo reinforce = self.charEquipInfo[part].reinforce - value = 精通计算(115, equ.rarity,reinforce,equ.itemDetailType,self.防具类型) + value = 精通计算(115, equ.rarity, reinforce, equ.itemDetailType, self.防具类型) for key in self.防具精通属性: key = get_key_by_value(key) - setattr(self, key, getattr(self, key) + value[key]) + setattr(self, key, getattr(self, key) + value) # 115增幅强化品级固定史诗 for part in self.charEquipInfo.keys(): cur = self.charEquipInfo[part] # 增幅 if cur.reinforceType == 1: # 增幅四维 - value = 增幅计算(115,'史诗',cur.reinforce) - self.SetStatus(STR=value,INT=value,Spirit=value,Vitality=value) - # 增幅计算 - # 武器、特殊装备强化额外效果计算 - # 传世武器强化系数取所有武器的最高的1.12 + value = 增幅计算(115, '史诗', cur.reinforce) + self.SetStatus(STR=value, INT=value, Spirit=value, Vitality=value) + # 增幅技攻计算 + value = 强化技攻(cur.reinforce, cur.reinforceType, part) + self.SetStatus(SkillAttack=value) + # 武器强化、武器锻造、特殊装备强化额外效果计算 + if part == '武器': + # 锻造独立计算 + value = 锻造计算(115, '史诗', cur.refine) + self.SetStatus(AtkI = value) + # 传世武器强化系数取所有武器的最高的1.12 + if cur.equInfo.categorize == '传世武器': + value = 武器强化计算(115, '史诗', cur.reinforce,cur.equInfo.itemDetailType,'物理',1.12) + self.SetStatus(AtkP=value, AtkM=value) + else: + # 强化计算 + value = 武器强化计算(115, '史诗', cur.reinforce, cur.equInfo.itemDetailType, '物理') + self.SetStatus(AtkP=value) + value = 武器强化计算(115, '史诗', cur.reinforce, cur.equInfo.itemDetailType, '魔法') + self.SetStatus(AtkM=value) + pass + if part == '耳环': + value = 耳环计算(115, '史诗', cur.reinforce) + self.SetStatus(AtkM=value, AtkP=value,AtkI=value) + pass + if part in ['辅助装备', '魔法石']: + value = 左右计算(115, '史诗', cur.reinforce) + self.SetStatus(STR=value, INT=value, Spirit=value, Vitality=value) + pass pass def calc_jade(self): @@ -524,9 +546,9 @@ class Character: # 技能计算 skill = self.GetSkillByName('G-35L感电手雷') - print(skill.getSkillDate(skill.lv),skill.skillDamage,skill.skillRation) - # - return + print(skill.getSkillDate(skill.lv), skill.skillDamage, skill.skillRation) + # + return # 技能影响角色的属性,如属强、抗性等 for skill in self.skills: skill.effect(self) diff --git a/backend/core/basic/formula.py b/backend/core/basic/formula.py index 027b9507..24f8ccee 100644 --- a/backend/core/basic/formula.py +++ b/backend/core/basic/formula.py @@ -1,10 +1,10 @@ # 看看就行, 计算细节通用的数据 # region -def 强化技攻(强化等级, 强化类型, 部位): - 增幅技攻 = [0] * 11 + [0.2, 0.4, 0.7, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4] - 强化技攻 = [0] * 13 + [0.4, 0.7, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2] - if 强化类型 == '强化': +def 强化技攻(强化等级:int, 强化类型:int, 部位:str): + 增幅技攻 = [0] * 10 + [0.2, 0.4, 0.7, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4] + 强化技攻 = [0] * 12 + [0.4, 0.7, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2] + if 强化类型 == 0: if 部位 not in ['武器', '耳环']: return 0 else: