diff --git a/assets/script/game/common/config/TalSet.ts b/assets/script/game/common/config/TalSet.ts index 25a78153..29996507 100644 --- a/assets/script/game/common/config/TalSet.ts +++ b/assets/script/game/common/config/TalSet.ts @@ -80,8 +80,8 @@ export interface ItalConf { */ export const talConf: Record = { /*** 普通攻击触发 ***/ - 7001:{uuid:7001,name:"风怒",triType:TriType.ATK,Trigger:3,target:TalTarget.ENEMY,effet:TalEffet.WFUNY,value:150,attrs:TalAttrs.NON, - desc:"普通攻击3次后, 给于目标150%的伤害"}, + 7001:{uuid:7001,name:"风怒",triType:TriType.ATK,Trigger:3,target:TalTarget.ENEMY,effet:TalEffet.WFUNY,value:50,attrs:TalAttrs.NON, + desc:"普通攻击3次后, 立即给与目标150%伤害的额外打击"}, 7002:{uuid:7002,name:"溅射",triType:TriType.ATK,Trigger:3,target:TalTarget.ENEMY,effet:TalEffet.SPLASH,value:50,attrs:TalAttrs.NON, desc:"普通攻击3次后, 会对目标100码内的敌人造成30%伤害"}, 7003:{uuid:7003,name:"回血",triType:TriType.ATK,Trigger:3,target:TalTarget.SELF,effet:TalEffet.HP,value:1,attrs:TalAttrs.NON, @@ -98,8 +98,8 @@ export const talConf: Record = { desc:"普通攻击3次后, 获得5%的暴击率"}, 7009:{uuid:7009,name:"眩晕",triType:TriType.ATK,Trigger:3,target:TalTarget.ENEMY,effet:TalEffet.BUFF,value:5,attrs:TalAttrs.STUN_CHANCE, desc:"普通攻击3次后, 获得5%的眩晕率"}, - 7010:{uuid:7010,name:"熟练",triType:TriType.ATK,Trigger:10,target:TalTarget.SELF,effet:TalEffet.D_SKILL,value:2,attrs:TalAttrs.NON, - desc:"普通攻击10次后, 获得下2次一般技能触发2次"}, + 7010:{uuid:7010,name:"熟练",triType:TriType.ATK,Trigger:10,target:TalTarget.SELF,effet:TalEffet.D_SKILL,value:0,attrs:TalAttrs.NON, + desc:"普通攻击10次后, 下次一般技能额外释放1次,伤害100%"}, /*** 受伤触发 ***/ 7101:{uuid:7101,name:"反击",triType:TriType.DMG,Trigger:3,target:TalTarget.ENEMY,effet:TalEffet.DMG,value:50,attrs:TalAttrs.NON, diff --git a/assets/script/game/hero/HeroAttrsComp.ts b/assets/script/game/hero/HeroAttrsComp.ts index 0cd83b55..67270272 100644 --- a/assets/script/game/hero/HeroAttrsComp.ts +++ b/assets/script/game/hero/HeroAttrsComp.ts @@ -6,7 +6,7 @@ import { HeroSkillsComp } from "./HeroSkills"; import { talConf, TalAttrs } from "../common/config/TalSet"; interface talTrigger{ - value:boolean + value:number count:number } @ecs.register('HeroAttrs') @@ -36,8 +36,8 @@ export class HeroAttrsComp extends ecs.Comp { Attrs: any = []; // 最终属性数组(经过Buff计算后) NeAttrs: any = []; // 负面状态数组 //=====================天赋触发标签===================== - tal_DSill:talTrigger={value:false,count:0} - tal_WFuny:talTrigger={value:false,count:0} + tal_DSill:talTrigger={value:0,count:0} + tal_WFuny:talTrigger={value:0,count:0} /** 天赋buff数组 - 触发过期,数量可叠加 */ BUFFS_TAL: Record> = {}; diff --git a/assets/script/game/hero/TalComp.ts b/assets/script/game/hero/TalComp.ts index 8b9b4650..6473b093 100644 --- a/assets/script/game/hero/TalComp.ts +++ b/assets/script/game/hero/TalComp.ts @@ -1,5 +1,6 @@ import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { TalAttrs, talConf, TalEffet, TalTarget, TriType} from "../common/config/TalSet"; +import { HeroAttrsComp } from "./HeroAttrsComp"; import { HeroViewComp } from "./HeroViewComp"; /** @@ -56,30 +57,30 @@ export class TalComp extends ecs.Comp { /** * 为英雄添加一个新天赋 - * @param talUuid 要添加的天赋ID + * @param uuid 要添加的天赋ID * * 添加流程: * 1. 检查天赋是否已存在 * 2. 检查天赋配置是否存在 * 3. 创建并初始化天赋数据 */ - addTal(talUuid: number) { + addTal(uuid: number) { // 检查天赋是否已存在 - if (this.Tals[talUuid]) { - console.error(`[TalComp]天赋已存在,天赋ID:${talUuid}`); + if (this.Tals[uuid]) { + console.error(`[TalComp]天赋已存在,天赋ID:${uuid}`); return; } // 获取天赋配置 - const tConf = talConf[talUuid]; + const tConf = talConf[uuid]; if (!tConf) { - console.error(`[TalComp]天赋配置不存在,天赋ID:${talUuid}`); + console.error(`[TalComp]天赋配置不存在,天赋ID:${uuid}`); return; } // 创建并初始化天赋数据 - this.Tals[talUuid] = { - uuid: talUuid, + this.Tals[uuid] = { + uuid: uuid, name: tConf.name, triType: tConf.triType, target: tConf.target, @@ -116,35 +117,35 @@ export class TalComp extends ecs.Comp { /** * 更新天赋的效果数值 - * @param talUuid 天赋ID + * @param uuid 天赋ID * @param val 要增减的数值 * * 功能: * - 用于调整天赋的实际效果数值 * - 可通过正负数来增加或减少效果 */ - updateVal(talUuid: number, val: number) { + updateVal(uuid: number, val: number) { // 检查天赋是否存在 - if (!this.Tals[talUuid]) { - console.error(`[TalComp]天赋不存在,天赋ID:${talUuid}`); + if (!this.Tals[uuid]) { + console.error(`[TalComp]天赋不存在,天赋ID:${uuid}`); return; } // 更新天赋效果数值 - this.Tals[talUuid].value_add += val; + this.Tals[uuid].value_add += val; } - updateTrigger(talUuid: number, val: number) { + updateTrigger(uuid: number, val: number) { // 检查天赋是否存在 - if (!this.Tals[talUuid]) { - console.error(`[TalComp]天赋不存在,天赋ID:${talUuid}`); + if (!this.Tals[uuid]) { + console.error(`[TalComp]天赋不存在,天赋ID:${uuid}`); return; } // 更新天赋触发阈值 - this.Tals[talUuid].Trigger_add += val; - if (this.Tals[talUuid].Trigger-this.Tals[talUuid].Trigger_add <= 1) { - this.Tals[talUuid].Trigger_add = this.Tals[talUuid].Trigger-1; + this.Tals[uuid].Trigger_add += val; + if (this.Tals[uuid].Trigger-this.Tals[uuid].Trigger_add <= 1) { + this.Tals[uuid].Trigger_add = this.Tals[uuid].Trigger-1; } } /** @@ -161,14 +162,42 @@ export class TalComp extends ecs.Comp { for (let uuid in this.Tals) { const talent = this.Tals[uuid]; - // 找到第一个匹配类型的天赋并更新 + // 找到所有匹配类型的天赋并更新 if (talent.triType == triType) { talent.cur += val; - break; // 只更新第一个匹配的天赋 + this.checkTrigger(talent.uuid); } } } + checkTrigger(uuid:number){ + const talent = this.Tals[uuid]; + if (talent.cur >= (talent.Trigger - talent.Trigger_add)) { // 修复触发条件,累积值达到或超过触发阈值时触发 + console.log(`[TalComp]天赋触发,天赋ID:${uuid}`); + this.doTriggerTal(talent.uuid); + // 重置累积值 + talent.cur = 0; + } + } + doTriggerTal(uuid: number) { + // 检查天赋是否存在 + if (!this.Tals[uuid]) { + console.error(`[TalComp]天赋不存在,天赋ID:${uuid}`); + return; + } + const talent = this.Tals[uuid]; + const heroAttrs=this.ent.get(HeroAttrsComp); + switch(talent.effet){ + case TalEffet.WFUNY: + heroAttrs.tal_WFuny.count += 1; + heroAttrs.tal_WFuny.value = talent.value+talent.value_add; + break; + case TalEffet.D_SKILL: + heroAttrs.tal_DSill.count += 1; + heroAttrs.tal_DSill.value = talent.value+talent.value_add; + break; + } + } /** * 重置组件状态 *