//武器升级时的成功率 /* * 武器类(包括武器,项链,手镯,戒指,鞋子等): * 该类物品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); }
//幻魔晶石 装备升级 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; }