예제 #1
0
        /// <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);
        }