| | |
| | | continue
|
| | | buffID = buff.GetBuffID()
|
| | | nowLayerCnt = buff.GetLayer()
|
| | | GameWorld.DebugLogEx(" 已经存在该buff: buffID=%s,skillTypeID=%s,ownerID=%s,buffRepeat=%s", buffID, skillTypeID, ownerID, buffRepeat)
|
| | | GameWorld.DebugLogEx(" 已经存在该buff: buffID=%s,skillTypeID=%s,ownerID=%s,buffRepeat=%s,nowLayerCnt=%s/%s", buffID, skillTypeID, ownerID, buffRepeat, nowLayerCnt, maxLayerCnt)
|
| | |
|
| | | resetAddTiming = False # 一般只有覆盖的才重新计算回合,视为重新添加
|
| | | remainTime = buffSkill.GetLastTime()
|
| | | updLayerCnt = addLayerCnt
|
| | | if buffRepeat == 3: # 叠加层级
|
| | | if maxLayerCnt and nowLayerCnt >= maxLayerCnt:
|
| | | GameWorld.DebugLogEx(" 已达最大层数: nowLayerCnt=%s/%s", nowLayerCnt, maxLayerCnt)
|
| | | return
|
| | | updLayerCnt = nowLayerCnt + addLayerCnt
|
| | | if maxLayerCnt and updLayerCnt > maxLayerCnt:
|
| | | updLayerCnt = maxLayerCnt
|
| | |
| | | befHP = batObj.GetHP()
|
| | | befMaxHP = batObj.GetMaxHP()
|
| | |
|
| | | isMingge = batObj.GetPosNum() == ChConfig.TFPosNum_Mingge
|
| | | mgObj = None
|
| | | if not isMingge:
|
| | | mgObj = batObj.GetTFBatLineup().getMinggeObj()
|
| | | mgObjID = mgObj.GetID() if mgObj else 0
|
| | | batAttrDict = batObj.ResetBattleEffect()
|
| | | GameWorld.DebugLogEx("RefreshBuffAttr ID:%s,atk=%s,def=%s,hp=%s/%s,batAttrDict=%s", |
| | | objID, batObj.GetAtk(), batObj.GetDef(), befHP, befMaxHP, batAttrDict)
|
| | | GameWorld.DebugLogEx("RefreshBuffAttr ID:%s,atk=%s,def=%s,hp=%s/%s,isMingge=%s(%s),batAttrDict=%s", |
| | | objID, batObj.GetAtk(), batObj.GetDef(), befHP, befMaxHP, isMingge, mgObjID, batAttrDict)
|
| | |
|
| | | skbufAttrDict = {}
|
| | |
|
| | |
| | |
|
| | | objID = batObj.GetID()
|
| | | # 先计算百分比加成或降低的
|
| | | mgHaveAttrPer = False # 命格加成对友军有效
|
| | | perIDList = ChConfig.AttrPerDict.values()
|
| | | for attrID, attrPerID in ChConfig.AttrPerDict.items():
|
| | | if attrPerID not in skbufAttrDict:
|
| | | attrPerValue = 0
|
| | | if attrPerID in skbufAttrDict:
|
| | | attrPerValue += skbufAttrDict[attrPerID] # 可能是负值
|
| | | if mgObj:
|
| | | attrPerValue += mgObj.GetBatAttrValue(attrPerID)
|
| | | if attrPerValue:
|
| | | GameWorld.DebugLogEx(" 命格额外加成: attrID=%s,attrPerID=%s,attrPerValue=%s", attrID, attrPerID, attrPerValue)
|
| | | elif isMingge and attrPerValue:
|
| | | mgHaveAttrPer = True
|
| | | batObj.SetBatAttrValue(attrPerID, attrPerValue)
|
| | | GameWorld.DebugLogEx(" 命格保存加成: attrID=%s,attrPerID=%s,attrPerValue=%s", attrID, attrPerID, attrPerValue) |
| | | if not attrPerValue:
|
| | | continue
|
| | | attrPerValue = skbufAttrDict[attrPerID] # 可能是负值
|
| | | attrValue = batObj.GetBatAttrValue(attrID, False)
|
| | | if attrValue <= 0:
|
| | | continue
|
| | |
| | | batObj.SetHP(aftHP, isNotify)
|
| | | GameWorld.DebugLogEx(" befHP=%s/%s, aftHP=%s/%s", befHP, befMaxHP, aftHP, aftMaxHP)
|
| | | GameWorld.DebugLogEx(" 最终属性 ID:%s,atk=%s,def=%s,hp=%s/%s,%s", objID, batObj.GetAtk(), batObj.GetDef(), aftHP, aftMaxHP, batObj.GetBatAttrDict())
|
| | | |
| | | # 命格刷属性
|
| | | if mgHaveAttrPer and isMingge and not isInit:
|
| | | batLineup = batObj.GetTFBatLineup()
|
| | | batObjMgr = BattleObj.GetBatObjMgr()
|
| | | heroObjIDList = batLineup.getBatHeroObjIDList()
|
| | | GameWorld.DebugLogEx("命格有加成属性同步刷新本阵容武将属性: heroObjIDList=%s", heroObjIDList)
|
| | | for heroObjID in heroObjIDList:
|
| | | heroObj = batObjMgr.getBatObj(heroObjID)
|
| | | if not heroObj:
|
| | | continue
|
| | | if not heroObj.IsAlive():
|
| | | continue
|
| | | RefreshBuffAttr(heroObj)
|
| | | |
| | | return
|
| | |
|
| | | def SyncBuffRefresh(turnFight, curBatObj, curBuff, relatedSkillID=0, isNewAdd=False):
|