基础计算
This commit is contained in:
@@ -5,11 +5,11 @@ from typing import Literal
|
|||||||
from core.basic.property import CharacterInfo
|
from core.basic.property import CharacterInfo
|
||||||
from core.basic.skill import Skill
|
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.equipment import equipments
|
||||||
# from core.basic.skill import Skill, ActiveSkill, PassiveSkill
|
# from core.basic.skill import Skill, ActiveSkill, PassiveSkill
|
||||||
from .formula import 增幅计算, 精通计算, 获取基础属性
|
from .formula import 增幅计算, 强化技攻, 武器强化计算, 精通计算, 获取基础属性, 耳环计算, 左右计算, 锻造计算
|
||||||
from .roleinfo import CharacterEquipInfo, get_key_by_value
|
from .roleinfo import CharacterEquipInfo, get_key_by_value
|
||||||
# from .property import 精通计算, 角色基础, CharacterInfo
|
# from .property import 精通计算, 角色基础, CharacterInfo
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ class Character:
|
|||||||
ElementA: dict[str, float]
|
ElementA: dict[str, float]
|
||||||
"""属性攻击"""
|
"""属性攻击"""
|
||||||
|
|
||||||
ElementIncrease:float
|
ElementIncrease: float
|
||||||
"""属性增幅"""
|
"""属性增幅"""
|
||||||
|
|
||||||
ElementDB: dict[str, float]
|
ElementDB: dict[str, float]
|
||||||
@@ -268,6 +268,8 @@ class Character:
|
|||||||
'AttackP',
|
'AttackP',
|
||||||
'Buffer',
|
'Buffer',
|
||||||
'BufferP',
|
'BufferP',
|
||||||
|
'Spirit',
|
||||||
|
'Vitality'
|
||||||
}
|
}
|
||||||
for key in kwargs:
|
for key in kwargs:
|
||||||
if key not in allowed_kwargs:
|
if key not in allowed_kwargs:
|
||||||
@@ -298,7 +300,7 @@ class Character:
|
|||||||
self.BufferP += 增益量P + kwargs.get('BufferP', 0)
|
self.BufferP += 增益量P + kwargs.get('BufferP', 0)
|
||||||
pass
|
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 主动
|
type: -1 全部, 0 被动, 1 主动
|
||||||
@@ -443,26 +445,22 @@ class Character:
|
|||||||
# 当前部位的打造
|
# 当前部位的打造
|
||||||
cur = self.charEquipInfo[part]
|
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)
|
self.charEquipInfo[part].equInfo = equs.equ_dict.get(cur.id)
|
||||||
# 套装属性设置
|
# 套装属性设置
|
||||||
for suit in partEqu.suit:
|
for suit in partEqu.suit:
|
||||||
if suitInfo.get(suit, None) is None:
|
if suitInfo.get(suit, None) is None:
|
||||||
suitInfo[suit] = {
|
suitInfo[suit] = {
|
||||||
"point": 0,
|
'point': 0,
|
||||||
"count": 0,
|
'count': 0,
|
||||||
}
|
}
|
||||||
if partEqu.Point == 0:
|
if partEqu.Point == 0:
|
||||||
suitInfo[suit]['count'] += 1
|
suitInfo[suit]['count'] += 1
|
||||||
else:
|
else:
|
||||||
suitInfo[suit]['point'] += partEqu.Point
|
suitInfo[suit]['point'] += partEqu.Point
|
||||||
# 取得点数最高的套装
|
# 取得点数最高的套装
|
||||||
max_point_suit = max(
|
max_point_suit = max((suit for suit in suitInfo if suitInfo[suit]['point'] > 0), key=lambda suit: suitInfo[suit]['point'], default=None)
|
||||||
(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]
|
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 [])
|
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]
|
cur = self.charEquipInfo[part]
|
||||||
equ = cur.equInfo
|
equ = cur.equInfo
|
||||||
reinforce = self.charEquipInfo[part].reinforce
|
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.防具精通属性:
|
for key in self.防具精通属性:
|
||||||
key = get_key_by_value(key)
|
key = get_key_by_value(key)
|
||||||
setattr(self, key, getattr(self, key) + value[key])
|
setattr(self, key, getattr(self, key) + value)
|
||||||
# 115增幅强化品级固定史诗
|
# 115增幅强化品级固定史诗
|
||||||
for part in self.charEquipInfo.keys():
|
for part in self.charEquipInfo.keys():
|
||||||
cur = self.charEquipInfo[part]
|
cur = self.charEquipInfo[part]
|
||||||
# 增幅
|
# 增幅
|
||||||
if cur.reinforceType == 1:
|
if cur.reinforceType == 1:
|
||||||
# 增幅四维
|
# 增幅四维
|
||||||
value = 增幅计算(115,'史诗',cur.reinforce)
|
value = 增幅计算(115, '史诗', cur.reinforce)
|
||||||
self.SetStatus(STR=value,INT=value,Spirit=value,Vitality=value)
|
self.SetStatus(STR=value, INT=value, Spirit=value, Vitality=value)
|
||||||
# 增幅计算
|
# 增幅技攻计算
|
||||||
# 武器、特殊装备强化额外效果计算
|
value = 强化技攻(cur.reinforce, cur.reinforceType, part)
|
||||||
# 传世武器强化系数取所有武器的最高的1.12
|
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
|
pass
|
||||||
|
|
||||||
def calc_jade(self):
|
def calc_jade(self):
|
||||||
@@ -524,7 +546,7 @@ class Character:
|
|||||||
|
|
||||||
# 技能计算
|
# 技能计算
|
||||||
skill = self.GetSkillByName('G-35L感电手雷')
|
skill = self.GetSkillByName('G-35L感电手雷')
|
||||||
print(skill.getSkillDate(skill.lv),skill.skillDamage,skill.skillRation)
|
print(skill.getSkillDate(skill.lv), skill.skillDamage, skill.skillRation)
|
||||||
#
|
#
|
||||||
return
|
return
|
||||||
# 技能影响角色的属性,如属强、抗性等
|
# 技能影响角色的属性,如属强、抗性等
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
# 看看就行, 计算细节通用的数据
|
# 看看就行, 计算细节通用的数据
|
||||||
|
|
||||||
# region
|
# region
|
||||||
def 强化技攻(强化等级, 强化类型, 部位):
|
def 强化技攻(强化等级:int, 强化类型:int, 部位:str):
|
||||||
增幅技攻 = [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] * 10 + [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]
|
强化技攻 = [0] * 12 + [0.4, 0.7, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2]
|
||||||
if 强化类型 == '强化':
|
if 强化类型 == 0:
|
||||||
if 部位 not in ['武器', '耳环']:
|
if 部位 not in ['武器', '耳环']:
|
||||||
return 0
|
return 0
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user