4521 【后端】【1.2.0】N阶前防具合成,前X次红2必成,前Y次红三必成
| | |
| | | struct tagItemCompound
|
| | | {
|
| | | WORD _ID; //合成配置编号ID
|
| | | BYTE ComposeGroup; //合成归组类型
|
| | | list MakeID; //可合成的道具ID,多个则随机一个
|
| | | BYTE IsFirstSuccMakeJobItem; //首次成功是否必出本职业
|
| | | list UnfixedItemID; //不固定道具ID, 多个ID时则任意一种均可
|
| | |
| | |
|
| | | Def_PDict_IsAddReviveTired = "IsAddReviveTired" # 死亡是否增加复活疲劳
|
| | |
|
| | | Def_PDict_HadCompoundWing = "HadCompoundWing" # 是否合成过一代翅膀
|
| | | Def_PDict_ComposeMustSuccess = "ComposeMustSuccess_%s" # 前X次合成必定成功,参数(合成归组)
|
| | | Def_PDict_FirstSuccMakeJobItem = "FirstSuccMakeJobItem_%s" # 首次合成成功给本职业物品记录,参数为(合成ID)
|
| | |
|
| | | Def_PDict_DownloadAwardState = "DownloadAwardState" # 分支下载奖励状态 0-未领 1-已领
|
| | |
| | | GameWorld.ErrLog("找不到该合成表数据配置! ID=%s" % compoundID)
|
| | | return
|
| | |
|
| | | composeGroup = ipyData.GetComposeGroup()
|
| | | makeIDList = ipyData.GetMakeID()
|
| | | unfixedItemIDList = ipyData.GetUnfixedItemID()
|
| | | fixedItemIDList = ipyData.GetFixedItemID()
|
| | |
| | | totalSuccRate = min(successRateMax, totalSuccRate)
|
| | | GameWorld.DebugLog("合成成功率: successRate=%s,addSuccRate=%s,incRate=%s,successRateMax=%s,totalSuccRate=%s"
|
| | | % (successRate, addSuccRate, incRate, successRateMax, totalSuccRate), playerID)
|
| | | # 首次合成一代翅膀成功率百分百
|
| | | if makeItemData.GetType() == ChConfig.Def_ItemType_retWing and ItemCommon.GetWingLV(makeItemData) == 1:
|
| | | if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HadCompoundWing):
|
| | | # 前X次合成成功率百分百
|
| | | composeMustSuccessDict = IpyGameDataPY.GetFuncEvalCfg("ComposeMustSuccess", 1, {})
|
| | | if composeGroup in composeMustSuccessDict:
|
| | | mustSuccessCountTotal = composeMustSuccessDict[composeGroup]
|
| | | hisComposeCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ComposeMustSuccess % composeGroup)
|
| | | if hisComposeCount < mustSuccessCountTotal:
|
| | | totalSuccRate = ShareDefine.Def_MaxRateValue
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HadCompoundWing, 1)
|
| | | GameWorld.DebugLog("首次合成一代翅膀,必定成功!totalSuccRate=%s" % totalSuccRate, playerID)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ComposeMustSuccess % composeGroup, hisComposeCount + 1)
|
| | | GameWorld.DebugLog("前X次合成必定成功!composeGroup=%s,hisComposeCount=%s,mustSuccessCountTotal=%s,totalSuccRate=%s" |
| | | % (composeGroup, hisComposeCount, mustSuccessCountTotal, totalSuccRate), playerID)
|
| | |
|
| | | # 合成成功
|
| | | maxRateValue = ShareDefine.Def_MaxRateValue
|
| | |
| | |
|
| | | "ItemCompound":(
|
| | | ("WORD", "ID", 1),
|
| | | ("BYTE", "ComposeGroup", 0),
|
| | | ("list", "MakeID", 0),
|
| | | ("BYTE", "IsFirstSuccMakeJobItem", 0),
|
| | | ("list", "UnfixedItemID", 0),
|
| | |
| | | |
| | | def __init__(self): |
| | | self.ID = 0
|
| | | self.ComposeGroup = 0
|
| | | self.MakeID = []
|
| | | self.IsFirstSuccMakeJobItem = 0
|
| | | self.UnfixedItemID = []
|
| | |
| | | return |
| | | |
| | | def GetID(self): return self.ID # 合成配置编号ID
|
| | | def GetComposeGroup(self): return self.ComposeGroup # 合成归组类型
|
| | | def GetMakeID(self): return self.MakeID # 可合成的道具ID,多个则随机一个
|
| | | def GetIsFirstSuccMakeJobItem(self): return self.IsFirstSuccMakeJobItem # 首次成功是否必出本职业
|
| | | def GetUnfixedItemID(self): return self.UnfixedItemID # 不固定道具ID, 多个ID时则任意一种均可
|