5 Commits

Author SHA1 Message Date
panFD
222dddbb05 refactor(heroBox): 优化英雄升级弹窗展示与UI边框
1.  移除英雄升级确认弹窗冗余的英雄名称变量拼接
2.  调整UI元素的边框偏移参数
3.  给英雄属性描述文本添加黑色描边优化显示效果
4.  更新了多个英雄预制件的节点ID与属性覆盖配置
2026-08-10 10:28:39 +08:00
panFD
2b3a68fb2a refactor: 统一游戏文本标点格式,优化UI显示
1.  替换全角逗号为半角逗号,修正技能描述、英雄介绍中的标点一致性
2.  调整弹窗预制体尺寸与布局参数,适配新的UI显示需求
3.  优化技能名称富文本样式与光环档位显示逻辑
4.  清理冗余的prefab实例配置字段
2026-08-09 20:40:19 +08:00
panFD
2872b643f8 feat(ui&config): 优化技能名富文本显示效果
1. 调整技能名高亮色为金黄并添加描边效果,提升视觉层级
2. 封装skillNameRich工具函数统一处理技能名富文本格式
3. 修复英雄prefab布局参数,适配新的文本显示样式
2026-08-09 20:40:10 +08:00
panFD
2d49c82590 refactor(skill): 统一驻场光环的命名展示逻辑
1.  为驻场光环技能添加带"光环"后缀的统一命名,便于玩家识别
2.  新增触发技能名称获取函数,支持高阶光环回退基础命名
3.  重构技能描述构建逻辑,使用英雄语境专属命名覆盖默认名称
2026-08-09 17:19:40 +08:00
panFD
b098db849b refactor(heroDesc): 统一英雄技能描述文案生成逻辑
1.  将原英雄卡片手写的复活/重生描述统一改为通过buildSkillDescMoreRich生成
2.  新增buildHeroDescSource方法构造1级技能描述数据源,保证与英雄信息弹窗文案一致
3.  修正多处技能描述文本,将复活统一改为重生并补充回合重生次数说明
4.  将开局类buff描述改为回合开始,匹配实际生效时机
2026-08-09 17:14:46 +08:00
13 changed files with 1466 additions and 1631 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -22,38 +22,38 @@
"__id__": 2
},
{
"__id__": 10
"__id__": 11
},
{
"__id__": 22
"__id__": 23
},
{
"__id__": 34
"__id__": 35
}
],
"_active": true,
"_components": [
{
"__id__": 45
"__id__": 46
},
{
"__id__": 47
"__id__": 48
},
{
"__id__": 49
"__id__": 50
},
{
"__id__": 51
"__id__": 52
},
{
"__id__": 53
"__id__": 54
},
{
"__id__": 55
"__id__": 56
}
],
"_prefab": {
"__id__": 57
"__id__": 58
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -130,6 +130,9 @@
},
{
"__id__": 9
},
{
"__id__": 10
}
],
"removedComponents": []
@@ -196,6 +199,16 @@
"z": 0
}
},
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 6
},
"propertyPath": [
"_active"
],
"value": false
},
{
"__type__": "cc.Node",
"_name": "anm",
@@ -208,23 +221,23 @@
"_active": true,
"_components": [
{
"__id__": 11
"__id__": 12
},
{
"__id__": 13
"__id__": 14
},
{
"__id__": 15
"__id__": 16
},
{
"__id__": 17
"__id__": 18
},
{
"__id__": 19
"__id__": 20
}
],
"_prefab": {
"__id__": 21
"__id__": 22
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -261,11 +274,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 12
"__id__": 13
},
"_contentSize": {
"__type__": "cc.Size",
@@ -289,11 +302,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 14
"__id__": 15
},
"_id": ""
},
@@ -307,11 +320,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 16
"__id__": 17
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -355,11 +368,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 18
"__id__": 19
},
"playOnLoad": true,
"_clips": [
@@ -397,11 +410,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 20
"__id__": 21
},
"hitFlashMaterial": {
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
@@ -449,14 +462,14 @@
"__id__": 1
},
"_prefab": {
"__id__": 23
"__id__": 24
},
"__editorExtras__": {}
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 22
"__id__": 23
},
"asset": {
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
@@ -464,7 +477,7 @@
},
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
"instance": {
"__id__": 24
"__id__": 25
},
"targetOverrides": null
},
@@ -478,10 +491,7 @@
"mountedComponents": [],
"propertyOverrides": [
{
"__id__": 25
},
{
"__id__": 27
"__id__": 26
},
{
"__id__": 28
@@ -496,7 +506,10 @@
"__id__": 31
},
{
"__id__": 33
"__id__": 32
},
{
"__id__": 34
}
],
"removedComponents": []
@@ -504,7 +517,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_name"
@@ -520,7 +533,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_lpos"
@@ -535,7 +548,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_lrot"
@@ -551,7 +564,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_euler"
@@ -566,7 +579,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_active"
@@ -576,7 +589,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 32
"__id__": 33
},
"propertyPath": [
"_contentSize"
@@ -596,7 +609,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_lscale"
@@ -615,14 +628,14 @@
"__id__": 1
},
"_prefab": {
"__id__": 35
"__id__": 36
},
"__editorExtras__": {}
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 34
"__id__": 35
},
"asset": {
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
@@ -630,7 +643,7 @@
},
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
"instance": {
"__id__": 36
"__id__": 37
},
"targetOverrides": null
},
@@ -644,10 +657,7 @@
"mountedComponents": [],
"propertyOverrides": [
{
"__id__": 37
},
{
"__id__": 39
"__id__": 38
},
{
"__id__": 40
@@ -659,7 +669,10 @@
"__id__": 42
},
{
"__id__": 44
"__id__": 43
},
{
"__id__": 45
}
],
"removedComponents": []
@@ -667,7 +680,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_name"
@@ -683,7 +696,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_lpos"
@@ -698,7 +711,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_lrot"
@@ -714,7 +727,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_euler"
@@ -729,7 +742,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 43
"__id__": 44
},
"propertyPath": [
"_lpos"
@@ -750,7 +763,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_lscale"
@@ -772,7 +785,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 46
"__id__": 47
},
"_contentSize": {
"__type__": "cc.Size",
@@ -800,10 +813,10 @@
},
"_enabled": true,
"__prefab": {
"__id__": 48
"__id__": 49
},
"anm": {
"__id__": 13
"__id__": 14
},
"_id": ""
},
@@ -821,7 +834,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 50
"__id__": 51
},
"debugMode": false,
"_id": ""
@@ -840,7 +853,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 52
"__id__": 53
},
"enabledContactListener": true,
"bullet": false,
@@ -874,7 +887,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 54
"__id__": 55
},
"tag": 0,
"_group": 4,
@@ -908,7 +921,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 56
"__id__": 57
},
"playOnLoad": false,
"_clips": [],
@@ -932,10 +945,10 @@
"targetOverrides": null,
"nestedPrefabInstanceRoots": [
{
"__id__": 34
"__id__": 35
},
{
"__id__": 22
"__id__": 23
},
{
"__id__": 2

View File

@@ -22,35 +22,35 @@
"__id__": 2
},
{
"__id__": 10
"__id__": 11
},
{
"__id__": 22
"__id__": 23
},
{
"__id__": 34
"__id__": 35
}
],
"_active": true,
"_components": [
{
"__id__": 45
"__id__": 46
},
{
"__id__": 47
"__id__": 48
},
{
"__id__": 49
"__id__": 50
},
{
"__id__": 51
"__id__": 52
},
{
"__id__": 53
"__id__": 54
}
],
"_prefab": {
"__id__": 55
"__id__": 56
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -127,6 +127,9 @@
},
{
"__id__": 9
},
{
"__id__": 10
}
],
"removedComponents": []
@@ -193,6 +196,16 @@
"z": 0
}
},
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 6
},
"propertyPath": [
"_active"
],
"value": false
},
{
"__type__": "cc.Node",
"_name": "anm",
@@ -205,23 +218,23 @@
"_active": true,
"_components": [
{
"__id__": 11
"__id__": 12
},
{
"__id__": 13
"__id__": 14
},
{
"__id__": 15
"__id__": 16
},
{
"__id__": 17
"__id__": 18
},
{
"__id__": 19
"__id__": 20
}
],
"_prefab": {
"__id__": 21
"__id__": 22
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -258,11 +271,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 12
"__id__": 13
},
"_contentSize": {
"__type__": "cc.Size",
@@ -286,11 +299,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 14
"__id__": 15
},
"_id": ""
},
@@ -304,11 +317,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 16
"__id__": 17
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -352,11 +365,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 18
"__id__": 19
},
"hitFlashMaterial": {
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
@@ -390,11 +403,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 20
"__id__": 21
},
"playOnLoad": false,
"_clips": [
@@ -446,14 +459,14 @@
"__id__": 1
},
"_prefab": {
"__id__": 23
"__id__": 24
},
"__editorExtras__": {}
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 22
"__id__": 23
},
"asset": {
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
@@ -461,7 +474,7 @@
},
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
"instance": {
"__id__": 24
"__id__": 25
},
"targetOverrides": null
},
@@ -475,10 +488,7 @@
"mountedComponents": [],
"propertyOverrides": [
{
"__id__": 25
},
{
"__id__": 27
"__id__": 26
},
{
"__id__": 28
@@ -493,7 +503,10 @@
"__id__": 31
},
{
"__id__": 33
"__id__": 32
},
{
"__id__": 34
}
],
"removedComponents": []
@@ -501,7 +514,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_name"
@@ -517,7 +530,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_lpos"
@@ -532,7 +545,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_lrot"
@@ -548,7 +561,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_euler"
@@ -563,7 +576,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_active"
@@ -573,7 +586,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 32
"__id__": 33
},
"propertyPath": [
"_contentSize"
@@ -593,7 +606,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_lscale"
@@ -612,14 +625,14 @@
"__id__": 1
},
"_prefab": {
"__id__": 35
"__id__": 36
},
"__editorExtras__": {}
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 34
"__id__": 35
},
"asset": {
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
@@ -627,7 +640,7 @@
},
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
"instance": {
"__id__": 36
"__id__": 37
},
"targetOverrides": null
},
@@ -641,10 +654,7 @@
"mountedComponents": [],
"propertyOverrides": [
{
"__id__": 37
},
{
"__id__": 39
"__id__": 38
},
{
"__id__": 40
@@ -656,7 +666,10 @@
"__id__": 42
},
{
"__id__": 44
"__id__": 43
},
{
"__id__": 45
}
],
"removedComponents": []
@@ -664,7 +677,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_name"
@@ -680,7 +693,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_lpos"
@@ -695,7 +708,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_lrot"
@@ -711,7 +724,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_euler"
@@ -726,7 +739,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 43
"__id__": 44
},
"propertyPath": [
"_lpos"
@@ -747,7 +760,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_lscale"
@@ -769,7 +782,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 46
"__id__": 47
},
"_contentSize": {
"__type__": "cc.Size",
@@ -797,10 +810,10 @@
},
"_enabled": true,
"__prefab": {
"__id__": 48
"__id__": 49
},
"anm": {
"__id__": 13
"__id__": 14
},
"_id": ""
},
@@ -818,7 +831,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 50
"__id__": 51
},
"debugMode": false,
"_id": ""
@@ -837,7 +850,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 52
"__id__": 53
},
"enabledContactListener": true,
"bullet": false,
@@ -871,7 +884,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 54
"__id__": 55
},
"tag": 0,
"_group": 4,
@@ -908,10 +921,10 @@
"targetOverrides": null,
"nestedPrefabInstanceRoots": [
{
"__id__": 34
"__id__": 35
},
{
"__id__": 22
"__id__": 23
},
{
"__id__": 2

View File

@@ -22,38 +22,38 @@
"__id__": 2
},
{
"__id__": 10
"__id__": 11
},
{
"__id__": 22
"__id__": 23
},
{
"__id__": 34
"__id__": 35
}
],
"_active": true,
"_components": [
{
"__id__": 45
"__id__": 46
},
{
"__id__": 47
"__id__": 48
},
{
"__id__": 49
"__id__": 50
},
{
"__id__": 51
"__id__": 52
},
{
"__id__": 53
"__id__": 54
},
{
"__id__": 55
"__id__": 56
}
],
"_prefab": {
"__id__": 57
"__id__": 58
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -130,6 +130,9 @@
},
{
"__id__": 9
},
{
"__id__": 10
}
],
"removedComponents": []
@@ -196,6 +199,16 @@
"z": 0
}
},
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 6
},
"propertyPath": [
"_active"
],
"value": false
},
{
"__type__": "cc.Node",
"_name": "anm",
@@ -208,23 +221,23 @@
"_active": true,
"_components": [
{
"__id__": 11
"__id__": 12
},
{
"__id__": 13
"__id__": 14
},
{
"__id__": 15
"__id__": 16
},
{
"__id__": 17
"__id__": 18
},
{
"__id__": 19
"__id__": 20
}
],
"_prefab": {
"__id__": 21
"__id__": 22
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -261,11 +274,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 12
"__id__": 13
},
"_contentSize": {
"__type__": "cc.Size",
@@ -289,11 +302,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 14
"__id__": 15
},
"_id": ""
},
@@ -307,11 +320,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 16
"__id__": 17
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -355,11 +368,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 18
"__id__": 19
},
"hitFlashMaterial": {
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
@@ -393,11 +406,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 20
"__id__": 21
},
"playOnLoad": false,
"_clips": [
@@ -452,14 +465,14 @@
"__id__": 1
},
"_prefab": {
"__id__": 23
"__id__": 24
},
"__editorExtras__": {}
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 22
"__id__": 23
},
"asset": {
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
@@ -467,7 +480,7 @@
},
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
"instance": {
"__id__": 24
"__id__": 25
},
"targetOverrides": null
},
@@ -481,10 +494,7 @@
"mountedComponents": [],
"propertyOverrides": [
{
"__id__": 25
},
{
"__id__": 27
"__id__": 26
},
{
"__id__": 28
@@ -499,7 +509,10 @@
"__id__": 31
},
{
"__id__": 33
"__id__": 32
},
{
"__id__": 34
}
],
"removedComponents": []
@@ -507,7 +520,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_name"
@@ -523,7 +536,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_lpos"
@@ -538,7 +551,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_lrot"
@@ -554,7 +567,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_euler"
@@ -569,7 +582,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_active"
@@ -579,7 +592,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 32
"__id__": 33
},
"propertyPath": [
"_contentSize"
@@ -599,7 +612,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 26
"__id__": 27
},
"propertyPath": [
"_lscale"
@@ -618,14 +631,14 @@
"__id__": 1
},
"_prefab": {
"__id__": 35
"__id__": 36
},
"__editorExtras__": {}
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 34
"__id__": 35
},
"asset": {
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
@@ -633,7 +646,7 @@
},
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
"instance": {
"__id__": 36
"__id__": 37
},
"targetOverrides": null
},
@@ -647,10 +660,7 @@
"mountedComponents": [],
"propertyOverrides": [
{
"__id__": 37
},
{
"__id__": 39
"__id__": 38
},
{
"__id__": 40
@@ -662,7 +672,10 @@
"__id__": 42
},
{
"__id__": 44
"__id__": 43
},
{
"__id__": 45
}
],
"removedComponents": []
@@ -670,7 +683,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_name"
@@ -686,7 +699,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_lpos"
@@ -701,7 +714,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_lrot"
@@ -717,7 +730,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_euler"
@@ -732,7 +745,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 43
"__id__": 44
},
"propertyPath": [
"_lpos"
@@ -753,7 +766,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
"__id__": 38
"__id__": 39
},
"propertyPath": [
"_lscale"
@@ -775,7 +788,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 46
"__id__": 47
},
"_contentSize": {
"__type__": "cc.Size",
@@ -803,10 +816,10 @@
},
"_enabled": true,
"__prefab": {
"__id__": 48
"__id__": 49
},
"anm": {
"__id__": 13
"__id__": 14
},
"_id": ""
},
@@ -824,7 +837,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 50
"__id__": 51
},
"debugMode": false,
"_id": ""
@@ -843,7 +856,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 52
"__id__": 53
},
"enabledContactListener": true,
"bullet": false,
@@ -877,7 +890,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 54
"__id__": 55
},
"tag": 0,
"_group": 4,
@@ -911,7 +924,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 56
"__id__": 57
},
"playOnLoad": false,
"_clips": [],
@@ -935,10 +948,10 @@
"targetOverrides": null,
"nestedPrefabInstanceRoots": [
{
"__id__": 34
"__id__": 35
},
{
"__id__": 22
"__id__": 23
},
{
"__id__": 2

View File

@@ -2474,7 +2474,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 248.281,
"y": 270,
"z": 0
},
"_lrot": {
@@ -2515,7 +2515,7 @@
"_contentSize": {
"__type__": "cc.Size",
"width": 960,
"height": 300
"height": 250
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@@ -2590,7 +2590,7 @@
"_left": 0,
"_right": 0,
"_top": 0,
"_bottom": 298.281,
"_bottom": 320,
"_horizontalCenter": 0,
"_verticalCenter": 0,
"_isAbsLeft": true,
@@ -2618,8 +2618,6 @@
"__id__": 0
},
"fileId": "6bE0ieRMBGyYHdxvuJ03FA",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
@@ -2646,7 +2644,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": -175,
"y": -140.171,
"z": 0
},
"_lrot": {
@@ -3326,7 +3324,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": -29.999,
"y": 331.804,
"y": 349.544,
"z": 0
},
"_lrot": {
@@ -3434,8 +3432,6 @@
"__id__": 0
},
"fileId": "256TxMVzhHQopA08O7v8nq",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
@@ -3475,8 +3471,6 @@
"__id__": 0
},
"fileId": "5dWwAe3IFHRJuoSicXBEs8",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
@@ -3572,7 +3566,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 248.281,
"y": 270,
"z": 0
},
"_lrot": {
@@ -3613,7 +3607,7 @@
"_contentSize": {
"__type__": "cc.Size",
"width": 960,
"height": 300
"height": 250
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@@ -3688,7 +3682,7 @@
"_left": 0,
"_right": 0,
"_top": 0,
"_bottom": 298.281,
"_bottom": 320,
"_horizontalCenter": 0,
"_verticalCenter": 0,
"_isAbsLeft": true,
@@ -3716,8 +3710,6 @@
"__id__": 0
},
"fileId": "b9zLdCeJlE5pPiK++dLgBX",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
@@ -3744,7 +3736,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": -175,
"y": -140.171,
"z": 0
},
"_lrot": {
@@ -4288,7 +4280,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": -29.999,
"y": 331.804,
"y": 349.544,
"z": 0
},
"_lrot": {
@@ -4396,8 +4388,6 @@
"__id__": 0
},
"fileId": "9d2p/canpFGof2O/w8JyTj",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
@@ -4437,8 +4427,6 @@
"__id__": 0
},
"fileId": "6bkL20JyRDOI6ycVYKl/ie",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
@@ -4507,8 +4495,6 @@
"__id__": 0
},
"fileId": "14GnCNU65BbJPIzLWE/Oiz",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
@@ -7377,8 +7363,6 @@
"__id__": 0
},
"fileId": "c4IqMKgXNExa5w4EAciRxE",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
@@ -8909,8 +8893,6 @@
"__id__": 0
},
"fileId": "35iAcUUYpE8akTtTCX1ITo",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
@@ -8950,8 +8932,6 @@
"__id__": 0
},
"fileId": "68Q5vEQWBINrggngtTZ7wh",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{

File diff suppressed because it is too large Load Diff

View File

@@ -300,10 +300,10 @@
"height": 63,
"rawWidth": 54,
"rawHeight": 63,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"borderTop": 30,
"borderBottom": 33,
"borderLeft": 27,
"borderRight": 27,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,

View File

@@ -1,4 +1,4 @@
/**
/**
* @file HeroSkillDesc.ts
* @description 英雄技能/能力描述的【唯一文字表达标准层】
*
@@ -91,8 +91,21 @@ const ATTR_NAME: Partial<Record<Attrs, string>> = {
/** 富文本数值高亮色(鲜亮绿色,深色面板上高亮醒目) */
const RICH_VALUE_COLOR = "#3CE66E";
/** 富文本技能名高亮色(蓝色,与数值绿色区分,标识技能名「」片段 */
const RICH_NAME_COLOR = "#2E86C1";
/** 富文本技能名高亮色(蜜桃橙,暖色系,与面板绿/蓝/红/黄/紫均不冲突 */
const RICH_NAME_COLOR = "#F8C471";
/** 技能名描边色(深褐,衬托蜜桃橙填充,深色面板上温馨醒目) */
const RICH_NAME_OUTLINE = "#6E2C00";
/**
* 技能名富文本片段:[技能名]整体蜜桃橙填充 + 深褐描边(含方括号)。
* 括号与技能名同色同描边,正文/数值不描边,突出技能名视觉层级。
* @param name 技能名(纯文本,不含括号)
* @returns <outline><color>[技能名]</color></outline> 富文本片段
*/
function skillNameRich(name: string): string {
return `<outline color=${RICH_NAME_OUTLINE} width=1><color=${RICH_NAME_COLOR}>[${name}]</color></outline>`;
}
/** 富文本未激活档位整行灰色(低饱和,深色面板上可读但明显弱化) */
const RICH_LOCKED_COLOR = "#95A5A6";
@@ -100,9 +113,6 @@ const RICH_LOCKED_COLOR = "#95A5A6";
/** 技能名「」匹配模式(仅本模块行首/行中技能名片段使用) */
const SKILL_NAME_PATTERN = /「([^」]*)」/g;
/** 技能等级罗马数字徽章(索引 = 技能等级 1~5用于技能名后的品质感等级标识 */
const SKILL_LV_BADGE = ["", "", "Ⅱ", "Ⅲ", "Ⅳ", ""];
/** "持续X秒"匹配模式(卡片描述后处理:把持续时间数值也高亮) */
const DURATION_PATTERN = /持续(\d+)秒/g;
@@ -210,12 +220,13 @@ function buildEffectLine(head: string, skill: SkillConfig): ISkillLine {
* 为 key 查标准动词,数值按 fmt比例/整数/减免)从 value 实时渲染。
*
* @param showName 是否在行中包含「技能名」片段(英雄面板需要,装备商店不需要)
* @param nameOverride 技能名覆盖(英雄语境传入 heroSet 语境专属命名,缺省用 FieldSkillSet 通用名)
*/
function buildFieldLine(head: string, uuid: number, showName: boolean = true): ISkillLine | null {
function buildFieldLine(head: string, uuid: number, showName: boolean = true, nameOverride?: string): ISkillLine | null {
const fs = FieldSkillSet[uuid];
if (!fs) return null;
const desc = FieldDescSet[fs.type];
const nameSeg = showName ? `${fs.name}` : "";
const nameSeg = showName ? `${nameOverride ?? fs.name}` : "";
// 未入表类型回退基础备注 info整行不高亮
if (!desc) return { prefix: `${head}${nameSeg}${fs.info}`, value: "", suffix: "" };
@@ -257,7 +268,7 @@ function buildReviveLines(source: ISkillDescSource, showName: boolean = true, sh
const nameSeg = showName ? `${base.name}` : "";
// 高亮片段选回血百分比(数值中最关键的收益指标)
return {
prefix: `${head}${nameSeg}可复活${maxCount}每次恢复`,
prefix: `${head}${nameSeg}可复活${maxCount}, 每次恢复`,
value: `${hpPct}%`,
suffix: "生命",
locked,
@@ -475,11 +486,11 @@ export function buildSingleSkillRich(skillUuid: number, overrides?: SkillOverrid
// SkillConfig 未定义 cd 字段,冷却时间由外部运行时数据传入;计时模式展示持续时间
const dur = skill.buff_duration ?? (skill.timed_buff_id !== undefined ? BuffList[skill.timed_buff_id]?.duration : undefined) ?? 0;
const cdTag = dur > 0 ? `<color=${RICH_VALUE_COLOR}>持续:${dur}s</color>` : "";
const nameTag = `「<color=${RICH_NAME_COLOR}>${skill.name}</color>」 Lv.${lv}`;
const nameTag = `${skillNameRich(skill.name)} Lv.${lv}`;
// 复用结构化效果行head 为空避免重复触发类型前缀
const line = buildEffectLine("", skill);
const prefix = line.prefix.replace(SKILL_NAME_PATTERN, `「<color=${RICH_NAME_COLOR}>$1</color>」`);
const prefix = line.prefix.replace(SKILL_NAME_PATTERN, (m, g1) => skillNameRich(g1));
const effect = line.value
? `${prefix}<color=${RICH_VALUE_COLOR}>${line.value}</color>${line.suffix}`
: `${prefix}${line.suffix}`;
@@ -499,7 +510,7 @@ export function buildEquipRich(fieldUuids: number[], showName: boolean = false):
for (const uuid of fieldUuids) {
const line = buildFieldLine("", uuid, showName);
if (!line) continue;
const prefix = line.prefix.replace(SKILL_NAME_PATTERN, `「<color=${RICH_NAME_COLOR}>$1</color>」`);
const prefix = line.prefix.replace(SKILL_NAME_PATTERN, (m, g1) => skillNameRich(g1));
const text = line.value
? `${prefix}<color=${RICH_VALUE_COLOR}>${line.value}</color>${line.suffix}`
: `${prefix}${line.suffix}`;
@@ -527,7 +538,7 @@ export function buildSkillDescMoreRich(source: ISkillDescSource): string {
// 单条效果 → 富文本(技能名蓝色、数值绿色高亮、持续秒数高亮)
const effectRich = (line: ISkillLine): string => {
const prefix = line.prefix.replace(SKILL_NAME_PATTERN, `「<color=${RICH_NAME_COLOR}>$1</color>」`);
const prefix = line.prefix.replace(SKILL_NAME_PATTERN, (m, g1) => skillNameRich(g1));
const text = line.value
? `${prefix}<color=${RICH_VALUE_COLOR}>${line.value}</color>${line.suffix}`
: `${prefix}${line.suffix}`;
@@ -562,28 +573,29 @@ export function buildSkillDescMoreRich(source: ISkillDescSource): string {
const curTrig = needCount
? `${trigName}<color=${RICH_VALUE_COLOR}>${cur.t_num}</color>次`
: trigName;
// 技能名 + 罗马数字等级徽章(如 "不屈壁垒"等级徽标随技能名一并蓝色高亮
const badge = SKILL_LV_BADGE[curSLv] ?? `${curSLv}`;
const curHead = `${skillName}${badge}」: ${curTrig}`;
// 技能名 + 档位数字后缀(如 "不屈壁垒1"与光环命名口径一致
const curHead = `${skillName}${curSLv}」: ${curTrig}, `;
lines.push(effectRich(buildEffectLine(curHead, mergeSkillParams(base, cur.overrides))));
}
}
// 驻场光环field
// 驻场光环field:技能名按档位带数字后缀(如 [攻击光环1]/[攻击光环2]),便于玩家识别成长
const fieldEntries = source[SkillTriggerType.Field] as LvFieldEntry[] | undefined;
if (fieldEntries?.length) {
const tpl = SkillTriggerName[SkillTriggerType.Field] ?? "光环";
for (const uuid of resolveFieldByLv(fieldEntries, lv)) {
const line = buildFieldLine(`${tpl}: `, uuid, true);
// uuid 百位编码档位7002 基础(0)=1、7202 +(2)=2、7402 ++(4)=3
const tier = Math.floor((uuid % 1000) / 100) / 2 + 1;
const baseName = getTriggerSkillName(SkillTriggerType.Field, uuid);
const line = buildFieldLine("", uuid, true, `${baseName}${tier}`);
if (line) lines.push(effectRich(line));
}
}
// 复活revive
// 重生revive:每回合拥有 N 次重生机会,死亡后以 X% 血量原地重生
const revive = resolveReviveByLv(source[SkillTriggerType.Revive] as LvReviveEntry[] | undefined, lv);
if (revive) {
const reviveName = getTriggerSkillName(SkillTriggerType.Revive, revive.s_uuid);
lines.push(`<color=${RICH_NAME_COLOR}>${reviveName}</color>」: 死亡后以<color=${RICH_VALUE_COLOR}>${Math.round(revive.upr * 100)}%</color>血量复活<color=${RICH_VALUE_COLOR}>${revive.r_num}</color>次`);
lines.push(`${skillNameRich(reviveName)}: 每回合拥有<color=${RICH_VALUE_COLOR}>${revive.r_num}</color>次重生机会, 死亡后以<color=${RICH_VALUE_COLOR}>${Math.round(revive.upr * 100)}%</color>血量原地重生`);
}
return lines.join("\n");
@@ -605,7 +617,7 @@ function highlightDuration(text: string): string {
*/
function renderLineRich(line: ISkillLine): string {
if (line.locked) return `<color=${RICH_LOCKED_COLOR}>${line.prefix}${line.value}${line.suffix}</color>`;
const prefix = line.prefix.replace(SKILL_NAME_PATTERN, `「<color=${RICH_NAME_COLOR}>$1</color>」`);
const prefix = line.prefix.replace(SKILL_NAME_PATTERN, (m, g1) => skillNameRich(g1));
// 未来档数值灰色追加在当前高亮数值后("15%/20%/30%"suffix 仍位于整段数值之后
const next = line.nextValues?.length ? `<color=${RICH_LOCKED_COLOR}>/${line.nextValues.join("/")}</color>` : "";
return line.value
@@ -674,9 +686,9 @@ export function buildCardDescRich(card: CardConfig): string {
return rich;
}
const rhythm = `每<color=${RICH_VALUE_COLOR}>${tInv}</color>秒召唤<color=${RICH_VALUE_COLOR}>${(card.overrides?.num ?? 0) + 1}</color>个「<color=${RICH_NAME_COLOR}>${skill.name}</color>」攻击敌人`;
const times = `共<color=${RICH_VALUE_COLOR}>${tTimes}</color>次`;
return `${rhythm}${rich}${times}`;
const rhythm = `每<color=${RICH_VALUE_COLOR}>${tInv}</color>秒召唤<color=${RICH_VALUE_COLOR}>${(card.overrides?.num ?? 0) + 1}</color>个${skillNameRich(skill.name)}攻击敌人`;
const times = `, 共<color=${RICH_VALUE_COLOR}>${tTimes}</color>次`;
return `${rhythm}, ${rich}${times}`;
}
return card.info || "";

View File

@@ -60,39 +60,39 @@ export const SkillDescSet: Record<number, SkillDescConfig> = {
// 6401 攻击强化:永久 ap=攻击点;计时 buff_value=攻击点
6401: {
verb: "攻击力", unit: "", permField: "ap", timedField: "buff_value",
templPerm: "{target}{verb}+{value}",
templTimed: "{target}{verb}+{value}持续{dur}秒",
templPerm: "{target}{verb}永久+{value}",
templTimed: "{target}{verb}+{value}, 持续{dur}秒",
},
// 6402 生命强化ap = 最大生命点
6402: {
verb: "最大生命", unit: "", permField: "ap",
templPerm: "{target}{verb}+{value}",
templPerm: "{target}{verb}永久+{value}",
},
// 6403 暴击强化:永久 ap=暴击%;计时 buff_value=暴击%
6403: {
verb: "暴击率", unit: "%", permField: "ap", timedField: "buff_value",
templPerm: "{target}{verb}+{value}{unit}",
templTimed: "{target}{verb}+{value}{unit}持续{dur}秒",
templPerm: "{target}{verb}永久+{value}{unit}",
templTimed: "{target}{verb}+{value}{unit}, 持续{dur}秒",
},
// 6404 暴伤强化ap = 暴击伤害%
6404: {
verb: "暴击伤害", unit: "%", permField: "ap",
templPerm: "{target}{verb}+{value}{unit}",
templPerm: "{target}{verb}永久+{value}{unit}",
},
// 6405 击晕强化ap = 击晕概率%
6405: {
verb: "击晕概率", unit: "%", permField: "ap",
templPerm: "{target}{verb}+{value}{unit}",
templPerm: "{target}{verb}永久+{value}{unit}",
},
// 6408 穿刺强化ap = 穿刺概率%
6408: {
verb: "穿刺概率", unit: "%", permField: "ap",
templPerm: "{target}{verb}+{value}{unit}",
templPerm: "{target}{verb}永久+{value}{unit}",
},
// 6409 风怒强化ap = 风怒次数
6409: {
verb: "风怒次数", unit: "次", permField: "ap",
templPerm: "{target}{verb}+{value}{unit}",
templPerm: "{target}{verb}永久+{value}{unit}",
},
// 6501 复活ap = 复活生命值百分比
6501: {

View File

@@ -1,4 +1,4 @@
// ========== 从 HeroAttrs.ts 导入属性相关定义 ==========
// ========== 从 HeroAttrs.ts 导入属性相关定义 ==========
import { Attrs } from "./HeroAttrs";
export enum HSSet {
@@ -303,25 +303,25 @@ export const SkillSet: Record<number, SkillConfig> = {
6101: {
uuid: 6101, name: "火球", sp_name: "fb-1", icon: "Stat_FireDamage", TGroup: TGroup.Enemy, readyAnm: "", endAnm: "", act: "atk",
DTType: DTType.single, stun: 0, ap: 100, hit_count: 2, hitcd: 0.3, speed: 720, with: 90, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote,
RType: RType.linear, EType: EType.collision, info: "造成攻击力100%的伤害,一定几率暴击高阶技能",
RType: RType.linear, EType: EType.collision, info: "造成攻击力100%的伤害, 一定几率暴击, 高阶技能",
},
//怪物法师统一使用 暗影球
6102: {
uuid: 6102, name: "飓风", sp_name: "fb-2", icon: "Stat_Mana", TGroup: TGroup.Enemy, readyAnm: "", endAnm: "", act: "atk",
DTType: DTType.single, ap: 100, hit_count: 2, hitcd: 0.3, speed: 720, with: 90, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote,
RType: RType.linear, EType: EType.collision, info: "造成攻击力100%的伤害高阶技能",
RType: RType.linear, EType: EType.collision, info: "造成攻击力100%的伤害, 高阶技能",
},
6201: {
uuid: 6201, name: "陨石术", sp_name: "fb-3", icon: "Stat_Tripleshot", TGroup: TGroup.Enemy, readyAnm: "blues", endAnm: "", act: "max",
DTType: DTType.aoe_grid, stun: 0, ap: 150, hit_count: 6, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote,
RType: RType.fixed, EType: EType.animationEnd, info: "召唤陨石范围攻击敌人有概率击晕",
RType: RType.fixed, EType: EType.animationEnd, info: "召唤陨石范围攻击敌人, 有概率击晕",
},
//============================= ====== 辅助技能 技能卡牌 1 回合技能 ====== ==========================
6301: {
uuid: 6301, name: "护盾", sp_name: "buff_wind", icon: "Stat_Defense", TGroup: TGroup.Self, readyAnm: "up_blue", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Shield, ap: 3, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, info: "为伙伴/自己添加护盾可抵挡3次伤害",
RType: RType.fixed, EType: EType.animationEnd, info: "为伙伴/自己添加护盾, 可抵挡3次伤害",
},
6302: {
uuid: 6302, name: "治疗", sp_name: "buff_wind", icon: "Stat_Hp_01", TGroup: TGroup.Team, readyAnm: "up_green", endAnm: "", act: "atk",
@@ -338,32 +338,32 @@ export const SkillSet: Record<number, SkillConfig> = {
6401: {
uuid: 6401, name: "攻击强化", sp_name: "buff_wind", icon: "Stat_Attack_03", TGroup: TGroup.Team, readyAnm: "up_ap", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 5, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.ap, info: "全体友方攻击力提升5点持续1次",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.ap, info: "全体友方攻击力提升5点, 持续1次",
},
6402: {
uuid: 6402, name: "生命强化", sp_name: "buff_wind", icon: "Stat_Hp_02", TGroup: TGroup.Team, readyAnm: "up_hp", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 20, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.hp_max, info: "全体友方最大生命值提升20点持续1次",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.hp_max, info: "全体友方最大生命值提升20点, 持续1次",
},
6403: {
uuid: 6403, name: "暴击强化", sp_name: "buff_wind", icon: "Stat_CriticalChance_02", TGroup: TGroup.Team, readyAnm: "up_ap", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 1, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.critical, timed_buff_id: 7012, info: "全体友方暴击率限时提升持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.critical, timed_buff_id: 7012, info: "全体友方暴击率限时提升, 持续5秒",
},
6404: {
uuid: 6404, name: "暴伤强化", sp_name: "buff_wind", icon: "Stat_Critical_01", TGroup: TGroup.Team, readyAnm: "up_ap", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 1, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.critical_damage, timed_buff_id: 7020, info: "全体友方暴击伤害限时提升持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.critical_damage, timed_buff_id: 7020, info: "全体友方暴击伤害限时提升, 持续5秒",
},
6405: {
uuid: 6405, name: "击晕强化", sp_name: "buff_wind", icon: "Stat_Stun_01", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 1, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.stun_chance, timed_buff_id: 7017, info: "全体友方击晕概率限时提升持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.stun_chance, timed_buff_id: 7017, info: "全体友方击晕概率限时提升, 持续5秒",
},
6406: {
uuid: 6406, name: "击退强化", sp_name: "buff_wind", icon: "Stat_Stun_01", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 1, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.knockback_chance, timed_buff_id: 7013, info: "全体友方击退概率限时提升持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.knockback_chance, timed_buff_id: 7013, info: "全体友方击退概率限时提升, 持续5秒",
},
6407: {
uuid: 6407, name: "距推强化", sp_name: "buff_wind", icon: "Stat_Stun_01", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
@@ -373,17 +373,17 @@ export const SkillSet: Record<number, SkillConfig> = {
6408: {
uuid: 6408, name: "穿刺强化", sp_name: "buff_wind", icon: "Stat_Tripleshot", TGroup: TGroup.Team, readyAnm: "up_ap", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 20, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.puncture_chance, timed_buff_id: 7014, info: "全体友方穿透概率限时提升持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.puncture_chance, timed_buff_id: 7014, info: "全体友方穿透概率限时提升, 持续5秒",
},
6409: {
uuid: 6409, name: "风怒强化", sp_name: "buff_wind", icon: "Stat_CriticalComboChance", TGroup: TGroup.Team, readyAnm: "up_ap", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 1, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.wfuny, timed_buff_id: 7016, info: "全体友方风怒概率限时提升持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.wfuny, timed_buff_id: 7016, info: "全体友方风怒概率限时提升, 持续5秒",
},
6410: {
uuid: 6410, name: "冰冻强化", sp_name: "buff_wind", icon: "Stat_Freeze", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 1, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.freeze_chance, timed_buff_id: 7021, info: "全体友方冰冻概率限时提升持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.freeze_chance, timed_buff_id: 7021, info: "全体友方冰冻概率限时提升, 持续5秒",
},
6501: {
uuid: 6501, name: "复活", sp_name: "buff_wind", icon: "Stat_HolyDamage", TGroup: TGroup.Self, readyAnm: "up_ap", endAnm: "", act: "atk",
@@ -396,52 +396,52 @@ export const SkillSet: Record<number, SkillConfig> = {
6502: {
uuid: 6502, name: "计时回血", sp_name: "buff_wind", icon: "Stat_PotionBoost", TGroup: TGroup.Team, readyAnm: "up_green", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 0, hit_count: 3, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.hp, timed_buff_id: 7010, info: "全体友方每秒回复生命持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.hp, timed_buff_id: 7010, info: "全体友方每秒回复生命, 持续5秒",
},
6503: {
uuid: 6503, name: "攻击爆发", sp_name: "buff_wind", icon: "Stat_Attack_03", TGroup: TGroup.Team, readyAnm: "up_ap", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 0, hit_count: 3, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.ap, timed_buff_id: 7011, info: "全体友方攻击力提升50%持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.ap, timed_buff_id: 7011, info: "全体友方攻击力提升50%, 持续5秒",
},
6504: {
uuid: 6504, name: "暴击爆发", sp_name: "buff_wind", icon: "Stat_CriticalChance_02", TGroup: TGroup.Team, readyAnm: "up_ap", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 0, hit_count: 3, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.critical, timed_buff_id: 7012, info: "全体友方暴击率提升30%持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.critical, timed_buff_id: 7012, info: "全体友方暴击率提升30%, 持续5秒",
},
6505: {
uuid: 6505, name: "击退爆发", sp_name: "buff_wind", icon: "Stat_Stun_01", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 0, hit_count: 3, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.knockback_chance, timed_buff_id: 7013, info: "全体友方击退概率提升30%持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.knockback_chance, timed_buff_id: 7013, info: "全体友方击退概率提升30%, 持续5秒",
},
6506: {
uuid: 6506, name: "穿透爆发", sp_name: "buff_wind", icon: "Stat_Tripleshot", TGroup: TGroup.Team, readyAnm: "up_ap", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 0, hit_count: 3, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.puncture_chance, timed_buff_id: 7014, info: "全体友方穿透概率提升30%持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.puncture_chance, timed_buff_id: 7014, info: "全体友方穿透概率提升30%, 持续5秒",
},
6507: {
uuid: 6507, name: "攻速爆发", sp_name: "buff_wind", icon: "Stat_AttackSpeed_02", TGroup: TGroup.Team, readyAnm: "up_ap", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 0, hit_count: 3, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.speed, timed_buff_id: 7015, info: "全体友方攻击速度提升40%持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.speed, timed_buff_id: 7015, info: "全体友方攻击速度提升40%, 持续5秒",
},
6508: {
uuid: 6508, name: "风怒爆发", sp_name: "buff_wind", icon: "Stat_CriticalComboChance", TGroup: TGroup.Team, readyAnm: "up_ap", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 0, hit_count: 3, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.wfuny, timed_buff_id: 7016, info: "全体友方风怒概率提升20%持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.wfuny, timed_buff_id: 7016, info: "全体友方风怒概率提升20%, 持续5秒",
},
6509: {
uuid: 6509, name: "击晕爆发", sp_name: "buff_wind", icon: "Stat_Stun_01", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 0, hit_count: 3, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.stun_chance, timed_buff_id: 7017, info: "全体友方击晕概率提升30%持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.stun_chance, timed_buff_id: 7017, info: "全体友方击晕概率提升30%, 持续5秒",
},
6510: {
uuid: 6510, name: "击晕抗性", sp_name: "buff_wind", icon: "Stat_Armor_01", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 0, hit_count: 3, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.stun_res, timed_buff_id: 7018, info: "全体友方击晕抗性提升50%持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.stun_res, timed_buff_id: 7018, info: "全体友方击晕抗性提升50%, 持续5秒",
},
6511: {
uuid: 6511, name: "冰冻抗性", sp_name: "buff_wind", icon: "Stat_Freeze", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 0, hit_count: 3, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.freeze_res, timed_buff_id: 7019, info: "全体友方冰冻抗性提升50%持续5秒",
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.freeze_res, timed_buff_id: 7019, info: "全体友方冰冻抗性提升50%, 持续5秒",
}
};
@@ -455,15 +455,15 @@ export enum FieldSkillType {
SellGold = 6, // 卖出英雄金币提升
WaveHeal = 7, // 战斗结束生命回复量提升
HeroAtk = 8, // 英雄攻击力加成
HeroStun = 9, // 英雄击晕加成
HeroCrit = 10, // 英雄暴击加成
HeroStun = 9, // 英雄击晕光环
HeroCrit = 10, // 英雄暴击光环
HeroCritDamage = 11, // 英雄暴击伤害加成
HeroSpeed = 12, // 英雄攻击速度加成
// ---- 13~18 由 TalentSet 迁移而来,统一为驻场口径 ----
// 备注SellGold 已原生覆盖"出售返还"语义,故 TalentSet 中的 SellBonus 不再单独保留
BuyDiscount = 13, // 购买卡牌费用减免(金币)
RefreshDiscount = 14, // 刷新卡牌费用减免(金币)
HeroHp = 16, // 英雄最大生命加成
HeroHp = 16, // 英雄最大生命光环
HeroWindFury = 17, // 英雄风怒概率加成
HeroPuncture = 18, // 英雄穿刺概率加成
AtkCount = 19, // 攻击触发技能次数提升
@@ -483,14 +483,14 @@ export const FieldSkillSet: Record<number, FieldSkillConfig> = {
7001: { uuid: 7001, name: "战后恢复", icon: "Stat_PotionBoost", type: FieldSkillType.WaveHeal, value: 0.1, info: "战斗结束生命回复量+10%" },
7002: { uuid: 7002, name: "攻击加成", icon: "Stat_Attack_03", type: FieldSkillType.HeroAtk, value: 0.1, info: "英雄攻击力+10%" },
7003: { uuid: 7003, name: "击晕加成", icon: "Stat_Stun_01", type: FieldSkillType.HeroStun, value: 0.1, info: "英雄击晕概率+10%" },
7004: { uuid: 7004, name: "暴击加成", icon: "Stat_CriticalChance_02", type: FieldSkillType.HeroCrit, value: 0.1, info: "英雄暴击率+10%" },
7005: { uuid: 7005, name: "暴伤加成", icon: "Stat_Critical_01", type: FieldSkillType.HeroCritDamage, value: 0.2, info: "英雄暴击伤害+20%" },
7006: { uuid: 7006, name: "攻速加成", icon: "Stat_AttackSpeed_02", type: FieldSkillType.HeroSpeed, value: 0.1, info: "英雄攻击速度+10%" },
7007: { uuid: 7007, name: "生命加成", icon: "Stat_Hp_02", type: FieldSkillType.HeroHp, value: 0.1, info: "英雄最大生命+10%" },
7008: { uuid: 7008, name: "风怒加成", icon: "Stat_CriticalComboChance", type: FieldSkillType.HeroWindFury, value: 0.1, info: "英雄风怒概率+10%" },
7009: { uuid: 7009, name: "穿刺加成", icon: "Stat_Tripleshot", type: FieldSkillType.HeroPuncture, value: 0.1, info: "英雄穿刺概率+10%" },
7002: { uuid: 7002, name: "攻击光环", icon: "Stat_Attack_03", type: FieldSkillType.HeroAtk, value: 0.1, info: "英雄攻击力+10%" },
7003: { uuid: 7003, name: "击晕光环", icon: "Stat_Stun_01", type: FieldSkillType.HeroStun, value: 0.1, info: "英雄击晕概率+10%" },
7004: { uuid: 7004, name: "暴击光环", icon: "Stat_CriticalChance_02", type: FieldSkillType.HeroCrit, value: 0.1, info: "英雄暴击率+10%" },
7005: { uuid: 7005, name: "暴伤光环", icon: "Stat_Critical_01", type: FieldSkillType.HeroCritDamage, value: 0.2, info: "英雄暴击伤害+20%" },
7006: { uuid: 7006, name: "攻速光环", icon: "Stat_AttackSpeed_02", type: FieldSkillType.HeroSpeed, value: 0.1, info: "英雄攻击速度+10%" },
7007: { uuid: 7007, name: "生命光环", icon: "Stat_Hp_02", type: FieldSkillType.HeroHp, value: 0.1, info: "英雄最大生命+10%" },
7008: { uuid: 7008, name: "风怒光环", icon: "Stat_CriticalComboChance", type: FieldSkillType.HeroWindFury, value: 0.1, info: "英雄风怒概率+10%" },
7009: { uuid: 7009, name: "穿刺光环", icon: "Stat_Tripleshot", type: FieldSkillType.HeroPuncture, value: 0.1, info: "英雄穿刺概率+10%" },
7010: { uuid: 7010, name: "金币收益", icon: "Stat_InventorySlotIncrease", type: FieldSkillType.WaveGold, value: 1, info: "每回合金币收益+1" },
7011: { uuid: 7011, name: "出售强化", icon: "Stat_GoldGainIncrease_01", type: FieldSkillType.SellGold, value: 1, info: "卖出英雄金币+1" },
@@ -507,14 +507,14 @@ export const FieldSkillSet: Record<number, FieldSkillConfig> = {
// ============ wave5 档(原值 ×2 ============
7201: { uuid: 7201, name: "战后恢复+", icon: "Stat_PotionBoost", type: FieldSkillType.WaveHeal, value: 0.2, info: "战斗结束生命回复量+20%" },
7202: { uuid: 7202, name: "攻击加成+", icon: "Stat_Attack_03", type: FieldSkillType.HeroAtk, value: 0.2, info: "英雄攻击力+20%" },
7203: { uuid: 7203, name: "击晕加成+", icon: "Stat_Stun_01", type: FieldSkillType.HeroStun, value: 0.2, info: "英雄击晕概率+20%" },
7204: { uuid: 7204, name: "暴击加成+", icon: "Stat_CriticalChance_02", type: FieldSkillType.HeroCrit, value: 0.2, info: "英雄暴击率+20%" },
7205: { uuid: 7205, name: "暴伤加成+", icon: "Stat_Critical_01", type: FieldSkillType.HeroCritDamage, value: 0.4, info: "英雄暴击伤害+40%" },
7206: { uuid: 7206, name: "攻速加成+", icon: "Stat_AttackSpeed_02", type: FieldSkillType.HeroSpeed, value: 0.2, info: "英雄攻击速度+20%" },
7207: { uuid: 7207, name: "生命加成+", icon: "Stat_Hp_02", type: FieldSkillType.HeroHp, value: 0.2, info: "英雄最大生命+20%" },
7208: { uuid: 7208, name: "风怒加成+", icon: "Stat_CriticalComboChance", type: FieldSkillType.HeroWindFury, value: 0.2, info: "英雄风怒概率+20%" },
7209: { uuid: 7209, name: "穿刺加成+", icon: "Stat_Tripleshot", type: FieldSkillType.HeroPuncture, value: 0.2, info: "英雄穿刺概率+20%" },
7202: { uuid: 7202, name: "攻击光环+", icon: "Stat_Attack_03", type: FieldSkillType.HeroAtk, value: 0.2, info: "英雄攻击力+20%" },
7203: { uuid: 7203, name: "击晕光环+", icon: "Stat_Stun_01", type: FieldSkillType.HeroStun, value: 0.2, info: "英雄击晕概率+20%" },
7204: { uuid: 7204, name: "暴击光环+", icon: "Stat_CriticalChance_02", type: FieldSkillType.HeroCrit, value: 0.2, info: "英雄暴击率+20%" },
7205: { uuid: 7205, name: "暴伤光环+", icon: "Stat_Critical_01", type: FieldSkillType.HeroCritDamage, value: 0.4, info: "英雄暴击伤害+40%" },
7206: { uuid: 7206, name: "攻速光环+", icon: "Stat_AttackSpeed_02", type: FieldSkillType.HeroSpeed, value: 0.2, info: "英雄攻击速度+20%" },
7207: { uuid: 7207, name: "生命光环+", icon: "Stat_Hp_02", type: FieldSkillType.HeroHp, value: 0.2, info: "英雄最大生命+20%" },
7208: { uuid: 7208, name: "风怒光环+", icon: "Stat_CriticalComboChance", type: FieldSkillType.HeroWindFury, value: 0.2, info: "英雄风怒概率+20%" },
7209: { uuid: 7209, name: "穿刺光环+", icon: "Stat_Tripleshot", type: FieldSkillType.HeroPuncture, value: 0.2, info: "英雄穿刺概率+20%" },
7210: { uuid: 7210, name: "金币收益+", icon: "Stat_InventorySlotIncrease", type: FieldSkillType.WaveGold, value: 2, info: "每回合金币收益+2" },
@@ -525,14 +525,14 @@ export const FieldSkillSet: Record<number, FieldSkillConfig> = {
7401: { uuid: 7401, name: "战后恢复++", icon: "Stat_PotionBoost", type: FieldSkillType.WaveHeal, value: 0.3, info: "战斗结束生命回复量+30%" },
7402: { uuid: 7402, name: "攻击加成++", icon: "Stat_Attack_03", type: FieldSkillType.HeroAtk, value: 0.3, info: "英雄攻击力+30%" },
7403: { uuid: 7403, name: "击晕加成++", icon: "Stat_Stun_01", type: FieldSkillType.HeroStun, value: 0.3, info: "英雄击晕概率+30%" },
7404: { uuid: 7404, name: "暴击加成++", icon: "Stat_CriticalChance_02", type: FieldSkillType.HeroCrit, value: 0.3, info: "英雄暴击率+30%" },
7405: { uuid: 7405, name: "暴伤加成++", icon: "Stat_Critical_01", type: FieldSkillType.HeroCritDamage, value: 0.6, info: "英雄暴击伤害+60%" },
7406: { uuid: 7406, name: "攻速加成++", icon: "Stat_AttackSpeed_02", type: FieldSkillType.HeroSpeed, value: 0.3, info: "英雄攻击速度+30%" },
7407: { uuid: 7407, name: "生命加成++", icon: "Stat_Hp_02", type: FieldSkillType.HeroHp, value: 0.3, info: "英雄最大生命+30%" },
7408: { uuid: 7408, name: "风怒加成++", icon: "Stat_CriticalComboChance", type: FieldSkillType.HeroWindFury, value: 0.3, info: "英雄风怒概率+30%" },
7409: { uuid: 7409, name: "穿刺加成++", icon: "Stat_Tripleshot", type: FieldSkillType.HeroPuncture, value: 0.3, info: "英雄穿刺概率+30%" },
7402: { uuid: 7402, name: "攻击光环++", icon: "Stat_Attack_03", type: FieldSkillType.HeroAtk, value: 0.3, info: "英雄攻击力+30%" },
7403: { uuid: 7403, name: "击晕光环++", icon: "Stat_Stun_01", type: FieldSkillType.HeroStun, value: 0.3, info: "英雄击晕概率+30%" },
7404: { uuid: 7404, name: "暴击光环++", icon: "Stat_CriticalChance_02", type: FieldSkillType.HeroCrit, value: 0.3, info: "英雄暴击率+30%" },
7405: { uuid: 7405, name: "暴伤光环++", icon: "Stat_Critical_01", type: FieldSkillType.HeroCritDamage, value: 0.6, info: "英雄暴击伤害+60%" },
7406: { uuid: 7406, name: "攻速光环++", icon: "Stat_AttackSpeed_02", type: FieldSkillType.HeroSpeed, value: 0.3, info: "英雄攻击速度+30%" },
7407: { uuid: 7407, name: "生命光环++", icon: "Stat_Hp_02", type: FieldSkillType.HeroHp, value: 0.3, info: "英雄最大生命+30%" },
7408: { uuid: 7408, name: "风怒光环++", icon: "Stat_CriticalComboChance", type: FieldSkillType.HeroWindFury, value: 0.3, info: "英雄风怒概率+30%" },
7409: { uuid: 7409, name: "穿刺光环++", icon: "Stat_Tripleshot", type: FieldSkillType.HeroPuncture, value: 0.3, info: "英雄穿刺概率+30%" },
7410: { uuid: 7410, name: "金币收益++", icon: "Stat_InventorySlotIncrease", type: FieldSkillType.WaveGold, value: 3, info: "每回合金币收益+3" },

View File

@@ -197,6 +197,17 @@ export const TriggerSkillNameSet: Record<string, Record<number, string>> = {
[SkillTriggerType.Revive]: {
6501: "凤凰涅槃", // 死亡后原地复活
},
// 驻场光环field英雄语境专属命名名字直接带"光环"便于玩家理解
[SkillTriggerType.Field]: {
7002: "攻击光环", // 英雄攻击力提升
7003: "击晕光环", // 英雄击晕概率提升
7004: "暴击光环", // 英雄暴击率提升
7005: "暴伤光环", // 英雄暴击伤害提升
7006: "攻速光环", // 英雄攻击速度提升
7007: "生命光环", // 英雄最大生命提升
7008: "风怒光环", // 英雄风怒概率提升
7009: "穿刺光环", // 英雄穿刺概率提升
},
}
/**
@@ -206,7 +217,22 @@ export const TriggerSkillNameSet: Record<string, Record<number, string>> = {
* @returns 语境专属名称;未配置时回退 SkillSet 通用名称
*/
export function getTriggerSkillName(type: SkillTriggerType, s_uuid: number): string {
return TriggerSkillNameSet[type]?.[s_uuid] ?? SkillSet[s_uuid]?.name ?? "";
const group = TriggerSkillNameSet[type];
if (group) {
// 直接命中
const direct = group[s_uuid];
if (direct) return direct;
// 驻场光环 +/++ 档(如 7202/7402回退到基础档命名7002
if (type === SkillTriggerType.Field) {
const base = group[7000 + (s_uuid % 100)];
if (base) return base;
}
}
// 驻场光环 uuid 存于 FieldSkillSet触发技能存于 SkillSet分别兜底
if (type === SkillTriggerType.Field) {
return FieldSkillSet[s_uuid]?.name ?? "";
}
return SkillSet[s_uuid]?.name ?? "";
}
/**
@@ -654,7 +680,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 3, s_uuid: 6501, r_num: 1, upr: 0.6 },
{ lv: 5, s_uuid: 6501, r_num: 1, upr: 0.7 },
],
info: "<color=#27AE60>✧</color>死亡全队攻血提升\n<color=#9B59B6>✦</color>死亡后原地复活",
info: "<color=#27AE60>✧</color>死亡全队攻血提升\n<color=#9B59B6>✦</color>死亡后原地重生",
},
5043: {
uuid: 5043, name: "亡魂刺客", path: "hc1", fac: FacSet.HERO, card_lv: 3, lv: 1, type: HType.Melee, hp: 900, ap: 85,
@@ -717,7 +743,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 1, s_uuid: 6501, r_num: 1, upr: 0.5 },
{ lv: 3, s_uuid: 6501, r_num: 1, upr: 0.6 },
],
info: "<color=#27AE60>✧</color>死亡全队加护盾\n<color=#27AE60>✧</color>复活1:50%血量",
info: "<color=#27AE60>✧</color>死亡全队加护盾\n<color=#27AE60>✧</color>重生: 每回合可重生1次, 恢复50%血量",
},
// ========== fstart 类(法师 · 战前增益) ==========
@@ -734,7 +760,7 @@ export const HeroInfo: Record<number, heroInfo> = {
],
},
hp_bonus: [{ lv: 2, value: 80 }, { lv: 4, value: 80 }],
info: "<color=#27AE60>✧</color>开局全队提升攻击",
info: "<color=#27AE60>✧</color>回合开始全队提升攻击",
},
5052: {
uuid: 5052, name: "护盾牧师", path: "hm2", fac: FacSet.HERO, card_lv: 2, lv: 1, type: HType.Long, hp: 287, ap: 80,
@@ -751,7 +777,7 @@ export const HeroInfo: Record<number, heroInfo> = {
],
},
hp_bonus: [{ lv: 3, value: 80 }],
info: "<color=#27AE60>✧</color>开局全队获得护盾",
info: "<color=#27AE60>✧</color>回合开始全队获得护盾",
},
// 5052: {
// uuid: 5052, name: "护盾牧师", path: "hm2", fac: FacSet.HERO, card_lv: 2, lv: 1, type: HType.Long, hp: 287, ap: 80,
@@ -879,11 +905,11 @@ export const HeroInfo: Record<number, heroInfo> = {
},
6002: {
uuid: 6002, name: "兽人精锐战士", path: "m2", fac: FacSet.MON, lv: 1, type: HType.Melee, monType: MonType.Melee, hp: 300, ap: 14, speed: 110,
skills: { 6005: { uuid: 6005, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow2].cd, ccd: 0 } }, info: "进阶前排怪更快更痛"
skills: { 6005: { uuid: 6005, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow2].cd, ccd: 0 } }, info: "进阶前排怪, 更快更痛"
},
6003: {
uuid: 6003, name: "兽人重装兵", path: "m3", fac: FacSet.MON, lv: 1, type: HType.Melee, monType: MonType.Heavy, hp: 850, ap: 20, speed: 50,
skills: { 6005: { uuid: 6005, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow3].cd, ccd: 0 } }, info: "重型坦克怪高HP慢攻"
skills: { 6005: { uuid: 6005, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow3].cd, ccd: 0 } }, info: "重型坦克怪, 高HP慢攻"
},
// 后排怪物 (站在后排,输出更高)
6004: {
@@ -901,7 +927,7 @@ export const HeroInfo: Record<number, heroInfo> = {
},
6007: {
uuid: 6007, name: "兽人术士", path: "m7", fac: FacSet.MON, lv: 1, type: HType.Long, monType: MonType.Support, hp: 300, ap: 24, speed: 70,
skills: { 6103: { uuid: 6103, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow1].cd, ccd: 0 } }, info: "后排法师怪魔法攻击"
skills: { 6103: { uuid: 6103, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow1].cd, ccd: 0 } }, info: "后排法师怪, 魔法攻击"
},
6008: {
uuid: 6008, name: "兽人火法", path: "m8", fac: FacSet.MON, lv: 1, type: HType.Long, monType: MonType.Summoner, hp: 270, ap: 32, speed: 70,
@@ -911,19 +937,19 @@ export const HeroInfo: Record<number, heroInfo> = {
// BOSS怪物 — Boss节奏1.2-1.5s删除不存在的6206技能
6101: {
uuid: 6101, name: "兽人首领-双刀战士", path: "mb1", fac: FacSet.MON, lv: 6, type: HType.Melee, monType: MonType.MeleeBoss, hp: 1900, ap: 30, speed: 120,
skills: { 6103: { uuid: 6103, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow3].cd, ccd: 0 } }, info: "前排Boss高攻速"
skills: { 6103: { uuid: 6103, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow3].cd, ccd: 0 } }, info: "前排Boss, 高攻速"
},
6102: {
uuid: 6102, name: "兽人首领-斧头战士", path: "mb2", fac: FacSet.MON, lv: 6, type: HType.Melee, monType: MonType.MeleeBoss, hp: 7500, ap: 26, speed: 60,
skills: { 6005: { uuid: 6005, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow1].cd, ccd: 0 } }, info: "前排Boss超高HP"
skills: { 6005: { uuid: 6005, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow1].cd, ccd: 0 } }, info: "前排Boss, 超高HP"
},
6103: {
uuid: 6103, name: "兽人首领-魔法师", path: "mb3", fac: FacSet.MON, lv: 6, type: HType.Long, monType: MonType.LongBoss, hp: 2250, ap: 38, speed: 110,
skills: { 6103: { uuid: 6103, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow2].cd, ccd: 0 } }, info: "后排法系Boss高AP"
skills: { 6103: { uuid: 6103, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow2].cd, ccd: 0 } }, info: "后排法系Boss, 高AP"
},
6104: {
uuid: 6104, name: "兽人首领-射手", path: "mb4", fac: FacSet.MON, lv: 6, type: HType.Long, monType: MonType.LongBoss, hp: 6800, ap: 30, speed: 70,
skills: { 6005: { uuid: 6005, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow3].cd, ccd: 0 } }, info: "后排位Boss均衡型"
skills: { 6005: { uuid: 6005, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow3].cd, ccd: 0 } }, info: "后排位Boss, 均衡型"
},
6105: {
uuid: 6105, name: "亡灵首领-法师", path: "mb5", fac: FacSet.MON, lv: 6, type: HType.Long, monType: MonType.LongBoss, hp: 2600, ap: 42, speed: 110,
@@ -931,7 +957,7 @@ export const HeroInfo: Record<number, heroInfo> = {
},
6106: {
uuid: 6106, name: "亡灵首领-骑马战士", path: "mb6", fac: FacSet.MON, lv: 6, type: HType.Melee, monType: MonType.MeleeBoss, hp: 9000, ap: 26, speed: 130,
skills: { 6005: { uuid: 6005, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow3].cd, ccd: 0 } }, info: "前排终极Boss最高HP+高速"
skills: { 6005: { uuid: 6005, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.VerySlow3].cd, ccd: 0 } }, info: "前排终极Boss, 最高HP+高速"
},

View File

@@ -21,6 +21,7 @@ import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ec
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
import { CardConfig, CardType } from "../common/config/CardSet";
import { HeroInfo } from "../common/config/heroSet";
import { buildSkillDescMoreRich, ISkillDescSource } from "../common/config/HeroSkillDesc";
import { oops } from "db://oops-framework/core/Oops";
import { GameEvent } from "../common/config/GameEvent";
import { outlineRich } from "../common/RichOutline";
@@ -284,10 +285,11 @@ export class CHeroComp extends CCComp {
// 背景:按 card_lv 激活对应颜色子节点1→green 2→blue 3→purple 4→red 5→yellow
this.updateBgNode();
// 描述富文本:直接取 heroSet 的 info 字段(单条手写文案
// 描述富文本:不再单独手写 info统一套用英雄 1 级能力介绍buildSkillDescMoreRich
// 与英雄信息弹窗/升级确认框同一套文案规则,杜绝手写文案与数值漂移
// outlineRich 为整段富文本包裹描边,提升深色面板可读性
if (this.info_rich) {
const desc = hero?.info || this.cardData.info || "";
const desc = hero ? buildSkillDescMoreRich(this.buildHeroDescSource(hero)) : (this.cardData.info || "");
this.info_rich.string = outlineRich(desc);
this.info_rich.node.active = !!desc;
}
@@ -464,6 +466,26 @@ export class CHeroComp extends CCComp {
return model.hero_uuid ?? null;
}
/**
* 构造英雄 1 级能力描述数据源ISkillDescSource
* lv 恒为 1由各 resolver 取 1 级生效档,与英雄信息弹窗初始展示口径一致。
* @param hero HeroInfo 静态配置项
* @returns 描述数据源
*/
private buildHeroDescSource(hero: typeof HeroInfo[number]): ISkillDescSource {
return {
lv: 1,
call: hero.call,
dead: hero.dead,
fstart: hero.fstart,
fend: hero.fend,
atking: hero.atking,
atked: hero.atked,
field: hero.field,
revive: hero.revive,
};
}
/**
* 为英雄图标加载 idle 动画剪辑,提取首帧 SpriteFrame 静止展示。
* 与 HInfoComp 的 updateHeroAnimation 一致,零运行时开销。

View File

@@ -172,7 +172,6 @@ export class HeroBoxComp extends CCComp {
}
oops.audio.playEffect("music/button");
const heroName = this.model.hero_name ?? "";
const nextLv = heroLv + 1;
const cost = MissionEconomy.getUpgradeCost(heroLv);
// 金币不足smalltip 气泡提示(挂载金币节点),不弹确认框
@@ -185,7 +184,7 @@ export class HeroBoxComp extends CCComp {
// oops.gui 公共确认窗口(自定义 CommonPrompt内容支持富文本高亮
oops.gui.open(UIID.Window, {
title: `升级英雄`,
content: `<color=#C0392B>${heroName}</color> Lv.${heroLv} → <color=#1E8449>Lv.${nextLv}</color>\n消耗 <color=#E67E22>${cost}</color> 金币\n\n${preview}`,
content: preview,
okWord: "升级",
cancelWord: "取消",
needCancel: true,
@@ -241,7 +240,7 @@ export class HeroBoxComp extends CCComp {
const curDesc = buildSkillDescMoreRich(buildSource(heroLv));
const nextDesc = buildSkillDescMoreRich(buildSource(nextLv));
return [
return `<outline color=#000000 width=2>` + [
`<b>当前 Lv.${heroLv}</b>`,
attrLine(heroLv),
curDesc,
@@ -249,7 +248,7 @@ export class HeroBoxComp extends CCComp {
`<b>升级后 Lv.${nextLv}</b>`,
attrLine(nextLv),
nextDesc,
].filter(s => s !== undefined).join("\n");
].filter(s => s !== undefined).join("\n") + `</outline>`;
}
/** 累加等级额外加成(≤目标等级的所有档位) */