| | |
| | | import ShareDefine
|
| | | import IpyGameDataPY
|
| | | import PlayerOnline
|
| | | import PlayerControl
|
| | | import DataRecordPack
|
| | | import ItemControler
|
| | | import ItemCommon
|
| | |
|
| | | def RefreshRoleEquipAttr(curPlayer):
|
| | | ## 刷新主公装备属性
|
| | |
| | | PlayerOnline.GetOnlinePlayer(curPlayer).SetCalcAttr(ChConfig.Def_CalcAttr_MainEquip, mainEquipAttrDict)
|
| | | return
|
| | |
|
| | | def FixRoleEquipHP(curPlayer, fixVersion):
|
| | | ## 修正玩家装备生命数值: 策划调整了生命占比,同步修改了生命战力,故需修正线上玩家装备生命,防止战力下降
|
| | | |
| | | playerID = curPlayer.GetPlayerID()
|
| | | fightPowerBef = PlayerControl.GetFightPower(curPlayer)
|
| | | GameWorld.Log("修正玩家装备生命数值! fixVersion=%s,fightPowerBef=%s" % (fixVersion, fightPowerBef), playerID)
|
| | | |
| | | # 需要修正身上、掉落背包
|
| | | for packType in [IPY_GameWorld.rptEquip, IPY_GameWorld.rptIdentify]:
|
| | | equipPack = curPlayer.GetItemManager().GetPack(packType)
|
| | | for index in range(equipPack.GetCount()):
|
| | | curEquip = equipPack.GetAt(index)
|
| | | if not curEquip or curEquip.IsEmpty():
|
| | | continue
|
| | | if not ItemCommon.GetIsMainEquip(curEquip):
|
| | | #GameWorld.DebugLog("非主线装备: itemIndex=%s" % itemIndex, playerID)
|
| | | continue
|
| | | itemID = curEquip.GetItemTypeID()
|
| | | |
| | | # 直接重新生成一件装备进行替换生命属性即可
|
| | | tempItem = ItemControler.GetOutPutItemObj(itemID, curPlayer=curPlayer)
|
| | | if not tempItem:
|
| | | continue
|
| | | tempEquipMaxHP = 0
|
| | | baseAttrIDCnt = tempItem.GetUserAttrCount(ShareDefine.Def_IudetBaseAttrID)
|
| | | baseAttrValueCnt = tempItem.GetUserAttrCount(ShareDefine.Def_IudetBaseAttrValue)
|
| | | for i in xrange(min(baseAttrIDCnt, baseAttrValueCnt)):
|
| | | attrID = tempItem.GetUserAttrByIndex(ShareDefine.Def_IudetBaseAttrID, i)
|
| | | attrValue = tempItem.GetUserAttrByIndex(ShareDefine.Def_IudetBaseAttrValue, i)
|
| | | if attrID == ChConfig.AttrID_MaxHP:
|
| | | tempEquipMaxHP = attrValue
|
| | | break
|
| | | tempItem.Clear() # 不需要了,直接 Clear
|
| | | if tempEquipMaxHP <= 0:
|
| | | continue
|
| | | |
| | | curEquipMaxHP = 0
|
| | | baseIDList, baseValueList = [], []
|
| | | baseAttrIDCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetBaseAttrID)
|
| | | baseAttrValueCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetBaseAttrValue)
|
| | | for i in xrange(min(baseAttrIDCnt, baseAttrValueCnt)):
|
| | | attrID = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetBaseAttrID, i)
|
| | | attrValue = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetBaseAttrValue, i)
|
| | | if attrID == ChConfig.AttrID_MaxHP:
|
| | | curEquipMaxHP = attrValue
|
| | | attrValue = tempEquipMaxHP
|
| | | baseIDList.append(attrID)
|
| | | baseValueList.append(attrValue)
|
| | | |
| | | if curEquipMaxHP >= tempEquipMaxHP:
|
| | | GameWorld.Log(" packType=%s,index=%s,curEquipMaxHP=%s >= %s, 不处理! " % (packType, index, curEquipMaxHP, tempEquipMaxHP), playerID)
|
| | | continue
|
| | | |
| | | userDataBef = curEquip.GetUserData()
|
| | | singleItem = curEquip.GetItem()
|
| | | singleItem.ClearUserAttr(ShareDefine.Def_IudetBaseAttrID)
|
| | | singleItem.ClearUserAttr(ShareDefine.Def_IudetBaseAttrValue)
|
| | | for i, attrID in enumerate(baseIDList):
|
| | | singleItem.AddUserAttr(ShareDefine.Def_IudetBaseAttrID, attrID)
|
| | | singleItem.AddUserAttr(ShareDefine.Def_IudetBaseAttrValue, baseValueList[i])
|
| | | |
| | | curEquip.Sync_Item()
|
| | | userDataAft = curEquip.GetUserData()
|
| | | |
| | | GameWorld.Log(" packType=%s,index=%s,curEquipMaxHP=%s to %s,userDataBef=%s,userDataAft=%s" |
| | | % (packType, index, curEquipMaxHP, tempEquipMaxHP, userDataBef, userDataAft), playerID)
|
| | | fixDict = {"fixVersion":fixVersion, "packType":packType, "index":index, "itemID":itemID, "userDataBef":userDataBef, "userDataAft":userDataAft}
|
| | | DataRecordPack.DR_FixVersion(curPlayer, "EquipHP", fixDict)
|
| | | |
| | | RefreshRoleEquipAttr(curPlayer)
|
| | | PlayerOnline.GetOnlinePlayer(curPlayer).RefreshRoleAttr(refreshForce=True)
|
| | | |
| | | fightPowerAft = PlayerControl.GetFightPower(curPlayer)
|
| | | DataRecordPack.DR_FixVersion(curPlayer, "EquipHP", {"fixVersion":fixVersion, "fightPowerBef":fightPowerBef, "fightPowerAft":fightPowerAft})
|
| | | return
|
| | |
|
| | | #// A3 18 灵器突破 #tagCMLingQiEquipBreak
|
| | | #
|
| | | #struct tagCMLingQiEquipBreak
|