configStore

This commit is contained in:
2025-03-15 19:35:43 +08:00
parent 8be0aa2a5a
commit 1e6af3604c
33 changed files with 670 additions and 157 deletions
+6 -3
View File
@@ -346,25 +346,28 @@ class Character:
def getInfo(self):
"""返回到前端信息"""
info = {}
info['alter'] = self.实际名称
info['role'] = self.role
info['alter'] = self.name
info['equVersion'] = self.equVersion
info['name'] = self.名称
info['name'] = self.nameCN
info['weapons'] = self.武器选项
skillInfo = []
for skill in self.skills:
skillInfo.append(
{
'id': skill.id,
'name': skill.name,
'icon': skill.icon,
'type': skill.type,
# 'SPCost': skill.SPCost,
"learnLv": skill.learnLv,
"masterLv": skill.masterLv,
"maxLearnLv":skill.calculate_lv(),
"maxLv": skill.maxLv,
# 'TPCost': 0 if not skill.hasTP else skill.TPCost,
# "masterTPLv":0 if not skill.hasTP else skill.masterTPLv,
# 'maxTPLv': 0 if not skill.hasTP else skill.TPLearnMax,
'positon':skill.position
'position':skill.position
}
)
info['skills'] = skillInfo
+1 -1
View File
@@ -79,7 +79,7 @@ class Skill:
icon = icon.replace('$id', f'{self.id}')
return f'{icon}.png'
def _calculate_lv(self):
def calculate_lv(self):
return min(int((characterLv - self.learnLv) / self.rangeLv + 1), self.masterLv) if self._lv == 0 else self._lv
@property
@@ -2,10 +2,9 @@
from core.basic.skill import PassiveSkill, ActiveSkill, characterLv
from core.basic.character import Character
class Skill0(ActiveSkill):
# 기본기 숙련
# 基础精通 기본기 숙련
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/5a56514f35cf0270ae8d6c65f8fefd78?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill0(ActiveSkill):
name = '基础精通'
icon = '$common/$name'
learnLv = 1
@@ -32,10 +31,11 @@ class Skill1(ActiveSkill):
mp = [20, 160]
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
class Skill2(PassiveSkill):
# 니트로 모터
# 单兵推进器 니트로 모터
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/4224f9b0b8c7c903e9a1e0f9d9f6d04d?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill2(PassiveSkill):
name = '单兵推进器'
learnLv = 15
masterLv = 10
@@ -51,10 +51,9 @@ class Skill2(PassiveSkill):
{'data': data1, 'skills': ['爆裂弹']}
]
class Skill3(PassiveSkill):
# 병기 숙련
# 兵器研究 병기 숙련
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/bae12a6dc7d22a5cf149673e88ddda28?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill3(PassiveSkill):
name = '兵器研究'
learnLv = 20
masterLv = 10
@@ -71,9 +70,9 @@ class Skill3(PassiveSkill):
# return True
# return False
class Skill4(PassiveSkill):
# 강화탄
# 弹药改良 강화탄
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/3829c15bf5f520c13998a3479ba0ce7b?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill4(PassiveSkill):
name = '弹药改良'
learnLv = 20
masterLv = 10 # todo
@@ -84,24 +83,23 @@ class Skill4(PassiveSkill):
data0 = [0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10] # noqa: E501
data1 = [0, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33] # noqa: E501
class Skill5(PassiveSkill):
# 유탄 마스터리
# 手雷精通 유탄 마스터리
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/0113c8b1306ca76d208f83f2d093dd62?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill5(PassiveSkill):
name = '手雷精通'
learnLv = 20
masterLv = 10
maxLv = 20
position = 7
position = 6
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
associate = [{'type': '*skillRation', 'data': data0, 'skills': ['G-14手雷']}]
class Skill6(ActiveSkill):
# M18 클레이모어
# M18阔剑地雷 M18 클레이모어
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/2ff50c35efcf0f287c4c418c8454da48?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill6(ActiveSkill):
name = "M18阔剑地雷"
learnLv = 20
masterLv = 60 #todo
@@ -112,13 +110,375 @@ class Skill6(ActiveSkill):
mp = [70, 588]
data0 = [0, 2094, 2307, 2519, 2732, 2944, 3157, 3368, 3580, 3793, 4009, 4221, 4434, 4646, 4859, 5071, 5284, 5496, 5709, 5921, 6132, 6344, 6557, 6769, 6982, 7198, 7410, 7623, 7835, 8048, 8260, 8473, 8685, 8896, 9109, 9321, 9534, 9746, 9959, 10171, 10384, 10600, 10812, 11025, 11237, 11450, 11660, 11873, 12085, 12298, 12510, 12723, 12935, 13148, 13360, 13573, 13789, 14001, 14212, 14425, 14637, 14850, 15062, 15275, 15487, 15700, 15912, 16125, 16337, 16550, 16762]# noqa: E501
hit0 = 1
# 交叉射击 교차 사격
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/78be08a3f8c834d3b06fa20c6a08c5a5?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill7(ActiveSkill):
name = "交叉射击"
learnLv = 25
masterLv = 60
maxLv = 70
position = 3
rangeLv = 2
cd = 8
mp = [70, 588]
data0 = [0, 3692, 4065, 4439, 4814, 5188, 5564, 5938, 6310, 6686, 7062, 7436, 7812, 8186, 8558, 8934, 9308, 9683, 10059, 10433, 10805, 11181, 11555, 11931, 12306, 12680, 13053, 13428, 13802, 14178, 14552, 14928, 15300, 15676, 16050, 16425, 16799, 17175, 17547, 17921, 18297, 18673, 19047, 19423, 19795, 20169, 20545, 20920, 21294, 21670, 22042, 22416, 22792, 23166, 23542, 23917, 24290, 24664, 25039, 25413, 25789, 26163, 26535, 26911, 27287, 27661, 28036, 28410, 28783, 29158, 29532]# noqa: E501
hit0 = 3
# G-35L感电手雷 G-35L 섬광류탄
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/c61f5a010370101402b05b21916c2071?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill8(ActiveSkill):
name = "G-35L感电手雷"
learnLv = 25
masterLv = 60
maxLv = 70
position = 5 #todo
rangeLv = 2
cd = 3
mp = [40, 350]
data0 = [0, 1622, 1787, 1952, 2111, 2278, 2443, 2608, 2773, 2936, 3103, 3266, 3431, 3597, 3760, 3927, 4087, 4253, 4417, 4583, 4746, 4911, 5075, 5241, 5408, 5571, 5736, 5899, 6064, 6227, 6392, 6555, 6722, 6885, 7052, 7217, 7380, 7546, 7710, 7876, 8039, 8203, 8366, 8531, 8696, 8860, 9027, 9190, 9355, 9520, 9685, 9848, 10015, 10175, 10341, 10504, 10671, 10836, 10999, 11166, 11329, 11495, 11659, 11824, 11990, 12152, 12315, 12480, 12646, 12810, 12976]# noqa: E501
hit0 = 1
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
# 爆裂弹 폭발탄
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/3c5604bdbb0240b8f130f59ab40509c3?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill9(ActiveSkill):
name = "爆裂弹"
learnLv = 30
masterLv = 10
maxLv = 20
position = 4
rangeLv = 3
cd = 5
mp = [357, 2765]
data0 = [0, 1034, 1200, 1364, 1528, 1693, 1857, 2021, 2187, 2352, 2516, 2682, 2846, 3010, 3175, 3339, 3505, 3671, 3835, 4000, 4164]# noqa: E501
hit0 = 1
# G-18C冰冻手雷 G-18C 빙결류탄
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/202edb928046f4fa6dedf6337377efd5?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill10(ActiveSkill):
name = "G-18C冰冻手雷"
learnLv = 30
masterLv = 60
maxLv = 70
position = 6
rangeLv = 2
cd = 4
mp = [70, 560]
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
# C4飞弹 C4
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/a2d943797daca862a6f321aca6ac9bfa?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill11(ActiveSkill):
name = "C4飞弹"
learnLv = 35
masterLv = 60
maxLv = 70
position = 8
rangeLv = 2
cd = 20
mp = [150, 1232]
data0 = [0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]# noqa: E501
data1 = [0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15]# noqa: E501
data2 = [0, 21240, 23396, 25550, 27705, 29861, 32015, 34170, 36324, 38480, 40635, 42789, 44945, 47099, 49254, 51411, 53564, 55719, 57873, 60029, 62186, 64338, 66495, 68648, 70803, 72960, 75113, 77270, 79422, 81579, 83735, 85887, 88044, 90197, 92354, 94509, 96663, 98819, 100971, 103128, 105284, 107438, 109593, 111746, 113903, 116058, 118212, 120368, 122522, 124677, 126833, 128987, 131142, 133296, 135452, 137607, 139761, 141917, 144071, 146226, 148382, 150536, 152691, 154845, 157001, 159156, 161310, 163466, 165620, 167775, 169932]# noqa: E501
data3 = [0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]# noqa: E501
data4 = [0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60]# noqa: E501
data5 = [0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60]# noqa: E501
def effect(self, old , new):
pass
# 聚合弹 버스터 샷
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/3fb8395ae3b81bd608e0c4223a8eb534?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill12(ActiveSkill):
name = "聚合弹"
learnLv = 35
masterLv = 60
maxLv = 70
position = 3
rangeLv = 2
cd = 18
mp = [150, 1232]
data0 = [0, 24425, 26904, 29382, 31860, 34337, 36818, 39294, 41772, 44252, 46730, 49208, 51684, 54165, 56642, 59120, 61598, 64077, 66555, 69032, 71510, 73989, 76467, 78944, 81422, 83903, 86379, 88857, 91334, 93815, 96291, 98769, 101247, 103727, 106205, 108681, 111159, 113639, 116117, 118595, 121071, 123552, 126029, 128507, 130986, 133464, 135942, 138419, 140900, 143376, 145854, 148331, 150812, 153288, 155766, 158244, 160724, 163202, 165678, 168156, 170636, 173114, 175592, 178068, 180549, 183026, 185504, 187982, 190461, 192939, 195416]# noqa: E501
def effect(self, old , new):
pass
# 凝固汽油弹 네이팜 탄
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/1803b6a67047cafb9e289b4f33cc507b?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill13(ActiveSkill):
name = "凝固汽油弹"
learnLv = 40
masterLv = 60
maxLv = 70
position = 3
rangeLv = 2
cube = 1
cd = 20
mp = [200, 1812]
data0 = [0, 24704, 27209, 29712, 32217, 34727, 37232, 39737, 42245, 44751, 47256, 49761, 52266, 54776, 57281, 59786, 62292, 64800, 67304, 69809, 72317, 74822, 77328, 79833, 82340, 84845, 87353, 89859, 92364, 94869, 97377, 99881, 102389, 104894, 107399, 109908, 112413, 114917, 117428, 119933, 122436, 124941, 127446, 129956, 132461, 134966, 137472, 139980, 142485, 144990, 147494, 150005, 152508, 155013, 157521, 160026, 162533, 165041, 167546, 170049, 172557, 175062, 177569, 180074, 182582, 185088, 187593, 190098, 192603, 195110, 197618]# noqa: E501
data1 = [0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]# noqa: E501
data2 = [0, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]# noqa: E501
data3 = [0, 129, 137, 152, 162, 177, 188, 203, 213, 228, 239, 252, 267, 278, 293, 303, 318, 329, 344, 353, 368, 380, 393, 408, 419, 434, 444, 458, 468, 483, 497, 509, 522, 534, 551, 560, 573, 584, 599, 612, 624, 638, 650, 663, 674, 689, 702, 714, 728, 740, 753, 765, 776, 789, 801, 818, 830, 843, 855, 869, 881, 891, 905, 917, 933, 944, 959, 971, 984, 995, 1007]# noqa: E501
data4 = [0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120]# noqa: E501
def effect(self, old , new):
pass
# 镭射狙击 록 온 서포트
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/845e0ce3235e19f60cc82a082d072cba?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill14(ActiveSkill):
name = "镭射狙击"
learnLv = 45
masterLv = 60
maxLv = 70
position = 5
rangeLv = 2
cube = 2
cd = 45
mp = [400, 3360]
data0 = [0, 8405, 9257, 10109, 10962, 11816, 12669, 13520, 14373, 15227, 16079, 16935, 17786, 18639, 19493, 20345, 21198, 22050, 22902, 23756, 24609, 25460, 26313, 27167, 28020, 28871, 29724, 30578, 31430, 32283, 33135, 33987, 34841, 35694, 36545, 37398, 38252, 39105, 39957, 40809, 41663, 42515, 43368, 44220, 45075, 45929, 46781, 47634, 48485, 49338, 50192, 51045, 51899, 52749, 53603, 54456, 55308, 56160, 57014, 57866, 58719, 59573, 60423, 61277, 62130, 62984, 63834, 64688, 65541, 66393, 67247]# noqa: E501
data1 = [0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]# noqa: E501
data2 = [0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]# noqa: E501
data3 = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]# noqa: E501
data4 = [0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]# noqa: E501
def effect(self, old , new):
pass
# 弹药强化 병기강화
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/b89c9ab317bc0a443f6497b7cca2f6a8?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill15(PassiveSkill):
name = "弹药强化"
learnLv = 48
masterLv = 40
maxLv = 50
position = 4
rangeLv = 3
data0 = [0, 12, 13.5, 15, 16.5, 18, 19.5, 21, 22.5, 24, 25.5, 27, 28.5, 30, 31.5, 33, 34.5, 36, 37.5, 39, 40.5, 42, 43.5, 45, 46.5, 48, 49.5, 51, 52.5, 54, 55.5, 57, 58.5, 60, 61.5, 63, 64.5, 66, 67.5, 69, 70.5, 72, 73.5, 75, 76.5, 78, 79.5, 81, 82.5, 84, 85.5]# noqa: E501
data1 = [0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20]# noqa: E501
def effect(self, old , new):
pass
# EMP磁暴 EMP 스톰
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/2c9d9a36c8401bddff6cdb80fab8dc24?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill16(ActiveSkill):
name = "EMP磁暴"
learnLv = 50
masterLv = 40
maxLv = 50
position = 7
rangeLv = 5
cube = 5
cd = 145
mp = [880, 7392]
data0 = [0, 21013, 25886, 30758, 35632, 40504, 45376, 50249, 55123, 59995, 64867, 69741, 74613, 79486, 84358, 89232, 94104, 98977, 103851, 108723, 113595, 118467, 123341, 128214, 133086, 137958, 142832, 147704, 152577, 157451, 162323, 167195, 172068, 176942, 181814, 186686, 191560, 196432, 201305, 206177, 211051, 215923, 220796, 225670, 230542, 235414, 240286, 245160, 250033, 254905, 259777]# noqa: E501
data1 = [0, 21013, 25886, 30758, 35632, 40504, 45376, 50249, 55123, 59995, 64867, 69741, 74613, 79486, 84358, 89232, 94104, 98977, 103851, 108723, 113595, 118467, 123341, 128214, 133086, 137958, 142832, 147704, 152577, 157451, 162323, 167195, 172068, 176942, 181814, 186686, 191560, 196432, 201305, 206177, 211051, 215923, 220796, 225670, 230542, 235414, 240286, 245160, 250033, 254905, 259777]# noqa: E501
data2 = [0, 1049, 1293, 1537, 1781, 2025, 2268, 2512, 2754, 2998, 3242, 3486, 3730, 3974, 4218, 4462, 4704, 4948, 5191, 5435, 5679, 5923, 6167, 6409, 6653, 6897, 7141, 7385, 7628, 7872, 8114, 8358, 8602, 8846, 9090, 9334, 9578, 9822, 10064, 10308, 10551, 10795, 11039, 11283, 11527, 11769, 12013, 12257, 12501, 12745, 12988]# noqa: E501
data3 = [0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20]# noqa: E501
data4 = [0, 21013, 25886, 30758, 35632, 40504, 45376, 50249, 55123, 59995, 64867, 69741, 74613, 79486, 84358, 89232, 94104, 98977, 103851, 108723, 113595, 118467, 123341, 128214, 133086, 137958, 142832, 147704, 152577, 157451, 162323, 167195, 172068, 176942, 181814, 186686, 191560, 196432, 201305, 206177, 211051, 215923, 220796, 225670, 230542, 235414, 240286, 245160, 250033, 254905, 259777]# noqa: E501
def effect(self, old , new):
pass
# G-61重力手雷 G-61 중력류탄
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/e0daa922b19cdc35de879e938361464e?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill17(ActiveSkill):
name = "G-61重力手雷"
learnLv = 60
masterLv = 40
maxLv = 50
position = 6
rangeLv = 2
cube = 2
cd = 20
mp = [400, 1120]
data0 = [0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]# noqa: E501
data1 = [0, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]# noqa: E501
data2 = [0, 518, 572, 624, 678, 728, 780, 834, 888, 941, 993, 1046, 1097, 1151, 1202, 1256, 1308, 1362, 1416, 1466, 1518, 1572, 1625, 1679, 1730, 1781, 1835, 1889, 1941, 1994, 2046, 2100, 2151, 2202, 2256, 2309, 2363, 2417, 2469, 2519, 2573, 2625, 2679, 2733, 2784, 2835, 2889, 2942, 2994, 3047, 3101]# noqa: E501
data3 = [0, 15578, 17159, 18741, 20321, 21903, 23483, 25065, 26643, 28224, 29805, 31386, 32964, 34547, 36126, 37709, 39290, 40871, 42452, 44030, 45612, 47192, 48774, 50352, 51933, 53514, 55095, 56675, 58257, 59835, 61418, 62999, 64580, 66161, 67739, 69321, 70901, 72483, 74063, 75645, 77222, 78804, 80384, 81966, 83546, 85128, 86708, 88287, 89870, 91449, 93032]# noqa: E501
data4 = [0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120]# noqa: E501
data5 = [0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120]# noqa: E501
def effect(self, old , new):
pass
# 超真空弹 : 切利 초진공탄 : 첼리
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/1bf9711f3f15865e38d7dce51c6b5a8c?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill18(ActiveSkill):
name = "超真空弹 : 切利"
learnLv = 70
masterLv = 40
maxLv = 50
position = 3
rangeLv = 2
cube = 3
cd = 30
mp = [800, 1680]
data0 = [0, 246, 272, 296, 320, 347, 372, 396, 420, 447, 473, 497, 521, 546, 573, 597, 623, 647, 671, 698, 723, 747, 771, 798, 824, 848, 872, 897, 924, 948, 972, 998, 1022, 1049, 1074, 1098, 1122, 1148, 1175, 1199, 1223, 1248, 1275, 1299, 1323, 1349, 1373, 1400, 1424, 1449, 1473]# noqa: E501
data1 = [0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20]# noqa: E501
data2 = [0, 987, 1088, 1188, 1287, 1388, 1488, 1589, 1689, 1790, 1890, 1989, 2090, 2190, 2291, 2391, 2492, 2591, 2691, 2792, 2892, 2993, 3093, 3194, 3291, 3392, 3492, 3593, 3695, 3795, 3893, 3993, 4094, 4194, 4295, 4395, 4494, 4595, 4695, 4796, 4896, 4997, 5097, 5196, 5297, 5397, 5498, 5598, 5699, 5798, 5898]# noqa: E501
data3 = [0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]# noqa: E501
data4 = [0, 39519, 43530, 47537, 51548, 55557, 59565, 63575, 67584, 71594, 75602, 79611, 83622, 87632, 91640, 95649, 99659, 103668, 107676, 111686, 115697, 119706, 123714, 127724, 131733, 135741, 139751, 143760, 147771, 151778, 155789, 159798, 163808, 167816, 171825, 175835, 179846, 183852, 187863, 191873, 195882, 199890, 203900, 207909, 211917, 215927, 219938, 223947, 227955, 231965, 235974]# noqa: E501
data5 = [0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]# noqa: E501
def effect(self, old , new):
pass
# 制空掌握 증명의 열쇠
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/f45301a5590cccefbe0becf2f8d029f5?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill19(PassiveSkill):
name = "制空掌握"
learnLv = 75
masterLv = 40
maxLv = 50
position = 1
rangeLv = 3
data0 = [0, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118]# noqa: E501
def effect(self, old , new):
pass
# 开火 오픈 파이어
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/9ceb0c55f40f1fc0fe0fcc65c8fee3a0?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill20(ActiveSkill):
name = "开火"
learnLv = 75
masterLv = 40
maxLv = 50
position = 8
rangeLv = 2
cube = 5
cd = 45
mp = [160, 1600]
data0 = [0, 14086, 15516, 16944, 18372, 19802, 21230, 22660, 24090, 25518, 26948, 28378, 29806, 31236, 32665, 34094, 35523, 36953, 38381, 39810, 41238, 42668, 44097, 45526, 46955, 48384, 49813, 51243, 52671, 54101, 55531, 56959, 58389, 59819, 61246, 62675, 64104, 65533, 66963, 68391, 69821, 71251, 72679, 74109, 75537, 76967, 78396, 79825, 81255, 82684, 84111]# noqa: E501
data1 = [0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]# noqa: E501
data2 = [0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]# noqa: E501
def effect(self, old , new):
pass
# 光子霰雷发射器 포토빌라이저
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/3736fe00a26b0086c23db9a4426a5641?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill21(ActiveSkill):
name = "光子霰雷发射器"
learnLv = 80
masterLv = 40
maxLv = 50
position = 4
rangeLv = 2
cube = 5
cd = 45
mp = [800, 6000]
data0 = [0, 12572, 13850, 15124, 16400, 17675, 18952, 20227, 21502, 22778, 24053, 25330, 26605, 27881, 29156, 30432, 31708, 32983, 34259, 35533, 36809, 38085, 39362, 40636, 41912, 43187, 44464, 45739, 47014, 48290, 49565, 50842, 52117, 53393, 54668, 55945, 57220, 58496, 59771, 61045, 62323, 63597, 64873, 66148, 67425, 68700, 69976, 71251, 72526, 73803, 75078]# noqa: E501
data1 = [0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8]# noqa: E501
data2 = [0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]# noqa: E501
def effect(self, old , new):
pass
# 决战之日 디-데이
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/13a759aad5bb7fb7f08fae8f88c1cdbb?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill22(ActiveSkill):
name = "决战之日"
learnLv = 85
masterLv = 40
maxLv = 50
position = 7
rangeLv = 5
cube = 10
cd = 180
mp = [2500, 8000]
data0 = [0, 5644, 6954, 8263, 9573, 10881, 12190, 13500, 14808, 16117, 17427, 18736, 20044, 21354, 22664, 23973, 25281, 26591, 27900, 29208, 30518, 31827, 33137, 34445, 35754, 37064, 38373, 39681, 40991, 42301, 43608, 44918, 46228, 47537, 48845, 50155, 51464, 52772, 54082, 55391, 56701, 58009, 59318, 60628, 61938, 63245, 64555, 65865, 67172, 68482, 69792]# noqa: E501
def effect(self, old , new):
pass
# 单兵推进器-02X 니트로 모터-02X
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/34e1bda921012f6018709f1c1a12b04d?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill23(PassiveSkill):
name = "单兵推进器-02X"
learnLv = 95
masterLv = 40
maxLv = 50
position = 5
rangeLv = 3
data0 = [0, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118]# noqa: E501
data1 = [0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20]# noqa: E501
data2 = [0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120]# noqa: E501
def effect(self, old , new):
pass
# 空袭战略 스탠바이-레디
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/c591d1827cfbe224031c704e21d07932?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill24(ActiveSkill):
name = "空袭战略"
learnLv = 95
masterLv = 40
maxLv = 50
position = 7
rangeLv = 2
cube = 7
cd = 30
mp = [400, 3000]
data0 = [0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]# noqa: E501
data1 = [0, 95173, 104828, 114483, 124139, 133794, 143449, 153104, 162760, 172415, 182070, 191726, 201380, 211036, 220691, 230347, 240001, 249657, 259313, 268967, 278623, 288278, 297933, 307588, 317244, 326899, 336554, 346210, 355865, 365520, 375175, 384831, 394486, 404141, 413796, 423452, 433107, 442762, 452418, 462072, 471728, 481383, 491038, 500693, 510349, 520004, 529659, 539315, 548970, 558625, 568280]# noqa: E501
def effect(self, old , new):
pass
# 终解·制空霸权 데피니트 솔루션
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/8ad90fd01b5844edd692fff54d9f74e7?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
class Skill25(ActiveSkill):
name = "终解·制空霸权"
learnLv = 100
masterLv = 40
maxLv = 50
position = 5
rangeLv = 5
cube = 15
cd = 290
mp = [4028, 8056]
data0 = [0, 28558, 35180, 41802, 48424, 55046, 61670, 68292, 74914, 81536, 88157, 94781, 101403, 108025, 114647, 121269, 127891, 134515, 141137, 147759, 154380, 161002, 167624, 174248, 180870, 187492, 194114, 200736, 207360, 213982, 220604, 227225, 233847, 240469, 247093, 253715, 260337, 266959, 273581, 280203, 286827, 293448, 300070, 306692, 313314, 319936, 326560, 333182, 339804, 346426, 353048]# noqa: E501
data1 = [0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7]# noqa: E501
data2 = [0, 93290, 114923, 136555, 158188, 179822, 201454, 223087, 244719, 266352, 287984, 309618, 331251, 352883, 374515, 396148, 417780, 439414, 461047, 482679, 504312, 525944, 547578, 569211, 590843, 612475, 634108, 655740, 677374, 699007, 720639, 742272, 763904, 785537, 807171, 828803, 850436, 872068, 893700, 915334, 936967, 958599, 980232, 1001864, 1023497, 1045131, 1066763, 1088396, 1110028, 1131660, 1153293]# noqa: E501
data3 = [0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]# noqa: E501
def effect(self, old , new):
pass
class classChange(Character):
def __init__(self, equVersion=''):
super().__init__(equVersion)
self.name = 'spitfire_female'
self.nameShow = '重霄·弹药专家'
self.nameCN = '重霄·弹药专家'
self.role = 'gunner_female'
# 用来筛CP武器的
@@ -144,8 +504,7 @@ class classChange(Character):
skills_dict[tem.name] = tem
skills.append(tem)
i += 1
except Exception as e:
print(e)
except Exception:
i = -1
self.skills = skills
self.skills_dict = skills_dict
Binary file not shown.
+4 -2
View File
@@ -21,6 +21,7 @@ export interface IAlterInfo {
}
export interface ICharacterInfo {
role:string
alter: string
name: string
equVersion: string
@@ -28,7 +29,6 @@ export interface ICharacterInfo {
weapons: string[]
skills: ISkill[]
suits: ISuit[]
}
export interface IEquipment {
@@ -47,7 +47,9 @@ export interface ISkill {
name: string
id: number
learnLv: number
positon: number
position: number
type: string
maxLearnLv: number
}
export interface ISuit {
@@ -74,7 +74,8 @@ const getLocalImageURL = (url:string)=>{
bottom: 0;
width: 28px;
height: 28px;
background-color: #00000060;
background-color: #00000090;
// filter: grayscale(100%);
}
}
@@ -1,7 +1,7 @@
<template>
<div class="flex gap-8px">
<template v-for="(rarity,_) in rarities" :key="_">
<div class="w-14px h-14px shadow-[0px_0px_3px_#ffffff_inset,0px_0px_1px_#ffffff40]" :style="{background: rarity.background}" @click="value=rarity.value">
<div class="w-14px h-14px shadow-[0px_0px_3px_#ffffff_inset,0px_0px_1px_#ffffff40]" :style="{background: rarity.background}" @click="choose(rarity.value)">
<div class="w-14px h-14px" :class="{'active': value === rarity.value}"></div>
</div>
</template>
@@ -10,6 +10,8 @@
<script lang="ts" setup>
const props = defineProps({})
const value = defineModel<string>()
const rarities = [{
@@ -29,6 +31,15 @@ const rarities = [{
background: 'linear-gradient(180deg, #70faa7 0%, #7bfefe 100%)',
}]
const choose = (rarity: string) => {
if (value.value === rarity) {
value.value = undefined
}
else{
value.value = rarity
}
}
</script>
<style lang="scss" scoped>
+13 -19
View File
@@ -2,13 +2,13 @@
<template>
<div>
<div class="flex gao-10px">
<div class="flex flex-col gap-10px pb-10px">
<!-- 套装选择tab -->
<div class="flex flex-wrap w-300px">
<div class="flex flex-wrap w-100%">
<template v-for="(suit, _) in suits" :key="_">
<div class="flex items-center justify-center">
<img
class="w-40px h-40px object-contain"
class="w-35px h-35px object-contain"
:src="getImageURL('equipment' + suit.imageUrl)"
:alt="suit.name"
:style="{ filter: curSuit === suit.value ? '' : 'grayscale(100%)' }"
@@ -22,7 +22,7 @@
<div class="flex flex-wrap gap-4px content-start" :style="{width: `${rowCount * 32}px`}">
<template v-for="(equip,_) in suitEquipments" :key="_">
<EquipmentIcon :equipment="equip" />
<EquipmentIcon :equipment="equip" :inactive="configStore.config.equips[equip?.itemDetailType ?? '']?.id != equip?.id" @click="chooseEqu(equip)"/>
</template>
</div>
</div>
@@ -30,11 +30,12 @@
<script lang="ts" setup>
import type { IEquipment } from '@/api/info/type'
import { useInfoStore } from '@/stores'
import { useConfigStore, useInfoStore } from '@/stores'
import { getImageURL } from '@/utils/images'
import EquipmentIcon from '@/components/dnf/Equipment/Icon/index.vue'
import EquipmentRaritySelect from '@/components/dnf/Equipment/RaritySelect/index.vue'
const infoStore = useInfoStore()
const configStore = useConfigStore()
const curSuit = ref(16201)
const curRarity = ref()
@@ -72,21 +73,14 @@ const suitEquipments = computed(() => {
const remind = equs.filter(a=>a.rarity == '太初' || a.name.includes('黑牙')).sort((a,b)=>(a.rarity == '太初' ? 1 : 0) - (b.rarity == '太初' ? 1 : 0))
res.push(undefined,undefined,...remind.filter(a=>a.itemDetailType == '项链'),undefined,...remind.filter(a=>a.itemDetailType == '手镯'),undefined,...remind.filter(a=>a.itemDetailType == '戒指'),...Array(Math.max(0,rowCount - remind.length -4)).fill(undefined))
return res
// const raritiyList = [['神器'],['传说'],['史诗','太初']]
// const partList = ['上衣','下装','头肩','腰带','鞋','项链','手镯','辅助装备','魔法石','耳环']
// // 一个品质占3行
// // 第一行 防具5+空+特殊3
// // 第二行 首饰3+3+3
// // 第三行 全空行
// partList.forEach((part) => {
// const equ = equs.filter((a) => a.itemDetailType === part)
// res.push(
// ...equ,
// ...Array(rowCount - equ.length).fill(undefined),
// )
// })
// return res
})
const chooseEqu = (equip: IEquipment | undefined) => {
console.log(equip)
if (equip && configStore.config.equips[equip.itemDetailType]) {
configStore.config.equips[equip.itemDetailType].id = equip.id
}
}
</script>
@@ -3,14 +3,14 @@
<template>
<div class="flex flex-wrap gap-4px content-start" :style="{ width: `${rowCount * 32}px` }">
<template v-for="(weapon, _) in weapons" :key="_">
<EquipmentIcon :equipment="weapon" />
<EquipmentIcon :equipment="weapon" :inactive="configStore.config.equips['武器']?.id != weapon?.id" @click="chooseWeapon(weapon)"/>
</template>
</div>
</template>
<script lang="ts" setup>
import type { IEquipment } from '@/api/info/type'
import { useInfoStore } from '@/stores'
import { useConfigStore, useInfoStore } from '@/stores'
import { getImageURL } from '@/utils/images'
import EquipmentIcon from '@/components/dnf/Equipment/Icon/index.vue'
@@ -20,6 +20,7 @@ const props = defineProps<{
const rowCount = Math.max(props.rowCount ?? 0, 14)
const infoStore = useInfoStore()
const configStore = useConfigStore()
const weapons = computed(() => {
const items = infoStore.equips.filter(
@@ -33,9 +34,15 @@ const weapons = computed(() => {
undefined,
...weapon.filter((item) => item.categorize === '传世武器'),
)
const remind = rowCount - res.length % rowCount
const remind = rowCount - (res.length % rowCount)
res.push(...Array(remind).fill(undefined))
})
return res
})
const chooseWeapon = (weapon: IEquipment | undefined) => {
if (weapon) {
configStore.config.equips['武器'].id = weapon.id
}
}
</script>
+15 -14
View File
@@ -2,36 +2,37 @@
<div class="w-100% h-100% main" :class="props.alter.split('.').slice(-1)">
<div class="header"></div>
<div class="content flex">
<div class="flex flex-col gap-20px">
<div class="flex flex-col gap-20px mx-10px">
<Weapon></Weapon>
<Suit></Suit>
<Universal></Universal>
</div>
<div class="h-90vh w-560px overflow-y-auto overflow-x-hidden">
<SkillTree></SkillTree>
<div class="h-90vh w-auto overflow-y-auto overflow-x-hidden">
<SkillTree :skills="infoStore.skills" :lvInfo="configStore.config?.skills"></SkillTree>
</div>
</div>
</div>
</template>
<script lang="ts" setup name="Index">
import { useInfoStore } from '@/stores/info'
import { getImageURL } from '@/utils/images'
import SkillTree from './Skill/SkillTree.vue';
import Suit from './Equipment/Suit.vue';
import Weapon from './Equipment/Weapon.vue';
import Universal from './Equipment/Universal.vue';
import SkillTree from './Skill/SkillTree/index'
import Suit from './Equipment/Suit.vue'
import Weapon from './Equipment/Weapon.vue'
import Universal from './Equipment/Universal.vue'
import { useConfigStore } from '@/stores'
const props = defineProps<{
alter: string
}>()
const infoStore = useInfoStore()
onMounted(() => {
infoStore.createCharacter(props.alter, '0')
const configStore = useConfigStore()
onMounted(async () => {
await infoStore.createCharacter(props.alter, '0')
configStore.loadConfig()
console.log(configStore.config)
})
</script>
@@ -73,7 +74,7 @@ onMounted(() => {
}
.main::after {
content: "";
content: '';
width: 100%;
height: 100%;
position: absolute;
@@ -1,47 +0,0 @@
<template>
<div class="relative w-550px h-auto">
<template v-for="item in infoStore.skills" :key="item.id">
<div
class="absolute w-34px h-auto flex flex-col gap-2px py-2px items-center bg-#2c2d2c rounded-2px"
:style="skillPositon(item.learnLv, item.positon)"
>
<img class="w-30px h-30px" :src="getImageURL(item.icon)" :alt="item.name" />
<div class="flex-1 bg-black text-white">100级</div>
</div>
</template>
<template v-for="lv of 21" :key="lv">
<div class="skill-tree-line flex items-center px-20px text-#373837">
{{ lv % 2 === 1 ? Math.max(1, (lv - 1) * 5) :'' }}
</div>
</template>
</div>
</template>
<script lang="ts" setup>
import { useInfoStore } from '@/stores'
import { getImageURL } from '@/utils/images'
const infoStore = useInfoStore()
const skillPositon = (learnLv: number, positon: number) => {
return {
positon: 'absolute',
left: `${positon * 50 + 50}px`,
top: `${Math.floor(learnLv / 5) * 80 + 8}px`,
}
}
</script>
<style lang="scss" scoped>
.skill-tree-line {
height: 80px;
width: auto;
&:nth-child(n + 1) {
background-color: #000000;
}
&:nth-child(2n + 1) {
background-color: #202020;
backdrop-filter: blur(1px);
}
}
</style>
@@ -0,0 +1,87 @@
import { getImageURL } from '@/utils/images'
import type { ISkill } from '@/api/info/type'
import {useVModel} from '@vueuse/core'
import './style.scss'
export default defineComponent({
name: 'SkillTree',
props: {
skills: {
type: Array as PropType<ISkill[]>,
default: () => [],
},
lvInfo: {
type: Object as PropType<Record<string, { lv: number }>>,
default: () => ({}),
},
},
setup(props) {
const skills = computed(() => props.skills)
const lvInfo = useVModel(props, 'lvInfo')
const getSkill = (lvStart: number, lvEnd: number, position: number) => {
if (position >= 0)
return skills.value.find(
(item) =>
item.learnLv > lvStart - 5 &&
item.learnLv <= Math.max(lvEnd - 5, 1) &&
item.position == position,
)
else
return skills.value.filter(
(item) => item.learnLv > lvStart - 5 && item.learnLv <= Math.max(lvEnd - 5, 1),
)
}
const lvList = [15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 90, 100]
const columns = [...new Array(9).keys()]
return () => (
<>
<div>
<div class="skill-tree-line flex items-center gap-10px px-10px">
<div class="w-34px h-34px flex items-center justify-center text-white">其<br/>余</div>
{((getSkill(0, 15, -1) ?? []) as ISkill[])?.map((skill, index) => (
<div class="w-34px h-auto flex flex-col gap-2px py-2px items-center bg-#2c2d2c rounded-2px" key={index}>
<img
class={['h-30px w-30px', skill.type === 'passive' ? 'passive' : '']}
src={getImageURL(skill.icon)}
></img>
<div class="w-30px mx-2px bg-black text-white flex items-center justify-center rounded-2px">
{lvInfo.value?.[skill.id.toString()]?.lv ?? 0}
</div>
</div>
))}
</div>
{lvList.map((lv, index) => (
<div class="skill-tree-line flex items-center gap-10px px-10px" key={index}>
{lv == 1 || lv % 10 == 0 ? (
<div class="w-34px h-34px flex items-center justify-center text-white">{lv}</div>
) : (
<div class="w-34px h-34px"></div>
)}
{columns.map((column, i) => {
const skill = getSkill(lv, lvList[index + 1] ?? 150, column) as ISkill
return skill ? (
<div class="w-34px h-auto flex flex-col gap-2px py-2px items-center bg-#2c2d2c rounded-2px">
<img
class={['h-30px w-30px', skill.type === 'passive' ? 'passive' : '']}
src={getImageURL(skill.icon)}
></img>
<div class="w-30px mx-2px bg-black text-white flex items-center justify-center rounded-2px">
{lvInfo.value?.[skill.id.toString()]?.lv ?? 0}
</div>
</div>
) : (
<div class="w-34px h-34px"></div>
)
})}
<div class="w-34px h-34px"></div>
</div>
))}
</div>
</>
)
},
})
@@ -0,0 +1,14 @@
.skill-tree-line {
height: 80px;
width: auto;
&:nth-child(n + 1) {
background-color: #000000;
}
&:nth-child(2n + 1) {
background-color: #202020;
}
}
.passive {
filter: grayscale(100%) invert(3%) sepia(14%) saturate(874%) hue-rotate(65deg) brightness(105%) contrast(102%);
}
+81 -1
View File
@@ -1,4 +1,84 @@
import { defineStore } from 'pinia'
import { useInfoStore } from './info'
// | '上衣'
// | '头肩'
// | '下装'
// | '腰带'
// | '鞋'
// | '手镯'
// | '项链'
// | '戒指'
// | '耳环'
// | '辅助装备'
// | '魔法石'
// | '武器',
export interface IConfig {
skills: Record<string, { lv: number }>
equips: Record<string,
{ id: string,
reinforce: number,
reinforceType: number,
enchat: number,
emblems: string[],
upgrade: number,
refine: number,
adaptation:number
}
>
}
const config = defineStore('config', ()=>{
const defaultEqusConfig = {
id: '',
reinforce: 0,
reinforceType: 0,
enchat: 0,
emblems: [],
upgrade: 0,
refine: 0,
adaptation: 0
}
export const useConfigStore = defineStore('configStore', () => {
const config = ref<IConfig>({
skills: {},
equips: {}
})
const loadConfig = () => {
const infoStore = useInfoStore()
const alter = infoStore.infos?.alter
if (alter) {
const localConfig = localStorage.getItem(`dcalc/${alter}/config`)
if (localConfig) {
config.value = JSON.parse(localConfig)
}
}
if(!config.value) config.value = {
skills: {},
equips: {}
}
if(!config.value?.equips) config.value.equips = {}
if(!config.value?.skills) config.value.skills = {}
const part = ['上衣', '头肩', '下装', '腰带', '鞋', '手镯', '项链', '戒指', '耳环', '辅助装备', '魔法石', '武器'].filter(a => !config.value?.equips.hasOwnProperty(a))
const skillIDs = infoStore.skills.map(skill => skill.id.toString()).filter(a => !config.value?.skills.hasOwnProperty(a))
part.forEach(p => {
config.value && (config.value.equips[p] = { ...defaultEqusConfig })
});
skillIDs.forEach(id => {
config.value && (config.value.skills[id] = { lv: infoStore.skills.find(skill => skill.id.toString() === id)?.maxLearnLv ?? 0 })
});
}
const saveConfig = () => {}
return {
config,
loadConfig,
saveConfig,
}
})
+1
View File
@@ -1,5 +1,6 @@
import { createPinia } from "pinia"
export * from "./info"
export * from "./config"
export const pinia = createPinia()
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB