hxp
2019-05-05 18a10a74bd18363b8a325044d0cec5e4838531a3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -88,6 +88,10 @@
def GetBuffReplaceType(curSkill):
    return curSkill.GetCanRepeatTime()/10
# buff根据释放者不同判断是否共存buff,百位数 Def_Buff_NoCoexist
def GetBuffCoexistType(curSkill):
    return curSkill.GetCanRepeatTime()/10%10
def GetBuffMaxLayer(curSkill):
    layerMaxCnt = 0
    hasEffect = SkillCommon.GetSkillEffectByEffectID(curSkill, ChConfig.Def_Skill_Effect_LayerCnt)
@@ -148,6 +152,8 @@
    curSkillLV = curSkill.GetSkillLV()
    #替换模式
    buffReplaceType = GetBuffReplaceType(curSkill)
    #共存模式
    buffCoexistType = GetBuffCoexistType(curSkill)
    #时间处理类型
    buffRepeatTimeType = GetBuffRepeatTimeType(curSkill) 
    #用于BUFF满的时候处理刷新逻辑
@@ -176,9 +182,9 @@
        if buffSkill.GetSkillTypeID() != curSkillTypeID:
            continue
        
        if buffReplaceType == ChConfig.Def_Buff_Coexist and buffOwner:
        if buffCoexistType == ChConfig.Def_Buff_Coexist and buffOwner:
            #可同时存在的buff,判断释放者是否不一样
            if buffSkill.GetOwnerID() != buffOwner.GetID() or buffSkill.GetOwnerType() != buffOwner.GetGameObjType():
            if curBuff.GetOwnerID() != buffOwner.GetID() or curBuff.GetOwnerType() != buffOwner.GetGameObjType():
                continue
        
        #--------------技能类型ID相同
@@ -627,6 +633,9 @@
    
    index = 0
    isPlayerTJG = (curObj.GetGameObjType() == IPY_GameWorld.gotPlayer and PlayerTJG.GetIsTJG(curObj))
    skillIDListInDelBuff = []   # buff消失中需要处理添加buff,外层处理避免错乱
    while index < buffState.GetBuffCount():
        curBuff = buffState.GetBuff( index )
        if not curBuff:
@@ -675,12 +684,29 @@
        buffState.DeleteBuffByIndex( index )
        SkillShell.ClearBuffEffectBySkillID(curObj, curSkill.GetSkillID(), ownerID, ownerType)
        
        addSkillID = curObj.GetDictByKey(ChConfig.Def_PlayerKey_SkillInDelBuff)
        if addSkillID and addSkillID not in skillIDListInDelBuff:
            skillIDListInDelBuff.append(addSkillID)
    OnSkillAfterBuffDisappear(curObj, skillIDListInDelBuff, tick)
    #执行DoBuffDisApper中,标记的玩家处理要求
    __DoBuffDisApperByKey( curObj , tick )
        
    return isRefresh, delResult
# DoBuffDisApper不能做Buff添加和删除逻辑!!!!!不然指针会错乱, 故在外层处理
def OnSkillAfterBuffDisappear(curObj, skillIDListInDelBuff, tick):
    posX, posY = curObj.GetPosX(), curObj.GetPosY()
    for skillID in skillIDListInDelBuff:
        skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
        if not skillData:
            continue
        SkillShell.Trigger_UseSkill(curObj, curObj, skillData, tick, posX, posY)
    return
#---------------------------------------------------------------------
## 执行buff消失触发逻辑
#  @param curObj 当前OBj