IsShield() 공개 메소드

public IsShield ( ) : bool
리턴 bool
예제 #1
0
        //武器升级时的成功率

        /*
         * 武器类(包括武器,项链,手镯,戒指,鞋子等):
         * 该类物品TYPE的百位和十位实际上就是武器的等级,等级为0--22,一共可升级22次。但如果升级时在itemtype表中找不到对应的数据,则表示不能升级了(例如:450205,如果要升级则升级为450215,但因为数据库中没有450215的数据,所以表示该武器不能再升级了。)
         * 升级成功率:
         * 当等级<4时,升级成功率为100%
         * 当等级<7时,升级成功率为:35%
         * 当等级<10时,升级成功率为:20%
         * 当等级<13时,升级成功率为:10%
         * 当等级<16时,升级成功率为:7%
         * 当等级<19时,升级成功率为:4%
         * 当等级>=19时,升级成功率为:2%
         *
         * 装备类(包括衣服,帽子和盾牌):
         * 该类物品TYPE的十位表示等级,等级为0--9,一共可升级9次。但如果升级时在itemtype表中找不到对应的数据,则表示不能升级了。
         * 当等级<2时,升级成功率100%
         * 当等级<4时,升级成功率为:35%
         * 当等级<6时,升级成功率为:20%
         * 当等级<7时,升级成功率为:10%
         * 当等级<8时,升级成功率为:7%
         * 当等级<9时,升级成功率为:4%
         */
        private int RateSuccForEquipLevel(GameStruct.RoleItemInfo pEquipItem)
        {
            int nLevel = pEquipItem.GetLevel();

            if (pEquipItem.IsShield() || pEquipItem.IsArmor() || pEquipItem.IsHelmet())
            {
                if (nLevel >= 0 && nLevel < 2)
                {
                    return(100);
                }
                else if (nLevel >= 2 && nLevel < 4)
                {
                    return(35);
                }
                else if (nLevel >= 4 && nLevel < 6)
                {
                    return(20);
                }
                else if (nLevel >= 6 && nLevel < 7)
                {
                    return(10);
                }
                else if (nLevel >= 7 && nLevel < 8)
                {
                    return(7);
                }
                else if (nLevel >= 8 && nLevel < 9)
                {
                    return(4);
                }
            }
            else
            {
                if (nLevel >= 0 && nLevel < 4)
                {
                    return(100);
                }
                else if (nLevel >= 4 && nLevel < 7)
                {
                    return(35);
                }
                else if (nLevel >= 7 && nLevel < 10)
                {
                    return(20);
                }
                else if (nLevel >= 10 && nLevel < 13)
                {
                    return(10);
                }
                else if (nLevel >= 13 && nLevel < 16)
                {
                    return(7);
                }
                else if (nLevel >= 16 && nLevel < 19)
                {
                    return(4);
                }
                else if (nLevel >= 19 && nLevel < 22)
                {
                    return(2);
                }
            }
            return(0);
        }
예제 #2
0
        //幻魔晶石 装备升级
        public void EquipLevel(PlayerObject play, uint srcid, uint materialid)
        {
            const int HUANMOJINGSHI = 1037170; //幻魔晶石id
            const int HUANMOZHIXIN  = 1037179; //幻魔之心

            const int MAX_LEVEL_EQUIP1 = 9;    //其他装备的提升等级
            const int MAX_LEVEL_EQUIP2 = 25;   //武器的提升等级

            GameStruct.RoleItemInfo item         = play.GetItemSystem().FindItem(srcid);
            GameStruct.RoleItemInfo materialitem = play.GetItemSystem().FindItem(materialid);
            if (item == null || materialitem == null)
            {
                return;
            }
            bool bUpdate = false;

            NetMsg.MsgEquipOperationRet ret = new NetMsg.MsgEquipOperationRet();
            ret.Create(null, play.GetGamePackKeyEx());
            ret.srcid  = srcid;
            ret.destid = materialid;
            ret.type   = 196612;//{4,0,3,0}
            int l = RateSuccForEquipLevel(item);

            if (item.IsShield() || item.IsArmor() || item.IsHelmet())
            {
                if (item.GetLevel() > MAX_LEVEL_EQUIP1)
                {
                    return;
                }
                if (materialitem.itemid == HUANMOZHIXIN)
                {
                    if (!play.GetItemSystem().DeleteItemByID(materialid))
                    {
                        return;
                    }
                    item.UpLevel();
                    bUpdate = true;
                    ret.ret = 1;
                }
                else if (materialitem.itemid == HUANMOJINGSHI)
                {
                    if (!play.GetItemSystem().DeleteItemByID(materialid))
                    {
                        return;
                    }
                    if (GameStruct.IRandom.Random(1, 100) < l)
                    {
                        item.UpLevel();
                        bUpdate = true;
                        ret.ret = 1;
                    }
                }
            }
            else
            {
                if (item.GetLevel() > MAX_LEVEL_EQUIP2)
                {
                    return;
                }
                if (materialitem.itemid == HUANMOZHIXIN)
                {
                    if (!play.GetItemSystem().DeleteItemByID(materialid))
                    {
                        return;
                    }
                    item.UpLevel();
                    ret.ret = 1;
                    bUpdate = true;
                }
                else if (materialitem.itemid == HUANMOJINGSHI)
                {
                    if (!play.GetItemSystem().DeleteItemByID(materialid))
                    {
                        return;
                    }
                    if (GameStruct.IRandom.Random(1, 100) < l)
                    {
                        item.UpLevel();
                        ret.ret = 1;
                        bUpdate = true;
                    }
                }
            }

            if (bUpdate)
            {
                play.GetItemSystem().UpdateItemInfo(item.id);
            }
            play.SendData(ret.GetBuffer());
            return;
        }