Exemple #1
0
        ///
        /// 释放技能, pos的第几个技能
        ///
        public void Cast(ServerNPC caster, short pos, Action <MsgParam> Report)
        {
                        #if DEBUG
            Utils.Assert(caster == null, "Caster is null when cast skill.");
                        #endif

            ServerLifeNpc src = caster as ServerLifeNpc;
            if (src.IsAlive == false)
            {
                return;
            }

            RtSkData rtSk = src.runSkMd.getRuntimeSkill(pos);
            ///
            /// 冷却时间好了吗, 死亡了吗
            ///
            if (rtSk != null && rtSk.canCast)
            {
                //进入Skill释放的状态
                src.curStatus = src.curStatus.set(NpcStatus.InSkill);

                IEnumerable <ServerNPC> targets = SelectS.Select(caster, rtSk, Sight.NearSight);
                EfCastor.Cast(caster, targets, rtSk, Report);
            }
        }
Exemple #2
0
        void castBuff_Skill(RtBufData rtbf, BuffPhase phase)
        {
            container.Clear();

            RtSkData skill = null;

            switch (phase)
            {
            case BuffPhase.Start:
                skill = rtbf.OnStartSkill;
                break;

            case BuffPhase.End:
                skill = rtbf.OnEndSkill;
                break;

            case BuffPhase.Cycle:
                skill = rtbf.onCycleskill;
                break;
            }

            if (skill != null)
            {
                ServerNPC castor = BFSelector.locateCastor(rtbf);
                ServerNPC target = BFSelector.locateTarget(rtbf);

                List <ServerNPC> Targets = new List <ServerNPC>();
                Targets.Add(target);
                IEnumerable <ServerNPC> itor = Targets.AsEnumerable <ServerNPC>();

                EfCastor.Cast(castor, itor, skill, container, false);

                dispatchMsg(container, skill);
            }
        }
Exemple #3
0
        public void cast(ServerNPC castor, IEnumerable <ServerNPC> targets, TriggerConfigData triCfg)
        {
                        #if DEBUG
            Utils.Assert(castor == null, "TriggerCastor can't cask if castor is null.");
            Utils.Assert(targets == null, "TriggerCastor can't cask if target is null.");
            Utils.Assert(triCfg == null, "TriggerCastor can't cask if TriggerConfigData is null.");
                        #endif

            RtSkData skill = new RtSkData(triCfg.SkillID, -1);
            targets = filtor(targets, triCfg);
            container.Clear();
            EfCastor.Cast(castor, targets, skill, container, false);
            dispatchMsg(container, skill);
        }