/// <summary> /// 创建NPC身上的buff, 最简单的添加逻辑, 只适合在给泉水添加buff等简单情况下的逻辑 /// </summary> /// <returns>The buff.</returns> /// <param name="bufNum">Buffer number.</param> /// <param name="npcId">Npc identifier.</param> /// <param name="level">Level.</param> public RtBufData createBuff(BuffCtorParam param) { allocIdx++; RtBufData buf = new RtBufData(param.bufNum, allocIdx, param.fromNpcId, param.toNpcId, param.origin, param.initLayer, param.duration, param.level); //加入管理 OnWork[allocIdx] = buf; //挂在Npc上 ServerNPC npc = WarServerManager.Instance.npcMgr.GetNPCByUniqueID(param.toNpcId); npc.addBuff(allocIdx); /// /// ---- 注册释放方法 ---- /// buf.RegisterFunc(bfCastor.FirstCast, BuffPhase.Start); buf.RegisterFunc(bfCastor.cast, BuffPhase.Cycle); buf.RegisterFunc(bfCastor.EndCast, BuffPhase.End); buf.RegisterFunc(bfCastor.EndCastStep2, BuffPhase.End); /// /// ---- 需要创建Trigger ------ /// int[] triIds = buf.BuffCfg.TriggerIDList; if (triIds != null) { int cnt = triIds.Length; if (cnt > 0) { for (int i = 0; i < cnt; ++i) { trigMgr.CreateTrigger(param.toNpcId, triIds[i], buf); } } } return(buf); }