using cfg.CharacterCfg; using Gameplay.Skill; namespace Gameplay.Buff { public class BuffSpecialKillLogic : BaseBuff { private int _targetJob; private float _triggerRate; private int _recoverSkillCount; protected override void _OnInit() { base._OnInit(); // 每击杀一个支援敌人,有15%恢复1次技能 // 敌人类型, 恢复概率, 恢复次数 _targetJob = _TryGetIntParam(0); _triggerRate = _TryGetFloatParam(1, 1f); _recoverSkillCount = _TryGetIntParam(2); } protected override void _OnTrigger() { base._OnTrigger(); if (killUnit == null) return; if (_targetJob != -1 && (int)killUnit.commonData.eJob != _targetJob) { // 不是目标敌人 return; } var randomValue = UnityEngine.Random.Range(0f, 1f); if (randomValue > _triggerRate) { // 触发概率不满足 return; } // 恢复技能次数 var skillManager = SkillManager.instance.GetUnitSkillManager(owner); if (skillManager == null) { return; } skillManager.AddSkillStoreCount(_recoverSkillCount); } } }