| | |
| | | def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
|
| | | if not defender:
|
| | | return
|
| | | |
| | | if not GameWorld.CanHappen(curSkill.GetHappenRate(), ChConfig.Def_MaxRateValue):
|
| | | #清除失败也触发CD
|
| | | return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
|
| | |
|
| | | delSuccess = False
|
| | | # 优先清理指定技能
|
| | | mark = curSkill.GetEffect(0).GetEffectValue(1)
|
| | | theSkillID = mark if mark > 10 else 0
|
| | | cleanCnt = mark if 0< mark <= 10 else 1
|
| | | if theSkillID:
|
| | | if not curSkill.GetEffect(0).GetEffectValue(2):
|
| | | findBuff, buffManager, buffType, buffSkill = SkillCommon.FindBuffByID(defender, theSkillID)
|
| | | else:
|
| | | findBuff, buffManager, buffType, buffSkill = SkillCommon.FindBuffByOwnerEx(defender, theSkillID, attacker.GetID(), attacker.GetGameObjType())
|
| | | if findBuff:
|
| | | ownerID, ownerType = findBuff.GetOwnerID(), findBuff.GetOwnerType()
|
| | | |
| | | #删除Buff
|
| | | BuffSkill.DoBuffDisApperEx(defender, findBuff, tick)
|
| | | skillID = buffSkill.GetSkillID()
|
| | | buffManager.DeleteBuffByTypeID(buffSkill.GetSkillTypeID())
|
| | | SkillShell.ClearBuffEffectBySkillID(defender, skillID, ownerID, ownerType)
|
| | | delSuccess = True
|
| | | else:
|
| | | # 某类技能中的一个
|
| | | for _ in range(cleanCnt):
|
| | | delResult = ClearBySkillType(curSkill, defender, tick)
|
| | | if delResult:
|
| | | delSuccess = True
|
| | |
|
| | | if not delSuccess:
|
| | | # 没有可清除BUFF也进入CD
|
| | | return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
|
| | | |
| | | #刷新属性
|
| | | curObjType = defender.GetGameObjType()
|
| | | #玩家
|
| | | if curObjType == IPY_GameWorld.gotPlayer:
|
| | | #刷新玩家属性
|
| | | playerControl = PlayerControl.PlayerControl(defender)
|
| | | |
| | | playerControl.RefreshPlayerActionState()
|
| | | playerControl.RefreshPlayerAttrByBuff()
|
| | | #NPC
|
| | | elif curObjType == IPY_GameWorld.gotNPC:
|
| | | npcControl = NPCCommon.NPCControl(defender)
|
| | | |
| | | npcControl.RefreshNPCActionState()
|
| | | npcControl.RefreshNPCAttrState()
|
| | | |
| | | return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
|
| | |
|
| | | def ClearBySkillType(curSkill, defender, tick):
|
| | | skillType = curSkill.GetEffect(0).GetEffectValue(0)
|
| | | if skillType == 0:
|
| | | # 无配置代表清除负面buff任意1个
|
| | |
| | | ownerID, ownerType = curBuff.GetOwnerID(), curBuff.GetOwnerType()
|
| | |
|
| | | #删除Buff
|
| | | BuffSkill.DoBuffDisApper(defender, curBuff, tick)
|
| | | BuffSkill.DoBuffDisApperEx(defender, curBuff, tick)
|
| | | buffSkill = curBuff.GetSkill()
|
| | | if not buffSkill:
|
| | | continue
|
| | | skillID = buffSkill.GetSkillID()
|
| | | buffManager.DeleteBuffByTypeID(buffSkill.GetSkillTypeID())
|
| | | SkillShell.ClearBuffEffectBySkillID(defender, skillID, ownerID, ownerType)
|
| | | delSuccess = True
|
| | | break
|
| | | |
| | | if not delSuccess:
|
| | | # 没有可清除BUFF也进入CD
|
| | | return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
|
| | | |
| | | #刷新属性
|
| | | curObjType = defender.GetGameObjType()
|
| | | #玩家
|
| | | if curObjType == IPY_GameWorld.gotPlayer:
|
| | | #刷新玩家属性
|
| | | playerControl = PlayerControl.PlayerControl(defender)
|
| | | |
| | | if buffType == IPY_GameWorld.bfActionBuff:
|
| | | playerControl.RefreshPlayerActionState()
|
| | | if BuffSkill.CheckBuffRefresh(buffSkill, False):
|
| | | playerControl.RefreshPlayerAttrByBuff()
|
| | | else:
|
| | | playerControl.RefreshPlayerAttrByBuff()
|
| | | #NPC
|
| | | elif curObjType == IPY_GameWorld.gotNPC:
|
| | | npcControl = NPCCommon.NPCControl(defender)
|
| | | |
| | | if buffType == IPY_GameWorld.bfActionBuff:
|
| | | npcControl.RefreshNPCActionState()
|
| | | if BuffSkill.CheckBuffRefresh(buffSkill, False):
|
| | | npcControl.RefreshNPCAttrState()
|
| | | else:
|
| | | npcControl.RefreshNPCAttrState()
|
| | | |
| | | return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
|
| | |
|
| | | return delSuccess
|
| | | |