refactor(game): 重构天赋系统,移除MP效果并添加属性永久加成
- 删除HeroAttrEvent.ts文件及相关MP效果处理 - 将TalEffet.STATS重命名为TalEffet.ATTR以更准确描述功能 - 调整部分天赋配置数值和触发条件 - 新增风怒属性永久加成功能
This commit is contained in:
9
assets/resources/gui/ui4.plist.meta
Normal file
9
assets/resources/gui/ui4.plist.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "0.0.0",
|
||||||
|
"importer": "*",
|
||||||
|
"imported": false,
|
||||||
|
"uuid": "eaa91e98-d58c-40cb-88ee-f7122960909e",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
9
assets/script/game/common/config/ScoreSet.ts.meta
Normal file
9
assets/script/game/common/config/ScoreSet.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "4.0.24",
|
||||||
|
"importer": "typescript",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "7f5508cb-d643-4082-b216-891c685366d3",
|
||||||
|
"files": [],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {}
|
||||||
|
}
|
||||||
@@ -25,18 +25,18 @@ export enum TalEffet {
|
|||||||
THORNS=14, //反伤 百分比 次数+反伤加成,如额外5次 反伤-20%
|
THORNS=14, //反伤 百分比 次数+反伤加成,如额外5次 反伤-20%
|
||||||
///////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////
|
||||||
HP=3, // 回血 百分比 直接触发,回血20%
|
HP=3, // 回血 百分比 直接触发,回血20%
|
||||||
MP=4, //回蓝 百分比 直接触发,回蓝20%
|
|
||||||
SHIELD=9, // 护盾 直接触发,获得20%的生命值护盾
|
SHIELD=9, // 护盾 直接触发,获得20%的生命值护盾
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
BUFF = 5, // 数值叠加 触发后清零: 暴击率,闪避率等,触发后效果取消
|
BUFF = 5, // 数值叠加 触发后清零: 暴击率,闪避率等,触发后效果取消
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
STATS=6, // 状态 待定
|
ATTR=6, // 属性 永久添加
|
||||||
|
|
||||||
WFUNY=7, // 风怒 次数 叠加 ,如额外5次 风怒
|
WFUNY=7, // 风怒 次数 叠加 ,如额外5次 风怒
|
||||||
D_SKILL=8, //两次技能 次数 叠加,如额外5次 两次技能
|
D_SKILL=8, //两次技能 次数 叠加,如额外5次 两次技能
|
||||||
C_MSKILL=11, // 必杀技能必暴 次数 叠加 ,如额外5次 必杀技能必暴
|
C_MSKILL=11, // 必杀技能必暴 次数 叠加 ,如额外5次 必杀技能必暴
|
||||||
C_ATK=12, // 普工必爆 次数 叠加 ,如额外5次 普工必爆
|
C_ATK=12, // 普工必爆 次数 叠加 ,如额外5次 普工必爆
|
||||||
C_SKILL=13, // 一般技能必暴 次数 叠加 ,如额外5次 一般技能必暴
|
C_SKILL=13, // 一般技能必暴 次数 叠加 ,如额外5次 一般技能必暴
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum TalTarget {
|
export enum TalTarget {
|
||||||
@@ -52,6 +52,10 @@ export enum TalAttrs {
|
|||||||
SILENCE_CHANCE=Attrs.SILENCE_CHANCE, // 沉默概率
|
SILENCE_CHANCE=Attrs.SILENCE_CHANCE, // 沉默概率
|
||||||
CRITICAL=Attrs.CRITICAL, // 暴击率
|
CRITICAL=Attrs.CRITICAL, // 暴击率
|
||||||
AP=Attrs.AP, // 攻击力
|
AP=Attrs.AP, // 攻击力
|
||||||
|
HP_MAX=Attrs.HP_MAX, // 最大生命值
|
||||||
|
THORNS=Attrs.THORNS, //反伤 百分比
|
||||||
|
REVIVE_COUNT=Attrs.REVIVE_COUNT, // 复活次数
|
||||||
|
WFUNY=Attrs.WFUNY, // 风怒
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 天赋配置接口
|
* 天赋配置接口
|
||||||
@@ -93,10 +97,10 @@ export const talConf: Record<number, ItalConf> = {
|
|||||||
7001:{uuid:7001,name:"风怒",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.WFUNY,vType:BType.RATIO, value:50,attrs:TalAttrs.NON,
|
7001:{uuid:7001,name:"风怒",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.WFUNY,vType:BType.RATIO, value:50,attrs:TalAttrs.NON,
|
||||||
desc:"普通攻击3次后, 立即给与目标150%伤害的额外打击"},
|
desc:"普通攻击3次后, 立即给与目标150%伤害的额外打击"},
|
||||||
|
|
||||||
7003:{uuid:7003,name:"回血",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.HP,vType:BType.RATIO, value:10,attrs:TalAttrs.NON,
|
7003:{uuid:7003,name:"回血",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.HP,vType:BType.RATIO, value:1,attrs:TalAttrs.NON,
|
||||||
desc:"普通攻击3次后, 会回复10%的生命值"},
|
desc:"普通攻击3次后, 会回复1%的生命值"},
|
||||||
7004:{uuid:7004,name:"回蓝",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.MP,vType:BType.RATIO, value:10,attrs:TalAttrs.NON,
|
7004:{uuid:7004,name:"回血(大)",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.HP,vType:BType.RATIO, value:2,attrs:TalAttrs.NON,
|
||||||
desc:"普通攻击3次后, 会回复10%的蓝值"},
|
desc:"普通攻击5次后, 会回复2%的生命值"},
|
||||||
7005:{uuid:7005,name:"冰冻",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:5,attrs:TalAttrs.FREEZE_CHANCE,
|
7005:{uuid:7005,name:"冰冻",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:5,attrs:TalAttrs.FREEZE_CHANCE,
|
||||||
desc:"普通攻击3次后, 获得5%的冻结率"},
|
desc:"普通攻击3次后, 获得5%的冻结率"},
|
||||||
7006:{uuid:7006,name:"沉默",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:5,attrs:TalAttrs.SILENCE_CHANCE,
|
7006:{uuid:7006,name:"沉默",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:5,attrs:TalAttrs.SILENCE_CHANCE,
|
||||||
@@ -113,11 +117,12 @@ export const talConf: Record<number, ItalConf> = {
|
|||||||
/*** 受伤触发 ***/
|
/*** 受伤触发 ***/
|
||||||
7101:{uuid:7101,name:"反击",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.ATK_DMG,vType:BType.RATIO, value:50,attrs:TalAttrs.NON,
|
7101:{uuid:7101,name:"反击",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%的伤害"},
|
desc:"被攻击3次后, 给于目标50%的伤害"},
|
||||||
7102:{uuid:7102,name:"护盾",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.SHIELD,vType:BType.RATIO, value:20,attrs:TalAttrs.NON,
|
7102:{uuid:7102,name:"护盾",triType:TriType.DMG,Trigger:30,count:1,target:TalTarget.SELF,effet:TalEffet.SHIELD,vType:BType.RATIO, value:20,attrs:TalAttrs.NON,
|
||||||
desc:"被攻击3次后, 获得20%的生命值护盾"},
|
desc:"被攻击30次后, 获得20%的生命值护盾"},
|
||||||
7103:{uuid:7103,name:"减伤",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.DEF,vType:BType.RATIO, value:50,attrs:TalAttrs.NON,
|
7103:{uuid:7103,name:"减伤",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%"},
|
desc:"被攻击3次后, 下1次伤害减50%"},
|
||||||
|
7104:{uuid:7104,name:"反伤",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次复活"},
|
||||||
|
|
||||||
/*** 失去血量触发 ***/
|
/*** 失去血量触发 ***/
|
||||||
7201:{uuid:7201,name:"背水",triType:TriType.HPL,Trigger:50,count:10,target:TalTarget.SELF,effet:TalEffet.C_ATK,vType:BType.VALUE, value:0,attrs:TalAttrs.NON,
|
7201:{uuid:7201,name:"背水",triType:TriType.HPL,Trigger:50,count:10,target:TalTarget.SELF,effet:TalEffet.C_ATK,vType:BType.VALUE, value:0,attrs:TalAttrs.NON,
|
||||||
@@ -125,8 +130,9 @@ export const talConf: Record<number, ItalConf> = {
|
|||||||
|
|
||||||
/*** 升级触发 ***/
|
/*** 升级触发 ***/
|
||||||
7301:{uuid:7301,name:"勤勉",triType:TriType.LUP,Trigger:1,count:5,target:TalTarget.SELF,effet:TalEffet.C_SKILL,vType:BType.VALUE, value:0,attrs:TalAttrs.NON,
|
7301:{uuid:7301,name:"勤勉",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次技能暴击"},
|
desc:"每升1级,获得下5次技能必暴击"},
|
||||||
|
7302:{uuid:7302,name:"风怒",triType:TriType.LUP,Trigger:1,count:1,target:TalTarget.SELF,effet:TalEffet.ATTR,vType:BType.RATIO, value:2,attrs:TalAttrs.WFUNY,
|
||||||
|
desc:"每升1级,永久增加2%的风怒概率"},
|
||||||
};
|
};
|
||||||
|
|
||||||
// ========== 工具函数 ==========
|
// ========== 工具函数 ==========
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
|
||||||
import { Attrs } from "../common/config/HeroAttrs";
|
|
||||||
|
|
||||||
export interface AttrEvent {
|
|
||||||
Attr: Attrs;
|
|
||||||
Value:number;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ecs.register('HeroAttrEvent')
|
|
||||||
export class HeroAttrEvent extends ecs.Comp {
|
|
||||||
|
|
||||||
|
|
||||||
AttrEvents:AttrEvent[] = [];
|
|
||||||
addAttrEvent(event:AttrEvent){
|
|
||||||
this.AttrEvents.push(event);
|
|
||||||
}
|
|
||||||
reset() {
|
|
||||||
this.AttrEvents = [];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
import { Timer } from "db://oops-framework/core/common/timer/Timer";
|
|
||||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
|
||||||
import { smc } from "../common/SingletonModuleComp";
|
|
||||||
import { Attrs } from "../common/config/HeroAttrs";
|
|
||||||
import { HeroUpSet } from "../common/config/heroSet";
|
|
||||||
import { HeroSkillsComp } from "./HeroSkills";
|
|
||||||
import { HeroAttrsComp } from "./HeroAttrsComp";
|
|
||||||
import { HeroAttrEvent } from "./HeroAttrEvent";
|
|
||||||
/**
|
|
||||||
* ==================== 英雄属性更新系统 ====================
|
|
||||||
*
|
|
||||||
* 按照 ECS 设计理念:
|
|
||||||
* - System(HeroAttrEventSystem):处理属性更新事件
|
|
||||||
*
|
|
||||||
* 系统职责:
|
|
||||||
* 1. 处理当角色收到attr变更事件时,更新角色属性,并处理动画展示
|
|
||||||
*/
|
|
||||||
@ecs.register('HeroAttrEventSystem')
|
|
||||||
export class HeroAttrEventSystem extends ecs.ComblockSystem
|
|
||||||
implements ecs.ISystemUpdate, ecs.IEntityEnterSystem {
|
|
||||||
|
|
||||||
filter(): ecs.IMatcher {
|
|
||||||
return ecs.allOf(HeroAttrsComp,HeroAttrEvent);
|
|
||||||
}
|
|
||||||
entityEnter(e: ecs.Entity): void {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
update(e: ecs.Entity): void {
|
|
||||||
if(!smc.mission.play ) return;
|
|
||||||
if(smc.mission.pause) return
|
|
||||||
const model = e.get(HeroAttrsComp);
|
|
||||||
if (!model || model.is_dead) return;
|
|
||||||
const event = e.get(HeroAttrEvent);
|
|
||||||
if (!event) return;
|
|
||||||
// 移除事件组件(事件处理完成)
|
|
||||||
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 启用调试模式(调试时使用)
|
|
||||||
*/
|
|
||||||
enableDebug() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 禁用调试模式(正式运行)
|
|
||||||
*/
|
|
||||||
disableDebug() {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -214,9 +214,6 @@ export class TalComp extends ecs.Comp {
|
|||||||
case TalEffet.HP:
|
case TalEffet.HP:
|
||||||
heroAttrs.add_hp(talent.value + talent.value_add,talent.vType == BType.VALUE);
|
heroAttrs.add_hp(talent.value + talent.value_add,talent.vType == BType.VALUE);
|
||||||
break;
|
break;
|
||||||
case TalEffet.MP:
|
|
||||||
heroAttrs.add_mp(talent.value + talent.value_add,talent.vType == BType.VALUE);
|
|
||||||
break;
|
|
||||||
case TalEffet.WFUNY:
|
case TalEffet.WFUNY:
|
||||||
heroAttrs.addCountTal(TalEffet.WFUNY, talent.value + talent.value_add);
|
heroAttrs.addCountTal(TalEffet.WFUNY, talent.value + talent.value_add);
|
||||||
break;
|
break;
|
||||||
@@ -235,6 +232,9 @@ export class TalComp extends ecs.Comp {
|
|||||||
case TalEffet.BUFF:
|
case TalEffet.BUFF:
|
||||||
heroAttrs.addValueTal(talent.uuid, talent.attrs, talent.vType, talent.value + talent.value_add);
|
heroAttrs.addValueTal(talent.uuid, talent.attrs, talent.vType, talent.value + talent.value_add);
|
||||||
break;
|
break;
|
||||||
|
case TalEffet.ATTR:
|
||||||
|
heroAttrs.addValueTal(talent.uuid, talent.attrs, talent.vType, talent.value + talent.value_add);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user