技能内存优化

This commit is contained in:
2025-08-08 22:20:26 +08:00
parent 570812de88
commit bf241345bf
13 changed files with 3224 additions and 2930 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,950 @@
[
{
"__type__": "cc.Prefab",
"_name": "Lifes",
"_objFlags": 0,
"__editorExtras__": {},
"_native": "",
"data": {
"__id__": 1
},
"optimizationPolicy": 0,
"persistent": false
},
{
"__type__": "cc.Node",
"_name": "Lifes",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": null,
"_children": [
{
"__id__": 2
},
{
"__id__": 14
},
{
"__id__": 26
}
],
"_active": true,
"_components": [
{
"__id__": 38
},
{
"__id__": 40
},
{
"__id__": 42
}
],
"_prefab": {
"__id__": 44
},
"_lpos": {
"__type__": "cc.Vec3",
"x": -240,
"y": 57.811,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1,
"z": 1
},
"_mobility": 0,
"_layer": 1,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": ""
},
{
"__type__": "cc.Node",
"_name": "life",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 1
},
"_children": [
{
"__id__": 3
}
],
"_active": true,
"_components": [
{
"__id__": 11
}
],
"_prefab": {
"__id__": 13
},
"_lpos": {
"__type__": "cc.Vec3",
"x": -75,
"y": 0,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1,
"z": 1
},
"_mobility": 0,
"_layer": 1,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": ""
},
{
"__type__": "cc.Node",
"_name": "Heart",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 2
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 4
},
{
"__id__": 6
},
{
"__id__": 8
}
],
"_prefab": {
"__id__": 10
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 0.5,
"y": 0.5,
"z": 1
},
"_mobility": 0,
"_layer": 1,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": ""
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 3
},
"_enabled": true,
"__prefab": {
"__id__": 5
},
"_contentSize": {
"__type__": "cc.Size",
"width": 128,
"height": 128
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "9dK6gOKZRNL6iMBL/bok8q"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 3
},
"_enabled": true,
"__prefab": {
"__id__": 7
},
"_customMaterial": null,
"_srcBlendFactor": 2,
"_dstBlendFactor": 4,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_spriteFrame": {
"__uuid__": "49c583b3-d566-4c79-9e4c-bd0ca4a4b717@6ae30",
"__expectedType__": "cc.SpriteFrame"
},
"_type": 0,
"_fillType": 0,
"_sizeMode": 1,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_useGrayscale": false,
"_atlas": null,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "c4wMU1ex5NfJhqLHTfbCXA"
},
{
"__type__": "cc.Animation",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 3
},
"_enabled": true,
"__prefab": {
"__id__": 9
},
"playOnLoad": true,
"_clips": [
{
"__uuid__": "85cb96f6-0d73-498f-83e8-c733d2ba8634",
"__expectedType__": "cc.AnimationClip"
}
],
"_defaultClip": {
"__uuid__": "85cb96f6-0d73-498f-83e8-c733d2ba8634",
"__expectedType__": "cc.AnimationClip"
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "a8BrgMoTRB677D2bn59nT5"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "32+CD3KDVAR7+kLDbCcKVL",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 2
},
"_enabled": true,
"__prefab": {
"__id__": 12
},
"_contentSize": {
"__type__": "cc.Size",
"width": 75,
"height": 75
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "e0BmTgdSdPNKfghPN3ULvl"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "9afTUvQwVAl5yzh1A8GQ+o",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.Node",
"_name": "life",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 1
},
"_children": [
{
"__id__": 15
}
],
"_active": true,
"_components": [
{
"__id__": 23
}
],
"_prefab": {
"__id__": 25
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1,
"z": 1
},
"_mobility": 0,
"_layer": 1,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": ""
},
{
"__type__": "cc.Node",
"_name": "Heart",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 14
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 16
},
{
"__id__": 18
},
{
"__id__": 20
}
],
"_prefab": {
"__id__": 22
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 0.5,
"y": 0.5,
"z": 1
},
"_mobility": 0,
"_layer": 1,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": ""
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 15
},
"_enabled": true,
"__prefab": {
"__id__": 17
},
"_contentSize": {
"__type__": "cc.Size",
"width": 128,
"height": 128
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "92WATqX0JCcZo06ioCsQVq"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 15
},
"_enabled": true,
"__prefab": {
"__id__": 19
},
"_customMaterial": null,
"_srcBlendFactor": 2,
"_dstBlendFactor": 4,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_spriteFrame": {
"__uuid__": "49c583b3-d566-4c79-9e4c-bd0ca4a4b717@6ae30",
"__expectedType__": "cc.SpriteFrame"
},
"_type": 0,
"_fillType": 0,
"_sizeMode": 1,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_useGrayscale": false,
"_atlas": null,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "41cJDsT3hOCZzGSo34uSHk"
},
{
"__type__": "cc.Animation",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 15
},
"_enabled": true,
"__prefab": {
"__id__": 21
},
"playOnLoad": true,
"_clips": [
{
"__uuid__": "85cb96f6-0d73-498f-83e8-c733d2ba8634",
"__expectedType__": "cc.AnimationClip"
}
],
"_defaultClip": {
"__uuid__": "85cb96f6-0d73-498f-83e8-c733d2ba8634",
"__expectedType__": "cc.AnimationClip"
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "d0kGhMCYtFlYN3yqSz7WeV"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "9b7htGCG5AzITmdLu1TGHo",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 14
},
"_enabled": true,
"__prefab": {
"__id__": 24
},
"_contentSize": {
"__type__": "cc.Size",
"width": 75,
"height": 75
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "07wKZpXKBKsZeD4uushPsB"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "96jJCFZt5LNY39Ipt1f9ta",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.Node",
"_name": "life",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 1
},
"_children": [
{
"__id__": 27
}
],
"_active": true,
"_components": [
{
"__id__": 35
}
],
"_prefab": {
"__id__": 37
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 75,
"y": 0,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1,
"z": 1
},
"_mobility": 0,
"_layer": 1,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": ""
},
{
"__type__": "cc.Node",
"_name": "Heart",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 26
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 28
},
{
"__id__": 30
},
{
"__id__": 32
}
],
"_prefab": {
"__id__": 34
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 0.5,
"y": 0.5,
"z": 1
},
"_mobility": 0,
"_layer": 1,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": ""
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 27
},
"_enabled": true,
"__prefab": {
"__id__": 29
},
"_contentSize": {
"__type__": "cc.Size",
"width": 128,
"height": 128
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "acPT+GER9LR60YmYFP7MjT"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 27
},
"_enabled": true,
"__prefab": {
"__id__": 31
},
"_customMaterial": null,
"_srcBlendFactor": 2,
"_dstBlendFactor": 4,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_spriteFrame": {
"__uuid__": "49c583b3-d566-4c79-9e4c-bd0ca4a4b717@6ae30",
"__expectedType__": "cc.SpriteFrame"
},
"_type": 0,
"_fillType": 0,
"_sizeMode": 1,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_useGrayscale": false,
"_atlas": null,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "5eDisgrBxEK5GgW/szyv2T"
},
{
"__type__": "cc.Animation",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 27
},
"_enabled": true,
"__prefab": {
"__id__": 33
},
"playOnLoad": true,
"_clips": [
{
"__uuid__": "85cb96f6-0d73-498f-83e8-c733d2ba8634",
"__expectedType__": "cc.AnimationClip"
}
],
"_defaultClip": {
"__uuid__": "85cb96f6-0d73-498f-83e8-c733d2ba8634",
"__expectedType__": "cc.AnimationClip"
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "894dNIjr5Cbo+7b7WzuugX"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "5fbCuofl9Oy6Ytb2A3iVdn",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 26
},
"_enabled": true,
"__prefab": {
"__id__": 36
},
"_contentSize": {
"__type__": "cc.Size",
"width": 75,
"height": 75
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "c7Ak7m3Q9AubBMFFXDqBCi"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "85PyEAmbNCKqO4fqnzRjrh",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 1
},
"_enabled": true,
"__prefab": {
"__id__": 39
},
"_contentSize": {
"__type__": "cc.Size",
"width": 225,
"height": 100
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "54RjRF+MFLQYwbdwzU8Mbn"
},
{
"__type__": "cc.Layout",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 1
},
"_enabled": true,
"__prefab": {
"__id__": 41
},
"_resizeMode": 0,
"_layoutType": 1,
"_cellSize": {
"__type__": "cc.Size",
"width": 40,
"height": 40
},
"_startAxis": 0,
"_paddingLeft": 0,
"_paddingRight": 0,
"_paddingTop": 0,
"_paddingBottom": 0,
"_spacingX": 0,
"_spacingY": 0,
"_verticalDirection": 0,
"_horizontalDirection": 0,
"_constraint": 0,
"_constraintNum": 2,
"_affectedByScale": false,
"_isAlign": true,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "fcgjU7nDRKt7hBWpmZ6om9"
},
{
"__type__": "3bb0fGlSF1MJqWSlVP4wA83",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 1
},
"_enabled": true,
"__prefab": {
"__id__": 43
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "a7FLygadJNAqZI/552FA3l"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "c12A1zp2JErLXNKHbk3aH/",
"targetOverrides": null
}
]

View File

@@ -0,0 +1,13 @@
{
"ver": "1.1.50",
"importer": "prefab",
"imported": true,
"uuid": "2ca943f8-e891-418e-baa1-fbb597cf256a",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "Lifes"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -72,7 +72,7 @@ export enum FightSet {
DOWN_TIME=5,//倒计时时间 DOWN_TIME=5,//倒计时时间
MORE_RC=10,//更多次数 广告获取的次数 MORE_RC=10,//更多次数 广告获取的次数
TAL_NUM=3,//天赋数量 TAL_NUM=3,//天赋数量
HEARTPOS=-240,//基地位置 HEARTPOS=-320,//基地位置
HERO_MAX_NUM=3,//英雄最大数量 HERO_MAX_NUM=3,//英雄最大数量
// ATK_TO_ATK_RATIO=0.1, // ATK_TO_ATK_RATIO=0.1,
// ATK_TO_HP_RATIO=0.2, // ATK_TO_HP_RATIO=0.2,

View File

@@ -57,7 +57,13 @@ export enum CdType {
dod=4, dod=4,
power=5, power=5,
} }
export enum AtkedType {
atked = "atked",
ice = "atked_ice",
fire = "atked_fire",
wind = "atked_wind",
crit = "atked_crit",
}
//技能释放cd: 0:技能配置的cd,1:HeroViewComp.cd 值,2:HeroViewComp.pw:0值,当HeroViewComppw==HeroViewComp.pwm值是 释放 //技能释放cd: 0:技能配置的cd,1:HeroViewComp.cd 值,2:HeroViewComp.pw:0值,当HeroViewComppw==HeroViewComp.pwm值是 释放
export enum AType { export enum AType {
@@ -194,7 +200,7 @@ export enum Quality{
ORANGE=5, ORANGE=5,
} }
/* /*
path: 图片地址 AtkedType:AtkedType.atked,path: 图片地址
[debuff] : 0:无12灼烧3眩晕4降低攻击5降低hp6降低防御7吸血8击退 [debuff] : 0:无12灼烧3眩晕4降低攻击5降低hp6降低防御7吸血8击退
depb:触发比率 depb:触发比率
debtime :持续时间 debtime :持续时间
@@ -230,101 +236,101 @@ export const getSkills=(quality:number)=>{
return heroSkills; return heroSkills;
} }
export const SkillSet = { export const SkillSet = {
6001:{uuid:6001,name:"剑气",for_hero:false,sp_name:"atk_1",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, 6001:{uuid:6001,name:"剑气",for_hero:false,sp_name:"atk_1",AtkedType:AtkedType.atked,path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"}, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"},
6002:{uuid:6002,name:"冰球",for_hero:false,sp_name:"greenball",path:"3034",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, 6002:{uuid:6002,name:"冰球",for_hero:false,sp_name:"greenball",AtkedType:AtkedType.ice,path:"3034",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人释放寒冰弹,造成100%攻击的伤害"}, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人释放寒冰弹,造成100%攻击的伤害"},
6003:{uuid:6003,name:"射击",for_hero:false,sp_name:"arrow",path:"3037",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, 6003:{uuid:6003,name:"射击",for_hero:false,sp_name:"arrow",AtkedType:AtkedType.atked,path:"3037",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:2,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人释放箭矢,造成100%攻击的伤害"}, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:2,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人释放箭矢,造成100%攻击的伤害"},
6004:{uuid:6004,name:"护盾",for_hero:true,sp_name:"shield",path:"3045",quality:Quality.BLUE, TType:TType.Frontline,maxC:1, 6004:{uuid:6004,name:"护盾",for_hero:true,sp_name:"shield",AtkedType:AtkedType.atked,path:"3045",quality:Quality.BLUE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Team,SType:SType.shield,act:"max",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max",flash:false,with:0, TGroup:TGroup.Team,SType:SType.shield,act:"max",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:1,ap:0,cd:5,hit_num:1,hit:1,hited:3,buV:2,buC:0,buR:100,speed:720,cost:10,info:"为最前排队友召唤一个可以抵御2次攻击的圣盾(最高叠加到6次)"}, debuff:0,deV:0,deC:0,deR:100,in:1,ap:0,cd:5,hit_num:1,hit:1,hited:3,buV:2,buC:0,buR:100,speed:720,cost:10,info:"为最前排队友召唤一个可以抵御2次攻击的圣盾(最高叠加到6次)"},
6005:{uuid:6005,name:"治疗", for_hero:true, sp_name:"heath_small",path:"3056",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, 6005:{uuid:6005,name:"治疗", for_hero:true, sp_name:"heath_small",AtkedType:AtkedType.atked,path:"3056",quality:Quality.GREEN, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Team,SType:SType.heal,act:"max",DTType:DTType.single,CdType:CdType.cd,AType:AType.StartEnd,EType:EType.timeEnd,fname:"max",flash:false,with:0, TGroup:TGroup.Team,SType:SType.heal,act:"max",DTType:DTType.single,CdType:CdType.cd,AType:AType.StartEnd,EType:EType.timeEnd,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:1,ap:0,cd:5,hit_num:1,hit:0,hited:0,buV:20,buC:0,buR:100,speed:0,cost:10,info:"回复最前排队友10%最大生命值的生命"}, debuff:0,deV:0,deC:0,deR:100,in:1,ap:0,cd:5,hit_num:1,hit:0,hited:0,buV:20,buC:0,buR:100,speed:0,cost:10,info:"回复最前排队友10%最大生命值的生命"},
6006:{uuid:6006,name:"铁斧打击",for_hero:false,sp_name:"base_ft",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, 6006:{uuid:6006,name:"铁斧打击",for_hero:false,sp_name:"base_ft",AtkedType:AtkedType.atked,path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"}, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"},
6007:{uuid:6007,name:"木棍打击",for_hero:false,sp_name:"base_mg",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, 6007:{uuid:6007,name:"木棍打击",for_hero:false,sp_name:"base_mg",AtkedType:AtkedType.atked,path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出木棍,造成100%攻击的伤害"}, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出木棍,造成100%攻击的伤害"},
6008:{uuid:6008,name:"飞刀打击",for_hero:false,sp_name:"base_sf",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, 6008:{uuid:6008,name:"飞刀打击",for_hero:false,sp_name:"base_sf",AtkedType:AtkedType.atked,path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出飞刀,造成100%攻击的伤害"}, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出飞刀,造成100%攻击的伤害"},
6009:{uuid:6009,name:"石斧打击",for_hero:false,sp_name:"base_sf",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, 6009:{uuid:6009,name:"石斧打击",for_hero:false,sp_name:"base_sf",AtkedType:AtkedType.atked,path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"}, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"},
6010:{uuid:6010,name:"攻击",for_hero:false,sp_name:"atk1",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, 6010:{uuid:6010,name:"攻击",for_hero:false,sp_name:"atk1",AtkedType:AtkedType.atked,path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max",flash:false,with:0, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:0.2,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"}, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:0.2,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"},
6011:{uuid:6011,name:"攻击",for_hero:false,sp_name:"atk2",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, 6011:{uuid:6011,name:"攻击",for_hero:false,sp_name:"atk2",AtkedType:AtkedType.atked,path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max",flash:false,with:0, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:0.2,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"}, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:0.2,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"},
6020:{uuid:6020,name:"烈焰斩击",for_hero:false,sp_name:"max_fireatk",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, 6020:{uuid:6020,name:"烈焰斩击",for_hero:false,sp_name:"max_fireatk",AtkedType:AtkedType.atked,path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max",flash:false,with:0, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:0.2,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"}, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit_num:1,hit:1,hited:0.2,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"},
6021:{uuid:6021,name:"烈火护盾",for_hero:true,sp_name:"max_firedun",path:"3061",quality:Quality.BLUE, TType:TType.Frontline,maxC:1, 6021:{uuid:6021,name:"烈火护盾",for_hero:true,sp_name:"max_firedun",AtkedType:AtkedType.atked,path:"3061",quality:Quality.BLUE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedStart,EType:EType.timeEnd,fname:"max",flash:false,with:90, TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedStart,EType:EType.timeEnd,fname:"max",flash:false,with:90,
debuff:0,deV:0,deC:0,deR:100,in:10,ap:100,cd:5,hit_num:1,hit:1,hited:1,buV:0,buC:0,buR:100,speed:80,cost:10,info:"召唤烈焰保护英雄,持续10秒,每秒对范围内的敌人造成100%伤害"}, debuff:0,deV:0,deC:0,deR:100,in:10,ap:100,cd:5,hit_num:1,hit:1,hited:1,buV:0,buC:0,buR:100,speed:80,cost:10,info:"召唤烈焰保护英雄,持续10秒,每秒对范围内的敌人造成100%伤害"},
6022:{uuid:6022,name:"火球术" ,for_hero:true,sp_name:"fire",path:"3039",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, 6022:{uuid:6022,name:"火球术" ,for_hero:true,sp_name:"fire",AtkedType:AtkedType.fire,path:"3039",quality:Quality.GREEN, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90,
debuff:DebuffAttr.STUN,deV:0,deC:1,deR:50,in:1,ap:100,cd:5,hit_num:1,hit:2,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"召唤大火球攻击前方所有敌人,造成300%攻击的伤害,有一定几率施加灼烧"}, debuff:DebuffAttr.STUN,deV:0,deC:1,deR:50,in:1,ap:100,cd:5,hit_num:1,hit:2,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"召唤大火球攻击前方所有敌人,造成300%攻击的伤害,有一定几率施加灼烧"},
6023:{uuid:6023,name:"龙卷风",for_hero:true, sp_name:"bwind",path:"3065",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, 6023:{uuid:6023,name:"龙卷风",for_hero:true, sp_name:"bwind",AtkedType:AtkedType.wind,path:"3065",quality:Quality.GREEN, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.power,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.power,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90,
debuff:DebuffAttr.BACK,deV:0,deC:0,deR:100,in:3,ap:100,cd:5,hit_num:1,hit:1,hited:1,buV:0,buC:0,buR:100,speed:360,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,50%几率击退敌人"}, debuff:DebuffAttr.BACK,deV:0,deC:0,deR:100,in:3,ap:100,cd:5,hit_num:1,hit:1,hited:1,buV:0,buC:0,buR:100,speed:360,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,50%几率击退敌人"},
6024:{uuid:6024,name:"寒冰箭",for_hero:true, sp_name:"arrow_blue",path:"3060",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, 6024:{uuid:6024,name:"寒冰箭",for_hero:true, sp_name:"arrow_blue",AtkedType:AtkedType.ice,path:"3060",quality:Quality.GREEN, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90,
debuff:DebuffAttr.FROST,deV:1,deC:0,deR:100,in:1,ap:100,cd:1,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,20%几率冰冻敌人"}, debuff:DebuffAttr.FROST,deV:1,deC:0,deR:100,in:1,ap:100,cd:1,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,20%几率冰冻敌人"},
6025:{uuid:6025,name:"烈焰射击",for_hero:false,sp_name:"arrow_yellow",path:"3014",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, 6025:{uuid:6025,name:"烈焰射击",for_hero:false,sp_name:"arrow_yellow",AtkedType:AtkedType.atked,path:"3014",quality:Quality.GREEN, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.power,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.power,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90,
debuff:DebuffAttr.STUN,deV:0.5,deC:0,deR:50,in:1,ap:100,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,20%几率眩晕敌人"}, debuff:DebuffAttr.STUN,deV:0.5,deC:0,deR:50,in:1,ap:100,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,20%几率眩晕敌人"},
6026:{uuid:6026,name:"火墙", for_hero:true, sp_name:"firewall",path:"3040",quality:Quality.BLUE, TType:TType.Frontline,maxC:1, 6026:{uuid:6026,name:"火墙", for_hero:true, sp_name:"firewall",AtkedType:AtkedType.atked,path:"3040",quality:Quality.BLUE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.cd,AType:AType.fixedEnd,EType:EType.timeEnd,fname:"max",flash:false,with:90, TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.cd,AType:AType.fixedEnd,EType:EType.timeEnd,fname:"max",flash:false,with:90,
debuff:0,deV:0,deC:0,deR:100,in:10,ap:50,cd:5,hit_num:1,hit:1,hited:1,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤一堵火墙,持续10秒,每秒造成50%攻击伤害"}, debuff:0,deV:0,deC:0,deR:100,in:10,ap:50,cd:5,hit_num:1,hit:1,hited:1,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤一堵火墙,持续10秒,每秒造成50%攻击伤害"},
6027:{uuid:6027,name:"冰刺",for_hero:true,sp_name:"icez",path:"3049",quality:Quality.BLUE, TType:TType.Frontline,maxC:1, 6027:{uuid:6027,name:"冰刺",for_hero:true,sp_name:"icez",AtkedType:AtkedType.atked,path:"3049",quality:Quality.BLUE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90, TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90,
debuff:DebuffAttr.FROST,deV:0,deC:0,deR:100,in:1,ap:300,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤冰刺攻击敌人,造成200%攻击的伤害,20%几率冰冻敌人"}, debuff:DebuffAttr.FROST,deV:0,deC:0,deR:100,in:1,ap:300,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤冰刺攻击敌人,造成200%攻击的伤害,20%几率冰冻敌人"},
6028:{uuid:6028,name:"潮汐", for_hero:true, sp_name:"watert",path:"3070",quality:Quality.BLUE, TType:TType.Frontline,maxC:1, 6028:{uuid:6028,name:"潮汐", for_hero:true, sp_name:"watert",AtkedType:AtkedType.atked,path:"3070",quality:Quality.BLUE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90, TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90,
debuff:DebuffAttr.BACK,deV:0,deC:0,deR:100,in:3,ap:100,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤水柱攻击敌人,每秒造成100%攻击的伤害,50%几率击退敌人"}, debuff:DebuffAttr.BACK,deV:0,deC:0,deR:100,in:3,ap:100,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤水柱攻击敌人,每秒造成100%攻击的伤害,50%几率击退敌人"},
6029:{uuid:6029,name:"陨石术",for_hero:true, sp_name:"max_yunshi",path:"3123",quality:Quality.BLUE, TType:TType.Frontline,maxC:1, 6029:{uuid:6029,name:"陨石术",for_hero:true, sp_name:"max_yunshi",AtkedType:AtkedType.atked,path:"3123",quality:Quality.BLUE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90, TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90,
debuff:0,deV:0,deC:0,deR:100,in:3,ap:500,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤陨石攻击敌人,造成500%攻击的伤害"}, debuff:0,deV:0,deC:0,deR:100,in:3,ap:500,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤陨石攻击敌人,造成500%攻击的伤害"},
6030:{uuid:6030,name:"冰墙", for_hero:false, sp_name:"icet",path:"3050",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, 6030:{uuid:6030,name:"冰墙", for_hero:false, sp_name:"icet",AtkedType:AtkedType.atked,path:"3050",quality:Quality.GREEN, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.cd,AType:AType.linear,EType:EType.animationEnd,fname:"max",flash:false,with:90, TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.cd,AType:AType.linear,EType:EType.animationEnd,fname:"max",flash:false,with:90,
debuff:DebuffAttr.BACK,deV:0,deC:0,deR:100,in:1,ap:400,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤冰墙攻击敌人,造成200%攻击的伤害,50%几率击退敌人"}, debuff:DebuffAttr.BACK,deV:0,deC:0,deR:100,in:1,ap:400,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤冰墙攻击敌人,造成200%攻击的伤害,50%几率击退敌人"},
//召唤取消 //召唤取消
// 6031:{uuid:6031,name:"召唤骷髅",for_hero:true,sp_name:"zhaohuan",path:"3018",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, // 6031:{uuid:6031,name:"召唤骷髅",for_hero:true,sp_name:"zhaohuan",AtkedType:AtkedType.atked,path:"3018",quality:Quality.GREEN, TType:TType.Frontline,maxC:1,
// TGroup:TGroup.Self,SType:SType.zhaohuan,act:"max",DTType:DTType.single,CdType:CdType.power,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max_blue",flash:true,with:90, // TGroup:TGroup.Self,SType:SType.zhaohuan,act:"max",DTType:DTType.single,CdType:CdType.power,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max_blue",flash:true,with:90,
// debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:70,cd:60,hit_num:1,hit:1,hited:1,buV:0,buC:0,buR:100,speed:720,hero:5221,cost:10,info:"召唤一个骷髅战士为我方而战"}, // debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:70,cd:60,hit_num:1,hit:1,hited:1,buV:0,buC:0,buR:100,speed:720,hero:5221,cost:10,info:"召唤一个骷髅战士为我方而战"},
6032:{uuid:6032,name:"陨石风暴",for_hero:true, sp_name:"fireys",path:"3101",quality:Quality.PURPLE, TType:TType.Frontline,maxC:5, 6032:{uuid:6032,name:"陨石风暴",for_hero:true, sp_name:"fireys",AtkedType:AtkedType.atked,path:"3101",quality:Quality.PURPLE, TType:TType.Frontline,maxC:5,
TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90, TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90,
debuff:0,deV:0,deC:0,deR:50,in:3,ap:500,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤陨石攻击敌人,造成500%攻击的伤害"}, debuff:0,deV:0,deC:0,deR:50,in:3,ap:500,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤陨石攻击敌人,造成500%攻击的伤害"},
6033:{uuid:6033,name:"龙卷风爆",for_hero:true, sp_name:"bwind",path:"3069",quality:Quality.PURPLE, TType:TType.Frontline,maxC:5, 6033:{uuid:6033,name:"龙卷风爆",for_hero:true, sp_name:"bwind",AtkedType:AtkedType.atked,path:"3069",quality:Quality.PURPLE, TType:TType.Frontline,maxC:5,
TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90, TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90,
debuff:DebuffAttr.BACK,deV:0,deC:0,deR:50,in:3,ap:100,cd:5,hit_num:1,hit:1,hited:1,buV:0,buC:0,buR:100,speed:360,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,50%几率击退敌人"}, debuff:DebuffAttr.BACK,deV:0,deC:0,deR:50,in:3,ap:100,cd:5,hit_num:1,hit:1,hited:1,buV:0,buC:0,buR:100,speed:360,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,50%几率击退敌人"},
6034:{uuid:6034,name:"大潮汐", for_hero:true, sp_name:"watert",path:"3070",quality:Quality.PURPLE, TType:TType.Frontline,maxC:5, 6034:{uuid:6034,name:"大潮汐", for_hero:true, sp_name:"watert",AtkedType:AtkedType.atked,path:"3070",quality:Quality.PURPLE, TType:TType.Frontline,maxC:5,
TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90, TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90,
debuff:DebuffAttr.BACK,deV:0,deC:0,deR:50,in:3,ap:100,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"召唤水柱攻击敌人,每秒造成100%攻击的伤害,50%几率击退敌人"}, debuff:DebuffAttr.BACK,deV:0,deC:0,deR:50,in:3,ap:100,cd:5,hit_num:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"召唤水柱攻击敌人,每秒造成100%攻击的伤害,50%几率击退敌人"},

View File

@@ -256,109 +256,109 @@ export const HeroInfo = {
//主将 //主将
5001:{uuid:5001,name:"火焰骑士",path:"k2", quality:HQuality.BLUE,lv:1,kind:1, 5001:{uuid:5001,name:"火焰骑士",path:"k2", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.warrior,hp:100,ap:15,dis:100,cd:1.5,speed:50,skills:[6011,6020], type:HType.warrior,hp:100,ap:15,dis:100,cd:1,speed:150,skills:[6011,6020],
buff:[],info:"剑类专精,穿刺伤害额外+10%"}, buff:[],info:"剑类专精,穿刺伤害额外+10%"},
5002:{uuid:5002,name:"圣盾骑士",path:"k3", quality:HQuality.BLUE,lv:1,kind:1, 5002:{uuid:5002,name:"圣盾骑士",path:"k3", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.warrior,hp:100,ap:15,dis:100,cd:1.5,speed:50,skills:[6011,6004], type:HType.warrior,hp:100,ap:15,dis:100,cd:1,speed:150,skills:[6011,6004],
buff:[],info:"斧类专精,风怒概率增加10%"}, buff:[],info:"斧类专精,风怒概率增加10%"},
// 5003:{uuid:5003,name:"碎颅.赫克托",path:"k4", quality:HQuality.BLUE,lv:1,kind:1, // 5003:{uuid:5003,name:"碎颅.赫克托",path:"k4", quality:HQuality.BLUE,lv:1,kind:1,
// type:HType.warrior,hp:100,ap:15,dis:400,cd:1.5,speed:50,skills:[6010,6021,6001], // type:HType.warrior,hp:100,ap:15,dis:400,cd:1,speed:100,skills:[6010,6021,6001],
// buff:[],info:"锤类专精,暴击概率增加10%"}, // buff:[],info:"锤类专精,暴击概率增加10%"},
// 5004:{uuid:5004,name:"裂伤.塔米拉",path:"k3", quality:HQuality.BLUE,lv:1,kind:1, // 5004:{uuid:5004,name:"裂伤.塔米拉",path:"k3", quality:HQuality.BLUE,lv:1,kind:1,
// type:HType.warrior,hp:100,ap:15,dis:400,cd:1.5,speed:50,skills:[6010,6021,6001], // type:HType.warrior,hp:100,ap:15,dis:400,cd:1,speed:100,skills:[6010,6021,6001],
// buff:[],info:"刀类专精,易伤效果额外持续1次"}, // buff:[],info:"刀类专精,易伤效果额外持续1次"},
5005:{uuid:5005,name:"幽灵射手",path:"a4", quality:HQuality.BLUE,lv:1,kind:2, 5005:{uuid:5005,name:"幽灵射手",path:"a4", quality:HQuality.BLUE,lv:1,kind:2,
type:HType.remote,hp:100,ap:15,dis:400,cd:1.5,speed:50,skills:[6003,6003], type:HType.remote,hp:100,ap:15,dis:400,cd:1,speed:100,skills:[6003,6003],
buff:[],info:"说明"}, buff:[],info:"说明"},
5007:{uuid:5007,name:"混沌法师",path:"zh1", quality:HQuality.BLUE,lv:1,kind:2, 5007:{uuid:5007,name:"混沌法师",path:"zh1", quality:HQuality.BLUE,lv:1,kind:2,
type:HType.mage,hp:100,ap:15,dis:400,cd:1.5,speed:50,skills:[6002,6002], type:HType.mage,hp:100,ap:15,dis:400,cd:1,speed:100,skills:[6002,6002],
buff:[],info:"说明"}, buff:[],info:"说明"},
5008:{uuid:5008,name:"火焰法师",path:"zh2", quality:HQuality.BLUE,lv:1,kind:2, 5008:{uuid:5008,name:"火焰法师",path:"zh2", quality:HQuality.BLUE,lv:1,kind:2,
type:HType.mage,hp:100,ap:15,dis:400,cd:1.5,speed:50,skills:[6022,6002], type:HType.mage,hp:100,ap:15,dis:400,cd:1.5,speed:100,skills:[6022,6002],
buff:[],info:"说明"}, buff:[],info:"说明"},
5009:{uuid:5009,name:"风暴精灵",path:"d1", quality:HQuality.BLUE,lv:1,kind:2, 5009:{uuid:5009,name:"风暴精灵",path:"d1", quality:HQuality.BLUE,lv:1,kind:2,
type:HType.mage,hp:100,ap:15,dis:400,cd:1.5,speed:50,skills:[6002,6002], type:HType.mage,hp:100,ap:15,dis:400,cd:1.5,speed:100,skills:[6002,6002],
buff:[],info:"说明"}, buff:[],info:"说明"},
5010:{uuid:5010,name:"战争祭祀",path:"d2", quality:HQuality.BLUE,lv:1,kind:2, 5010:{uuid:5010,name:"战争祭祀",path:"d2", quality:HQuality.BLUE,lv:1,kind:2,
type:HType.mage,hp:100,ap:15,dis:400,cd:1.5,speed:50,skills:[6024,6002], type:HType.mage,hp:100,ap:15,dis:400,cd:1.5,speed:100,skills:[6024,6002],
buff:[],info:"说明"}, buff:[],info:"说明"},
5011:{uuid:5011,name:"暴风射手",path:"a5", quality:HQuality.BLUE,lv:1,kind:2, 5011:{uuid:5011,name:"暴风射手",path:"a5", quality:HQuality.BLUE,lv:1,kind:2,
type:HType.remote,hp:100,ap:15,dis:400,cd:1.5,speed:50,skills:[6003,6003], type:HType.remote,hp:100,ap:15,dis:400,cd:1,speed:100,skills:[6003,6003],
buff:[],info:"说明"}, buff:[],info:"说明"},
//怪物 //怪物
5201:{uuid:5201,name:"兽人战士",path:"mor1", quality:HQuality.GREEN,lv:1,kind:1, 5201:{uuid:5201,name:"兽人战士",path:"mor1", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.warrior,hp:25,ap:5,dis:90,cd:2,speed:45,skills:[6010], type:HType.warrior,hp:25,ap:5,dis:90,cd:2,speed:100,skills:[6010],
buff:[],info:"普通怪物-战士型"}, buff:[],info:"普通怪物-战士型"},
5202:{uuid:5202,name:"兽人刺客",path:"mor2", quality:HQuality.GREEN,lv:1,kind:1, 5202:{uuid:5202,name:"兽人刺客",path:"mor2", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.remote,hp:20,ap:5,dis:350,cd:1.5,speed:45,skills:[6008], type:HType.remote,hp:20,ap:5,dis:350,cd:1,speed:100,skills:[6008],
buff:[],info:"普通怪物-战士型"}, buff:[],info:"普通怪物-战士型"},
5203:{uuid:5203,name:"兽人护卫",path:"mor3", quality:HQuality.GREEN,lv:1,kind:1, 5203:{uuid:5203,name:"兽人护卫",path:"mor3", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.warrior,hp:25,ap:5,dis:90,cd:2,speed:45,skills:[6010], type:HType.warrior,hp:25,ap:5,dis:90,cd:2,speed:100,skills:[6010],
buff:[],info:"普通怪物-战士型"}, buff:[],info:"普通怪物-战士型"},
5204:{uuid:5204,name:"石卫", path:"mgem1",quality:HQuality.GREEN,lv:1,kind:1, 5204:{uuid:5204,name:"石卫", path:"mgem1",quality:HQuality.GREEN,lv:1,kind:1,
type:HType.mage,hp:18,ap:5,dis:90,cd:2.5,speed:45,skills:[6010], type:HType.mage,hp:18,ap:5,dis:90,cd:2.5,speed:100,skills:[6010],
buff:[],info:"法师怪物-高伤害脆弱"}, buff:[],info:"法师怪物-高伤害脆弱"},
5205:{uuid:5205,name:"土卫", path:"mgem2",quality:HQuality.GREEN,lv:1,kind:1, 5205:{uuid:5205,name:"土卫", path:"mgem2",quality:HQuality.GREEN,lv:1,kind:1,
type:HType.mage,hp:18,ap:5,dis:90,cd:2.5,speed:45,skills:[6010], type:HType.mage,hp:18,ap:5,dis:90,cd:2.5,speed:100,skills:[6010],
buff:[],info:"法师怪物-高伤害脆弱"}, buff:[],info:"法师怪物-高伤害脆弱"},
5206:{uuid:5206,name:"树卫", path:"mgem3",quality:HQuality.GREEN,lv:1,kind:1, 5206:{uuid:5206,name:"树卫", path:"mgem3",quality:HQuality.GREEN,lv:1,kind:1,
type:HType.mage,hp:18,ap:5,dis:90,cd:2.5,speed:45,skills:[6010], type:HType.mage,hp:18,ap:5,dis:90,cd:2.5,speed:100,skills:[6010],
buff:[],info:"法师怪物-高伤害脆弱"}, buff:[],info:"法师怪物-高伤害脆弱"},
5219:{uuid:5219,name:"牛头战士",path:"mn1", quality:HQuality.GREEN,lv:2,kind:1, 5219:{uuid:5219,name:"牛头战士",path:"mn1", quality:HQuality.GREEN,lv:2,kind:1,
type:HType.warrior,hp:25,ap:5,dis:90,cd:2,speed:45,skills:[6010], type:HType.warrior,hp:25,ap:5,dis:90,cd:2,speed:100,skills:[6010],
buff:[],info:"普通怪物-战士型"}, buff:[],info:"普通怪物-战士型"},
5220:{uuid:5220,name:"牛头战士",path:"mn2", quality:HQuality.GREEN,lv:1,kind:1, 5220:{uuid:5220,name:"牛头战士",path:"mn2", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.warrior,hp:25,ap:5,dis:90,cd:2,speed:45,skills:[6010], type:HType.warrior,hp:25,ap:5,dis:90,cd:2,speed:100,skills:[6010],
buff:[],info:"普通怪物-战士型"}, buff:[],info:"普通怪物-战士型"},
5221:{uuid:5221,name:"牛头战士",path:"mn3", quality:HQuality.GREEN,lv:1,kind:1, 5221:{uuid:5221,name:"牛头战士",path:"mn3", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.remote,hp:20,ap:5,dis:350,cd:1.5,speed:45,skills:[6008], type:HType.remote,hp:20,ap:5,dis:350,cd:1.5,speed:100,skills:[6008],
buff:[],info:"普通怪物-战士型"}, buff:[],info:"普通怪物-战士型"},
5222:{uuid:5222,name:"独眼巨人",path:"md1", quality:HQuality.GREEN,lv:1,kind:1, 5222:{uuid:5222,name:"独眼巨人",path:"md1", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.warrior,hp:25,ap:5,dis:90,cd:2,speed:45,skills:[6010], type:HType.warrior,hp:25,ap:5,dis:90,cd:2,speed:100,skills:[6010],
buff:[],info:"普通怪物-战士型"}, buff:[],info:"普通怪物-战士型"},
5223:{uuid:5223,name:"独眼巨人",path:"md2", quality:HQuality.GREEN,lv:1,kind:1, 5223:{uuid:5223,name:"独眼巨人",path:"md2", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.warrior,hp:25,ap:5,dis:90,cd:2,speed:45,skills:[6010], type:HType.warrior,hp:25,ap:5,dis:90,cd:2,speed:100,skills:[6010],
buff:[],info:"普通怪物-战士型"}, buff:[],info:"普通怪物-战士型"},
5224:{uuid:5224,name:"独眼巨人",path:"md3", quality:HQuality.GREEN,lv:1,kind:1, 5224:{uuid:5224,name:"独眼巨人",path:"md3", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.remote,hp:20,ap:5,dis:350,cd:1.5,speed:45,skills:[6010], type:HType.remote,hp:20,ap:5,dis:350,cd:1.5,speed:100,skills:[6010],
buff:[],info:"普通怪物-战士型"}, buff:[],info:"普通怪物-战士型"},
5225:{uuid:5225,name:"精英独眼",path:"md4", quality:HQuality.BLUE,lv:1,kind:1, 5225:{uuid:5225,name:"精英独眼",path:"md4", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.warrior,hp:45,ap:12,dis:300,cd:2,speed:25,skills:[6006], type:HType.warrior,hp:45,ap:12,dis:300,cd:2,speed:100,skills:[6006],
buff:[],info:"精英怪物-战士型"}, buff:[],info:"精英怪物-战士型"},
5226:{uuid:5226,name:"精英牛头",path:"mn4", quality:HQuality.BLUE,lv:1,kind:1, 5226:{uuid:5226,name:"精英牛头",path:"mn4", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.warrior,hp:45,ap:12,dis:300,cd:2,speed:25,skills:[6007], type:HType.warrior,hp:45,ap:12,dis:300,cd:2,speed:100,skills:[6007],
buff:[],info:"精英怪物-战士型"}, buff:[],info:"精英怪物-战士型"},
5227:{uuid:5227,name:"精英兽人",path:"mor4", quality:HQuality.BLUE,lv:1,kind:1, 5227:{uuid:5227,name:"精英兽人",path:"mor4", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.warrior,hp:45,ap:12,dis:300,cd:2,speed:25,skills:[6008], type:HType.warrior,hp:45,ap:12,dis:300,cd:2,speed:100,skills:[6008],
buff:[],info:"精英怪物-战士型"}, buff:[],info:"精英怪物-战士型"},
}; };

View File

@@ -175,8 +175,8 @@ export class BuffComp extends Component {
node.parent = this.node.parent; node.parent = this.node.parent;
node.setPosition(pos); node.setPosition(pos);
} }
in_atked() { in_atked(anm:string="atked") {
var path = "game/skills/atked"; var path = "game/skills/"+anm;
var prefab: Prefab = oops.res.get(path, Prefab)!; var prefab: Prefab = oops.res.get(path, Prefab)!;
var node = instantiate(prefab); var node = instantiate(prefab);
let pos =v3(15,30); let pos =v3(15,30);

View File

@@ -188,7 +188,8 @@ export class HeroViewComp extends CCComp {
private damageQueue: Array<{ private damageQueue: Array<{
damage: number, damage: number,
isCrit: boolean, isCrit: boolean,
delay: number delay: number,
anm:string,
}> = []; }> = [];
private isProcessingDamage: boolean = false; private isProcessingDamage: boolean = false;
private damageInterval: number = 0.01; // 伤害数字显示间隔 private damageInterval: number = 0.01; // 伤害数字显示间隔
@@ -635,6 +636,7 @@ export class HeroViewComp extends CCComp {
burn_count:number=0,burn_value:number=0, burn_count:number=0,burn_value:number=0,
stun_time:number=0,stun_ratto:number=0, stun_time:number=0,stun_ratto:number=0,
frost_time:number=0,frost_ratto:number=0, frost_time:number=0,frost_ratto:number=0,
atked_anm:string="atked"
){ ){
this.do_atked_trigger() this.do_atked_trigger()
if(burn_count>0){ if(burn_count>0){
@@ -660,7 +662,9 @@ export class HeroViewComp extends CCComp {
if(this.currentHp <= 0) { if(this.currentHp <= 0) {
if(this == null) return; if(this == null) return;
this.is_dead=true this.is_dead=true
this.BUFFCOMP.dead() if(this.BUFFCOMP){
this.BUFFCOMP.dead()
}
this.do_dead() this.do_dead()
//console.log("[HeroViewComp]:dead,fac => "+(this.fac==FacSet.HERO?"hero":"monster")) //console.log("[HeroViewComp]:dead,fac => "+(this.fac==FacSet.HERO?"hero":"monster"))
if(this.ent == null) return; if(this.ent == null) return;
@@ -670,8 +674,10 @@ export class HeroViewComp extends CCComp {
this.ent.destroy(); this.ent.destroy();
} }
} }
// this.update_vm // this.update_vm
this.showDamage(damage, is_crit); this.showDamage(damage, is_crit,atked_anm);
} }
//伤害计算 debuff 易伤 //伤害计算 debuff 易伤
@@ -835,11 +841,12 @@ export class HeroViewComp extends CCComp {
} }
/** 显示伤害数字 */ /** 显示伤害数字 */
showDamage(damage: number, isCrit: boolean) { showDamage(damage: number, isCrit: boolean,anm:string="atked") {
this.damageQueue.push({ this.damageQueue.push({
damage, damage,
isCrit, isCrit,
delay: this.damageInterval delay: this.damageInterval,
anm
}); });
} }
ex_show(text:string){ ex_show(text:string){
@@ -859,7 +866,7 @@ export class HeroViewComp extends CCComp {
this.isProcessingDamage = true; this.isProcessingDamage = true;
const damageInfo = this.damageQueue.shift()!; const damageInfo = this.damageQueue.shift()!;
this.showDamageImmediate(damageInfo.damage, damageInfo.isCrit); this.showDamageImmediate(damageInfo.damage, damageInfo.isCrit,damageInfo.anm);
// 设置延时处理下一个伤害 // 设置延时处理下一个伤害
this.scheduleOnce(() => { this.scheduleOnce(() => {
@@ -868,9 +875,9 @@ export class HeroViewComp extends CCComp {
} }
/** 立即显示伤害效果 */ /** 立即显示伤害效果 */
private showDamageImmediate(damage: number, isCrit: boolean) { private showDamageImmediate(damage: number, isCrit: boolean,anm:string="atked") {
this.as.atked() // this.as.atked()
// this.BUFFCOMP.in_atked() this.BUFFCOMP.in_atked(anm)
this.atked_count++; this.atked_count++;
if (isCrit) { if (isCrit) {
this.BUFFCOMP.hp_tip(TooltipTypes.crit, damage.toFixed(0), damage); this.BUFFCOMP.hp_tip(TooltipTypes.crit, damage.toFixed(0), damage);

View File

@@ -11,7 +11,6 @@ export class LifeComp extends Component {
oops.message.on(GameEvent.LifeChange,this.onLifeChange,this) oops.message.on(GameEvent.LifeChange,this.onLifeChange,this)
} }
start() { start() {
this.node.setSiblingIndex(100)
} }
update(deltaTime: number) { update(deltaTime: number) {
@@ -27,6 +26,7 @@ export class LifeComp extends Component {
} }
onLifeChange(args: any) { onLifeChange(args: any) {
console.log("[LifeComp]:onLifeChange loss_life:",this.loss_life) console.log("[LifeComp]:onLifeChange loss_life:",this.loss_life)
if(this.loss_life >= 3) return
let nodes=this.node.children let nodes=this.node.children
nodes[this.loss_life].active=false nodes[this.loss_life].active=false
this.loss_life++ this.loss_life++

View File

@@ -86,37 +86,33 @@ export class Skill extends ecs.Entity {
return; return;
} }
// 获取计算后的属性数据
let ap_data = this.get_ap(caster,dmg,uuid) let ap_data = this.get_ap(caster,dmg,uuid)
SComp.ap = ap_data.ap
SComp.caster_crit = ap_data.crit // 只设置必要的运行时属性,配置信息通过 SkillSet[uuid] 访问
SComp.caster_crit_d = ap_data.crit_d
SComp.puncture = ap_data.puncture
SComp.puncture_damage = ap_data.puncture_damage
SComp.buV = config.buV
SComp.buC = config.buC
SComp.buR = config.buR
SComp.burn_count = ap_data.burn_count
SComp.burn_value = ap_data.burn_value
SComp.stun_time = ap_data.stun_time
SComp.stun_ratto = ap_data.stun_ratto
SComp.frost_time = ap_data.frost_time
SComp.frost_ratto = ap_data.frost_ratto
// 设置技能组件属性
Object.assign(SComp, { Object.assign(SComp, {
// 核心标识
s_uuid: uuid, s_uuid: uuid,
dis:config.dis,
AType: config.AType, // 位置和施法者信息
speed: config.speed,
atk_count: 0,
hit_num:config.hit_num, //目前设定 根据技能不一样,几十
startPos: startPos, startPos: startPos,
targetPos: targetPos, targetPos: targetPos,
caster: caster, caster: caster,
prefabName: config.sp_name,
group: caster.box_group, group: caster.box_group,
fac: caster.fac, fac: caster.fac,
scale: caster.scale,
animName: config.animName, // 计算后的战斗数据
ap: ap_data.ap,
caster_crit: ap_data.crit,
caster_crit_d: ap_data.crit_d,
puncture: ap_data.puncture,
puncture_damage: ap_data.puncture_damage,
burn_count: ap_data.burn_count,
burn_value: ap_data.burn_value,
stun_time: ap_data.stun_time,
stun_ratto: ap_data.stun_ratto,
frost_time: ap_data.frost_time,
frost_ratto: ap_data.frost_ratto,
}); });
this.add(SComp); this.add(SComp);

View File

@@ -20,32 +20,19 @@ const { ccclass, property } = _decorator;
@ccclass('SkillCom') @ccclass('SkillCom')
@ecs.register('SkillCom') @ecs.register('SkillCom')
export class SkillCom extends CCComp { export class SkillCom extends CCComp {
// 核心标识和配置
s_uuid:number = 0; s_uuid:number = 0;
s_name:string = "";
hero:number = 0; // 运行时状态(必须缓存的)
speed:number = 200;
scale:number = 1;
angle:number = 0;
atk_count:number = 0;
hit_num:number=0; // 范围攻击的 伤害个数
is_destroy:boolean = false; is_destroy:boolean = false;
enemys:any = [];
AType: number = 0; // 运动类型
startPos: Vec3 = v3(); // 起始位置 startPos: Vec3 = v3(); // 起始位置
targetPos: Vec3 = v3(); // 目标位置 targetPos: Vec3 = v3(); // 目标位置
duration: number = 0; // 技能持续时间
prefabName: string = ""; // 预制体名称
animName: string = "";
group:number = 0; //阵营 group:number = 0; //阵营
fac:number=0; //阵营 fac:number=0; //阵营
caster:any=null; caster:any=null;
distance_x:number=0;
distance_y:number=0; // 战斗相关运行时数据
dis:number=0;
ap:number=0; ap:number=0;
buV:number=0;
buC:number=0;
buR:number=0;
burn_count:number=0; burn_count:number=0;
burn_value:number=0; burn_value:number=0;
stun_time:number=0; stun_time:number=0;
@@ -55,23 +42,42 @@ export class SkillCom extends CCComp {
run_time:number=0; run_time:number=0;
hited_time:number=0; hited_time:number=0;
hit_count:number=0; hit_count:number=0;
spine:sp.Skeleton=null;
anim:Animation=null;
tweenInstance:Tween<any> = null;
t_end_x:number=0;
caster_crit:number=0; caster_crit:number=0;
caster_crit_d:number=0; caster_crit_d:number=0;
puncture:number=0; puncture:number=0;
puncture_damage:number=0; puncture_damage:number=0;
EType:any=null
// 组件引用
spine:sp.Skeleton=null;
anim:Animation=null;
tweenInstance:Tween<any> = null;
private moveDirection: Vec3 | null = null; // 添加一个属性来存储移动方向 private moveDirection: Vec3 | null = null; // 添加一个属性来存储移动方向
// 缓存的配置对象(避免重复查找)
public skillConfig: any = null;
private isInitialized: boolean = false;
protected onLoad(): void { protected onLoad(): void {
} }
private initializeSkillConfig() {
if (this.isInitialized) return;
// 缓存技能配置,避免重复查找
this.skillConfig = SkillSet[this.s_uuid];
if (!this.skillConfig) {
console.error("[SkillCom] 技能配置不存在:", this.s_uuid);
return;
}
this.isInitialized = true;
console.log("[SkillCom] 技能配置初始化完成:", this.s_uuid, this.skillConfig.name);
}
start() { start() {
this.EType=SkillSet[this.s_uuid].EType this.initializeSkillConfig();
if (!this.skillConfig) return;
this.node.setPosition(this.startPos.x,this.startPos.y,0) this.node.setPosition(this.startPos.x,this.startPos.y,0)
if(this.node.getChildByName('anm')){ if(this.node.getChildByName('anm')){
this.spine=this.node.getChildByName('anm').getComponent('sp.Skeleton') as sp.Skeleton; this.spine=this.node.getChildByName('anm').getComponent('sp.Skeleton') as sp.Skeleton;
@@ -90,7 +96,7 @@ export class SkillCom extends CCComp {
} }
let bm=this.node.getComponent(BezierMove) let bm=this.node.getComponent(BezierMove)
// //console.log(this.group +"技能 collider ",collider); // //console.log(this.group +"技能 collider ",collider);
switch(SkillSet[this.s_uuid].AType){ switch(this.skillConfig.AType){
case AType.parabolic: case AType.parabolic:
this.node.angle +=10 this.node.angle +=10
// bm.speed=700 // bm.speed=700
@@ -152,17 +158,21 @@ export class SkillCom extends CCComp {
} }
onAnimationFinished(){ onAnimationFinished(){
console.log("[SkillCom]:onAnimationFinished",this.s_uuid) console.log("[SkillCom]:onAnimationFinished",this.s_uuid)
if(SkillSet[this.s_uuid].EType==EType.timeEnd) return if (!this.skillConfig) return;
if(SkillSet[this.s_uuid].SType!=SType.damage){
if(this.skillConfig.EType==EType.timeEnd) return
if(this.skillConfig.SType!=SType.damage){
this.to_do_buff() this.to_do_buff()
} }
this.is_destroy=true this.is_destroy=true
} }
to_do_buff(){ to_do_buff(){
switch(SkillSet[this.s_uuid].SType){ if (!this.skillConfig) return;
switch(this.skillConfig.SType){
case SType.shield: case SType.shield:
this.caster.add_shield(SkillSet[this.s_uuid].buV) this.caster.add_shield(this.skillConfig.buV)
break; break;
} }
} }
@@ -171,6 +181,7 @@ export class SkillCom extends CCComp {
// //console.log("[SkillCom]:onBeginContact hit_count:",this.hit_count,SkillSet[this.s_uuid].hit) // //console.log("[SkillCom]:onBeginContact hit_count:",this.hit_count,SkillSet[this.s_uuid].hit)
// if(this.hit_count > 0&&!is_range) this.ap=this.ap*(50+this.puncture_damage)/100 // 穿刺后 伤害减半,过滤范围伤害 // if(this.hit_count > 0&&!is_range) this.ap=this.ap*(50+this.puncture_damage)/100 // 穿刺后 伤害减半,过滤范围伤害
if(target == null) return; if(target == null) return;
if (!this.skillConfig) return;
let ap=this.ap let ap=this.ap
if(this.hit_count > 0 &&!is_range ){ if(this.hit_count > 0 &&!is_range ){
ap=ap*(50+this.puncture_damage)/100 ap=ap*(50+this.puncture_damage)/100
@@ -178,20 +189,22 @@ export class SkillCom extends CCComp {
target.do_atked(ap,this.caster_crit,this.caster_crit_d, target.do_atked(ap,this.caster_crit,this.caster_crit_d,
this.burn_count,this.burn_value, this.burn_count,this.burn_value,
this.stun_time,this.stun_ratto, this.stun_time,this.stun_ratto,
this.frost_time,this.frost_ratto) // ap 及暴击 属性已经在skill.ts 处理 this.frost_time,this.frost_ratto,
this.skillConfig.AtkedType
) // ap 及暴击 属性已经在skill.ts 处理
// console.log("[SkillCom]:single_damage t:tp:rtp",this.node.position,this.targetPos,target.node.position) // console.log("[SkillCom]:single_damage t:tp:rtp",this.node.position,this.targetPos,target.node.position)
if(SkillSet[this.s_uuid].debuff>0){ if(this.skillConfig.debuff>0){
let debuff=SkillSet[this.s_uuid] let debuff=this.skillConfig
let dev=debuff.deV*(100+this.caster.DEBUFF_VALUE)/100 let dev=debuff.deV*(100+this.caster.DEBUFF_VALUE)/100
let deR=debuff.deR+this.caster.DEBUFF_UP let deR=debuff.deR+this.caster.DEBUFF_UP
dev=Math.round(dev*100)/100 dev=Math.round(dev*100)/100
let deC=debuff.deC+this.caster.DEBUFF_COUNT //dec只作为次数叠加 let deC=debuff.deC+this.caster.DEBUFF_COUNT //dec只作为次数叠加
// //console.log("[SkillCom]:debuff",SkillSet[this.s_uuid].name,debuff.debuff,deUP.deV,deUP.deC) // //console.log("[SkillCom]:debuff",this.skillConfig.name,debuff.debuff,deUP.deV,deUP.deC)
target.add_debuff(debuff.debuff,dev,deC,deR) target.add_debuff(debuff.debuff,dev,deC,deR)
} }
this.hit_count++ this.hit_count++
// console.log("[SkillCom]:碰撞次数:技能次数:穿刺次数",this.hit_count,SkillSet[this.s_uuid].hit,this.puncture) // console.log("[SkillCom]:碰撞次数:技能次数:穿刺次数",this.hit_count,this.skillConfig.hit,this.puncture)
if(this.hit_count>=(SkillSet[this.s_uuid].hit+this.puncture)&&(SkillSet[this.s_uuid].DTType!=DTType.range)&&(SkillSet[this.s_uuid].EType!=EType.animationEnd)&&(SkillSet[this.s_uuid].EType!=EType.timeEnd)) this.is_destroy=true // 技能命中次数 if(this.hit_count>=(this.skillConfig.hit+this.puncture)&&(this.skillConfig.DTType!=DTType.range)&&(this.skillConfig.EType!=EType.animationEnd)&&(this.skillConfig.EType!=EType.timeEnd)) this.is_destroy=true // 技能命中次数
} }
onBeginContact (seCol: Collider2D, oCol: Collider2D) { onBeginContact (seCol: Collider2D, oCol: Collider2D) {
@@ -200,8 +213,9 @@ export class SkillCom extends CCComp {
let target = oCol.getComponent(HeroViewComp) let target = oCol.getComponent(HeroViewComp)
if(oCol.group!=this.group){ if(oCol.group!=this.group){
if(target == null) return; if(target == null) return;
if (!this.skillConfig) return;
// console.log("[SkillCom]:onBeginContact oCol||seCol",oCol.node.position,seCol.node.position) // console.log("[SkillCom]:onBeginContact oCol||seCol",oCol.node.position,seCol.node.position)
this.single_damage(target,SkillSet[this.s_uuid].DTType==DTType.range?true:false) this.single_damage(target,this.skillConfig.DTType==DTType.range?true:false)
// this.ent.destroy() // this.ent.destroy()
} }
} }
@@ -209,7 +223,12 @@ export class SkillCom extends CCComp {
update(deltaTime: number) { update(deltaTime: number) {
let config=SkillSet[this.s_uuid] // 确保配置已初始化(处理 update 可能先于 start 执行的情况)
if (!this.isInitialized) {
this.initializeSkillConfig();
if (!this.skillConfig) return;
}
if(smc.mission.pause) { if(smc.mission.pause) {
if(this.spine) this.spine.paused=true if(this.spine) this.spine.paused=true
if(this.anim) this.anim.pause() if(this.anim) this.anim.pause()
@@ -218,16 +237,17 @@ export class SkillCom extends CCComp {
if(this.anim) this.anim.resume() if(this.anim) this.anim.resume()
if(this.spine) this.spine.paused=false if(this.spine) this.spine.paused=false
if (!this.node || !this.node.isValid) return; if (!this.node || !this.node.isValid) return;
if(config.EType==EType.timeEnd){
if(this.skillConfig.EType==EType.timeEnd){
this.run_time+=deltaTime this.run_time+=deltaTime
if(this.run_time>config.in){ if(this.run_time>this.skillConfig.in){
// //console.log("[SkillCom]: timeEnd destroy",this.s_uuid,this.run_time) // //console.log("[SkillCom]: timeEnd destroy",this.s_uuid,this.run_time)
this.is_destroy=true this.is_destroy=true
} }
} }
//直线移动 //直线移动
// if(this.AType == AType.linear) this.startLinearMove(deltaTime); // if(this.skillConfig.AType == AType.linear) this.startLinearMove(deltaTime);
this.toDestroy(); this.toDestroy();
} }
@@ -254,11 +274,11 @@ export class SkillCom extends CCComp {
/** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */ /** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */
reset() { reset() {
this.is_destroy = false; this.is_destroy = false;
this.AType = 0;
this.speed = 0;
this.startPos.set(); this.startPos.set();
this.targetPos.set(); this.targetPos.set();
this.moveDirection = null; // 重置移动方向 this.moveDirection = null; // 重置移动方向
this.skillConfig = null; // 清除配置缓存
this.isInitialized = false; // 重置初始化状态
// 先移除所有碰撞回调 // 先移除所有碰撞回调
const collider = this.getComponent(Collider2D); const collider = this.getComponent(Collider2D);
if (collider) { if (collider) {

View File

@@ -32,8 +32,9 @@ export class AtkComComp extends CCComp {
} }
}); });
// 根据skill.hit_num决定攻击模式 // 根据配置的hit_num决定攻击模式
if(skill.hit_num > 0) { const hitNum = skill.skillConfig?.hit_num || 0;
if(hitNum > 0) {
// 限制目标数量按距离排序选择最近的N个目标 // 限制目标数量按距离排序选择最近的N个目标
if(targetsInRange.length > 0) { if(targetsInRange.length > 0) {
// 按距离排序(从近到远) // 按距离排序(从近到远)
@@ -44,7 +45,7 @@ export class AtkComComp extends CCComp {
}); });
// 限制目标数量 // 限制目标数量
const maxTargets = Math.min(skill.hit_num, targetsInRange.length); const maxTargets = Math.min(hitNum, targetsInRange.length);
const selectedTargets = targetsInRange.slice(0, maxTargets); const selectedTargets = targetsInRange.slice(0, maxTargets);
selectedTargets.forEach(target => { selectedTargets.forEach(target => {