修正伤害系数
This commit is contained in:
@@ -333,6 +333,8 @@ class Character:
|
|||||||
self.HitP += 命中率 + kwargs.get('HitP', 0)
|
self.HitP += 命中率 + kwargs.get('HitP', 0)
|
||||||
self.Hit += 命中 + kwargs.get('Hit', 0)
|
self.Hit += 命中 + kwargs.get('Hit', 0)
|
||||||
self.Attack += 攻击强化 + kwargs.get('Attack', 0)
|
self.Attack += 攻击强化 + kwargs.get('Attack', 0)
|
||||||
|
if kwargs.get('Attack', 0) > 0:
|
||||||
|
print(kwargs.get('Attack', 0))
|
||||||
self.AttackP += 攻击强化P + kwargs.get('AttackP', 0.0)
|
self.AttackP += 攻击强化P + kwargs.get('AttackP', 0.0)
|
||||||
self.Buffer += 增益量 + kwargs.get('Buffer', 0)
|
self.Buffer += 增益量 + kwargs.get('Buffer', 0)
|
||||||
self.BufferP += 增益量P + kwargs.get('BufferP', 0)
|
self.BufferP += 增益量P + kwargs.get('BufferP', 0)
|
||||||
@@ -773,22 +775,26 @@ class Character:
|
|||||||
skillInfos = []
|
skillInfos = []
|
||||||
for i in self.skills:
|
for i in self.skills:
|
||||||
if i.damage and i.lv > 0:
|
if i.damage and i.lv > 0:
|
||||||
temp = i.skillInfo()
|
for mode in i.mode:
|
||||||
skillInfos.append(
|
temp = i.skillInfo(mode)
|
||||||
{
|
skillInfos.append(
|
||||||
'name': i.name,
|
{
|
||||||
'icon': i.icon,
|
'name': i.name,
|
||||||
'lv': i.lv,
|
'icon': i.icon,
|
||||||
'data': temp[0],
|
'lv': i.lv,
|
||||||
'ratio': temp[1],
|
'data': temp[0],
|
||||||
'cd': temp[2],
|
'ratio': temp[1],
|
||||||
}
|
'cd': temp[2],
|
||||||
)
|
'mode': mode,
|
||||||
|
}
|
||||||
|
)
|
||||||
ratios = self.calc_damage_ration()
|
ratios = self.calc_damage_ration()
|
||||||
ratio_char_skill = ratios[0] * ratios[1] * ratios[2] * ratios[3] * ratios[4] * ratios[5] * ratios[6] * ratios[7] * ratios[8] * ratios[9] / 10000
|
for i in ratios:
|
||||||
ratuio_equ_skill = ratios[0] * ratios[1] * ratios[3] * ratios[4] * ratios[6] * ratios[7] * ratios[8] * ratios[9] / 10000
|
print(i)
|
||||||
|
ratio_char_skill = ratios[0] * ratios[1] * ratios[2] * ratios[3] * ratios[4] * ratios[5] * ratios[6] * ratios[7] * ratios[8] * ratios[9] / 1000
|
||||||
|
ratuio_equ_skill = ratios[0] * ratios[1] * ratios[3] * ratios[4] * ratios[6] * ratios[7] * ratios[8] * ratios[9] / 1000
|
||||||
for i in skillInfos:
|
for i in skillInfos:
|
||||||
i['damage'] = ratio_char_skill * i['data'] * i['ratio']
|
i['damage'] = ratio_char_skill * i['data'] * i['ratio'] / 100
|
||||||
for i in self.equ_effect:
|
for i in self.equ_effect:
|
||||||
skillInfos.append(
|
skillInfos.append(
|
||||||
{
|
{
|
||||||
@@ -798,7 +804,8 @@ class Character:
|
|||||||
'data': i.data,
|
'data': i.data,
|
||||||
'ratio': 10.0,
|
'ratio': 10.0,
|
||||||
'cd': i.cd,
|
'cd': i.cd,
|
||||||
'damage': ratuio_equ_skill * i.data * 10 * self.EquEffectRatio,
|
'damage': ratuio_equ_skill * i.data * 10 * self.EquEffectRatio / 100,
|
||||||
|
'mode':''
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
attrs = []
|
attrs = []
|
||||||
@@ -864,9 +871,9 @@ class Character:
|
|||||||
# BUFF系数
|
# BUFF系数
|
||||||
ratio_5 = self.buff
|
ratio_5 = self.buff
|
||||||
# 技攻系数
|
# 技攻系数
|
||||||
ratio_6 = self.SkillAttack *( self.jade_effect.SkillAttack + 1)
|
ratio_6 = self.SkillAttack * (self.jade_effect.SkillAttack + 1)
|
||||||
# 攻击强化
|
# 攻击强化
|
||||||
ratio_7 = 1 + self.Attack * (self.AttackP + self.jade_effect.AttackP)
|
ratio_7 = 1 + self.Attack / 100 * (self.AttackP + self.jade_effect.AttackP)
|
||||||
# 防御系数,暂定145沙袋防御
|
# 防御系数,暂定145沙袋防御
|
||||||
monster_defense = 75068627484
|
monster_defense = 75068627484
|
||||||
ratio_8 = 1 - monster_defense / (monster_defense + 200 * 100)
|
ratio_8 = 1 - monster_defense / (monster_defense + 200 * 100)
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ class Skill:
|
|||||||
skills: 关联技能 默认 '*'
|
skills: 关联技能 默认 '*'
|
||||||
exceptSkills: 例外技能 默认[]
|
exceptSkills: 例外技能 默认[]
|
||||||
"""
|
"""
|
||||||
|
mode : list[str] = ['']
|
||||||
|
"""技能模式"""
|
||||||
|
|
||||||
def __init__(self, char):
|
def __init__(self, char):
|
||||||
self.char = char
|
self.char = char
|
||||||
@@ -142,6 +144,9 @@ class Skill:
|
|||||||
elif type.startswith('+'):
|
elif type.startswith('+'):
|
||||||
setattr(skill, type[1:], getattr(skill, type[1:]) + data[new] / 100 - data[old] / 100)
|
setattr(skill, type[1:], getattr(skill, type[1:]) + data[new] / 100 - data[old] / 100)
|
||||||
|
|
||||||
|
def skillInfo(self, mode: str | None = None):
|
||||||
|
pass
|
||||||
|
|
||||||
class ActiveSkill(Skill):
|
class ActiveSkill(Skill):
|
||||||
type: str = 'active'
|
type: str = 'active'
|
||||||
"""技能类型 active主动 passive被动"""
|
"""技能类型 active主动 passive被动"""
|
||||||
@@ -152,7 +157,6 @@ class ActiveSkill(Skill):
|
|||||||
super().__init__(char)
|
super().__init__(char)
|
||||||
|
|
||||||
def skillInfo(self, mode: str | None = None):
|
def skillInfo(self, mode: str | None = None):
|
||||||
basic = self
|
|
||||||
if mode is not None:
|
if mode is not None:
|
||||||
basic = deepcopy(self)
|
basic = deepcopy(self)
|
||||||
basic.setMode(mode)
|
basic.setMode(mode)
|
||||||
@@ -160,7 +164,7 @@ class ActiveSkill(Skill):
|
|||||||
basic = self
|
basic = self
|
||||||
date = basic.getSkillDate(self.lv)
|
date = basic.getSkillDate(self.lv)
|
||||||
cd = basic.getSkillCD()
|
cd = basic.getSkillCD()
|
||||||
return date * self.skillRation , self.skillDamage ,cd
|
return date * basic.skillRation , basic.skillDamage ,cd
|
||||||
|
|
||||||
def setMode(self, mode: str):
|
def setMode(self, mode: str):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -33,6 +33,15 @@ class Skill1(ActiveSkill):
|
|||||||
data0 = [0, 751, 830, 904, 981, 1057, 1132, 1210, 1287, 1362, 1438, 1516, 1591, 1668, 1746, 1819, 1897, 1972, 2049, 2127, 2202, 2278, 2355, 2429, 2508, 2584, 2659, 2735, 2814, 2888, 2965, 3041, 3116, 3194, 3271, 3346, 3422, 3500, 3575, 3652, 3732, 3806, 3883, 3961, 4034, 4112, 4189, 4264, 4342, 4418, 4493, 4570, 4648, 4723, 4799, 4876, 4950, 5029, 5105, 5180, 5256, 5335, 5409, 5486, 5562, 5637, 5715, 5792, 5867, 5943, 6021]# noqa: E501
|
data0 = [0, 751, 830, 904, 981, 1057, 1132, 1210, 1287, 1362, 1438, 1516, 1591, 1668, 1746, 1819, 1897, 1972, 2049, 2127, 2202, 2278, 2355, 2429, 2508, 2584, 2659, 2735, 2814, 2888, 2965, 3041, 3116, 3194, 3271, 3346, 3422, 3500, 3575, 3652, 3732, 3806, 3883, 3961, 4034, 4112, 4189, 4264, 4342, 4418, 4493, 4570, 4648, 4723, 4799, 4876, 4950, 5029, 5105, 5180, 5256, 5335, 5409, 5486, 5562, 5637, 5715, 5792, 5867, 5943, 6021]# noqa: E501
|
||||||
hit0 = 1
|
hit0 = 1
|
||||||
|
|
||||||
|
mode = ['普通','强化']
|
||||||
|
|
||||||
|
def setMode(self, mode):
|
||||||
|
if mode == '普通':
|
||||||
|
return
|
||||||
|
if mode == '强化':
|
||||||
|
self.skillRation *= 1.3
|
||||||
|
return
|
||||||
|
|
||||||
# 单兵推进器 니트로 모터
|
# 单兵推进器 니트로 모터
|
||||||
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/4224f9b0b8c7c903e9a1e0f9d9f6d04d?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
|
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/4224f9b0b8c7c903e9a1e0f9d9f6d04d?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
|
||||||
class Skill2(PassiveSkill):
|
class Skill2(PassiveSkill):
|
||||||
@@ -102,11 +111,11 @@ class Skill5(PassiveSkill):
|
|||||||
rangeLv = 3
|
rangeLv = 3
|
||||||
|
|
||||||
data0 = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200] # noqa: E501
|
data0 = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200] # noqa: E501
|
||||||
data1 = [0] + [(1+1+1.2)/3] * 20
|
# data1 = [0] + [(1+1+1.2)/3] * 20
|
||||||
|
|
||||||
associate = [
|
associate = [
|
||||||
{'type': '*skillRation', 'data': data0, 'skills': ['G-14手雷','G-35L感电手雷','G-18C冰冻手雷']},
|
{'type': '*skillRation', 'data': data0, 'skills': ['G-14手雷','G-35L感电手雷','G-18C冰冻手雷']},
|
||||||
{'type': '*skillRation', 'data': data1, 'skills': ['G-14手雷','G-35L感电手雷','G-18C冰冻手雷']},
|
# {'type': '*skillRation', 'data': data1, 'skills': ['G-14手雷','G-35L感电手雷','G-18C冰冻手雷']},
|
||||||
]
|
]
|
||||||
|
|
||||||
# M18阔剑地雷 M18 클레이모어
|
# M18阔剑地雷 M18 클레이모어
|
||||||
@@ -157,6 +166,16 @@ class Skill8(ActiveSkill):
|
|||||||
data1 = [0, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150]# noqa: E501
|
data1 = [0, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150]# noqa: E501
|
||||||
hit1 = 1
|
hit1 = 1
|
||||||
|
|
||||||
|
mode = ['普通','强化']
|
||||||
|
|
||||||
|
def setMode(self, mode):
|
||||||
|
if mode == '普通':
|
||||||
|
return
|
||||||
|
if mode == '强化':
|
||||||
|
self.skillRation *= 1.3
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
# 爆裂弹 폭발탄
|
# 爆裂弹 폭발탄
|
||||||
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/3c5604bdbb0240b8f130f59ab40509c3?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
|
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/3c5604bdbb0240b8f130f59ab40509c3?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
|
||||||
class Skill9(ActiveSkill):
|
class Skill9(ActiveSkill):
|
||||||
@@ -194,6 +213,15 @@ class Skill10(ActiveSkill):
|
|||||||
data0 = [0, 1996, 2196, 2400, 2603, 2803, 3009, 3208, 3414, 3616, 3817, 4021, 4221, 4423, 4629, 4830, 5034, 5234, 5437, 5642, 5841, 6047, 6248, 6450, 6652, 6854, 7060, 7259, 7463, 7665, 7868, 8070, 8272, 8475, 8675, 8881, 9083, 9285, 9488, 9688, 9892, 10096, 10299, 10501, 10702, 10906, 11108, 11310, 11514, 11713, 11919, 12121, 12322, 12526, 12726, 12932, 13134, 13335, 13539, 13739, 13943, 14147, 14346, 14552, 14753, 14957, 15159, 15360, 15565, 15764, 15968]# noqa: E501
|
data0 = [0, 1996, 2196, 2400, 2603, 2803, 3009, 3208, 3414, 3616, 3817, 4021, 4221, 4423, 4629, 4830, 5034, 5234, 5437, 5642, 5841, 6047, 6248, 6450, 6652, 6854, 7060, 7259, 7463, 7665, 7868, 8070, 8272, 8475, 8675, 8881, 9083, 9285, 9488, 9688, 9892, 10096, 10299, 10501, 10702, 10906, 11108, 11310, 11514, 11713, 11919, 12121, 12322, 12526, 12726, 12932, 13134, 13335, 13539, 13739, 13943, 14147, 14346, 14552, 14753, 14957, 15159, 15360, 15565, 15764, 15968]# noqa: E501
|
||||||
hit0 = 1
|
hit0 = 1
|
||||||
|
|
||||||
|
mode = ['普通','强化']
|
||||||
|
|
||||||
|
def setMode(self, mode):
|
||||||
|
if mode == '普通':
|
||||||
|
return
|
||||||
|
if mode == '强化':
|
||||||
|
self.skillRation *= 1.3
|
||||||
|
return
|
||||||
|
|
||||||
# C4飞弹 C4
|
# C4飞弹 C4
|
||||||
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/a2d943797daca862a6f321aca6ac9bfa?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
|
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/a2d943797daca862a6f321aca6ac9bfa?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
|
||||||
class Skill11(ActiveSkill):
|
class Skill11(ActiveSkill):
|
||||||
|
|||||||
Binary file not shown.
@@ -22,8 +22,10 @@ class SuitData(Base):
|
|||||||
count = Column(Integer)
|
count = Column(Integer)
|
||||||
SkillAttack = Column(Float)
|
SkillAttack = Column(Float)
|
||||||
Attack = Column(Float)
|
Attack = Column(Float)
|
||||||
|
Buffer = Column(Float)
|
||||||
imageUrl = Column(Text)
|
imageUrl = Column(Text)
|
||||||
value = Column(Text)
|
value = Column(Text)
|
||||||
|
fame = Column(Integer)
|
||||||
|
|
||||||
|
|
||||||
class EquData(Base):
|
class EquData(Base):
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ export interface IResultSkill {
|
|||||||
ratio: number
|
ratio: number
|
||||||
cd: number
|
cd: number
|
||||||
damage: number
|
damage: number
|
||||||
|
mode: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IResultUserInfo {
|
export interface IResultUserInfo {
|
||||||
|
|||||||
@@ -2,21 +2,21 @@
|
|||||||
<div class="bg-hex-000000/60 p-4 border-solid border-#FFFF/15" v-if="data && data.length > 0">
|
<div class="bg-hex-000000/60 p-4 border-solid border-#FFFF/15" v-if="data && data.length > 0">
|
||||||
<div class="bg-hex-000000/40 text-white border-solid border-#FFFF/15 border-t-0">
|
<div class="bg-hex-000000/40 text-white border-solid border-#FFFF/15 border-t-0">
|
||||||
<div class="flex px-1px gap-1px">
|
<div class="flex px-1px gap-1px">
|
||||||
<div class="item-head w-150px">技能</div>
|
<div class="item-head w-200px">技能</div>
|
||||||
<div class="item-head w-80px">CD</div>
|
<div class="item-head w-80px">CD</div>
|
||||||
<div class="item-head w-150px">伤害</div>
|
<div class="item-head w-150px">伤害</div>
|
||||||
<div class="item-head w-150px">秒伤</div>
|
<div class="item-head w-150px">秒伤</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="overflow-y-auto max-h-600px">
|
<div class="overflow-y-auto max-h-600px">
|
||||||
<div class="flex px-1px gap-1px h-8.5" v-for="skill in data" :key="skill.name">
|
<div class="flex px-1px gap-1px h-8.5" v-for="(skill,_) in data" :key="_">
|
||||||
<div class="flex w-150px items-center gap-10px">
|
<div class="flex w-200px items-center gap-10px">
|
||||||
<div class="w-28px h-28px relative">
|
<div class="w-28px h-28px relative">
|
||||||
<img :src="getImageURL(skill.icon)" alt="" class="w-28px h-28px" />
|
<img :src="getImageURL(skill.icon)" alt="" class="w-28px h-28px" />
|
||||||
<div v-if="skill.lv" class="skill-lv-min" :data-text="`Lv ${skill.lv}`">
|
<div v-if="skill.lv" class="skill-lv-min" :data-text="`Lv ${skill.lv}`">
|
||||||
Lv {{ skill.lv }}
|
Lv {{ skill.lv }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>{{ skill.name }}</div>
|
<div>{{ skill.name }} {{ !skill.mode ? '' : `[${skill.mode}]` }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="w-80px flex items-center justify-center">{{ skill.cd.toFixed(1) }}s</div>
|
<div class="w-80px flex items-center justify-center">{{ skill.cd.toFixed(1) }}s</div>
|
||||||
<!-- <div class="flex">
|
<!-- <div class="flex">
|
||||||
|
|||||||
@@ -31,14 +31,14 @@ export interface IConfigEquip {
|
|||||||
|
|
||||||
export interface IConfig {
|
export interface IConfig {
|
||||||
skills: Record<string, { lv: number }>
|
skills: Record<string, { lv: number }>
|
||||||
equips: Record<
|
equips: Record<string, IConfigEquip>
|
||||||
|
jades: Record<
|
||||||
string,
|
string,
|
||||||
IConfigEquip
|
{
|
||||||
|
id: number
|
||||||
|
value: number
|
||||||
|
}
|
||||||
>
|
>
|
||||||
jades: Record<string, {
|
|
||||||
id:number
|
|
||||||
value: number
|
|
||||||
}>
|
|
||||||
avatar: Record<
|
avatar: Record<
|
||||||
string,
|
string,
|
||||||
{
|
{
|
||||||
@@ -81,6 +81,8 @@ export const useConfigStore = defineStore('configStore', () => {
|
|||||||
avatar: {},
|
avatar: {},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const skillCountConfig = ref<Record<string, { count: number }>>({})
|
||||||
|
|
||||||
const loadConfig = () => {
|
const loadConfig = () => {
|
||||||
const infoStore = useInfoStore()
|
const infoStore = useInfoStore()
|
||||||
const alter = infoStore.infos?.alter
|
const alter = infoStore.infos?.alter
|
||||||
@@ -125,15 +127,16 @@ export const useConfigStore = defineStore('configStore', () => {
|
|||||||
(config.value.skills[id] = {
|
(config.value.skills[id] = {
|
||||||
lv: infoStore.skills.find((skill) => skill.id.toString() === id)?.maxLearnLv ?? 0,
|
lv: infoStore.skills.find((skill) => skill.id.toString() === id)?.maxLearnLv ?? 0,
|
||||||
})
|
})
|
||||||
});
|
})
|
||||||
|
|
||||||
(["0", "1", "2", "3"].filter((key) => !Object.keys(config.value.jades).includes(key)) ?? []).forEach((key) => {
|
;(
|
||||||
|
['0', '1', '2', '3'].filter((key) => !Object.keys(config.value.jades).includes(key)) ?? []
|
||||||
|
).forEach((key) => {
|
||||||
config.value.jades[key] = {
|
config.value.jades[key] = {
|
||||||
id: -1,
|
id: -1,
|
||||||
value: 0,
|
value: 0,
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const saveConfig = () => {
|
const saveConfig = () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user