using System.Collections.Generic; // SkillBase(Buff 部分):Buff 包(HB428 刷新 / HB429 删除)的识别与分发。 public partial class SkillBase { /// /// 判断是否为 Buff 相关的包(HB428 或 HB429) /// protected bool IsBuffPack(GameNetPackBasic pack) { return pack is HB428_tagSCBuffRefresh || pack is HB429_tagSCBuffDel; } /// /// 处理收集到的 Buff 包列表(HB428 刷新 和 HB429 删除) /// protected void ProcessBuffPacks(List buffPacks) { if (buffPacks == null || buffPacks.Count == 0) return; foreach (var pack in buffPacks) { if (pack is HB428_tagSCBuffRefresh buffRefresh) { BattleObject battleObj = battleField.battleObjMgr.GetBattleObject((int)buffRefresh.ObjID); if (battleObj != null) { var buffMgr = battleObj.GetBuffMgr(); if (buffMgr != null) // 命格不有 buff 管理器 { buffMgr.RefreshBuff(buffRefresh, true); } } } else if (pack is HB429_tagSCBuffDel buffDel) { BattleObject battleObj = battleField.battleObjMgr.GetBattleObject((int)buffDel.ObjID); if (battleObj != null) { var buffMgr = battleObj.GetBuffMgr(); if (buffMgr != null) // 命格不有 buff 管理器 { buffMgr.RemoveBuff(buffDel, false); } } } } } /// /// 强制分发 Buff 包(用于 ForceFinished 场景) /// protected void DistributeBuffPacks(List buffPacks) { if (buffPacks == null || buffPacks.Count == 0) return; foreach (var pack in buffPacks) { // 【使用 parentRecordAction.innerRecordPlayer】 // 原因:Buff包是技能效果的核心组成部分,应该由SkillRecordAction管理 // 即使是强制分发的情况,也要保持在正确的RecordAction上下文中 PackageRegeditEx.DistributeToRecordAction(pack, ownRecordAction); } } }