129 【战斗】战斗系统-服务端(贾诩技能,buff计算属性后最终属性支持负值;)
| | |
| | | self._xp = 0 # 当前怒气值
|
| | | self._isAlive = True # 是否活着
|
| | | self._initAttrDict = {} # 初始化时的属性,固定不变,初始化时已经算好的属性 {attrID:value, ...}
|
| | | self._batAttrDict = {} # 实际战斗属性,包含buff层级的实际属性
|
| | | self._skillTempAttrDict = {} # 某次技能释放中临时的属性增减 {attrID:+-value, ...}
|
| | | self._batAttrDict = {} # 实际战斗属性,包含buff层级的实际属性 {attrID:+-value, ...} value可能是负值
|
| | | self._skillTempAttrDict = {} # 某次技能释放中临时的属性增减 {attrID:+-value, ...} value可能是负值
|
| | | self._kvDict = {} # 自定义kv字典
|
| | | self._skillUseCntDict = {} # 技能累计使用次数 {skillID:useCnt, ...}
|
| | | self._skillTurnUseCntDict = {} # 技能单回合累计使用次数 {skillID:useCnt, ...}
|
| | |
| | | def GetAtk(self): return self.GetBatAttrValue(ChConfig.AttrID_Atk)
|
| | | def GetDef(self): return self.GetBatAttrValue(ChConfig.AttrID_Def)
|
| | |
|
| | | def GetBatAttrDict(self): return self._batAttrDict
|
| | | def GetBatAttrValue(self, attrID, includeTemp=True):
|
| | | #ChConfig.AttrID_HP ChConfig.AttrID_XP
|
| | | value = self._batAttrDict.get(attrID, 0)
|
| | | if includeTemp and attrID in self._skillTempAttrDict:
|
| | | value += self._skillTempAttrDict[attrID] # 支持正负值
|
| | | value = max(1, value)
|
| | | #value = max(1, value)
|
| | | return value
|
| | | def SetBatAttrValue(self, attrID, value): self._batAttrDict[attrID] = value
|
| | | def AddSkillTempAttr(self, attrID, value):
|
| | |
| | | if attrValue <= 0:
|
| | | continue
|
| | | updValue = int(attrValue * (10000 + attrPerValue) / 10000.0)
|
| | | updValue = max(0, updValue) # 最多减到0,最大无上限
|
| | | #updValue = max(0, updValue) # 最多减到0,最大无上限
|
| | | batObj.SetBatAttrValue(attrID, updValue)
|
| | | GameWorld.DebugLog(" attrID=%s(PerID:%s),attrValue=%s(PerValue:%s),updValue=%s" % (attrID, attrPerID, attrValue, attrPerValue, updValue))
|
| | |
|
| | |
| | | if attrID in perIDList:
|
| | | continue
|
| | | attrValue = batObj.GetBatAttrValue(attrID, False)
|
| | | updValue = max(0, attrValue + addValue) # 最多减到0,最大无上限
|
| | | updValue = attrValue + addValue
|
| | | #updValue = max(0, attrValue + addValue) # 最多减到0,最大无上限
|
| | | batObj.SetBatAttrValue(attrID, updValue)
|
| | | GameWorld.DebugLog(" attrID=%s,attrValue=%s,addValue=%s,updValue=%s" % (attrID, attrValue, addValue, updValue))
|
| | |
|
| | |
| | | aftHP += (aftMaxHP - befMaxHP)
|
| | | batObj.SetHP(aftHP, True)
|
| | | GameWorld.DebugLog(" befHP=%s/%s, aftHP=%s/%s" % (befHP, befMaxHP, aftHP, aftMaxHP))
|
| | | GameWorld.DebugLog(" 最终属性 ID:%s,atk=%s,def=%s,hp=%s/%s" % (objID, batObj.GetAtk(), batObj.GetDef(), aftHP, aftMaxHP))
|
| | | GameWorld.DebugLog(" 最终属性 ID:%s,atk=%s,def=%s,hp=%s/%s,%s" % (objID, batObj.GetAtk(), batObj.GetDef(), aftHP, aftMaxHP, batObj.GetBatAttrDict()))
|
| | | return
|
| | |
|
| | | def SyncBuffRefresh(turnFight, curBatObj, curBuff, relatedSkillID=0, isNewAdd=False):
|