From 1e23d73b15fcaa76e077b4b3220a99b6d699664a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E7=93=9C=C2=B0?= Date: Sat, 2 May 2026 00:26:19 +0800 Subject: [PATCH] dev --- backend/core/basic/character/calc_equip.py | 14 +- backend/core/basic/equipment.py | 1 + backend/core/equipment/version_0/__init__.py | 296 +----------- backend/core/equipment/version_0/oath.py | 425 ++++++++++++++++++ .../core/equipment/version_0/oathSuitSkill.py | 295 ++++++++++++ backend/dataFiles/dcalc_0.db | Bin 860160 -> 860160 bytes .../EquipmentDictionary/formatData.ts | 8 +- 7 files changed, 741 insertions(+), 298 deletions(-) diff --git a/backend/core/basic/character/calc_equip.py b/backend/core/basic/character/calc_equip.py index 1154c87d..4c0764dc 100644 --- a/backend/core/basic/character/calc_equip.py +++ b/backend/core/basic/character/calc_equip.py @@ -166,7 +166,8 @@ class CalcEquipMixin(CharacterBase): self.oathSkillInfo = [] # 当套装点数达到太初时,誓约技能生效 if self.max_point >= 2550: - for oathSuit in oathSuitList: + oathSuit = next((x for x in oathSuitList if x.suitId == max_point_oath_suit), None) + if oathSuit is not None: skills = list(filter(lambda x: x.suitId == oathSuit.suitId, oathSuit.skills)) skill = next((x for x in oathSuit.skills if str(x.skillId) == str(self.charOathSkillId)), None) # 誓约套装效果生效 @@ -205,7 +206,7 @@ class CalcEquipMixin(CharacterBase): # 誓约积分 if self.oath_max_point >= 1200: self.SetSkillCD(1, 100, 0.185) - SkillAttack, Buffer = equs.funs.oathPointEffect(self.oath_max_point) + SkillAttack, Buffer = equs.funs.execture('oathPointEffect')(self.oath_max_point) self.SetStatus(SkillAttack=SkillAttack, Buffer=Buffer) return res @@ -357,6 +358,15 @@ class CalcEquipMixin(CharacterBase): def calc_sundry(self, sundry: dict): """计算杂项效果""" funs = get_equipment(self.equVersion).funs + primer = next((x for x in self.charOathInfo if x.id == '2000500'), None) + if primer: + fog = sundry.get('fog', 0) + stats, Point, SkillAttack, Attack, Buffer = funs.execture('fog_oath_info')(fog) + primer.oathInfo.STR = primer.oathInfo.INT = primer.oathInfo.Vitality = primer.oathInfo.Spirit = stats + primer.oathInfo.Point = Point + primer.oathInfo.SkillAttack = SkillAttack + primer.oathInfo.Attack = Attack + primer.oathInfo.Buffer = Buffer # funs.execture('sundry_0')( # self, # sundry.get('medal_rarity', 0), diff --git a/backend/core/basic/equipment.py b/backend/core/basic/equipment.py index 7b2620b3..0a535928 100644 --- a/backend/core/basic/equipment.py +++ b/backend/core/basic/equipment.py @@ -372,6 +372,7 @@ class Oath: return Oath(**temp) + class OathSuitSkill: id: int key: str diff --git a/backend/core/equipment/version_0/__init__.py b/backend/core/equipment/version_0/__init__.py index 40957e22..c09ba2ac 100644 --- a/backend/core/equipment/version_0/__init__.py +++ b/backend/core/equipment/version_0/__init__.py @@ -6,6 +6,7 @@ from . import emblem from . import enchant from . import sundry from . import suit +from . import oath from . import oathSuitSkill from .register import execture @@ -36,7 +37,7 @@ sundryList = { 'costume_card': {'id': 13, 'options': [{'name': f'{i}', 'value': idx} for idx, i in enumerate(['无', '四维(3)|三速(1%)'])]}, } -__all__ = [get_dress_list, calc_dress_effect, options, execture, sundryList, equ, stone, jade, emblem, enchant, sundry, suit, oathSuitSkill] +__all__ = [get_dress_list, calc_dress_effect, options, execture, sundryList, equ, stone, jade, emblem, enchant, sundry, suit, oathSuitSkill, oath] def get_reinforce_sum(char): @@ -63,296 +64,3 @@ def get_reinforce_sum(char): reinforce = reinforce_0 + reinforce_1 + reinforce_2 + reinforce_3 return reinforce - -def oathPointEffect(point): - """誓约积分效果""" - SkillAttackList = [ - 0.0, - 0.5, - 1.0, - 1.5, - 2.0, - 2.5, - 3.0, - 3.5, - 4.0, - 4.5, - 5.0, - 5.5, - 6.0, - 6.5, - 7.0, - 7.5, - 8.0, - 8.5, - 9.0, - 9.5, - 10.0, - 10.5, - 11.0, - 11.5, - 12.0, - 12.5, - 13.0, - 13.5, - 14.0, - 14.5, - 17.0, - 17.5, - 18.0, - 18.5, - 19.0, - 19.5, - 20.0, - 20.5, - 21.0, - 21.5, - 22.0, - 22.5, - 23.0, - 23.5, - 24.0, - 24.5, - 25.0, - 25.5, - 28.0, - 28.5, - 29.0, - 29.5, - 30.0, - 30.5, - 31.0, - 31.5, - 32.0, - 32.5, - 33.0, - 33.5, - 34.0, - 34.5, - 35.0, - 35.5, - 36.0, - 36.5, - 39.0, - 39.5, - 40.0, - 40.5, - 41.0, - 41.5, - 42.0, - 42.5, - 43.0, - 43.5, - 44.0, - 44.5, - 45.0, - 45.5, - 46.0, - 46.5, - 47.0, - 47.5, - 50.0, - 50.5, - 51.0, - 51.5, - 52.0, - 52.5, - 53.0, - 53.5, - 54.0, - 54.5, - 55.0, - 55.5, - 56.0, - 56.5, - 57.0, - 57.5, - 58.0, - 58.5, - 62.0, - 63.0, - 64.0, - 65.0, - 66.0, - 67.0, - 68.0, - 69.0, - 70.0, - 71.0, - 72.0, - 73.0, - 74.0, - 75.0, - 76.0, - 77.0, - 78.0, - 79.0, - 80.0, - 81.0, - 82.0, - 83.0, - 84.0, - 85.0, - 86.0, - 87.0, - 88.0, - 89.0, - 90.0, - 91.0, - 92.0, - 93.0, - 94.0, - 95.0, - 96.0, - 97.0, - 98.0, - 99.0, - 100.0, - ] - BufferList = [ - 0, - 100, - 200, - 300, - 400, - 500, - 600, - 700, - 800, - 900, - 1000, - 1100, - 1200, - 1300, - 1400, - 1500, - 1600, - 1700, - 1800, - 1900, - 2000, - 2100, - 2200, - 2300, - 2400, - 2500, - 2600, - 2700, - 2800, - 2900, - 3300, - 3380, - 3460, - 3540, - 3620, - 3700, - 3780, - 3860, - 3940, - 4020, - 4100, - 4180, - 4260, - 4340, - 4420, - 4500, - 4580, - 4660, - 5060, - 5140, - 5220, - 5300, - 5380, - 5460, - 5540, - 5620, - 5700, - 5780, - 5860, - 5940, - 6020, - 6100, - 6180, - 6260, - 6340, - 6420, - 6720, - 6790, - 6860, - 6930, - 7000, - 7070, - 7140, - 7210, - 7280, - 7350, - 7420, - 7490, - 7560, - 7630, - 7700, - 7770, - 7840, - 7910, - 8210, - 8280, - 8350, - 8420, - 8490, - 8560, - 8630, - 8700, - 8770, - 8840, - 8910, - 8980, - 9050, - 9120, - 9190, - 9260, - 9330, - 9400, - 9700, - 9820, - 9940, - 10060, - 10180, - 10300, - 10420, - 10540, - 10660, - 10780, - 10900, - 11020, - 11140, - 11260, - 11380, - 11500, - 11620, - 11740, - 11860, - 11980, - 12100, - 12220, - 12340, - 12460, - 12580, - 12700, - 12820, - 12940, - 13060, - 13180, - 13300, - 13420, - 13540, - 13660, - 13780, - 13900, - 14020, - 14140, - 14260, - ] - index = int(min(point // 25, len(SkillAttackList) - 1)) - SkillAttack = SkillAttackList[index] - Buffer = BufferList[index] - return round(SkillAttack, 2), int(round(Buffer)) diff --git a/backend/core/equipment/version_0/oath.py b/backend/core/equipment/version_0/oath.py index bee80f95..4c65de04 100644 --- a/backend/core/equipment/version_0/oath.py +++ b/backend/core/equipment/version_0/oath.py @@ -3,6 +3,11 @@ from core.abstract.character import CharacterProperty from .register import register +@register +def oath_2000500(char: CharacterProperty): + pass + + @register def oath_2010100(char: CharacterProperty): pass @@ -541,3 +546,423 @@ def oath_2120500(char: CharacterProperty): @register def oath_2120501(char: CharacterProperty): pass + + +@register +def fog_oath_info(lv: int): + lv = max(0, min(lv, 100)) + SkillAttacks = [ + 0, + 10.0, + 10.5, + 11.0, + 11.5, + 12.5, + 13.0, + 13.5, + 14.0, + 14.5, + 16.0, + 16.5, + 17.0, + 17.5, + 18.0, + 19.0, + 19.5, + 20.0, + 20.5, + 21.0, + 22.5, + 23.0, + 23.5, + 24.0, + 24.5, + 25.5, + 26.0, + 26.5, + 27.0, + 27.5, + 30.0, + 30.2, + 30.4, + 30.6, + 30.8, + 31.3, + 31.5, + 31.7, + 31.9, + 32.1, + 32.9, + 33.1, + 33.3, + 33.5, + 33.7, + 34.2, + 34.4, + 34.6, + 34.8, + 35.0, + 35.8, + 36.0, + 36.2, + 36.4, + 36.6, + 37.1, + 37.3, + 37.5, + 37.7, + 37.9, + 39.0, + 39.2, + 39.4, + 39.6, + 39.8, + 40.3, + 40.5, + 40.7, + 40.9, + 41.1, + 41.9, + 42.1, + 42.3, + 42.5, + 42.7, + 43.2, + 43.4, + 43.6, + 43.8, + 44.0, + 45.0, + 45.2, + 45.4, + 45.6, + 45.8, + 46.3, + 46.5, + 46.7, + 46.9, + 47.1, + 47.9, + 48.1, + 48.3, + 48.5, + 48.7, + 49.2, + 49.4, + 49.6, + 49.8, + 50.0, + 53.0, + ] + Buffers = [ + 0, + 5233, + 5283, + 5333, + 5383, + 5483, + 5533, + 5583, + 5633, + 5683, + 5833, + 5883, + 5933, + 5983, + 6033, + 6133, + 6183, + 6233, + 6283, + 6333, + 6483, + 6533, + 6583, + 6633, + 6683, + 6783, + 6833, + 6883, + 6933, + 6983, + 7233, + 7248, + 7263, + 7278, + 7293, + 7333, + 7348, + 7363, + 7378, + 7393, + 7453, + 7468, + 7483, + 7498, + 7513, + 7553, + 7568, + 7583, + 7598, + 7613, + 7673, + 7688, + 7703, + 7718, + 7733, + 7773, + 7788, + 7803, + 7818, + 7833, + 7908, + 7923, + 7938, + 7953, + 7968, + 8003, + 8018, + 8033, + 8048, + 8063, + 8118, + 8133, + 8148, + 8163, + 8178, + 8213, + 8228, + 8243, + 8258, + 8273, + 8343, + 8358, + 8373, + 8388, + 8403, + 8433, + 8448, + 8463, + 8478, + 8493, + 8543, + 8558, + 8573, + 8588, + 8603, + 8633, + 8648, + 8663, + 8678, + 8693, + 8893, + ] + stats = [ + 0, + 48, + 48, + 48, + 48, + 78, + 78, + 78, + 78, + 78, + 128, + 128, + 128, + 128, + 128, + 158, + 158, + 158, + 158, + 158, + 208, + 208, + 208, + 208, + 208, + 238, + 238, + 238, + 238, + 238, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 298, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 350, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 400, + 450, + ] + Points = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 265, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 355, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 455, + 655, + ] + Attack = 2337.5 + return stats[lv], Points[lv], SkillAttacks[lv] / 100, Attack, Buffers[lv] diff --git a/backend/core/equipment/version_0/oathSuitSkill.py b/backend/core/equipment/version_0/oathSuitSkill.py index bb1ddf86..5741e4a3 100644 --- a/backend/core/equipment/version_0/oathSuitSkill.py +++ b/backend/core/equipment/version_0/oathSuitSkill.py @@ -13,6 +13,301 @@ def check_suit(char: CharacterProperty) -> bool: return result +@register +def oathPointEffect(point): + """誓约积分效果""" + SkillAttackList = [ + 0.0, + 0.5, + 1.0, + 1.5, + 2.0, + 2.5, + 3.0, + 3.5, + 4.0, + 4.5, + 5.0, + 5.5, + 6.0, + 6.5, + 7.0, + 7.5, + 8.0, + 8.5, + 9.0, + 9.5, + 10.0, + 10.5, + 11.0, + 11.5, + 12.0, + 12.5, + 13.0, + 13.5, + 14.0, + 14.5, + 17.0, + 17.5, + 18.0, + 18.5, + 19.0, + 19.5, + 20.0, + 20.5, + 21.0, + 21.5, + 22.0, + 22.5, + 23.0, + 23.5, + 24.0, + 24.5, + 25.0, + 25.5, + 28.0, + 28.5, + 29.0, + 29.5, + 30.0, + 30.5, + 31.0, + 31.5, + 32.0, + 32.5, + 33.0, + 33.5, + 34.0, + 34.5, + 35.0, + 35.5, + 36.0, + 36.5, + 39.0, + 39.5, + 40.0, + 40.5, + 41.0, + 41.5, + 42.0, + 42.5, + 43.0, + 43.5, + 44.0, + 44.5, + 45.0, + 45.5, + 46.0, + 46.5, + 47.0, + 47.5, + 50.0, + 50.5, + 51.0, + 51.5, + 52.0, + 52.5, + 53.0, + 53.5, + 54.0, + 54.5, + 55.0, + 55.5, + 56.0, + 56.5, + 57.0, + 57.5, + 58.0, + 58.5, + 62.0, + 63.0, + 64.0, + 65.0, + 66.0, + 67.0, + 68.0, + 69.0, + 70.0, + 71.0, + 72.0, + 73.0, + 74.0, + 75.0, + 76.0, + 77.0, + 78.0, + 79.0, + 80.0, + 81.0, + 82.0, + 83.0, + 84.0, + 85.0, + 86.0, + 87.0, + 88.0, + 89.0, + 90.0, + 91.0, + 92.0, + 93.0, + 94.0, + 95.0, + 96.0, + 97.0, + 98.0, + 99.0, + 100.0, + ] + BufferList = [ + 0, + 100, + 200, + 300, + 400, + 500, + 600, + 700, + 800, + 900, + 1000, + 1100, + 1200, + 1300, + 1400, + 1500, + 1600, + 1700, + 1800, + 1900, + 2000, + 2100, + 2200, + 2300, + 2400, + 2500, + 2600, + 2700, + 2800, + 2900, + 3300, + 3380, + 3460, + 3540, + 3620, + 3700, + 3780, + 3860, + 3940, + 4020, + 4100, + 4180, + 4260, + 4340, + 4420, + 4500, + 4580, + 4660, + 5060, + 5140, + 5220, + 5300, + 5380, + 5460, + 5540, + 5620, + 5700, + 5780, + 5860, + 5940, + 6020, + 6100, + 6180, + 6260, + 6340, + 6420, + 6720, + 6790, + 6860, + 6930, + 7000, + 7070, + 7140, + 7210, + 7280, + 7350, + 7420, + 7490, + 7560, + 7630, + 7700, + 7770, + 7840, + 7910, + 8210, + 8280, + 8350, + 8420, + 8490, + 8560, + 8630, + 8700, + 8770, + 8840, + 8910, + 8980, + 9050, + 9120, + 9190, + 9260, + 9330, + 9400, + 9700, + 9820, + 9940, + 10060, + 10180, + 10300, + 10420, + 10540, + 10660, + 10780, + 10900, + 11020, + 11140, + 11260, + 11380, + 11500, + 11620, + 11740, + 11860, + 11980, + 12100, + 12220, + 12340, + 12460, + 12580, + 12700, + 12820, + 12940, + 13060, + 13180, + 13300, + 13420, + 13540, + 13660, + 13780, + 13900, + 14020, + 14140, + 14260, + ] + index = int(min(point // 25, len(SkillAttackList) - 1)) + SkillAttack = SkillAttackList[index] / 100 + Buffer = BufferList[index] + return round(SkillAttack, 4), int(round(Buffer)) + + # region 潜影暗袭 diff --git a/backend/dataFiles/dcalc_0.db b/backend/dataFiles/dcalc_0.db index 03e30c1c270d0c627c0a01b349f7a3072581c258..f8ef38c3635bc9618ecb204ce1e0ae0dd3f848f7 100644 GIT binary patch delta 66 zcmZoTVA62FWP&u~&51J3j5iw-S`!#s6PQ{Pm|GKAS`%1X6WCf4*jp1gwkB}09%kfi TPdm&B#9Tnky*=$P&#V{#E;ATu delta 66 zcmZoTVA62FWP&u~jfpbOj5it+S`!#s6PQ{Pm|GKAS`%1X6WCf4*jp1gwkB}09%f`{ TPdm&B#9Tnky*=$P&#V{#EYBEP diff --git a/frontend/src/pages/Character/EquipmentDictionary/formatData.ts b/frontend/src/pages/Character/EquipmentDictionary/formatData.ts index c8eaab0c..f8539fa2 100644 --- a/frontend/src/pages/Character/EquipmentDictionary/formatData.ts +++ b/frontend/src/pages/Character/EquipmentDictionary/formatData.ts @@ -297,11 +297,15 @@ export const formatOath = ( curSuit?: { name: string; value: number; imageUrl: string }, ) => { // oath - const oath = total.filter((equip) => equip.itemDetailType == '誓约') + const oath = total.filter( + (equip) => equip.itemDetailType == '誓约' && equip.categorize != '通宝装备', + ) oath.push(...Array(rowCount - (oath.length % rowCount)).fill(undefined)) // primer const primer = [] - const primerItem = total.filter((equip) => equip.itemDetailType == '星蕴石') + const primerItem = total.filter( + (equip) => equip.itemDetailType == '星蕴石' && equip.categorize != '通宝装备', + ) for (let i = 0; i < 11; i++) { const temp = primerItem.filter((a) => a.oathPos == i.toString()) primer.push(