From 650bcccc582ea8958f6eec7547202899dba5c0bd Mon Sep 17 00:00:00 2001 From: walkpan Date: Sat, 21 Feb 2026 23:45:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=A4=A9=E8=B5=8B=E7=B3=BB=E7=BB=9F):=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=A4=A9=E8=B5=8B=E8=A7=A6=E5=8F=91=E6=9C=BA?= =?UTF-8?q?=E5=88=B6=E5=B9=B6=E6=B7=BB=E5=8A=A0=E5=A4=A9=E8=B5=8B=E7=82=B9?= =?UTF-8?q?=E6=95=B0=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除升级触发类型(TriType.LUP)及相关逻辑,改为通过英雄配置定义天赋点数获取规则 - 新增天赋点数接口(ITalPts)和配置字段,支持攻击、受击等不同触发条件 - 在天赋配置中添加点数获取(Pts)和消耗(CPts)字段 - 移除必杀技触发类型(TriType.MAX)的处理逻辑 - 优化TalComp组件结构,移除不必要的heroView引用 - 添加天赋系统设计文档(taldev.md) --- assets/script/game/common/config/TalSet.ts | 54 ++++++++++----------- assets/script/game/common/config/heroSet.ts | 10 +++- assets/script/game/common/config/taldev.md | 5 ++ assets/script/game/hero/SACastSystem.ts | 1 - assets/script/game/hero/TalComp.ts | 24 ++------- 5 files changed, 44 insertions(+), 50 deletions(-) create mode 100644 assets/script/game/common/config/taldev.md diff --git a/assets/script/game/common/config/TalSet.ts b/assets/script/game/common/config/TalSet.ts index dd515cef..7581fd6c 100644 --- a/assets/script/game/common/config/TalSet.ts +++ b/assets/script/game/common/config/TalSet.ts @@ -6,11 +6,10 @@ import { CardKind } from "./GameSet"; * 天赋类型枚举,也是触发条件 */ export enum TriType { - LUP = 1, // 等级升触发 - ATK = 2, //普通攻击触发 - DMG = 3, // 受伤触发 + ATK = 1, // 等级升触发 + DMG = 2, //普通攻击触发 + ATKED=3, SKILL = 4, // 技能触发 - MAX = 5, // 必杀触发 HPL = 6, // 失去生命值触发 HPA = 7, // 获得生命值触发 INIT = 8, // 初始触发,如:多1个技能 @@ -37,9 +36,9 @@ export enum TalEffet { C_MSKILL=11, // 必杀技能必暴 次数 叠加 ,如额外5次 必杀技能必暴 C_ATK=12, // 普工必爆 次数 叠加 ,如额外5次 普工必爆 C_SKILL=13, // 一般技能必暴 次数 叠加 ,如额外5次 一般技能必暴 - } + export enum TalTarget { SELF = 1, // 自己触发 ENEMY = 2, // 敌人触发 @@ -58,6 +57,7 @@ export enum TalAttrs { REVIVE_COUNT=Attrs.REVIVE_COUNT, // 复活次数 WFUNY=Attrs.WFUNY, // 风怒 } + /** * 天赋配置接口 * 定义一个完整的天赋效果 @@ -75,6 +75,8 @@ export interface ItalConf { value: number; // 触发的效果值(如增加10%攻击力, 触发的技能uuid,增加1个技能uuid) attrs?:TalAttrs //触发的attrs效果的对应attrs Trigger:number //触发值 + Pts:number //添加的天赋点数 + CPts:number //消耗的天赋点数 desc: string; // 天赋描述(说明触发条件和效果) count:number //执行次数,及可以触发的次数 } @@ -98,43 +100,39 @@ export interface ItalConf { export const talConf: Record = { /*** 普通攻击触发 ***/ 7001:{uuid:7001,name:"风怒",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.WFUNY,vType:BType.RATIO, value:50,attrs:TalAttrs.NON, - desc:"普通攻击3次后, 立即给与目标150%伤害的额外打击"}, + Pts:2,CPts:0,desc:"普通攻击3次后, 立即给与目标150%伤害的额外打击"}, 7003:{uuid:7003,name:"回血",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.HP,vType:BType.RATIO, value:1,attrs:TalAttrs.NON, - desc:"普通攻击3次后, 会回复1%的生命值"}, + Pts:2,CPts:0,desc:"普通攻击3次后, 会回复1%的生命值"}, 7004:{uuid:7004,name:"回血(大)",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.HP,vType:BType.RATIO, value:2,attrs:TalAttrs.NON, - desc:"普通攻击5次后, 会回复2%的生命值"}, + Pts:2,CPts:0,desc:"普通攻击5次后, 会回复2%的生命值"}, 7005:{uuid:7005,name:"冰冻",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:100,attrs:TalAttrs.FREEZE_CHANCE, - desc:"普通攻击3次后, 下一次攻击必定冻结目标"}, + Pts:2,CPts:0,desc:"普通攻击3次后, 下一次攻击必定冻结目标"}, 7006:{uuid:7006,name:"沉默",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:100,attrs:TalAttrs.SILENCE_CHANCE, - desc:"普通攻击3次后, 下一次攻击必定沉默目标"}, + Pts:2,CPts:0,desc:"普通攻击3次后, 下一次攻击必定沉默目标"}, 7007:{uuid:7007,name:"击退",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:100,attrs:TalAttrs.BACK_CHANCE, - desc:"普通攻击3次后, 下一次攻击必定击退目标"}, + Pts:2,CPts:0,desc:"普通攻击3次后, 下一次攻击必定击退目标"}, 7008:{uuid:7008,name:"会心",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.BUFF,vType:BType.RATIO, value:100,attrs:TalAttrs.CRITICAL, - desc:"普通攻击3次后, 下一次攻击必定获得100%的暴击率"}, + Pts:2,CPts:0,desc:"普通攻击3次后, 下一次攻击必定获得100%的暴击率"}, 7009:{uuid:7009,name:"眩晕",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:100,attrs:TalAttrs.STUN_CHANCE, - desc:"普通攻击3次后, 下一次攻击必定获得100%的眩晕率"}, + Pts:2,CPts:0,desc:"普通攻击3次后, 下一次攻击必定获得100%的眩晕率"}, 7010:{uuid:7010,name:"熟练",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:10,count:1,target:TalTarget.SELF,effet:TalEffet.D_SKILL,vType:BType.RATIO, value:0,attrs:TalAttrs.NON, - desc:"普通攻击10次后, 下次一般技能额外释放1次,伤害100%"}, + Pts:2,CPts:0,desc:"普通攻击10次后, 下次一般技能额外释放1次,伤害100%"}, /*** 受伤触发 ***/ - 7101:{uuid:7101,name:"反击",icon:"7001",kind:CardKind.Atted,triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.ATK_DMG,vType:BType.RATIO, value:50,attrs:TalAttrs.NON, - desc:"被攻击3次后, 给于目标50%的伤害"}, - 7102:{uuid:7102,name:"护盾",icon:"7001",kind:CardKind.Atted,triType:TriType.DMG,Trigger:30,count:1,target:TalTarget.SELF,effet:TalEffet.SHIELD,vType:BType.RATIO, value:20,attrs:TalAttrs.NON, - desc:"被攻击30次后, 获得20%的生命值护盾"}, - 7103:{uuid:7103,name:"减伤",icon:"7001",kind:CardKind.Atted,triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.DEF,vType:BType.RATIO, value:50,attrs:TalAttrs.NON, - desc:"被攻击3次后, 下1次伤害减50%"}, - 7104:{uuid:7104,name:"复苏",icon:"7001",kind:CardKind.Atted,triType:TriType.DMG,Trigger:100,count:1,target:TalTarget.SELF,effet:TalEffet.BUFF,vType:BType.VALUE, value:1,attrs:TalAttrs.REVIVE_COUNT, - desc:"被攻击100次后, 获得1次复活"}, + 7101:{uuid:7101,name:"反击",icon:"7001",kind:CardKind.Atted,triType:TriType.ATKED,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.ATK_DMG,vType:BType.RATIO, value:50,attrs:TalAttrs.NON, + Pts:2,CPts:0,desc:"被攻击3次后, 给于目标50%的伤害"}, + 7102:{uuid:7102,name:"护盾",icon:"7001",kind:CardKind.Atted,triType:TriType.ATKED,Trigger:30,count:1,target:TalTarget.SELF,effet:TalEffet.SHIELD,vType:BType.RATIO, value:20,attrs:TalAttrs.NON, + Pts:2,CPts:0,desc:"被攻击30次后, 获得20%的生命值护盾"}, + 7103:{uuid:7103,name:"减伤",icon:"7001",kind:CardKind.Atted,triType:TriType.ATKED,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.DEF,vType:BType.RATIO, value:50,attrs:TalAttrs.NON, + Pts:2,CPts:0,desc:"被攻击3次后, 下1次伤害减50%"}, + 7104:{uuid:7104,name:"复苏",icon:"7001",kind:CardKind.Atted,triType:TriType.ATKED,Trigger:100,count:1,target:TalTarget.SELF,effet:TalEffet.BUFF,vType:BType.VALUE, value:1,attrs:TalAttrs.REVIVE_COUNT, + Pts:2,CPts:0,desc:"被攻击100次后, 获得1次复活"}, /*** 失去血量触发 ***/ 7201:{uuid:7201,name:"背水",icon:"7001",kind:CardKind.Hp,triType:TriType.HPL,Trigger:50,count:10,target:TalTarget.SELF,effet:TalEffet.C_ATK,vType:BType.VALUE, value:0,attrs:TalAttrs.NON, - desc:"每失去50%生命值,获得下10次普通攻击暴击"}, + Pts:2,CPts:0,desc:"每失去50%生命值,获得下10次普通攻击暴击"}, + - /*** 升级触发 ***/ - 7301:{uuid:7301,name:"勤勉",icon:"7001",kind:CardKind.Partner,triType:TriType.LUP,Trigger:1,count:5,target:TalTarget.SELF,effet:TalEffet.C_SKILL,vType:BType.VALUE, value:0,attrs:TalAttrs.NON, - desc:"每升1级,获得下5次技能必暴击"}, - 7302:{uuid:7302,name:"风怒",icon:"7001",kind:CardKind.Partner,triType:TriType.LUP,Trigger:1,count:1,target:TalTarget.SELF,effet:TalEffet.ATTR,vType:BType.RATIO, value:2,attrs:TalAttrs.WFUNY, - desc:"每升1级,永久增加2%的风怒概率"}, /*** 7400 回血量触发 ***/ /** 7500 一击必杀触发 */ diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index fdb76c49..20e3da4b 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -2,6 +2,8 @@ import { v3 } from "cc" import { BoxSet, FacSet } from "./GameSet" import { smc } from "../SingletonModuleComp" import { BuffConf, SkillRange } from "./SkillSet" +import { Interface } from "readline" +import { TriType } from "./TalSet" export enum AttrSet { ATTR_MAX = 85, @@ -92,6 +94,11 @@ export enum HRegen { HP=0.5 } +export interface ITalPts { + TriType: TriType; //触发添加天赋点数类型 + TriVal: number; //触发添加天赋点需求数值 + TalPts: number; //添加天赋点数值 +} /** * 不同职业升级属性加成配置 * 战士:高血量成长,低攻击成长 @@ -131,6 +138,7 @@ export interface heroInfo { skills: number[]; // 携带技能ID列表 buff: BuffConf[]; // 自带buff配置(通常为空,由技能动态添加) tal: number[]; // 天赋ID列表 + talPts?: ITalPts[]; // 天赋触发配置 info: string; // 描述文案 } @@ -151,7 +159,7 @@ export const HeroInfo: Record = { 5001:{uuid:5001,name:"盾战士",icon:"1001",path:"hk1", fac:FacSet.HERO, kind:1,as:1, type:HType.warrior,lv:1,hp:300,mp:200,def:5,ap:25,speed:120,skills:[6001,6004], rangeType: SkillRange.Melee, - buff:[],tal:[],info:"盾战士"}, + buff:[],tal:[],talPts:[{TriType:TriType.ATK,TriVal:1,TalPts:1}],info:"盾战士"}, 5002:{uuid:5002,name:"奥术法师",icon:"1001",path:"hm2", fac:FacSet.HERO, kind:2,as:1, type:HType.mage,lv:1,hp:150,mp:135,def:0,ap:40,speed:95,skills:[6003,6101], diff --git a/assets/script/game/common/config/taldev.md b/assets/script/game/common/config/taldev.md new file mode 100644 index 00000000..1c5921bc --- /dev/null +++ b/assets/script/game/common/config/taldev.md @@ -0,0 +1,5 @@ +天赋系统: +攻击,受攻击,治疗量,伤害量等触发天赋点数,天赋点数可以用于技能伤害加成,触发特殊特殊百分比加成:攻击,防御,生命值,冰冻几率,暴击率等 +伤害加成例1:技能伤害加成(总天赋点数/10) +属性加成例2:每获得2点天赋点增加5攻击 +属性加成例3:每获得2点天赋点增加6攻击,消耗1点天赋点数 diff --git a/assets/script/game/hero/SACastSystem.ts b/assets/script/game/hero/SACastSystem.ts index 4ab410c6..99a4da25 100644 --- a/assets/script/game/hero/SACastSystem.ts +++ b/assets/script/game/hero/SACastSystem.ts @@ -169,7 +169,6 @@ export class SACastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdat const talComp = casterEntity.get(TalComp); if (hset === HSSet.atk) talComp.updateCur(TriType.ATK); if (hset === HSSet.skill) talComp.updateCur(TriType.SKILL); - if (hset === HSSet.max) talComp.updateCur(TriType.MAX); } /**********************天赋处理*************************************************************************/ // 根据技能类型执行不同逻辑 diff --git a/assets/script/game/hero/TalComp.ts b/assets/script/game/hero/TalComp.ts index 2d561494..58280aac 100644 --- a/assets/script/game/hero/TalComp.ts +++ b/assets/script/game/hero/TalComp.ts @@ -9,6 +9,7 @@ import { BuffConf } from "../common/config/SkillSet"; import { TalAttrs, talConf, TalEffet, TalTarget, TriType} from "../common/config/TalSet"; import { HeroAttrsComp } from "./HeroAttrsComp"; import { HeroViewComp } from "./HeroViewComp"; +import { ITalPts } from "../common/config/heroSet"; const { property } = _decorator; @@ -49,26 +50,13 @@ export class TalComp extends ecs.Comp { @property({ tooltip: "是否启用调试日志" }) private debugMode: boolean = false; - /** 英雄视图组件引用,运行时获取以避免循环引用 */ - private heroView: any = null; - - /** 英雄唯一标识符,用于从配置中获取英雄相关信息 */ - private heroUuid: number = 0; - /** 天赋集合,以天赋ID为键,存储所有已获得的天赋 */ Tals: Record = {}; - - /** - * 组件初始化方法 - * @param heroUuid 英雄唯一标识符 - */ + TalPts:Record = {}; init(heroUuid: number) { - this.heroUuid = heroUuid; - // 从实体中获取英雄视图组件引用 - this.heroView = this.ent.get(HeroViewComp); // 初始化天赋集合 this.Tals = {}; - + this.TalPts = {}; // 监听升级事件 oops.message.on(GameEvent.CanUpdateLv, this.onLevelUp, this); // 监听天赋选择事件 @@ -99,9 +87,7 @@ export class TalComp extends ecs.Comp { // GameEvent.CanUpdateLv 事件参数 { lv: number } mLogger.log(this.debugMode, 'TalComp', `[TalComp] 监听到升级事件,当前等级: ${args.lv}`); - - // 更新升级类型的天赋进度 (默认每次升级触发一次,val=1) - this.updateCur(TriType.LUP, 1); + } /** @@ -303,8 +289,6 @@ export class TalComp extends ecs.Comp { oops.message.off(GameEvent.CanUpdateLv, this.onLevelUp, this); oops.message.off(GameEvent.UseTalentCard, this.onUseTalentCard, this); this.Tals = {}; - this.heroUuid = 0; - this.heroView = null; }