| | |
| | | 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)
|
| | |
| | | curSkillLV = curSkill.GetSkillLV()
|
| | | #替换模式
|
| | | buffReplaceType = GetBuffReplaceType(curSkill)
|
| | | #共存模式 |
| | | buffCoexistType = GetBuffCoexistType(curSkill)
|
| | | #时间处理类型
|
| | | buffRepeatTimeType = GetBuffRepeatTimeType(curSkill)
|
| | | #用于BUFF满的时候处理刷新逻辑
|
| | |
| | | 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相同
|
| | |
| | |
|
| | | 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:
|
| | |
| | | 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
|