Exemple #1
0
        //当前的奥义释放过嘛?
        public bool curAoYiCast(int AoYiSkillId)
        {
            bool curUsed = false;

            CAoYi temp = null;

            foreach (CAoYi ao in _AoYi.Values)
            {
                if (ao.getAoYiItem._ID == AoYiSkillId)
                {
                    temp = ao;
                    break;
                }
            }
            if (temp != null)
            {
                if (temp.getUsed == 0)
                {
                    curUsed = false;
                }
                else
                {
                    curUsed = true;
                }
            }

            return(curUsed);
        }
Exemple #2
0
        public BT_Skill(int skillNum, int lv, SkillManager skillMgr, BT_Monster ownerBy)
        {
            if (skillMgr == null)
            {
                throw new DragonException("Skill manager is null.");
            }
            if (ownerBy == null)
            {
                throw new DragonException("Owner is null");
            }

            SkillData skCfg = skillMgr.getSkillDataConfig(skillNum);

            if (skCfg == null)
            {
                throw new DragonException("Skill configure is null." + skillNum);
            }

            //默认一定能释放一次
            RdCast = 1;
            id     = skillNum;
            curLv  = lv;
            name   = skCfg.name;
            mark   = skCfg.mark;
            level  = skCfg.level;
            param  = skillMgr.GetSkParamData(skillNum, lv);
            op     = skCfg.op;
            opObj  = skillMgr.getSkillOpDataConfig(op);

            real = 0;
            AoYi = null;

            owner = ownerBy;
        }
Exemple #3
0
        //之前的奥义释放过嘛?
        public bool prevAoYiCast(int AoYiSkillID)
        {
            if (AoYiNumList.Count == 0)
            {
                return(false);
            }
            int firstAoYiNum = AoYiNumList[0];

            bool preUsed = false;
            //找到第一个
            CAoYi firstAoYi = _AoYi[firstAoYiNum];

            bool found = false;
            int  index = 0;

            foreach (int key in AoYiNumList)
            {
                if (key == AoYiSkillID)
                {
                    found = true;
                    break;
                }
                index++;
            }

            //如果找到了当前的
            if (found)
            {
                index -= 1;

                if (index >= 0)
                {
                    //如果不是第一个,则考虑前一个是否释放过。如果是,则表明可能可以释放当前的。
                    CAoYi prevAoYi = _AoYi[AoYiNumList[index]];
                    preUsed = prevAoYi.getUsed == 1;
                }
                else
                {
                    //如果是第一个,则考虑当前是否释放过。如果是,则表明不可以释放当前的。
                    preUsed = firstAoYi.getUsed == 0;
                }
            }

            return(preUsed);
        }
Exemple #4
0
        //充值该奥义为 可释放状态
        public void resetCurAoYi(int AoYiSkillId)
        {
            CAoYi temp = null;

            foreach (CAoYi ao in _AoYi.Values)
            {
                if (ao.getAoYiItem._ID == AoYiSkillId)
                {
                    temp = ao;
                    break;
                }
            }

            if (temp != null)
            {
                temp.resetUsed();
            }
        }
Exemple #5
0
        // 使用CAoYi来创建技能
        public BT_Skill(CAoYi AoYiItem, BT_Monster ownerBy)
        {
            owner = ownerBy;

            int     AoYiLevel = AoYiItem.getLv;
            BT_AoYi AoYi      = AoYiItem.getAoYiItem;

            // 参数信息
            float[] effect = AoYiItem.getEffectByLv(AoYiLevel);

            // 构建真实的技能参数数据
            skParam realEffect = new skParam();

            int length = AoYi._efinfo.Length;

            for (int i = 0; i < length; ++i)
            {
                //其实可以反射的写入值,但这里不太多,就不用反射了。
                string key = AoYi._efinfo[i];
                if (!string.IsNullOrEmpty(key))
                {
                    switch (key)
                    {
                    case "rate2":
                        realEffect.rate2 = MathHelper.MidpointRounding(effect [i]);
                        break;

                    case "rate":
                        realEffect.rate = MathHelper.MidpointRounding(effect [i]);
                        break;

                    case "gailv":
                        realEffect.gailv = MathHelper.MidpointRounding(effect [i]);
                        break;

                    case "damage":
                        realEffect.damage = MathHelper.MidpointRounding(effect [i]);
                        break;

                    case "nuqi":
                        realEffect.nuqi = MathHelper.MidpointRounding(effect [i]);
                        break;

                    case "num":
                        realEffect.num = MathHelper.MidpointRounding(effect [i]);
                        break;
                    }
                }
            }

            // 构造对象
            //默认一定能释放一次
            RdCast = 1;
            id     = AoYi._ID;
            curLv  = AoYiLevel;
            opObj  = AoYi._SkillOpConfig;
            name   = AoYi._Name;
            level  = "A";
            param  = realEffect;
            op     = AoYi._skillOp;
        }