| | |
| | | import ItemControler
|
| | | import IPY_GameWorld
|
| | | import NetPackCommon
|
| | | import PlayerBeauty
|
| | | import PlayerArena
|
| | | import PlayerLLMJ
|
| | | import ItemCommon
|
| | |
| | | break
|
| | | if baseUpper <= 0:
|
| | | continue
|
| | | dropUpper = baseUpper
|
| | | addPer = 0
|
| | | addPer += PlayerBeauty.GetBeautyEffInfo(curPlayer, PlayerBeauty.EffType_BootyPer)[0] # 战利品上限提高百分比
|
| | | if addPer:
|
| | | dropUpper = int(baseUpper * (100 + addPer) / 100.0)
|
| | | GameWorld.DebugLog("红颜提高战利品掉落上限: itemID=%s,baseUpper=%s,addPer=%s,dropUpper=%s" % (itemID, baseUpper, addPer, dropUpper))
|
| | | dropUpper = PlayerControl.GetBootyUpper(curPlayer, itemID, baseUpper)
|
| | | todyDropCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BootyDropToday % itemID)
|
| | | if todyDropCnt >= dropUpper:
|
| | | GameWorld.DebugLog("战利品已达今日掉落上限! itemID=%s,todyDropCnt=%s >= %s" % (itemID, todyDropCnt, dropUpper), playerID)
|
| | |
| | | dropAppointEquipDict = IpyGameDataPY.GetFuncEvalCfg("MainDropAppoint", 1, {})
|
| | | appointDropCntMax = max(dropAppointEquipDict) if dropAppointEquipDict else 0
|
| | |
|
| | | lastSureOutNeed = ipyData.GetLastSureOutNeed() # 最后一档保底必出
|
| | | |
| | | for index in range(dropEquipCnt):
|
| | | bossType = bossTypeList[index % len(bossTypeList)]
|
| | | if bossType not in bossTypeDropRateDict:
|
| | | continue
|
| | | colorRateList = bossTypeDropRateDict.get(bossType, [])
|
| | | GameWorld.DebugLog("bossType=%s,colorRateList=%s,totalRate=%s" % (bossType, colorRateList, totalRate), playerID)
|
| | | lastColorEquipLucky = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LastColorEquipLucky)
|
| | | GameWorld.DebugLog("lastColorEquipLucky=%s/%s,bossType=%s,colorRateList=%s,totalRate=%s" % (lastColorEquipLucky, lastSureOutNeed, bossType, colorRateList, totalRate), playerID)
|
| | |
|
| | | setAttrDict = None
|
| | | appointDropEquipCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AppointDropEquipCnt) + 1
|
| | |
| | | setAttrDict[ShareDefine.Def_CItemKey_AppointID] = appointID
|
| | | GameWorld.DebugLog("定制掉落第%s次: equipID=%s,setAttrDict=%s" % (appointDropEquipCnt, randEquipID, setAttrDict))
|
| | | else:
|
| | | itemColor = GameWorld.GetResultByRandomList(colorRateList)
|
| | | lastColor = colorRateList[-1][1]
|
| | | if lastSureOutNeed and lastColorEquipLucky >= lastSureOutNeed:
|
| | | itemColor = lastColor
|
| | | GameWorld.DebugLog("保底必出最后一档品质: %s,lastColorEquipLucky=%s/%s" % (itemColor, lastColorEquipLucky, lastSureOutNeed))
|
| | | else:
|
| | | itemColor = GameWorld.GetResultByRandomList(colorRateList)
|
| | | if itemColor == lastColor or not lastSureOutNeed:
|
| | | lastColorEquipLucky = 0
|
| | | if not itemColor:
|
| | | continue
|
| | | equipIDList = NPCCommon.__GetEquipIDList(0, color=itemColor, placeList=ChConfig.Def_MainEquipPlaces, findType="MainEquipDrop")
|
| | |
| | | #GameWorld.DebugLog("掉落装备: randEquipID=%s,%s" % (randEquipID, curItem.GetGUID()), playerID)
|
| | | if not ItemControler.DoLogic_PutItemInPack(curPlayer, curItem, packIndexList=[IPY_GameWorld.rptIdentify]):
|
| | | continue
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LastColorEquipLucky, lastColorEquipLucky)
|
| | |
|
| | | unXiantaoCntEquip -= dropOneNeed
|
| | | PlayerControl.SetUnXiantaoCntEquip(curPlayer, unXiantaoCntEquip)
|
| | |
| | | if not moneyType or not moneyBase:
|
| | | return
|
| | |
|
| | | # 砍树类主线装备独立流向规则:暂时只记录分解,按祝福树对应品质列表记录
|
| | | treeLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeLV)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("TreeLV", treeLV)
|
| | | needRecordColorMin = 0
|
| | | if ipyData:
|
| | | lastColorCnt = IpyGameDataPY.GetFuncCfg("ItemRecordEquip", 1) # 有产出的最后几个品质需要记录
|
| | | equipColorRateList = ipyData.GetEquipColorRateList()
|
| | | lastColor = len(equipColorRateList)
|
| | | for colorRate in equipColorRateList[::-1]:
|
| | | if colorRate:
|
| | | break
|
| | | lastColor -= 1
|
| | | needRecordColorMin = lastColor - lastColorCnt + 1
|
| | | #GameWorld.DebugLogEx("treeLV=%s,rateLen=%s,lastColor=%s,needRecordColorMin=%s", treeLV, len(equipColorRateList), lastColor, needRecordColorMin, playerID)
|
| | | |
| | | decomposeMoney = moneyBase
|
| | | mjExPer, exRemain = PlayerLLMJ.GetAddDecomposePer(curPlayer)
|
| | | mjEx = int(decomposeMoney * mjExPer / 100.0)
|
| | |
| | | GameWorld.DebugLog(" itemIndex=%s,decomposeMoney=%s,mjEx=%s,exRemain=%s,总:%s"
|
| | | % (itemIndex, decomposeMoney, mjEx, exRemain, moneyTotal), playerID)
|
| | |
|
| | | ItemCommon.DelItem(curPlayer, curEquip, curEquip.GetCount(), True, ChConfig.ItemDel_EquipDecompose)
|
| | | isForceDR = curEquip.GetItemColor() >= needRecordColorMin # 记录分解流向
|
| | | ItemCommon.DelItem(curPlayer, curEquip, curEquip.GetCount(), True, ChConfig.ItemDel_EquipDecompose, isForceDR=isForceDR)
|
| | | decomposeCnt += 1
|
| | |
|
| | | if not moneyTotal:
|