feat(skill): add trigger probability and pity system for attack/attacked triggers

1. 新增技能触发概率配置与保底叠加机制,仅对攻击/受击触发生效
2. 前端编辑器新增t_chance概率与pity_add保底增量配置项
3. 技能描述文案支持展示触发概率
4. 运行时新增概率判定与保底缓存逻辑,兼容存量配置
This commit is contained in:
pan
2026-09-21 15:25:02 +08:00
parent 51256a2813
commit be6d941b90
5 changed files with 261 additions and 152 deletions

View File

@@ -1,5 +1,5 @@
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { HeroDisVal, HeroInfo, HSkillInfo, HType, SkillTriggerType, TriggerGrouped, LvFieldEntry, LvBonusAttrsEntry, FieldEntry, HRole } from "../common/config/heroSet";
import { HeroDisVal, HeroInfo, HSkillInfo, HType, SkillTriggerType, TriggerGrouped, LvFieldEntry, LvBonusAttrsEntry, FieldEntry, HRole, ResolvedTriggerEntry } from "../common/config/heroSet";
import { mLogger } from "../common/Logger";
import { FacSet, FightSet } from "../common/config/GameSet";
import { FieldSkillSet, FieldSkillType, SkillOverrides } from "../common/config/SkillSet";
@@ -64,20 +64,26 @@ export class HeroAttrsComp extends ecs.Comp {
// ==================== 运行时解析缓存(按当前等级 resolve 后的有效列表) ====================
/** 当前等级下生效的攻击触发条目(供 SkillTriggerHelper 消费) */
runtime_atking?: { s_uuid: number; t_num: number; overrides?: SkillOverrides }[];
runtime_atking?: ResolvedTriggerEntry[];
/** 当前等级下生效的受击触发条目 */
runtime_atked?: { s_uuid: number; t_num: number; overrides?: SkillOverrides }[];
runtime_atked?: ResolvedTriggerEntry[];
/** 当前等级下生效的召唤触发条目 */
runtime_call?: { s_uuid: number; t_num: number; overrides?: SkillOverrides }[];
runtime_call?: ResolvedTriggerEntry[];
/** 当前等级下生效的死亡触发条目 */
runtime_dead?: { s_uuid: number; t_num: number; overrides?: SkillOverrides }[];
runtime_dead?: ResolvedTriggerEntry[];
/** 当前等级下生效的战前触发条目 */
runtime_fstart?: { s_uuid: number; t_num: number; overrides?: SkillOverrides }[];
runtime_fstart?: ResolvedTriggerEntry[];
/** 当前等级下生效的回合结束触发条目 */
runtime_fend?: { s_uuid: number; t_num: number; overrides?: SkillOverrides }[];
runtime_fend?: ResolvedTriggerEntry[];
/** 当前等级下生效的驻场光环词条列表 */
runtime_field?: FieldEntry[];
// ==================== 触发概率保底缓存(key: s_uuid, value: 已累积的概率增量百分点) ====================
/** 攻击触发未命中时累积的下次概率增量(pity_add 驱动,触发成功后清零) */
pity_atking: Record<number, number> = {};
/** 受击触发未命中时累积的下次概率增量(pity_add 驱动,触发成功后清零) */
pity_atked: Record<number, number> = {};
// ==================== 特殊属性 ====================
critical: number = 0; // 暴击率
critical_res: number = 0; // 暴击抗性
@@ -759,6 +765,9 @@ export class HeroAttrsComp extends ecs.Comp {
this.runtime_fstart = undefined;
this.runtime_fend = undefined;
this.runtime_field = undefined;
// 清空触发概率保底叠加缓存
this.pity_atking = {};
this.pity_atked = {};
this.critical = 0;
this.critical_res = 0;
this.dodge = 0;