ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
@@ -32,6 +32,7 @@
    def __init__(self, batObj):
        self._batObj = batObj
        self._objID = batObj.GetID() if batObj else 0
        self._skillIDList = [] # 已有技能ID列表,获取被动中快速判断已学技能用
        
        # 技能
        self._AffectSkillDict = {} # 被动技能 {(触发方式, 有效来源):{技能ID:[effID, ...], ...}, ...}
@@ -56,9 +57,9 @@
        '''
        effList = []
        
        # 额外子技能的一般是未学习的技能,直接加载自身的被动效果
        # 触发自己未学习的技能,直接加载自身的被动效果,如额外子技能等
        if connSkill and not isinstance(connSkill, IpyGameDataPY.IPY_Skill) and self._objID == connSkill.GetObjID() \
            and connSkill.GetBatType() == ChConfig.TurnBattleType_Enhance:
            and connSkill.GetSkillID() not in self._skillIDList:
            skillID = connSkill.GetSkillID()
            if skillID not in self._affectSkillEnhanceDict:
                effDict = {}
@@ -81,15 +82,17 @@
                        
                    key = (tWay, tSrc)
                    if key not in effDict:
                        effDict[key] = {}
                    effList = effDict[key]
                    if effectID not in effList:
                        effList.append(effList)
                        effDict[key] = []
                    effIDList = effDict[key]
                    if effectID not in effIDList:
                        effIDList.append(effectID)
                self._affectSkillEnhanceDict[skillID] = effDict
                GameWorld.DebugLogEx("加载未学技能被动: objID=%s,skillID=%s,%s", self._objID, skillID, effDict)
                
            key = (triggerWay, ChConfig.TriggerSrc_SkillSelf)
            effDict = self._affectSkillEnhanceDict[skillID]
            if triggerWay in effDict:
                effList.append(["skill", skillID, 0, effDict[triggerWay]])
            if key in effDict:
                effList.append(["skill", skillID, 0, effDict[key]])
                
        if triggerWay not in self._skillTriggerWayList and triggerWay not in self._buffTriggerWayList:
            return effList
@@ -143,6 +146,10 @@
            curSkill = skillManager.GetSkillByIndex(index)
            if not curSkill:
                continue
            skillID = curSkill.GetSkillID()
            # 附加添加已学技能,用于判断是否自身技能
            if skillID not in self._skillIDList:
                self._skillIDList.append(skillID)
            for index in xrange(curSkill.GetEffectCount()):
                curEffect = curSkill.GetEffect(index)
                effectID = curEffect.GetEffectID()
@@ -348,6 +355,7 @@
        self._ipyData = ipyData
        self._skillID = self._ipyData.GetSkillID()
        self._skillTypeID = self._ipyData.GetSkillTypeID()
        self._cdTime = self._ipyData.GetCoolDownTime()
        self._effList = [] # [Effect, ...]
        self._effDict = {} # {(effID, triggerWay):Effect, ...} ,确保唯一,同个技能可能配置相同的效果ID
        for num in range(1, 1 + 3):
@@ -393,7 +401,7 @@
            return self._effDict[(effID, triggerWay)]
    def GetConnSkill(self): return self._ipyData.GetConnSkill()
    def GetCoolDownInit(self): return self._ipyData.GetCoolDownInit()
    def GetCoolDownTime(self): return self._ipyData.GetCoolDownTime()
    def GetCoolDownTime(self): return self._cdTime
    def GetBuffStateLimit(self): return self._ipyData.GetBuffStateLimit()
    def GetCurBuffState(self): return self._ipyData.GetCurBuffState()
    def GetLastTime(self): return self._ipyData.GetLastTime() # 持续时间
@@ -645,6 +653,7 @@
        self._skillData = SklllData(ipyData)
        self._skillID = self._skillData.GetSkillID()
        self._skillTypeID = self._skillData.GetSkillTypeID()
        self._cdTime = self._skillData.GetCoolDownTime()
        self._remainTime = 0
        self._batType = 0 # 战斗类型,普通、连击、反击、追击等
        self._tagObjList = [] # 本次技能主要目标列表 [BatObj, ...]
@@ -712,7 +721,7 @@
    def GetEffectByID(self, effID, triggerWay=0): return self._skillData.GetEffectByID(effID, triggerWay)
    def GetConnSkill(self): return self._skillData.GetConnSkill()
    def GetCoolDownInit(self): return self._skillData.GetCoolDownInit()
    def GetCoolDownTime(self): return self._skillData.GetCoolDownTime()
    def GetCoolDownTime(self): return self._cdTime
    def GetBuffStateLimit(self): return self._skillData.GetBuffStateLimit()
    def GetCurBuffState(self): return self._skillData.GetCurBuffState()
    def GetLastTime(self): return self._skillData.GetLastTime() # 持续时间
@@ -721,7 +730,7 @@
    def GetLayerMax(self): return self._skillData.GetLayerMax()
    def GetBuffRepeat(self): return self._skillData.GetBuffRepeat() # Buff叠加规则
    def GetDispersedLimit(self): return self._skillData.GetDispersedLimit() # 驱散限制
    def GetBuffRetain(self): return self._ipyData.GetBuffRetain()
    def GetBuffRetain(self): return self._skillData.GetBuffRetain()
    def GetFightPower(self): return self._skillData.GetFightPower()
    
    ## ---------------------------------- 非技能表内容 ----------------------------------
@@ -875,10 +884,10 @@
class BatObj():
    ## 战斗实体对象数据,目前与某个NPCObj绑定
    
    def __init__(self):
    def __init__(self, objID):
        self.tfGUID = "" # 所属的某场回合战斗的guid
        self.ownerID = 0 # 所属玩家ID,可能为0,0代表非玩家的战斗实体
        self.objID = 0
        self.objID = objID
        self.objName = ""
        self.npcID = 0
        self.heroID = 0
@@ -1234,8 +1243,7 @@
        newObjID = self.__getNewObjID()
        if not newObjID:
            return newBatObj
        newBatObj = BatObj()
        newBatObj.objID = newObjID
        newBatObj = BatObj(newObjID)
        self.batObjDict[newObjID] = newBatObj
        GameWorld.DebugLogEx("添加战斗单位: objID=%s", newObjID)
        if False: