| | |
| | | return
|
| | | alchemyQuality = alchemyIpyData.GetAlchemyQuality()
|
| | |
|
| | | # appointInfo = [] #定制配置 [数量,成功率]
|
| | | # alchemyCustomizedDict = IpyGameDataPY.GetFuncEvalCfg('alchemyCustomized', 1, {})
|
| | | # if alchemyID in alchemyCustomizedDict:
|
| | | # alchemyCnt = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_AlchemyCnt, alchemyID, False)
|
| | | # alchemyCntDict = alchemyCustomizedDict[alchemyID]
|
| | | # if alchemyCnt + 1 in alchemyCntDict:
|
| | | # appointInfo = alchemyCntDict[alchemyCnt + 1]
|
| | | alchemyAppointCntDict = {} #定制配置 {次数:[数量,成功率]}
|
| | | alchemyCustomizedDict = IpyGameDataPY.GetFuncEvalCfg('alchemyCustomized', 1, {})
|
| | | if alchemyID in alchemyCustomizedDict:
|
| | | alchemyCnt = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_AlchemyCnt, alchemyID, False)
|
| | | alchemyAppointCntDict = alchemyCustomizedDict[alchemyID]
|
| | |
|
| | | resultIpyData = IpyGameDataPY.InterpolationSearch('AlchemyResult', 'LuckValue', curLuckValue, {'AlchemyQuality':alchemyIpyData.GetAlchemyQuality()})
|
| | | if not resultIpyData:
|
| | | GameWorld.ErrLog('AlchemyResult 配置错误 未找到该丹方数量 alchemyItemID=%s' % alchemyItemID, playerID)
|
| | | return
|
| | | makeItemData = GameWorld.GetGameData().GetItemByTypeID(alchemyItemID)
|
| | | if not makeItemData:
|
| | | return
|
| | | #灵丹成功率公式 参数 curLuckValue:慧根 alchemyLV:炼丹等级 alchemyQuality:丹药等级 qualityNeedLuck:要求慧根
|
| | | qualityNeedLuck = IpyGameDataPY.GetFuncEvalCfg('alchemySuccess', 2, {}).get(str(alchemyQuality), 0)
|
| | | nomalsuccessRate = eval(IpyGameDataPY.GetFuncCompileCfg('alchemySuccess'))
|
| | |
|
| | | #成功率
|
| | | # if appointInfo:
|
| | | # successRate = appointInfo[1]
|
| | | # elif alchemType == DefStoveType2:
|
| | | # successRate = ShareDefine.Def_MaxRateValue #仙丹必定成功
|
| | | # elif alchemType == DefStoveType1:
|
| | | # #灵丹成功率公式 参数 curLuckValue:慧根 alchemyLV:炼丹等级 alchemyQuality:丹药等级 qualityNeedLuck:要求慧根
|
| | | # qualityNeedLuck = IpyGameDataPY.GetFuncEvalCfg('alchemySuccess', 2, {}).get(str(alchemyQuality), 0)
|
| | | # successRate = eval(IpyGameDataPY.GetFuncCompileCfg('alchemySuccess'))
|
| | | # else:
|
| | | # return
|
| | | isSuccess = 1 #GameWorld.CanHappen(successRate)
|
| | | resultCnt = 0 #丹药数量 0代表失败
|
| | | if isSuccess:
|
| | | for i in xrange(refineTimes):
|
| | | #成功率
|
| | | appointInfo = [] #[数量,成功率]
|
| | | if alchemyAppointCntDict and alchemyCnt+1+i in alchemyAppointCntDict:
|
| | | appointInfo = alchemyAppointCntDict[alchemyCnt+1+i]
|
| | | if appointInfo:
|
| | | successRate = appointInfo[1]
|
| | | elif alchemType == DefStoveType2:
|
| | | successRate = ShareDefine.Def_MaxRateValue #仙丹必定成功
|
| | | elif alchemType == DefStoveType1:
|
| | | successRate = nomalsuccessRate
|
| | | else:
|
| | | return
|
| | | isSuccess = GameWorld.CanHappen(successRate)
|
| | | if isSuccess:
|
| | | if alchemType == DefStoveType2:
|
| | | resultCnt += 1 #仙丹必定为1
|
| | | elif alchemType == DefStoveType1:
|
| | | if appointInfo:
|
| | | resultCnt += appointInfo[0]
|
| | | else:
|
| | | resultCnt += GameWorld.GetResultByRandomList(resultIpyData.GetCntRateList())
|
| | | if not resultCnt:
|
| | | GameWorld.ErrLog('AlchemyResult 配置错误 未随机出该丹方数量alchemyItemID=%s' % alchemyItemID, playerID)
|
| | | return
|
| | | if resultCnt:
|
| | | needSpace = 1
|
| | | packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
|
| | | if needSpace > packSpace:
|
| | | PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
|
| | | return
|
| | | if alchemType == DefStoveType2:
|
| | | resultCnt = 1 #仙丹必定为1
|
| | | elif alchemType == DefStoveType1:
|
| | | ipyData = IpyGameDataPY.InterpolationSearch('AlchemyResult', 'LuckValue', curLuckValue, {'AlchemyQuality':alchemyIpyData.GetAlchemyQuality()})
|
| | | if not ipyData:
|
| | | GameWorld.ErrLog('AlchemyResult 配置错误 未找到该丹方数量 alchemyItemID=%s' % alchemyItemID, playerID)
|
| | | return
|
| | | resultCnt = GameWorld.GetResultByRandomList(ipyData.GetCntRateList())
|
| | | if not resultCnt:
|
| | | GameWorld.ErrLog('AlchemyResult 配置错误 未随机出该丹方数量alchemyItemID=%s' % alchemyItemID, playerID)
|
| | | return
|
| | | makeItemData = GameWorld.GetGameData().GetItemByTypeID(alchemyItemID)
|
| | | if not makeItemData:
|
| | | return
|
| | | resultCnt *=refineTimes
|
| | | |
| | | |
| | | ItemControler.GivePlayerItem(curPlayer, alchemyItemID, resultCnt, 0, [IPY_GameWorld.rptItem],
|
| | | event=[ChConfig.ItemGive_Refine, False, {}])
|
| | | event=[ChConfig.ItemGive_Refine, False, {}])
|
| | | #紫色及以上全服广播
|
| | | notifyColor = IpyGameDataPY.GetFuncCfg("AlchemyNotify", 1)
|
| | | needNotifyItemIDList = IpyGameDataPY.GetFuncEvalCfg("AlchemyNotify", 2)
|
| | |
| | | if alchemyItemID not in notNotifyItemIDList and (alchemyItemID in needNotifyItemIDList or makeItemData.GetItemColor() >= notifyColor):
|
| | | PlayerControl.WorldNotify(0, "AchemyGreatSuccess", [curPlayer.GetPlayerName(), alchemyItemID])
|
| | |
|
| | | #任务
|
| | | for _ in xrange(refineTimes):
|
| | | EventShell.EventRespons_RefineItem(curPlayer, alchemyQuality, alchemyItemID)
|
| | | #任务
|
| | | for _ in xrange(refineTimes):
|
| | | EventShell.EventRespons_RefineItem(curPlayer, alchemyQuality, alchemyItemID)
|
| | | #重置
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyItemID % alchemType, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyStartTime % alchemyID, 0)
|
| | |
| | | addExp = alchemyIpyData.GetAlchemyExp() * refineTimes
|
| | | AddRefineExp(curPlayer, addExp, alchemyLV)
|
| | | #加次数
|
| | | # if alchemyID in alchemyCustomizedDict:
|
| | | # GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_AlchemyCnt, alchemyID, min(alchemyCnt + refineTimes, 9), False)
|
| | |
|
| | | if alchemyID in alchemyCustomizedDict:
|
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_AlchemyCnt, alchemyID, min(alchemyCnt + refineTimes, 9), False)
|
| | | |
| | | GameWorld.DebugLog('炼丹结果 alchemyItemID=%s,refineTimes=%s,isSuccess=%s,resultCnt=%s' % (alchemyItemID, refineTimes, isSuccess, resultCnt), playerID)
|
| | |
|
| | | |
| | | Sycn_AlchemyMsg(curPlayer, alchemyID, False, alchemyItemID, resultCnt)
|
| | |
|
| | | |
| | | #完成1次炼丹成就
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_RefineItem, refineTimes)
|
| | | #完成1次X品质物品炼丹成就
|
| | | #PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_RefineStoveColor, 1, [makeItemData.GetItemColor()])
|
| | |
|
| | |
|
| | | |
| | | |
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RefineStove, refineTimes)
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RefineStove, refineTimes)
|
| | | PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_Alchemy, refineTimes)
|