129 【战斗】战斗系统-服务端(孙尚香技能;技能增加buff驱散限制字段;增加目标细分6 - 灼烧/玄火优先;增加效果5008 - 转化目标身上类型buff;优化效果5004 5006 5007;)
| | |
| | | BYTE LayerCnt; //Buff屿°
|
| | | BYTE LayerMax; //æå¤§å±æ°
|
| | | DWORD BuffRepeat; //Buffå å è§å
|
| | | DWORD DieContinue; //Buffæ»äº¡åå¨
|
| | | BYTE DispersedLimit; //驱æ£éå¶
|
| | | DWORD FightPower; //æè½ææå
|
| | | char SkillMotionName; //æè½å¨ä½å
|
| | | };
|
| | |
| | |
|
| | | def __StrToList(self, strValue):
|
| | | setList = []
|
| | | if (strValue.startswith("[") and strValue.endswith("]")) or (strValue.startswith("(") and strValue.endswith(")")):
|
| | | setList = eval(strValue)
|
| | | elif strValue in ["0", "-", ""]:
|
| | | pass
|
| | | elif strValue.isdigit():
|
| | | setList = (int(strValue),)
|
| | | else:
|
| | | if ChConfig.Def_Str_Montant in strValue: # |åå²çä¼å
|
| | | for value in strValue.split(ChConfig.Def_Str_Montant):
|
| | | if value.isdigit():
|
| | | value = int(value)
|
| | |
| | | setList.append(value)
|
| | | if setList:
|
| | | setList = tuple(setList)
|
| | | elif (strValue.startswith("[") and strValue.endswith("]")) or (strValue.startswith("(") and strValue.endswith(")")):
|
| | | setList = eval(strValue)
|
| | | elif strValue in ["0", "-", ""]:
|
| | | pass
|
| | | elif strValue.isdigit():
|
| | | setList = (int(strValue),)
|
| | | return setList
|
| | |
|
| | | #<%Ipy_Cache_Func%>
|
| | |
| | | def GetLayerCnt(self): return self._ipyData.GetLayerCnt()
|
| | | def GetLayerMax(self): return self._ipyData.GetLayerMax()
|
| | | def GetBuffRepeat(self): return self._ipyData.GetBuffRepeat() # Buffå å è§å
|
| | | def GetDieContinue(self): return self._ipyData.GetDieContinue() # Buffæ»äº¡åå¨
|
| | | def GetDispersedLimit(self): return self._ipyData.GetDispersedLimit() # 驱æ£éå¶
|
| | | def GetFightPower(self): return self._ipyData.GetFightPower()
|
| | | def GetSkillMotionName(self): return self._ipyData.GetSkillMotionName()
|
| | |
|
| | |
| | | def GetLayerCnt(self): return self._skillData.GetLayerCnt()
|
| | | def GetLayerMax(self): return self._skillData.GetLayerMax()
|
| | | def GetBuffRepeat(self): return self._skillData.GetBuffRepeat() # Buffå å è§å
|
| | | def GetDieContinue(self): return self._skillData.GetDieContinue() # Buffæ»äº¡åå¨
|
| | | def GetDispersedLimit(self): return self._skillData.GetDispersedLimit() # 驱æ£éå¶
|
| | | def GetFightPower(self): return self._skillData.GetFightPower()
|
| | | def GetSkillMotionName(self): return self._skillData.GetSkillMotionName()
|
| | |
|
| | |
| | | SkillTagAffect_Death, # æ»äº¡åä½ 3
|
| | | SkillTagAffect_UncontrolledPriority, # æªè¢«æ§å¶ä¼å
4
|
| | | SkillTagAffect_AtkHighest, # æ»å»åæé« 5
|
| | | ) = range(6)
|
| | | SkillTagAffect_Burn, # ç¼ç§/çç«ç®æ ä¼å
6
|
| | | ) = range(7)
|
| | |
|
| | | #æè½æ½æ³ç®æ
|
| | | Def_UseSkillAim_Type = 3
|
| | |
| | | BatObjState_20, # è´¯é¾æª 20
|
| | | BatObjState_DamShield, # æ¿ä¼¤ç¾ 21
|
| | | BatObjState_DamBackShield, # èæ£ç¾ 22
|
| | | ) = range(1 + 22)
|
| | | BatObjState_BurnPlus, # çç«(ç¼ç§2) 23
|
| | | ) = range(1 + 23)
|
| | |
|
| | | #ç©å®¶ç¶æå®ä¹ï¼ä¸è½è¶
è¿31个ï¼å¦è¶
è¿ï¼éæ©å±å¤ä¸ªkeyæ¯æ
|
| | | Def_PlayerStateList = (
|
| | |
| | | import NetPackCommon
|
| | | import TurnAttack
|
| | | import BattleObj
|
| | | import TurnBuff
|
| | |
|
| | | FactionList = [1, 2]
|
| | |
|
| | |
| | | if not msgList:
|
| | | GameWorld.DebugAnswer(curPlayer, "è®¾ç½®å±æ§: TurnFight a 屿§ID å¼ [éµè¥ ä½ç½®] ")
|
| | | GameWorld.DebugAnswer(curPlayer, "å»æç®æ : TurnFight k éµè¥ [ä½ç½® ...] ")
|
| | | GameWorld.DebugAnswer(curPlayer, "æ·»å buff: TurnFight b éµè¥ ä½ç½® buffæè½ID")
|
| | | GameWorld.DebugAnswer(curPlayer, "è¾åºæç»: TurnFight p [éµè¥ ä½ç½®] ")
|
| | | GameWorld.DebugAnswer(curPlayer, "éµè¥ï¼ 1-左边ï¼2-å³è¾¹")
|
| | | GameWorld.DebugAnswer(curPlayer, "ä½ç½®ï¼ 1~6å·ä½")
|
| | |
| | | __doSetAttr(curPlayer, msgList)
|
| | | elif value == "k":
|
| | | __doKillObj(curPlayer, msgList)
|
| | | elif value == "b":
|
| | | __doAddBuff(curPlayer, msgList)
|
| | | elif value == "p":
|
| | | __printInfo(curPlayer, msgList)
|
| | |
|
| | |
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
|
| | | def __doAddBuff(curPlayer, msgList):
|
| | | faction = msgList[1] if len(msgList) > 1 else 2
|
| | | posNum = msgList[2] if len(msgList) > 2 else 1
|
| | | skillID = msgList[3] if len(msgList) > 3 else 0
|
| | | if faction not in FactionList:
|
| | | GameWorld.DebugAnswer(curPlayer, "éµè¥ï¼ 1-左边ï¼2-å³è¾¹")
|
| | | return
|
| | | mainFightMgr = TurnAttack.GetMainFightMgr(curPlayer)
|
| | | turnFight = mainFightMgr.turnFight
|
| | | if not turnFight.isInFight():
|
| | | GameWorld.DebugAnswer(curPlayer, "ä¸»çº¿éææä¸")
|
| | | return
|
| | | |
| | | batObjMgr = BattleObj.GetBatObjMgr()
|
| | | batFaction = turnFight.getBatFaction(faction)
|
| | | batLineup = batFaction.getBatlineup(1)
|
| | | objID = batLineup.posObjIDDict.get(posNum)
|
| | | batObj = batObjMgr.getBatObj(objID)
|
| | | if not batObj:
|
| | | GameWorld.DebugAnswer(curPlayer, "ä¸åå¨è¯¥ææå¯¹è±¡:éµè¥:%s,ä½ç½®:%s" % (faction, posNum))
|
| | | return
|
| | | if not batObj.IsAlive():
|
| | | GameWorld.DebugAnswer(curPlayer, "è¯¥å¯¹è±¡å·²è¢«å»æ:éµè¥:%s,ä½ç½®:%s" % (faction, posNum))
|
| | | return
|
| | | |
| | | addBuff = TurnBuff.DoAddBuffBySkillID(turnFight, batObj, skillID)
|
| | | if addBuff:
|
| | | GameWorld.DebugAnswer(curPlayer, "æ·»å buffæå! buffID=%s" % addBuff.GetBuffID()) |
| | | else:
|
| | | GameWorld.DebugAnswer(curPlayer, "æ·»å buff失败")
|
| | | return
|
| | |
|
| | | def __printInfo(curPlayer, msgList):
|
| | | ## è¾åºä¿¡æ¯
|
| | | faction = msgList[1] if len(msgList) > 1 else 0
|
| | |
| | | ("BYTE", "LayerCnt", 0),
|
| | | ("BYTE", "LayerMax", 0),
|
| | | ("DWORD", "BuffRepeat", 0),
|
| | | ("DWORD", "DieContinue", 0),
|
| | | ("BYTE", "DispersedLimit", 0),
|
| | | ("DWORD", "FightPower", 0),
|
| | | ("char", "SkillMotionName", 0),
|
| | | ),
|
| | |
| | | def GetLayerCnt(self): return self.attrTuple[34] # Buff屿° BYTE
|
| | | def GetLayerMax(self): return self.attrTuple[35] # æå¤§å±æ° BYTE
|
| | | def GetBuffRepeat(self): return self.attrTuple[36] # Buffå å è§å DWORD
|
| | | def GetDieContinue(self): return self.attrTuple[37] # Buffæ»äº¡åå¨ DWORD
|
| | | def GetDispersedLimit(self): return self.attrTuple[37] # 驱æ£éå¶ BYTE
|
| | | def GetFightPower(self): return self.attrTuple[38] # æè½ææå DWORD
|
| | | def GetSkillMotionName(self): return self.attrTuple[39] # æè½å¨ä½å char |
| | | |
| | |
| | |
|
| | | def __StrToList(self, strValue):
|
| | | setList = []
|
| | | if (strValue.startswith("[") and strValue.endswith("]")) or (strValue.startswith("(") and strValue.endswith(")")):
|
| | | setList = eval(strValue)
|
| | | elif strValue in ["0", "-", ""]:
|
| | | pass
|
| | | elif strValue.isdigit():
|
| | | setList = (int(strValue),)
|
| | | else:
|
| | | if ChConfig.Def_Str_Montant in strValue: # |åå²çä¼å
|
| | | for value in strValue.split(ChConfig.Def_Str_Montant):
|
| | | if value.isdigit():
|
| | | value = int(value)
|
| | |
| | | setList.append(value)
|
| | | if setList:
|
| | | setList = tuple(setList)
|
| | | elif (strValue.startswith("[") and strValue.endswith("]")) or (strValue.startswith("(") and strValue.endswith(")")):
|
| | | setList = eval(strValue)
|
| | | elif strValue in ["0", "-", ""]:
|
| | | pass
|
| | | elif strValue.isdigit():
|
| | | setList = (int(strValue),)
|
| | | return setList
|
| | |
|
| | | |
| | |
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_5004
|
| | | #
|
| | | # @todo:æ¦çéæºç§»é¤éæºç®æ èº«ä¸æç§buff
|
| | | # @todo:æ¦çç§»é¤éæºç®æ èº«ä¸æç§ç±»åbuff
|
| | | # @author hxp
|
| | | # @date 2025-09-23
|
| | | # @version 1.0
|
| | | #
|
| | | # è¯¦ç»æè¿°: æ¦çéæºç§»é¤éæºç®æ èº«ä¸æç§buff
|
| | | # è¯¦ç»æè¿°: æ¦çç§»é¤éæºç®æ èº«ä¸æç§ç±»åbuff
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-09-23 18:30"""
|
| | |
| | |
|
| | | def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
|
| | | # buffæè½ç±»å ç§»é¤ä¸ªæ°ï¼0为å
¨é¨ æåï¼1-ææ¹ï¼2-åæ¹ éæºç®æ ä¸ªæ° æ¦ç
|
| | | skillType = curEffect.GetEffectValue(0) # buffæè½ç±»å
|
| | | skillTypeList = curEffect.GetEffectValue(0) # buffæè½ç±»å
|
| | | delBuffCnt = curEffect.GetEffectValue(1) # ç§»é¤ä¸ªæ°ï¼0为å
¨é¨
|
| | | isFriend = curEffect.GetEffectValue(2) # æåï¼0-ææ¹ï¼1-åæ¹
|
| | | delObjCnt = curEffect.GetEffectValue(3) # éæºç®æ 个æ°
|
| | |
| | | for index in range(buffMgr.GetBuffCount()):
|
| | | buff = buffMgr.GetBuffByIndex(index)
|
| | | skillData = buff.GetSkillData()
|
| | | if skillData.GetSkillType() != skillType:
|
| | | if skillData.GetSkillType() not in skillTypeList:
|
| | | continue
|
| | | if skillData.GetDispersedLimit():
|
| | | continue
|
| | | buffList.append(buff)
|
| | |
|
| | | if buffList:
|
| | | objBuffList.append([tagObj, buffList])
|
| | |
|
| | | GameWorld.DebugLog("æ¦çéæºç§»é¤éæºç®æ èº«ä¸æç§buff: skillType=%s,objLen=%s" % (skillType, len(objBuffList)))
|
| | | GameWorld.DebugLog("æ¦çéæºç§»é¤éæºç®æ èº«ä¸æç§buff: skillTypeList=%s,objLen=%s" % (skillTypeList, len(objBuffList)))
|
| | | if not objBuffList:
|
| | | return
|
| | |
|
| | |
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_5006
|
| | | #
|
| | | # @todo:ç§»é¤ç®æ èº«ä¸æç§ç¶æbuff
|
| | | # @todo:ç§»é¤/驱æ£ç®æ èº«ä¸æç§ç¶æbuff
|
| | | # @author hxp
|
| | | # @date 2025-09-24
|
| | | # @version 1.0
|
| | | #
|
| | | # è¯¦ç»æè¿°: ç§»é¤ç®æ èº«ä¸æç§ç¶æbuff
|
| | | # è¯¦ç»æè¿°: ç§»é¤/驱æ£ç®æ èº«ä¸æç§ç¶æbuff
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-09-24 19:00"""
|
| | |
| | |
|
| | | buffMgr = delObj.GetBuffManager()
|
| | | for buff in buffMgr.FindBuffListByState(buffState):
|
| | | skillData = buff.GetSkillData()
|
| | | if skillData.GetDispersedLimit():
|
| | | continue
|
| | | GameWorld.DebugLog(" ç§»é¤buffç¶æ: tagID=%s,buffID=%s" % (delObj.GetID(), buff.GetBuffID()))
|
| | | TurnBuff.DoBuffDel(turnFight, delObj, buff)
|
| | |
|
| | |
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_5007
|
| | | #
|
| | | # @todo:å·åç®æ 身ä¸å¢çç±»åbuffï¼æè½ç±»å3ã5ï¼
|
| | | # @todo:å·åç®æ 身ä¸ç±»åbuffï¼å é¤å¯¹æ¹çå å°èªå·±èº«ä¸ï¼
|
| | | # @author hxp
|
| | | # @date 2025-09-25
|
| | | # @version 1.0
|
| | | #
|
| | | # è¯¦ç»æè¿°: å·åç®æ 身ä¸å¢çç±»åbuffï¼æè½ç±»å3ã5ï¼
|
| | | # è¯¦ç»æè¿°: å·åç®æ 身ä¸ç±»åbuffï¼å é¤å¯¹æ¹çå å°èªå·±èº«ä¸ï¼
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-09-25 17:30"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import TurnBuff
|
| | | import ChConfig
|
| | | import GameWorld
|
| | | import random
|
| | |
|
| | | def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
|
| | | stealCnt = max(1, curEffect.GetEffectValue(0)) # å·å个æ°
|
| | | checkInStateList = curEffect.GetEffectValue(1) # å¯éå éªè¯å¤äºxxç¶æ [ç¶æ1, ç¶æ2, ...]
|
| | | skillTypeList = curEffect.GetEffectValue(0) # buffæè½ç±»å
|
| | | stealCnt = max(1, curEffect.GetEffectValue(1)) # å·å个æ°
|
| | | checkInStateList = curEffect.GetEffectValue(2) # å¯éå éªè¯å¤äºxxç¶æ [ç¶æ1, ç¶æ2, ...]
|
| | | if checkInStateList:
|
| | | if not tagObj.CheckInState(checkInStateList):
|
| | | GameWorld.DebugLog("ç®æ ä¸å¨ä»¥ä¸ç¶æä¸è½å·: tagID=%s,checkInStateList=%s" % (tagObj.GetID(), checkInStateList))
|
| | | return
|
| | |
|
| | | plsBuffList = []
|
| | | tagBuffList = []
|
| | | buffMgr = tagObj.GetBuffManager()
|
| | | for index in range(buffMgr.GetBuffCount()):
|
| | | buff = buffMgr.GetBuffByIndex(index)
|
| | | skillData = buff.GetSkillData()
|
| | | if skillData.GetSkillType() not in [ChConfig.Def_SkillType_LstPlsBuff, ChConfig.Def_SkillType_PlsBuff]:
|
| | | if skillData.GetSkillType() not in skillTypeList:
|
| | | continue
|
| | | plsBuffList.append(buff)
|
| | | if skillData.GetDispersedLimit():
|
| | | continue
|
| | | tagBuffList.append(buff)
|
| | |
|
| | | if not plsBuffList:
|
| | | GameWorld.DebugLog("ç®æ 没æå¢çbuff: tagID=%s" % (tagObj.GetID()))
|
| | | if not tagBuffList:
|
| | | GameWorld.DebugLog("ç®æ 没æå¯å·çbuff: tagID=%s,skillTypeList=%s" % (tagObj.GetID(), skillTypeList))
|
| | | return
|
| | |
|
| | | random.shuffle(plsBuffList) # éæº
|
| | | random.shuffle(tagBuffList) # éæº
|
| | |
|
| | | for tagBuff in plsBuffList:
|
| | | for tagBuff in tagBuffList:
|
| | | if stealCnt <= 0:
|
| | | break
|
| | | skillID = tagBuff.GetSkillID()
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_5008
|
| | | #
|
| | | # @todo:转åç®æ 身ä¸ç±»åbuffï¼å 餿§çè½¬æ¢æå
¶ä»buffï¼
|
| | | # @author hxp
|
| | | # @date 2025-09-26
|
| | | # @version 1.0
|
| | | #
|
| | | # è¯¦ç»æè¿°: 转åç®æ 身ä¸ç±»åbuffï¼å 餿§çè½¬æ¢æå
¶ä»buffï¼
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-09-26 16:30"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import TurnBuff
|
| | | import GameWorld
|
| | | import random
|
| | |
|
| | | def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
|
| | | skillTypeList = curEffect.GetEffectValue(0) # buffæè½ç±»å
|
| | | changeLayers = max(1, curEffect.GetEffectValue(1)) # 转å屿°
|
| | | changeToSkillID = curEffect.GetEffectValue(2) # 转å为å
¶ä»buffæè½ID
|
| | | |
| | | tagBuffList = []
|
| | | buffMgr = tagObj.GetBuffManager()
|
| | | for index in range(buffMgr.GetBuffCount()):
|
| | | buff = buffMgr.GetBuffByIndex(index)
|
| | | skillData = buff.GetSkillData()
|
| | | if skillData.GetSkillType() not in skillTypeList:
|
| | | continue
|
| | | if skillData.GetDispersedLimit():
|
| | | continue
|
| | | tagBuffList.append(buff)
|
| | | |
| | | if not tagBuffList:
|
| | | GameWorld.DebugLog("ç®æ 没æå¯è½¬åçbuff: tagID=%s,skillTypeList=%s" % (tagObj.GetID(), skillTypeList))
|
| | | return
|
| | | |
| | | random.shuffle(tagBuffList) # éæº
|
| | | |
| | | changeToLayer = 0
|
| | | for tagBuff in tagBuffList:
|
| | | if changeLayers <= 0:
|
| | | break
|
| | | skillID = tagBuff.GetSkillID()
|
| | | curLayer = max(1, tagBuff.GetLayer()) # è³å°ç®1å±
|
| | | if curLayer > changeLayers:
|
| | | updLayer = curLayer - changeLayers
|
| | | changeLayers = 0
|
| | | changeToLayer += changeLayers
|
| | | else:
|
| | | updLayer = 0
|
| | | changeLayers -= curLayer
|
| | | changeToLayer += curLayer
|
| | | GameWorld.DebugLog("转åbuff: tagID=%s,tagBuffID=%s,skillID=%s,curLayer=%s,updLayer=%s,changeToLayer=%s" |
| | | % (tagObj.GetID(), tagBuff.GetBuffID(), skillID, curLayer, updLayer, changeToLayer))
|
| | | TurnBuff.DoBuffLayerChange(turnFight, tagObj, tagBuff, updLayer, connSkill)
|
| | | |
| | | if changeToLayer <= 0:
|
| | | return
|
| | | |
| | | buffOwner = batObj
|
| | | TurnBuff.DoAddBuffBySkillID(turnFight, tagObj, changeToSkillID, buffOwner, connSkill, setLayerCnt=changeToLayer)
|
| | | return True
|
| | |
| | | SyncBuffRefresh(turnFight, curBatObj, curBuff, relatedSkillID, isNewAdd)
|
| | | return
|
| | |
|
| | | def DoAddBuffBySkillID(turnFight, batObj, skillID, buffOwner=None, bySkill=None, afterLogic=False, isSync=True):
|
| | | def DoAddBuffBySkillID(turnFight, batObj, skillID, buffOwner=None, bySkill=None, afterLogic=False, isSync=True, setLayerCnt=0):
|
| | | ## æ ¹æ®æè½IDæ·»å buff
|
| | | if not skillID:
|
| | | return
|
| | |
| | | useSkill = poolMgr.acquire(BattleObj.PySkill, skillIpyData, ownerID)
|
| | | useSkill.SetTagObjList(tagObjList)
|
| | |
|
| | | addBuff = OnAddBuff(turnFight, batObj, useSkill, buffOwner, bySkill, afterLogic, isSync=isSync)
|
| | | addBuff = OnAddBuff(turnFight, batObj, useSkill, buffOwner, bySkill, afterLogic, isSync=isSync, setLayerCnt=setLayerCnt)
|
| | |
|
| | | poolMgr.release(useSkill)
|
| | | return addBuff
|
| | |
|
| | | def OnAddBuff(turnFight, batObj, buffSkill, buffOwner=None, bySkill=None, afterLogic=False, isSync=True):
|
| | | def OnAddBuff(turnFight, batObj, buffSkill, buffOwner=None, bySkill=None, afterLogic=False, isSync=True, setLayerCnt=0):
|
| | | skillID = buffSkill.GetSkillID()
|
| | | bySkill = buffSkill.GetBySkill() if not bySkill else bySkill
|
| | | relatedSkillID = bySkill.GetSkillID() if bySkill else 0
|
| | |
| | |
|
| | | skillTypeID = buffSkill.GetSkillTypeID()
|
| | | buffRepeat = buffSkill.GetBuffRepeat()
|
| | | addLayerCnt = buffSkill.GetLayerCnt()
|
| | | addLayerEff = buffSkill.GetEffectByID(ChConfig.PassiveEff_AddBuffLayerByWeight)
|
| | | if addLayerEff:
|
| | | # 坿宿¥æºæè½æè½æçæï¼ä¸æå®çè¯é»è®¤çæ
|
| | | if not addLayerEff.GetTriggerSrc() or addLayerEff.GetTriggerSrc() == relatedSkillID:
|
| | | addLayerCnt = GameWorld.GetResultByWeightList(addLayerEff.GetEffectValues(), addLayerCnt)
|
| | | if setLayerCnt > 0:
|
| | | addLayerCnt = setLayerCnt
|
| | | GameWorld.DebugLog("å¤é¨ç´æ¥æå®æ·»å çbuffå±çº§: setLayerCnt=%s" % setLayerCnt)
|
| | | else:
|
| | | addLayerCnt = buffSkill.GetLayerCnt()
|
| | | addLayerEff = buffSkill.GetEffectByID(ChConfig.PassiveEff_AddBuffLayerByWeight)
|
| | | if addLayerEff:
|
| | | # 坿宿¥æºæè½æè½æçæï¼ä¸æå®çè¯é»è®¤çæ
|
| | | if not addLayerEff.GetTriggerSrc() or addLayerEff.GetTriggerSrc() == relatedSkillID:
|
| | | addLayerCnt = GameWorld.GetResultByWeightList(addLayerEff.GetEffectValues(), addLayerCnt)
|
| | | maxLayerCnt = buffSkill.GetLayerMax()
|
| | | if maxLayerCnt:
|
| | | maxLayerCnt += TurnPassive.GetTriggerEffectValue(turnFight, buffOwner, batObj, ChConfig.PassiveEff_AddBuffLayerMax, buffSkill)
|
| | |
| | | if tagNum not in lineupNumList:
|
| | | lineupNumList.append(tagNum)
|
| | |
|
| | | batLineup = None
|
| | | aimObjList = [] # å
çéåºèå´ç®æ
|
| | | for num in lineupNumList:
|
| | | batLineup = batFaction.getBatlineup(num)
|
| | |
| | | sneerObjFirst = False
|
| | | aimObjList.sort(key=lambda o:(o.IsInControlled()))
|
| | | GameWorld.DebugLog("æªè¢«æ§å¶ä¼å
: %s" % [[o.GetID(), o.IsInControlled()] for o in aimObjList])
|
| | | |
| | | # ç¼ç§/çç«ç®æ ä¼å
|
| | | elif tagAffect == ChConfig.SkillTagAffect_Burn:
|
| | | relativeObj = __GetRelativeObjDefault(batObjMgr, curBatObj, posNum, batLineup)
|
| | | sortObjList = [] # ä¼å
ç¼ç§ç®æ ï¼å对ä½
|
| | | for aimObj in aimObjList:
|
| | | sortValue = 0
|
| | | buffMgr = aimObj.GetBuffManager()
|
| | | if buffMgr.FindBuffListByState(ChConfig.BatObjState_Burn) or buffMgr.FindBuffListByState(ChConfig.BatObjState_BurnPlus):
|
| | | sortValue = 2
|
| | | elif relativeObj and relativeObj.GetID() == aimObj.GetID():
|
| | | sortValue = 1
|
| | | sortObjList.append([sortValue, aimObj])
|
| | | sortObjList.sort(reverse=True)
|
| | | aimObjList = [s[1] for s in sortObjList]
|
| | |
|
| | | else:
|
| | | # èå´ç®æ è¶
è¿ä¸ªæ°ï¼åéæºå
|
| | |
| | |
|
| | | def __GetRelativeObjDefault(batObjMgr, curBatObj, posNum, batLineup):
|
| | | ## è·å卿ä¸éµè¥ä¸çé»è®¤å¯¹ä½ç®æ
|
| | | |
| | | if not batLineup:
|
| | | return
|
| | | tagAffect = ChConfig.SkillTagAffect_None # é»è®¤å¯¹ä½ç®æ ä¸éè¦ç»åç®æ ï¼é»è®¤è§åå³å¯
|
| | | inColNum = ChConfig.GetInColNum(posNum) # ç©å®¶æå¨çºµå
|
| | | # ä¼å
èªå·±æå¨çºµ
|