|  |  |  | 
|---|
|  |  |  | 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 | 
|---|