| | |
| | | import PlayerControl
|
| | | import ChConfig
|
| | | import OperControlManager
|
| | | import OpenServerCampaign
|
| | | import ItemCommon
|
| | | import ChEquip
|
| | | import ShareDefine
|
| | |
| | | import ItemControler
|
| | | import NetPackCommon
|
| | | import PlayerBillboard
|
| | | import PlayerAttrFruit
|
| | | import GameFuncComm
|
| | | import IpyGameDataPY
|
| | | import CrossPlayerData
|
| | |
| | | PlayerRideHorseDown(curPlayer, False)
|
| | |
|
| | | #---执行玩家换装逻辑---
|
| | | if ChEquip.DoPlayerEquipItem(curPlayer, curHorse, ItemCommon.GetEquipPackIndex(curHorse), tick):
|
| | | if isRideHorse:
|
| | | PlayerRideHorseUp(curPlayer, False)
|
| | | #if ChEquip.DoPlayerEquipItem(curPlayer, curHorse, ItemCommon.GetEquipPackIndex(curHorse), tick):
|
| | | # if isRideHorse:
|
| | | # PlayerRideHorseUp(curPlayer, False)
|
| | |
|
| | | return True
|
| | |
|
| | |
| | | if not curHorse:
|
| | | return
|
| | | #---执行玩家换装逻辑---
|
| | | tick = GameWorld.GetGameWorld().GetTick()
|
| | | ChEquip.DoPlayerEquipItem(curPlayer, curHorse, Def_HorseEquipIndex, tick)
|
| | | #tick = GameWorld.GetGameWorld().GetTick()
|
| | | #ChEquip.DoPlayerEquipItem(curPlayer, curHorse, Def_HorseEquipIndex, tick)
|
| | |
|
| | | GameWorld.DebugLog("坐骑功能开启! horseLV=%s,horseID=%s" % (horseLV, horseID))
|
| | | Sync_HorseClassData(curPlayer)
|
| | |
| | |
|
| | | def CalcHorseAttrEx(curPlayer):
|
| | | ## 计算马匹属性
|
| | | if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Horse):
|
| | | return
|
| | | |
| | | allAttrList = [{} for _ in range(4)]
|
| | | allAttrListHorseSoul = [{} for _ in range(4)]
|
| | | allAttrListSkin = [{} for _ in range(4)]
|
| | | allAttrListTrain = [{} for _ in range(4)]
|
| | | allAttrListStar = [{} for _ in range(4)]
|
| | | |
| | | customAttrDictHorse = {}
|
| | | customAttrDictSkin = {}
|
| | | |
| | | horseSpeed = 0 # 坐骑功能增加的速度值,骑乘时才有效果
|
| | | horseLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserLV)
|
| | | # 等阶培养属性
|
| | | #totalItemCount = 0
|
| | | horseBaseAttrInfo = {}
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in xrange(ipyDataMgr.GetHorseLVUpCount()):
|
| | | horseIpyData = ipyDataMgr.GetHorseLVUpByIndex(index)
|
| | | dataHorseLV = horseIpyData.GetHorseLV()
|
| | | if dataHorseLV > horseLV:
|
| | | break
|
| | | elif dataHorseLV == horseLV:
|
| | | upItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserEatItemCount)
|
| | | else:
|
| | | upItemCount = horseIpyData.GetNeedEatCount()
|
| | | |
| | | # 等阶额外属性
|
| | | lvAttrTypeList = horseIpyData.GetLVAttrType()
|
| | | lvAttrValueList = horseIpyData.GetLVAttrValue()
|
| | | for i, attrID in enumerate(lvAttrTypeList):
|
| | | attrValue = lvAttrValueList[i]
|
| | | if attrID == ShareDefine.Def_Effect_Speed:
|
| | | horseSpeed += attrValue
|
| | | continue
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
|
| | | horseBaseAttrInfo[attrID] = horseBaseAttrInfo.get(attrID, 0) + attrValue
|
| | | |
| | | # 培养丹增加属性
|
| | | upItemPerCount = horseIpyData.GetUpEatItemPerCount()
|
| | | if upItemCount and upItemPerCount:
|
| | | upItemAttrTypeList = horseIpyData.GetUpItemAttrType()
|
| | | upItemAttrValueList = horseIpyData.GetUpItemAttrValue()
|
| | | attrMultiple = upItemCount / upItemPerCount
|
| | | for i, attrID in enumerate(upItemAttrTypeList):
|
| | | attrValue = upItemAttrValueList[i]
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrList)
|
| | | horseBaseAttrInfo[attrID] = horseBaseAttrInfo.get(attrID, 0) + attrValue * attrMultiple
|
| | | |
| | | customAttrDictHorse["horseBaseAttrInfo"] = horseBaseAttrInfo
|
| | | |
| | | # # 等阶培养丹累加个数属性
|
| | | # eatItemAttrInfo = IpyGameDataPY.GetFuncCfg("HorseUpItem", 3)
|
| | | # for attrID, attrValue in eatItemAttrInfo:
|
| | | # PlayerControl.CalcAttrDict_Type(attrID, attrValue * totalItemCount, allAttrList)
|
| | | |
| | | # 幻化属性
|
| | | initFPAdd = 0 #初始战力
|
| | | horseSkinQualityAttrInfo = {}
|
| | | for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()):
|
| | | skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index)
|
| | | if not CheckHorseSkinState(curPlayer, skinPlusIpyData):
|
| | | continue
|
| | | initFPAdd += skinPlusIpyData.GetInitFightPower()
|
| | | attrTypeList = skinPlusIpyData.GetAttrType()
|
| | | attrValueList = skinPlusIpyData.GetAttrValue()
|
| | | for i, attrID in enumerate(attrTypeList):
|
| | | attrValue = attrValueList[i]
|
| | | if attrID == ShareDefine.Def_Effect_Speed:
|
| | | horseSpeed += attrValue
|
| | | continue
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListSkin)
|
| | | |
| | | #觉醒战力
|
| | | skintype = 1
|
| | | horseID = skinPlusIpyData.GetHorseID()
|
| | | skinData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorsePetSkinData % (skintype, horseID))
|
| | | skinIpyData = IpyGameDataPY.GetIpyGameDataNotLog('HorsePetSkin', skintype, horseID, skinData / 100)
|
| | | if skinIpyData:
|
| | | for attrID, attrValue in skinIpyData.GetAttrInfo().items():
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListSkin)
|
| | | |
| | | hIpyData = IpyGameDataPY.GetIpyGameData("Horse", horseID)
|
| | | if hIpyData:
|
| | | quality = hIpyData.GetQuality()
|
| | | if quality not in horseSkinQualityAttrInfo:
|
| | | horseSkinQualityAttrInfo[quality] = {}
|
| | | qualityAttrDict = horseSkinQualityAttrInfo[quality]
|
| | | for i, attrID in enumerate(attrTypeList):
|
| | | attrValue = attrValueList[i]
|
| | | qualityAttrDict[attrID] = qualityAttrDict.get(attrID, 0) + attrValue
|
| | | |
| | | #星级
|
| | | horseStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserStar % horseID)
|
| | | starIpyData = IpyGameDataPY.GetIpyGameDataNotLog("HorseStarUp", horseID, horseStar)
|
| | | if starIpyData:
|
| | | starAttrType = starIpyData.GetStarAttrType()
|
| | | starAttrValue = starIpyData.GetStarAttrValue()
|
| | | for i, attrID in enumerate(starAttrType):
|
| | | attrValue = starAttrValue[i]
|
| | | if attrID == ShareDefine.Def_Effect_Speed:
|
| | | horseSpeed += attrValue
|
| | | continue
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar)
|
| | | |
| | | customAttrDictSkin["horseSkinQualityAttrInfo"] = horseSkinQualityAttrInfo
|
| | | |
| | | # 新培养属性
|
| | | for index in xrange(ipyDataMgr.GetHorseTrainCount()):
|
| | | trainIpyData = ipyDataMgr.GetHorseTrainByIndex(index)
|
| | | trainType = trainIpyData.GetTrainType()
|
| | | dataTrainLV = trainIpyData.GetTrainLV()
|
| | | trainLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserTrainLV % trainType)
|
| | | |
| | | if dataTrainLV > trainLV:
|
| | | continue
|
| | | elif dataTrainLV == trainLV:
|
| | | trainItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserTrainItemCount % trainType)
|
| | | else:
|
| | | trainItemCount = trainIpyData.GetEatCntTotal()
|
| | | |
| | | # 等阶额外属性
|
| | | lvAttrTypeList = trainIpyData.GetLVAttrTypeList()
|
| | | lvAttrValueList = trainIpyData.GetLVAttrValueList()
|
| | | for i, attrID in enumerate(lvAttrTypeList):
|
| | | attrValue = lvAttrValueList[i]
|
| | | if attrID == ShareDefine.Def_Effect_Speed:
|
| | | horseSpeed += attrValue
|
| | | continue
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListTrain)
|
| | | |
| | | # 培养丹增加属性
|
| | | eatCntEverytime = trainIpyData.GetEatCntEverytime()
|
| | | if trainItemCount and eatCntEverytime:
|
| | | eatItemAttrTypeList = trainIpyData.GetEatItemAttrTypeList()
|
| | | eatItemAttrValueList = trainIpyData.GetEatItemAttrValueList()
|
| | | attrMultiple = trainItemCount / eatCntEverytime
|
| | | for i, attrID in enumerate(eatItemAttrTypeList):
|
| | | attrValue = eatItemAttrValueList[i]
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrListTrain)
|
| | | |
| | | PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Horse, initFPAdd)
|
| | | |
| | | #GameWorld.DebugLog("坐骑功能属性: horseLV=%s,horseSpeed=%s,totalItemCount=%s,initFPAdd=%s" % (horseLV, horseSpeed, totalItemCount, initFPAdd))
|
| | | |
| | | # 先缓存值,骑乘状态时进行附加
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_SpeedHorse, horseSpeed)
|
| | | |
| | | # 果实对坐骑的加成, 魂石果实算附加属性层,单独计算
|
| | | fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListHorseSoul, ShareDefine.Def_AttrFruitFunc_Horse)
|
| | | PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_HorseSoul, fightPowerEx)
|
| | | |
| | | # 保存计算值
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Horse, allAttrList, customAttrDict=customAttrDictHorse)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseSoul, allAttrListHorseSoul)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseSkin, allAttrListSkin, customAttrDict=customAttrDictSkin)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseTarin, allAttrListTrain)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseStar, allAttrListStar)
|
| | | return
|
| | | # if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Horse):
|
| | | # return
|
| | | # |
| | | # allAttrList = [{} for _ in range(4)]
|
| | | # allAttrListHorseSoul = [{} for _ in range(4)]
|
| | | # allAttrListSkin = [{} for _ in range(4)]
|
| | | # allAttrListTrain = [{} for _ in range(4)]
|
| | | # allAttrListStar = [{} for _ in range(4)]
|
| | | # |
| | | # customAttrDictHorse = {}
|
| | | # customAttrDictSkin = {}
|
| | | # |
| | | # horseSpeed = 0 # 坐骑功能增加的速度值,骑乘时才有效果
|
| | | # horseLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserLV)
|
| | | # # 等阶培养属性
|
| | | # #totalItemCount = 0
|
| | | # horseBaseAttrInfo = {}
|
| | | # ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | # for index in xrange(ipyDataMgr.GetHorseLVUpCount()):
|
| | | # horseIpyData = ipyDataMgr.GetHorseLVUpByIndex(index)
|
| | | # dataHorseLV = horseIpyData.GetHorseLV()
|
| | | # if dataHorseLV > horseLV:
|
| | | # break
|
| | | # elif dataHorseLV == horseLV:
|
| | | # upItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserEatItemCount)
|
| | | # else:
|
| | | # upItemCount = horseIpyData.GetNeedEatCount()
|
| | | # |
| | | # # 等阶额外属性
|
| | | # lvAttrTypeList = horseIpyData.GetLVAttrType()
|
| | | # lvAttrValueList = horseIpyData.GetLVAttrValue()
|
| | | # for i, attrID in enumerate(lvAttrTypeList):
|
| | | # attrValue = lvAttrValueList[i]
|
| | | # if attrID == ShareDefine.Def_Effect_Speed:
|
| | | # horseSpeed += attrValue
|
| | | # continue
|
| | | # PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
|
| | | # horseBaseAttrInfo[attrID] = horseBaseAttrInfo.get(attrID, 0) + attrValue
|
| | | # |
| | | # # 培养丹增加属性
|
| | | # upItemPerCount = horseIpyData.GetUpEatItemPerCount()
|
| | | # if upItemCount and upItemPerCount:
|
| | | # upItemAttrTypeList = horseIpyData.GetUpItemAttrType()
|
| | | # upItemAttrValueList = horseIpyData.GetUpItemAttrValue()
|
| | | # attrMultiple = upItemCount / upItemPerCount
|
| | | # for i, attrID in enumerate(upItemAttrTypeList):
|
| | | # attrValue = upItemAttrValueList[i]
|
| | | # PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrList)
|
| | | # horseBaseAttrInfo[attrID] = horseBaseAttrInfo.get(attrID, 0) + attrValue * attrMultiple
|
| | | # |
| | | # customAttrDictHorse["horseBaseAttrInfo"] = horseBaseAttrInfo
|
| | | # |
| | | ## # 等阶培养丹累加个数属性
|
| | | ## eatItemAttrInfo = IpyGameDataPY.GetFuncCfg("HorseUpItem", 3)
|
| | | ## for attrID, attrValue in eatItemAttrInfo:
|
| | | ## PlayerControl.CalcAttrDict_Type(attrID, attrValue * totalItemCount, allAttrList)
|
| | | # |
| | | # # 幻化属性
|
| | | # initFPAdd = 0 #初始战力
|
| | | # horseSkinQualityAttrInfo = {}
|
| | | # for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()):
|
| | | # skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index)
|
| | | # if not CheckHorseSkinState(curPlayer, skinPlusIpyData):
|
| | | # continue
|
| | | # initFPAdd += skinPlusIpyData.GetInitFightPower()
|
| | | # attrTypeList = skinPlusIpyData.GetAttrType()
|
| | | # attrValueList = skinPlusIpyData.GetAttrValue()
|
| | | # for i, attrID in enumerate(attrTypeList):
|
| | | # attrValue = attrValueList[i]
|
| | | # if attrID == ShareDefine.Def_Effect_Speed:
|
| | | # horseSpeed += attrValue
|
| | | # continue
|
| | | # PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListSkin)
|
| | | # |
| | | # #觉醒战力
|
| | | # skintype = 1
|
| | | # horseID = skinPlusIpyData.GetHorseID()
|
| | | # skinData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorsePetSkinData % (skintype, horseID))
|
| | | # skinIpyData = IpyGameDataPY.GetIpyGameDataNotLog('HorsePetSkin', skintype, horseID, skinData / 100)
|
| | | # if skinIpyData:
|
| | | # for attrID, attrValue in skinIpyData.GetAttrInfo().items():
|
| | | # PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListSkin)
|
| | | # |
| | | # hIpyData = IpyGameDataPY.GetIpyGameData("Horse", horseID)
|
| | | # if hIpyData:
|
| | | # quality = hIpyData.GetQuality()
|
| | | # if quality not in horseSkinQualityAttrInfo:
|
| | | # horseSkinQualityAttrInfo[quality] = {}
|
| | | # qualityAttrDict = horseSkinQualityAttrInfo[quality]
|
| | | # for i, attrID in enumerate(attrTypeList):
|
| | | # attrValue = attrValueList[i]
|
| | | # qualityAttrDict[attrID] = qualityAttrDict.get(attrID, 0) + attrValue
|
| | | # |
| | | # #星级
|
| | | # horseStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserStar % horseID)
|
| | | # starIpyData = IpyGameDataPY.GetIpyGameDataNotLog("HorseStarUp", horseID, horseStar)
|
| | | # if starIpyData:
|
| | | # starAttrType = starIpyData.GetStarAttrType()
|
| | | # starAttrValue = starIpyData.GetStarAttrValue()
|
| | | # for i, attrID in enumerate(starAttrType):
|
| | | # attrValue = starAttrValue[i]
|
| | | # if attrID == ShareDefine.Def_Effect_Speed:
|
| | | # horseSpeed += attrValue
|
| | | # continue
|
| | | # PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar)
|
| | | # |
| | | # customAttrDictSkin["horseSkinQualityAttrInfo"] = horseSkinQualityAttrInfo
|
| | | # |
| | | # # 新培养属性
|
| | | # for index in xrange(ipyDataMgr.GetHorseTrainCount()):
|
| | | # trainIpyData = ipyDataMgr.GetHorseTrainByIndex(index)
|
| | | # trainType = trainIpyData.GetTrainType()
|
| | | # dataTrainLV = trainIpyData.GetTrainLV()
|
| | | # trainLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserTrainLV % trainType)
|
| | | # |
| | | # if dataTrainLV > trainLV:
|
| | | # continue
|
| | | # elif dataTrainLV == trainLV:
|
| | | # trainItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserTrainItemCount % trainType)
|
| | | # else:
|
| | | # trainItemCount = trainIpyData.GetEatCntTotal()
|
| | | # |
| | | # # 等阶额外属性
|
| | | # lvAttrTypeList = trainIpyData.GetLVAttrTypeList()
|
| | | # lvAttrValueList = trainIpyData.GetLVAttrValueList()
|
| | | # for i, attrID in enumerate(lvAttrTypeList):
|
| | | # attrValue = lvAttrValueList[i]
|
| | | # if attrID == ShareDefine.Def_Effect_Speed:
|
| | | # horseSpeed += attrValue
|
| | | # continue
|
| | | # PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListTrain)
|
| | | # |
| | | # # 培养丹增加属性
|
| | | # eatCntEverytime = trainIpyData.GetEatCntEverytime()
|
| | | # if trainItemCount and eatCntEverytime:
|
| | | # eatItemAttrTypeList = trainIpyData.GetEatItemAttrTypeList()
|
| | | # eatItemAttrValueList = trainIpyData.GetEatItemAttrValueList()
|
| | | # attrMultiple = trainItemCount / eatCntEverytime
|
| | | # for i, attrID in enumerate(eatItemAttrTypeList):
|
| | | # attrValue = eatItemAttrValueList[i]
|
| | | # PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrListTrain)
|
| | | # |
| | | # PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Horse, initFPAdd)
|
| | | # |
| | | # #GameWorld.DebugLog("坐骑功能属性: horseLV=%s,horseSpeed=%s,totalItemCount=%s,initFPAdd=%s" % (horseLV, horseSpeed, totalItemCount, initFPAdd))
|
| | | # |
| | | # # 先缓存值,骑乘状态时进行附加
|
| | | # curPlayer.SetDict(ChConfig.Def_PlayerKey_SpeedHorse, horseSpeed)
|
| | | # |
| | | # # 果实对坐骑的加成, 魂石果实算附加属性层,单独计算
|
| | | # fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListHorseSoul, ShareDefine.Def_AttrFruitFunc_Horse)
|
| | | # PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_HorseSoul, fightPowerEx)
|
| | | # |
| | | # # 保存计算值
|
| | | # PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Horse, allAttrList, customAttrDict=customAttrDictHorse)
|
| | | # PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseSoul, allAttrListHorseSoul)
|
| | | # PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseSkin, allAttrListSkin, customAttrDict=customAttrDictSkin)
|
| | | # PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseTarin, allAttrListTrain)
|
| | | # PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseStar, allAttrListStar)
|
| | | # return
|
| | |
|
| | | def GetHorseSkinActCount(curPlayer):
|
| | | horseSkinActCount = 0
|