| | |
| | | import PlayerControl
|
| | | import NPCCommon
|
| | | import ChConfig
|
| | | import ChEquip
|
| | | import SkillCommon
|
| | | import AttackLogic
|
| | | import ItemControler
|
| | |
| | | import OperControlManager
|
| | | import DataRecordPack
|
| | | import ChItem
|
| | | import ReadChConfig
|
| | | import GameObj
|
| | | import ChPyNetSendPack
|
| | | import ChNetSendPack
|
| | |
| | | # global hurtTypeIndance
|
| | | # hurtTypeIndance = indance
|
| | | #
|
| | | ### 获得本次攻击是否是致命一击
|
| | | ### 获得本次攻击是否是暴击
|
| | | ## @param 无参数
|
| | | ## @return True or False
|
| | | ## @remarks 函数详细说明.
|
| | |
| | | if attacker.GetGameObjType() != IPY_GameWorld.gotPlayer:
|
| | | return None
|
| | |
|
| | | useSkillTagID = attacker.GetUseSkillTagID()
|
| | | useSkillTagType = attacker.GetUseSkillTagType()
|
| | | |
| | | curTag = GameWorld.GetObj(useSkillTagID, useSkillTagType)
|
| | | curTag = None
|
| | | if attacker.GetAttackMode() == IPY_GameWorld.amContest:
|
| | | # 单一目标锁定模式
|
| | | curTag = GameWorld.GetObj(attacker.SetDict(ChConfig.Def_PlayerKey_SelectObjID), |
| | | attacker.SetDict(ChConfig.Def_PlayerKey_SelectObjType))
|
| | | |
| | | if not curTag:
|
| | | return None
|
| | | useSkillTagID = attacker.GetUseSkillTagID()
|
| | | useSkillTagType = attacker.GetUseSkillTagType()
|
| | | |
| | | curTag = GameWorld.GetObj(useSkillTagID, useSkillTagType)
|
| | | if not curTag:
|
| | | return None
|
| | |
|
| | | if SkillShell.GetSkillAffectTag(curSkill) == ChConfig.Def_UseSkillTag_CanAttackNPC:
|
| | | if NPCCommon.GetNpcObjOwnerIsPlayer(curTag):
|
| | |
| | | curPlayerSkill = curPlayer.GetSkillManager().FindSkillBySkillTypeID(skillTypeID)
|
| | |
|
| | | if curPlayerSkill:
|
| | |
|
| | | #设置玩家所学技能冷却CD
|
| | | SkillCommon.SetSkillRemainTime(curPlayerSkill, PlayerControl.GetReduceSkillCDPer(curPlayer), tick, curPlayer)
|
| | | |
| | | if not IsSkipSkillCD:
|
| | | #设置玩家所学技能冷却CD
|
| | | SkillCommon.SetSkillRemainTime(curPlayerSkill, PlayerControl.GetReduceSkillCDPer(curPlayer), tick, curPlayer)
|
| | | #调用任务触发器
|
| | | #EventShell.EventRespons_UseSkillOK(curPlayer, skillTypeID)
|
| | | #执行连环被动技能处理
|
| | |
| | | # 普攻和对敌技能
|
| | | UseSkillOver(curPlayer, target, curSkill, tick)
|
| | | return True
|
| | |
|
| | | # 无冷却状态
|
| | | def IsSkipSkillCD(curPlayer, target, curSkill, tick):
|
| | | # 暴击情况下
|
| | | isSuperHit = False
|
| | | for i in xrange(g_skillHurtList.GetHurtCount()):
|
| | | hurtObj = g_skillHurtList.GetHurtAt(i)
|
| | | if not hurtObj:
|
| | | continue
|
| | | |
| | | if hurtObj.GetAttackType() == ChConfig.Def_HurtType_SuperHit:
|
| | | isSuperHit = True
|
| | | break
|
| | | |
| | | if isSuperHit:
|
| | | if PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(curPlayer, None, curSkill, ChConfig.TriggerType_SuperHitSkipCD):
|
| | | return True
|
| | | if PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(curPlayer, None, curSkill, ChConfig.TriggerType_SuperHitSkipCD):
|
| | | return True
|
| | | return False
|
| | | |
| | |
|
| | | # 根据伤血类型触发技能,群攻只触发一次,放在伤血列表被清之前
|
| | | def OnHurtTypeTriggerSkill(attacker, target, curSkill, tick):
|