6307 【后端】【2.0】多套装备开发单(强化)
| | |
| | | struct tagItemPlusMax
|
| | | {
|
| | | BYTE _Type; //按装备位对应类型查找
|
| | | BYTE _ItemRank; // 装备阶数
|
| | | BYTE _ItemColor; //装备颜色 如橙装
|
| | | BYTE _Star; // 装备星数
|
| | | WORD LevelMax; //强化等级上限
|
| | | };
|
| | |
|
| | |
| | | dict CostItemDict; //特殊材料
|
| | | dict StarAttrInfo; //星级属性
|
| | | dict BaseAttrInfo; //基础属性增加
|
| | | };
|
| | |
|
| | | //装备强化进化表
|
| | |
|
| | | struct tagEquipPlusEvolve
|
| | | {
|
| | | BYTE _EquipPlace; //装备位
|
| | | BYTE _EvolveLV; //进化等级
|
| | | WORD NeedPlusLV; //需要强化等级
|
| | | dict CostItem; //消耗材料
|
| | | dict Attr; //属性
|
| | | }; |
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 16 装备强化进化 #tagCMEquipPlusEvolve
|
| | |
|
| | | class tagCMEquipPlusEvolve(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemIndex", c_ushort), #装备在背包中索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x16
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x16
|
| | | self.ItemIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMEquipPlusEvolve)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 16 装备强化进化 //tagCMEquipPlusEvolve:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ItemIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ItemIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 05 宝石摘取 #tagCMEquipStonePick
|
| | |
|
| | | class tagCMEquipStonePick(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 B3 装备部位星级信息 #tagMCEquipPartStarLVInfo
|
| | | # A3 B3 装备部位强化信息 #tagMCEquipPartPlusInfo
|
| | |
|
| | | class tagMCEquipPartStarLV(Structure):
|
| | | class tagMCEquipPartPlusLV(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("PackType", c_ubyte),
|
| | | ("EquipIndex", c_ubyte),
|
| | | ("EquipPartStarLV", c_ushort),
|
| | | ("Proficiency", c_int),
|
| | | ("EvolveLV", c_ubyte), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.EquipIndex = 0
|
| | | self.EquipPartStarLV = 0
|
| | | self.Proficiency = 0
|
| | | self.EvolveLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCEquipPartStarLV)
|
| | | return sizeof(tagMCEquipPartPlusLV)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 B3 装备部位星级信息 //tagMCEquipPartStarLVInfo:
|
| | | DumpString = '''// A3 B3 装备部位强化信息 //tagMCEquipPartPlusInfo:
|
| | | PackType:%d,
|
| | | EquipIndex:%d,
|
| | | EquipPartStarLV:%d,
|
| | | Proficiency:%d
|
| | | Proficiency:%d,
|
| | | EvolveLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.PackType,
|
| | | self.EquipIndex,
|
| | | self.EquipPartStarLV,
|
| | | self.Proficiency
|
| | | self.Proficiency,
|
| | | self.EvolveLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCEquipPartStarLVInfo(Structure):
|
| | | class tagMCEquipPartPlusInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)// 信息个数
|
| | | InfoList = list() #(vector<tagMCEquipPartStarLV> InfoList)// 信息列表
|
| | | InfoList = list() #(vector<tagMCEquipPartPlusLV> InfoList)// 信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temInfoList = tagMCEquipPartStarLV()
|
| | | temInfoList = tagMCEquipPartPlusLV()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCEquipPartStarLVInfo=tagMCEquipPartStarLVInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarLVInfo.Head.Cmd,m_NAtagMCEquipPartStarLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarLVInfo
|
| | | m_NAtagMCEquipPartPlusInfo=tagMCEquipPartPlusInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartPlusInfo.Head.Cmd,m_NAtagMCEquipPartPlusInfo.Head.SubCmd))] = m_NAtagMCEquipPartPlusInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | Writer = wdb
|
| | | Releaser = wdb
|
| | | RegType = 0
|
| | | RegisterPackCount = 1
|
| | | RegisterPackCount = 2
|
| | |
|
| | | PacketCMD_1=0xA3
|
| | | PacketSubCMD_1=0x01
|
| | | PacketCallFunc_1=OnEquipMayaPlus
|
| | |
|
| | | PacketCMD_2=0xA3
|
| | | PacketSubCMD_2=0x16
|
| | | PacketCallFunc_2=OnEquipPlusEvolve
|
| | |
|
| | | ;npc交互
|
| | | [FunctionNPCCommon]
|
| | | ScriptName = Event\EventSrc\FunctionNPCCommon.py
|
| | |
| | | Def_PDict_RunTaskAwardState = "RunTaskAwardState_%s" # 是否已领取跑环本轮结束奖励 参数任务类型
|
| | | Def_PDict_RunTaskAwardRecord = "RunTaskAwardRecord_%s" # 跑环本轮结束奖励记录 参数任务类型
|
| | | Def_PDict_RunTaskNextMissionID = "RunTaskNextMissionID_%s" # 跑环本轮结束下个任务ID 参数任务类型
|
| | | # 宝石
|
| | |
|
| | | #强化
|
| | | Def_PDict_EquipPartPlusLV = "EPPlusLV_%s_%s" # 装备部位对应公共强化星级,参数为(packType, index)
|
| | | Def_PDict_EquipActiveStarLV = "EquipActiveStarLV" #装备已激活总强化等级
|
| | | Def_PDict_EquipPartProficiency = "EPProf_%s_%s" # 装备部位对应公共强化星级,参数为(packType, index)
|
| | | Def_PDict_EquipActiveStars = "EquipActiveStars" #装备已激活总强化星级
|
| | | Def_PDict_EquipPartProficiency = "EPProf_%s_%s" # 装备部位对应公共强化熟练度,参数为(packType, index)
|
| | | Def_PDict_EquipPartPlusEvolveLV = "EPPlusEvolveLV_%s_%s" # 装备部位对应公共强化进化等级,参数为(packType, index)
|
| | | # 宝石
|
| | | Def_PDict_EquipPartStoneID = "StoneID_%s_%s" # 装备位_孔位存储宝石ID*10+是(1)否(0)绑定
|
| | |
|
| | | # 装备洗练, 暂不区分背包类型,如果有不同背包,策划设定不同的装备位
|
| | |
| | | ItemDel_CoatDecompose, # 时装分解
|
| | | ItemDel_ZhuXianDecompose, # 诛仙装备分解
|
| | | ItemDel_EquipStarUp, # 装备升星
|
| | | ) = range(2000, 2000 + 39)
|
| | | ItemDel_EquipPlusEvolve, # 装备强化进化
|
| | | ) = range(2000, 2000 + 40)
|
| | |
|
| | | # 物品扣除类型对应信息 {类型:eventName, ...}
|
| | | ItemDelTypeDict = {
|
| | |
| | | ItemDel_CoatDecompose:"CoatDecompose",
|
| | | ItemDel_ZhuXianDecompose:"ZhuXianDecompose",
|
| | | ItemDel_EquipStarUp:"EquipStarUp",
|
| | | ItemDel_EquipPlusEvolve:"EquipPlusEvolve",
|
| | | }
|
| | |
|
| | | ##==================================================================================================
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 16 装备强化进化 #tagCMEquipPlusEvolve
|
| | |
|
| | | class tagCMEquipPlusEvolve(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemIndex", c_ushort), #装备在背包中索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x16
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x16
|
| | | self.ItemIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMEquipPlusEvolve)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 16 装备强化进化 //tagCMEquipPlusEvolve:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ItemIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ItemIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 05 宝石摘取 #tagCMEquipStonePick
|
| | |
|
| | | class tagCMEquipStonePick(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 B3 装备部位星级信息 #tagMCEquipPartStarLVInfo
|
| | | # A3 B3 装备部位强化信息 #tagMCEquipPartPlusInfo
|
| | |
|
| | | class tagMCEquipPartStarLV(Structure):
|
| | | class tagMCEquipPartPlusLV(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("PackType", c_ubyte),
|
| | | ("EquipIndex", c_ubyte),
|
| | | ("EquipPartStarLV", c_ushort),
|
| | | ("Proficiency", c_int),
|
| | | ("EvolveLV", c_ubyte), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.EquipIndex = 0
|
| | | self.EquipPartStarLV = 0
|
| | | self.Proficiency = 0
|
| | | self.EvolveLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCEquipPartStarLV)
|
| | | return sizeof(tagMCEquipPartPlusLV)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 B3 装备部位星级信息 //tagMCEquipPartStarLVInfo:
|
| | | DumpString = '''// A3 B3 装备部位强化信息 //tagMCEquipPartPlusInfo:
|
| | | PackType:%d,
|
| | | EquipIndex:%d,
|
| | | EquipPartStarLV:%d,
|
| | | Proficiency:%d
|
| | | Proficiency:%d,
|
| | | EvolveLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.PackType,
|
| | | self.EquipIndex,
|
| | | self.EquipPartStarLV,
|
| | | self.Proficiency
|
| | | self.Proficiency,
|
| | | self.EvolveLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCEquipPartStarLVInfo(Structure):
|
| | | class tagMCEquipPartPlusInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)// 信息个数
|
| | | InfoList = list() #(vector<tagMCEquipPartStarLV> InfoList)// 信息列表
|
| | | InfoList = list() #(vector<tagMCEquipPartPlusLV> InfoList)// 信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temInfoList = tagMCEquipPartStarLV()
|
| | | temInfoList = tagMCEquipPartPlusLV()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCEquipPartStarLVInfo=tagMCEquipPartStarLVInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarLVInfo.Head.Cmd,m_NAtagMCEquipPartStarLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarLVInfo
|
| | | m_NAtagMCEquipPartPlusInfo=tagMCEquipPartPlusInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartPlusInfo.Head.Cmd,m_NAtagMCEquipPartPlusInfo.Head.SubCmd))] = m_NAtagMCEquipPartPlusInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | if packType not in ChConfig.Pack_EquipPart_CanPlusStar:
|
| | | GameWorld.DebugLog("packType not in ChConfig.Pack_EquipPart_CanPlusStar", playerID)
|
| | | return
|
| | | |
| | | ipyData = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'GridIndex':index})
|
| | | if not ipyData:
|
| | | return
|
| | | equipPlace = ipyData.GetEquipPlace()
|
| | | indexList = ChConfig.Pack_EquipPart_CanPlusStar[packType]
|
| | | if index not in indexList:
|
| | | if equipPlace not in indexList:
|
| | | GameWorld.Log(" index not in ChConfig.Pack_EquipPart_CanPlusStar", playerID)
|
| | | return
|
| | |
|
| | |
| | | GameWorld.DebugLog("OnEquipMayaPlus() equip is empty")
|
| | | return
|
| | |
|
| | | maxStarLV = ItemCommon.GetItemMaxPlusLV(curEquip)
|
| | | curPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
|
| | | if curPartStarLV >= maxStarLV:
|
| | | GameWorld.Log("OnEquipMayaPlus:curPartStarLV(%s) >= maxStarLV(%s)" % (curPartStarLV, maxStarLV), playerID)
|
| | | maxPlusLV = ItemCommon.GetItemMaxPlusLV(curPlayer, index, curEquip)
|
| | | curPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
|
| | | if curPartPlusLV >= maxPlusLV:
|
| | | GameWorld.Log("OnEquipMayaPlus:curPartPlusLV(%s) >= maxPlusLV(%s)" % (curPartPlusLV, maxPlusLV), playerID)
|
| | | return
|
| | |
|
| | | # 强化处理
|
| | | result = DoLogic_EquipMayaPlus(curPlayer, curEquip, packType, index)
|
| | |
|
| | | updPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
|
| | | #GameWorld.Log(" result=%s,curStarLV=%s,updStarLV=%s" % (result, curPartStarLV, updPartStarLV), playerID)
|
| | | updPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
|
| | | #GameWorld.Log(" result=%s,curStarLV=%s,updStarLV=%s" % (result, curPartPlusLV, updPartStarLV), playerID)
|
| | | if result == ChConfig.Def_ComposeState_None:
|
| | | return
|
| | |
|
| | |
| | |
|
| | |
|
| | | # 强化变更时处理
|
| | | if curPartStarLV != updPartStarLV:
|
| | | DoLogic_OnEquipPartStarLVChange(curPlayer, packType)
|
| | | if curPartPlusLV != updPartPlusLV:
|
| | | DoLogic_OnEquipPartStarLVChange(curPlayer, packType, ItemCommon.GetItemClassLV(curEquip))
|
| | | # 增加强化成就
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlus, 1)
|
| | | EventShell.EventRespons_EquipPlus(curPlayer)
|
| | |
| | | if findType == -1:
|
| | | return result
|
| | |
|
| | | curPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartStarLV)
|
| | | curPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartPlusLV)
|
| | | if not ipyData:
|
| | | return
|
| | | costSilver = ipyData.GetCostCount()
|
| | |
| | |
|
| | | if curExp >= totalExp:
|
| | | #升级
|
| | | curPartStarLV = __EquipMayaPlusChange(curPlayer, packType, curEquip, index)
|
| | | curPartPlusLV = __EquipMayaPlusChange(curPlayer, packType, curEquip, index)
|
| | | curExp = curExp - totalExp
|
| | |
|
| | | ChEquip.SetEquipPartProficiency(curPlayer, packType, index, curExp)
|
| | |
| | | # 支付金币
|
| | | PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver, isNotify=False)
|
| | |
|
| | | DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartStarLV)
|
| | | DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartPlusLV)
|
| | | return ChConfig.Def_ComposeState_Sucess
|
| | |
|
| | |
|
| | |
| | |
|
| | | # 成就
|
| | | #PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlusLV, 1, [updPlusLV])
|
| | | |
| | | |
| | | |
| | | |
| | | #任务触发
|
| | | #EventShell.EventRespons_OnEquipPartStarUp(curPlayer, setLV)
|
| | | # 开服活动数据
|
| | |
| | | return updPlusLV
|
| | |
|
| | |
|
| | | def DoLogic_OnEquipPartStarLVChange(curPlayer, packType):
|
| | | def DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV):
|
| | | #先刷装备BUFF 再计算属性
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrActivatyNotify, ChConfig.Def_AttrActivatyNotify_Plus)
|
| | | ChEquip.RefreshPlayerEquipAttribute(curPlayer)
|
| | | ChEquip.RefreshPlayerEquipAttribute(curPlayer, classLV)
|
| | |
|
| | | #刷新所有属性
|
| | | playControl = PlayerControl.PlayerControl(curPlayer)
|
| | | playControl.RefreshPlayerAttrState()
|
| | | return
|
| | |
|
| | |
|
| | | ## 全身12部位强化等级最低的一件强化等级
|
| | | #def GetMinPlusLV(curPlayer):
|
| | | # packType = IPY_GameWorld.rptEquip
|
| | | # minPlusLV = GetMaxEquipPartStarLV()
|
| | | # equipPartIndexList = ChConfig.Pack_EquipPart_CanPlusStar.get(packType, [])
|
| | | # for i in equipPartIndexList:
|
| | | # partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, i)
|
| | | # if partStarLV < minPlusLV:
|
| | | # minPlusLV = partStarLV
|
| | | # return minPlusLV
|
| | | #// A3 16 装备强化进化 #tagCMEquipPlusEvolve
|
| | | #struct tagCMEquipPlusEvolve
|
| | | #{
|
| | | # tagHead Head;
|
| | | # WORD ItemIndex; //装备在背包中索引
|
| | | #};
|
| | | def OnEquipPlusEvolve(playerIndex, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
|
| | | |
| | | equipPackindex = clientData.ItemIndex
|
| | | |
| | | packType = IPY_GameWorld.rptEquip
|
| | | curPack = curPlayer.GetItemManager().GetPack(packType)
|
| | | curEquip = curPack.GetAt(equipPackindex)
|
| | | if not ItemCommon.CheckItemCanUse(curEquip):
|
| | | return
|
| | | curEvolveLV = ChEquip.GetEquipPartPlusEvolveLV(curPlayer, packType, equipPackindex)
|
| | | maxEvolveLV = ItemCommon.GetItemMaxPlusEvolveLV(curPlayer, equipPackindex, curEquip)
|
| | | if curEvolveLV >= maxEvolveLV:
|
| | | GameWorld.DebugLog('装备强化进化, 已达最大进化等级equipPackindex=%s, maxEvolveLV=%s'%(equipPackindex, maxEvolveLV))
|
| | | return
|
| | | nextEvolveLV = curEvolveLV + 1
|
| | | equipPlace = curEquip.GetEquipPlace()
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('EquipPlusEvolve', equipPlace, nextEvolveLV)
|
| | | if not ipyData:
|
| | | return
|
| | | costItemDict = ipyData.GetCostItem()
|
| | | delItemDict = {}
|
| | | itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
| | | for itemID, itemCnt in costItemDict.items():
|
| | | hasEnough, indexList, findItemIsBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(itemID, itemPack, itemCnt)
|
| | | if not hasEnough:
|
| | | GameWorld.DebugLog('装备强化进化 材料不足itemID= %s,itemCnt=%s'%(itemID, itemCnt))
|
| | | return
|
| | | delItemDict[tuple(indexList)] = itemCnt
|
| | | for itemIndexList, delCnt in delItemDict.items():
|
| | | ItemCommon.ReduceItem(curPlayer, itemPack, itemIndexList, delCnt, True, ChConfig.ItemDel_EquipPlusEvolve)
|
| | | |
| | | ChEquip.SetEquipPartPlusEvolveLV(curPlayer, packType, equipPackindex, nextEvolveLV)
|
| | | DoLogic_OnEquipPartStarLVChange(curPlayer, packType, ItemCommon.GetItemClassLV(curEquip))
|
| | | ChEquip.NotifyEquipPartPlusLV(curPlayer, packType, equipPackindex)
|
| | | return
|
| | |
| | | import ChEquip
|
| | | import GameWorld
|
| | | import ItemCommon
|
| | |
|
| | | import IpyGameDataPY
|
| | | #---------------------------------------------------------------------
|
| | | #逻辑实现
|
| | | ## GM命令执行入口
|
| | |
| | | if not cmdList:
|
| | | __GMHelpAnswer(curPlayer)
|
| | | return
|
| | | |
| | | if len(cmdList) == 1:
|
| | | setStarLV = cmdList[0]
|
| | | for pType, indexList in ChConfig.Pack_EquipPart_CanPlusStar.items():
|
| | | for i in indexList:
|
| | | curPack = curPlayer.GetItemManager().GetPack(pType)
|
| | | curEquip = curPack.GetAt(i)
|
| | | ChEquip.SetEquipPartPlusLV(curPlayer, pType, i, curEquip, setStarLV)
|
| | | ChEquip.SetEquipPartProficiency(curPlayer, pType, i, 0)
|
| | | Operate_EquipPlus.DoLogic_OnEquipPartStarLVChange(curPlayer, pType)
|
| | | packType = IPY_GameWorld.rptEquip
|
| | | curPack = curPlayer.GetItemManager().GetPack(packType)
|
| | | if len(cmdList) == 2:
|
| | | setStarLV = cmdList[1]
|
| | | classLV = cmdList[0]
|
| | | for equipPlace in ChConfig.Pack_EquipPart_CanPlusStar.get(packType, []):
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
|
| | | if not ipyData:
|
| | | continue
|
| | | gridIndex = ipyData.GetGridIndex()
|
| | | curEquip = curPack.GetAt(gridIndex)
|
| | | ChEquip.SetEquipPartPlusLV(curPlayer, packType, gridIndex, curEquip, setStarLV)
|
| | | ChEquip.SetEquipPartProficiency(curPlayer, packType, gridIndex, 0)
|
| | | ChEquip.SetEquipPartPlusEvolveLV(curPlayer, packType, gridIndex, 0)
|
| | | Operate_EquipPlus.DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV)
|
| | | ChEquip.NotifyEquipPartPlusLV(curPlayer)
|
| | | GameWorld.DebugAnswer(curPlayer, "设置所有部位强化等级为: %s" % setStarLV)
|
| | | GameWorld.DebugAnswer(curPlayer, "设置%s阶所有部位强化等级为: %s" % (classLV, setStarLV))
|
| | | return
|
| | |
|
| | | if len(cmdList) != 3:
|
| | | __GMHelpAnswer(curPlayer, "参数错误!")
|
| | | return
|
| | |
|
| | | packType, index, starLV = cmdList
|
| | | classLV, equipPlace, starLV = cmdList
|
| | | if packType not in ChConfig.Pack_EquipPart_CanPlusStar:
|
| | | __GMHelpAnswer(curPlayer, "packType不存在!")
|
| | | return
|
| | |
|
| | | if index not in ChConfig.Pack_EquipPart_CanPlusStar[packType]:
|
| | | if equipPlace not in ChConfig.Pack_EquipPart_CanPlusStar[packType]:
|
| | | __GMHelpAnswer(curPlayer, "index索引不存在!")
|
| | | return
|
| | | |
| | | curPack = curPlayer.GetItemManager().GetPack(packType)
|
| | | curEquip = curPack.GetAt(index)
|
| | |
|
| | | maxStarLV = ItemCommon.GetItemMaxPlusLV(curEquip)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
|
| | | if not ipyData:
|
| | | return
|
| | | gridIndex = ipyData.GetGridIndex()
|
| | | curEquip = curPack.GetAt(gridIndex)
|
| | | if not ItemCommon.CheckItemCanUse(curEquip):
|
| | | return
|
| | | maxStarLV = ItemCommon.GetItemMaxPlusLV(curPlayer, gridIndex, curEquip)
|
| | | starLV = min(starLV, maxStarLV)
|
| | | ChEquip.SetEquipPartPlusLV(curPlayer, packType, index, curEquip, starLV)
|
| | | ChEquip.SetEquipPartProficiency(curPlayer, packType, index, 0)
|
| | | Operate_EquipPlus.DoLogic_OnEquipPartStarLVChange(curPlayer, packType)
|
| | | ChEquip.SetEquipPartPlusLV(curPlayer, packType, gridIndex, curEquip, starLV)
|
| | | ChEquip.SetEquipPartProficiency(curPlayer, packType, gridIndex, 0)
|
| | | Operate_EquipPlus.DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV)
|
| | | return
|
| | |
|
| | |
|
| | |
| | |
|
| | | "ItemPlusMax":(
|
| | | ("BYTE", "Type", 1),
|
| | | ("BYTE", "ItemRank", 1),
|
| | | ("BYTE", "ItemColor", 1),
|
| | | ("BYTE", "Star", 1),
|
| | | ("WORD", "LevelMax", 0),
|
| | | ),
|
| | |
|
| | |
| | | ("dict", "StarAttrInfo", 0),
|
| | | ("dict", "BaseAttrInfo", 0),
|
| | | ),
|
| | |
|
| | | "EquipPlusEvolve":(
|
| | | ("BYTE", "EquipPlace", 1),
|
| | | ("BYTE", "EvolveLV", 1),
|
| | | ("WORD", "NeedPlusLV", 0),
|
| | | ("dict", "CostItem", 0),
|
| | | ("dict", "Attr", 0),
|
| | | ),
|
| | | }
|
| | |
|
| | | |
| | |
| | | |
| | | def __init__(self): |
| | | self.Type = 0
|
| | | self.ItemRank = 0
|
| | | self.ItemColor = 0
|
| | | self.Star = 0
|
| | | self.LevelMax = 0 |
| | | return |
| | | |
| | | def GetType(self): return self.Type # 按装备位对应类型查找
|
| | | def GetItemRank(self): return self.ItemRank # 装备阶数
|
| | | def GetItemColor(self): return self.ItemColor # 装备颜色 如橙装
|
| | | def GetStar(self): return self.Star # 装备星数
|
| | | def GetLevelMax(self): return self.LevelMax # 强化等级上限 |
| | | |
| | | # 装备全身强化属性 |
| | |
| | | def GetCostItemDict(self): return self.CostItemDict # 特殊材料
|
| | | def GetStarAttrInfo(self): return self.StarAttrInfo # 星级属性
|
| | | def GetBaseAttrInfo(self): return self.BaseAttrInfo # 基础属性增加 |
| | | |
| | | # 装备强化进化表 |
| | | class IPY_EquipPlusEvolve(): |
| | | |
| | | def __init__(self): |
| | | self.EquipPlace = 0
|
| | | self.EvolveLV = 0
|
| | | self.NeedPlusLV = 0
|
| | | self.CostItem = {}
|
| | | self.Attr = {} |
| | | return |
| | | |
| | | def GetEquipPlace(self): return self.EquipPlace # 装备位
|
| | | def GetEvolveLV(self): return self.EvolveLV # 进化等级
|
| | | def GetNeedPlusLV(self): return self.NeedPlusLV # 需要强化等级
|
| | | def GetCostItem(self): return self.CostItem # 消耗材料
|
| | | def GetAttr(self): return self.Attr # 属性 |
| | |
|
| | |
|
| | | def Log(msg, playerID=0, par=0):
|
| | |
| | | self.ipyEquipPlaceIndexMapLen = len(self.ipyEquipPlaceIndexMapCache)
|
| | | self.ipyEquipStarUpCache = self.__LoadFileData("EquipStarUp", IPY_EquipStarUp)
|
| | | self.ipyEquipStarUpLen = len(self.ipyEquipStarUpCache)
|
| | | self.ipyEquipPlusEvolveCache = self.__LoadFileData("EquipPlusEvolve", IPY_EquipPlusEvolve)
|
| | | self.ipyEquipPlusEvolveLen = len(self.ipyEquipPlusEvolveCache)
|
| | | Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
|
| | | Log("IPY_DataMgr InitOK!")
|
| | | return
|
| | |
| | | def GetEquipPlaceIndexMapByIndex(self, index): return self.ipyEquipPlaceIndexMapCache[index]
|
| | | def GetEquipStarUpCount(self): return self.ipyEquipStarUpLen
|
| | | def GetEquipStarUpByIndex(self, index): return self.ipyEquipStarUpCache[index]
|
| | | def GetEquipPlusEvolveCount(self): return self.ipyEquipPlusEvolveLen
|
| | | def GetEquipPlusEvolveByIndex(self, index): return self.ipyEquipPlusEvolveCache[index]
|
| | |
|
| | | IPYData = IPY_DataMgr()
|
| | | def IPY_Data(): return IPYData
|
| | |
| | |
|
| | | allAttrListStar = [{} for _ in range(4)] # 星数属性
|
| | | #allAttrListEquip = [{} for _ in range(4)] # 装备其他
|
| | | #allAttrListPlusBase = [{} for _ in range(4)] # 基础强化属性
|
| | | allAttrListPlusBase = [{} for _ in range(4)] # 基础强化属性
|
| | | allAttrListStone = [{} for _ in range(4)] # 宝石属性
|
| | | allAttrListSuit = [{} for _ in range(4)] # 套装属性
|
| | | allAttrListWash = [{} for _ in range(4)] # 洗练属性
|
| | |
| | | # PlayerControl.CalcAttrDict_Type(effectID, effectValue, allAttrListEquip)
|
| | | # baseEquipAttrDict[effectID] = baseEquipAttrDict.get(effectID, 0) + effectValue
|
| | |
|
| | | # groupType = GetEquipPartSuiteGroupType(curPlayer, equipIndex)
|
| | | # for suiteType in range(1, maxSuiteType + 1):
|
| | | # suitelv = GetEquipPartSuiteLV(curPlayer, equipIndex, suiteType)
|
| | | # if suitelv:
|
| | | # maxSuiteLV = Operate_EquipSuitCompose.GetEquipCanDoMaxSuiteLV(curPlayer, curEquip, suiteType, groupType)
|
| | | # suiteLV = min(suitelv, maxSuiteLV)
|
| | | # if suiteLV:
|
| | | # suiteKey = '%s_%s_%s' % (groupType, suiteType, suitelv)
|
| | | # suitCntDict[suiteKey] = suitCntDict.get(suiteKey, 0) + 1
|
| | |
|
| | | #星数属性
|
| | | equipPartStar = GetEquipPartStarByRank(curPlayer, equipIndex, curEquip) #生效的星数
|
| | |
| | | suitCntDict[suiteID] = []
|
| | | suitCntDict[suiteID].append(equipPartStar)
|
| | |
|
| | | #物品强化属性,佩饰强化不同要区分
|
| | | # if equipIndex in equipPartStarIndexList:
|
| | | # equipPartStarLV = GetEquipPartPlusLVByRank(curPlayer, packType, equipIndex, curEquip)
|
| | | # CalcAttr_ItemPlus(curPlayer, curEquip, allAttrListPlusBase, equipPartStarLV)
|
| | | #物品强化属性
|
| | | equipPartPlusLV = GetEquipPartPlusLVByRank(curPlayer, packType, equipIndex, curEquip)
|
| | | equipPartPlusEvolveLV = GetEquipPartPlusEvolveLVByEquip(curPlayer, packType, equipIndex, curEquip)
|
| | | CalcAttr_ItemPlus(curPlayer, curEquip, allAttrListPlusBase, equipPartPlusLV, equipPartPlusEvolveLV)
|
| | |
|
| | | #传奇属性
|
| | | #CalcAttr_LegendAttr(curPlayer, curEquip, allAttrListEquip, legendAttrDict)
|
| | |
| | | # @param curPlayer 当前玩家
|
| | | # @param curPlayer allAttrList 属性缓存
|
| | | # @return None
|
| | | def CalcAttr_ItemPlus(curPlayer, curEquip, allAttrList, equipPartStarLV=None):
|
| | | def CalcAttr_ItemPlus(curPlayer, curEquip, allAttrList, equipPartStarLV, equipPartPlusEvolveLV):
|
| | | if not equipPartStarLV:
|
| | | return
|
| | | plusType = GetEquipPlusType(curEquip)
|
| | |
| | | attrTypeList, attrValueList = ipyData.GetAttrType(), ipyData.GetAttrValue()
|
| | | for i, attrID in enumerate(attrTypeList):
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValueList[i], allAttrList)
|
| | | |
| | | #进化属性
|
| | | equipPlace = curEquip.GetEquipPlace()
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('EquipPlusEvolve', equipPlace, equipPartPlusEvolveLV)
|
| | | if not ipyData:
|
| | | return
|
| | | for attrID, attrValue in ipyData.GetAttr().items():
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
|
| | | return
|
| | |
|
| | |
|
| | |
| | | oldEquipShowSwitch = curPlayer.GetEquipShowSwitch()
|
| | | if updEquipShowSwitch == oldEquipShowSwitch:
|
| | | return
|
| | | classLV, isSuite = updEquipShowSwitch/10, updEquipShowSwitch%10
|
| | | equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
|
| | | #验证套装
|
| | | realSuit=True
|
| | | for place in ChConfig.Def_SuitEquipPlaceList:
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, place)
|
| | | if not ipyData:
|
| | | realSuit = False
|
| | | break
|
| | | gridIndex = ipyData.GetGridIndex()
|
| | | curEquip = equipPack.GetAt(gridIndex)
|
| | | if not ItemCommon.CheckItemCanUse(curEquip):
|
| | | realSuit = False
|
| | | break
|
| | | if not curEquip.GetSuiteID():
|
| | | realSuit = False
|
| | | break
|
| | | if realSuit != isSuite:
|
| | | GameWorld.DebugLog('SetEquipShowSwitch 前端发的isSuite 和实际不一致!')
|
| | | return
|
| | |
|
| | | #通知外观装备
|
| | | updFaceEquipIndex = 0
|
| | | equipIndexList = []
|
| | | |
| | | for equipPlace in [ShareDefine.retWeapon, ShareDefine.retWeapon2, ShareDefine.retClothes]:
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', 1, equipPlace)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
|
| | | if not ipyData:
|
| | | continue
|
| | | gridIndex = ipyData.GetGridIndex()
|
| | | updFaceEquipIndex = updFaceEquipIndex * 1000 + gridIndex
|
| | | equipIndexList.append(gridIndex)
|
| | | PlayerControl.SetFaceEquipIndex(curPlayer, updFaceEquipIndex)
|
| | | equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
|
| | | |
| | | for equipPackIndex in equipIndexList:
|
| | | curEquip = equipPack.GetAt(equipPackIndex)
|
| | | if not ItemCommon.CheckItemCanUse(curEquip):
|
| | |
| | |
|
| | | ## 获取公共部位强化星级, 因装备的最高可强化星级影响,用于算当前装备属性使用, 不影响全身星级
|
| | | def GetEquipPartPlusLVByRank(curPlayer, packType, index, curEquip):
|
| | | maxStarLV = ItemCommon.GetItemMaxPlusLV(curEquip)
|
| | | maxStarLV = ItemCommon.GetItemMaxPlusLV(curPlayer, index, curEquip)
|
| | | return min(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartPlusLV % (packType, index)), maxStarLV)
|
| | |
|
| | |
|
| | |
| | | return
|
| | |
|
| | |
|
| | | ## 获取公共部位强化进化等级, 用于算当前装备属性使用, 不影响全身星级
|
| | | def GetEquipPartPlusEvolveLVByEquip(curPlayer, packType, index, curEquip):
|
| | | maxEvolveLV = ItemCommon.GetItemMaxPlusEvolveLV(curPlayer, index, curEquip)
|
| | | return min(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartPlusEvolveLV % (packType, index)), maxEvolveLV)
|
| | |
|
| | |
|
| | | ## 获取公共部位强化进化等级
|
| | | def GetEquipPartPlusEvolveLV(curPlayer, packType, index):
|
| | | return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartPlusEvolveLV % (packType, index))
|
| | |
|
| | |
|
| | | ## 设置公共部位强化进化等级
|
| | | def SetEquipPartPlusEvolveLV(curPlayer, packType, index, evolveLV):
|
| | | if GetEquipPartPlusEvolveLV(curPlayer, packType, index) == evolveLV:
|
| | | return
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipPartPlusEvolveLV % (packType, index), evolveLV)
|
| | | return
|
| | |
|
| | | ## 通知公共部位强化等级
|
| | | def NotifyEquipPartPlusLV(curPlayer, packType=None, index=None):
|
| | | ePartStarLVPack = ChPyNetSendPack.tagMCEquipPartStarLVInfo()
|
| | | ePartStarLVPack = ChPyNetSendPack.tagMCEquipPartPlusInfo()
|
| | | ePartStarLVPack.Clear()
|
| | | ePartStarLVPack.InfoList = []
|
| | |
|
| | |
| | | if index != None and index != i:
|
| | | continue
|
| | |
|
| | | ePartStarLV = ChPyNetSendPack.tagMCEquipPartStarLV()
|
| | | ePartStarLV = ChPyNetSendPack.tagMCEquipPartPlusLV()
|
| | | ePartStarLV.Clear()
|
| | | ePartStarLV.PackType = pType
|
| | | ePartStarLV.EquipIndex = i
|
| | | ePartStarLV.EquipPartStarLV = GetEquipPartPlusLV(curPlayer, pType, i)
|
| | | ePartStarLV.Proficiency = GetEquipPartProficiency(curPlayer, pType, i)
|
| | | ePartStarLV.EvolveLV = GetEquipPartPlusEvolveLV(curPlayer, pType, i)
|
| | | ePartStarLVPack.InfoList.append(ePartStarLV)
|
| | |
|
| | | ePartStarLVPack.Count = len(ePartStarLVPack.InfoList)
|
| | |
| | | activeCnt = clientData.Cnt
|
| | | if activeType == 0:
|
| | | key = ChConfig.Def_PDict_EquipActiveStarLV
|
| | | elif activeType == 1:
|
| | | key = ChConfig.Def_PDict_EquipActiveStars
|
| | | # elif activeType == 1:
|
| | | # key = ChConfig.Def_PDict_EquipActiveStars
|
| | | else:
|
| | | return
|
| | | curCnt = curPlayer.NomalDictGetProperty(key)
|
| | |
| | | continue
|
| | | if aType == 0:
|
| | | key = ChConfig.Def_PDict_EquipActiveStarLV
|
| | | elif aType == 1:
|
| | | key = ChConfig.Def_PDict_EquipActiveStars
|
| | | # elif aType == 1:
|
| | | # key = ChConfig.Def_PDict_EquipActiveStars
|
| | | else:
|
| | | return
|
| | | curCnt = curPlayer.NomalDictGetProperty(key)
|
| | |
| | | ## 获取物品最高强化等级
|
| | | # @param itemType: 物品类型
|
| | | # @return 最大星级,0为不可强化
|
| | | def GetItemMaxPlusLV(curItem):
|
| | | def GetItemMaxPlusLV(curPlayer, equipPackindex, curItem):
|
| | | equipPlace = curItem.GetEquipPlace()
|
| | | plusMaxTypeDict = IpyGameDataPY.GetFuncEvalCfg("StrengthenLevelLimit", 1)
|
| | | if not plusMaxTypeDict:
|
| | |
| | | if equipPlace not in plusMaxTypeDict:
|
| | | return 0
|
| | | findType = plusMaxTypeDict[equipPlace]
|
| | | #仙器特殊取固定值
|
| | | if equipPlace in [ShareDefine.retFairyCan, ShareDefine.retFairyCan2]:
|
| | | rank = 0
|
| | | itemColor = 0
|
| | | else:
|
| | | rank = GetItemClassLV(curItem)
|
| | | itemColor = curItem.GetItemColor()
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("ItemPlusMax", findType, rank, itemColor)
|
| | | if not ipyData:
|
| | | GameWorld.ErrLog("找不到装备强化等级上限表数据配置! rank = %s, %s" % (rank , curItem.GetItemQuality()))
|
| | | return
|
| | | equipStar = ChEquip.GetEquipPartStarByRank(curPlayer, equipPackindex, curItem)
|
| | | ipyData = IpyGameDataPY.GetIpyGameDataNotLog("ItemPlusMax", findType, equipStar)
|
| | | if ipyData:
|
| | | return ipyData.GetLevelMax()
|
| | |
|
| | | return ipyData.GetLevelMax()
|
| | | ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('ItemPlusMax', {'Type':findType}, True, False)
|
| | | if not ipyDataList:
|
| | | return 0
|
| | | maxStar = ipyDataList[-1].GetStar()
|
| | | if equipStar > maxStar:
|
| | | return ipyDataList[-1].GetLevelMax()
|
| | | findMax = 0
|
| | | for ipyData in ipyDataList:
|
| | | if equipStar >= ipyData.GetStar():
|
| | | findMax = ipyData.GetLevelMax()
|
| | | return findMax
|
| | | |
| | |
|
| | | ## 获取物品最高强化进化等级
|
| | | # @param itemType: 物品类型
|
| | | # @return 最大星级,0为不可强化
|
| | | def GetItemMaxPlusEvolveLV(curPlayer, equipPackindex, curItem):
|
| | | packType = IPY_GameWorld.rptEquip
|
| | | curPlusLV = ChEquip.GetEquipPartPlusLVByRank(curPlayer, packType, equipPackindex, curItem)
|
| | | equipPlace = curItem.GetEquipPlace()
|
| | | ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlusEvolve', {'EquipPlace':equipPlace}, True)
|
| | | if not ipyDataList:
|
| | | return 0
|
| | | maxEvolvelv = 0
|
| | | for ipyData in ipyDataList:
|
| | | if curPlusLV >= ipyData.GetNeedPlusLV():
|
| | | maxEvolvelv = ipyData.GetEvolveLV()
|
| | | else:
|
| | | break
|
| | | return maxEvolvelv
|
| | |
|
| | | ## 获取物品最高星数
|
| | | # @param itemType: 物品类型
|