| | |
| | | nowLayerCnt = buff.GetLayer()
|
| | | GameWorld.DebugLogEx(" 已经存在该buff: buffID=%s,skillTypeID=%s,ownerID=%s,buffRepeat=%s", buffID, skillTypeID, ownerID, buffRepeat)
|
| | |
|
| | | resetAddTiming = False # 一般只有覆盖的才重新计算回合,视为重新添加
|
| | | remainTime = buffSkill.GetLastTime()
|
| | | updLayerCnt = addLayerCnt
|
| | | if buffRepeat == 3: # 叠加层级
|
| | | updLayerCnt = nowLayerCnt + addLayerCnt
|
| | | if maxLayerCnt and updLayerCnt > maxLayerCnt:
|
| | | updLayerCnt = maxLayerCnt
|
| | | GameWorld.DebugLogEx(" 叠加层级: nowLayerCnt=%s,addLayerCnt=%s,updLayerCnt=%s,maxLayerCnt=%s", nowLayerCnt, addLayerCnt, updLayerCnt, maxLayerCnt)
|
| | | elif buffRepeat == 1: # 延长回合
|
| | | addTime = buffSkill.GetLastTime()
|
| | | remainTime = buff.GetRemainTime() + addTime
|
| | | GameWorld.DebugLogEx(" 延长回合: addTime=%s,updRemainTime=%s", addTime, remainTime)
|
| | | else:
|
| | | GameWorld.DebugLogEx(" 默认覆盖")
|
| | | resetAddTiming = True
|
| | |
|
| | | # 重置回合、CD、值等
|
| | | if resetAddTiming:
|
| | | buff.SetAddTiming(batObj.GetTiming())
|
| | | buff.SetRemainTime(buffSkill.GetLastTime())
|
| | | buff.SetRemainTime(remainTime)
|
| | | buff.SetLayer(updLayerCnt)
|
| | | buff.SetBuffValueList(buffValueList)
|
| | | buff.ResetEffectValueEx()
|
| | |
| | | '''
|
| | |
|
| | | objID = batObj.GetID()
|
| | | befHP = batObj.GetHP()
|
| | | befMaxHP = batObj.GetMaxHP()
|
| | |
|
| | | batAttrDict = batObj.ResetBattleEffect()
|
| | |
|
| | | befHP = batObj.GetHP()
|
| | | befMaxHP = batObj.GetMaxHP()
|
| | | GameWorld.DebugLogEx("RefreshBuffAttr ID:%s,atk=%s,def=%s,hp=%s/%s,batAttrDict=%s",
|
| | | objID, batObj.GetAtk(), batObj.GetDef(), befHP, befMaxHP, batAttrDict)
|
| | |
|
| | |
| | | skillData = buff.GetSkillData()
|
| | |
|
| | | effExDict = buff.GetEffectExDict()
|
| | | for effID, effValueEx in effExDict.items():
|
| | | for effCalcInfo, effValueEx in effExDict.items():
|
| | | effID, calcType = effCalcInfo
|
| | | if effID not in ChConfig.AttrIDList:
|
| | | continue
|
| | | attrID = effID
|
| | | attrValue = effValueEx * layer
|
| | | if calcType == 2: # 减少,其他默认增加
|
| | | attrValue = -attrValue
|
| | | buffsAttrDict[attrID] = buffsAttrDict.get(attrID, 0) + attrValue
|
| | | skbufAttrDict[attrID] = skbufAttrDict.get(attrID, 0) + attrValue
|
| | |
|
| | |
| | | if befHP and aftMaxHP > befMaxHP:
|
| | | aftHP += (aftMaxHP - befMaxHP)
|
| | | batObj.SetHP(aftHP, isNotify)
|
| | | elif aftHP > aftMaxHP:
|
| | | aftHP = aftMaxHP
|
| | | 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())
|
| | | return
|