public override bool CanChangeState(StateParameter stateParm) { if (m_actor == null) { return(false); } if (m_curSkillDesc == null) { return(false); } if (stateParm.state == ACTOR_STATE.AS_DEATH) { return(true); } if (stateParm.state == ACTOR_STATE.AS_RUN) { //判断是不是旋风斩 if (m_curSkillDesc.Get <int>("subtype") == (int)SkillType.SKILL_XUANFANZHAN) { return(true); } } //外部状态切换 if (stateParm.state != ACTOR_STATE.AS_ATTACK && stateParm.state != ACTOR_STATE.AS_BEHIT) { return(!m_isEndure); } //被击状态 if (stateParm.state == ACTOR_STATE.AS_BEHIT) { if (m_actor.mActorType == ActorType.AT_MONSTER) { if (stateParm.IsHitBack) { return(true); } if (null != m_curSkillDesc) { if (m_curSkillDesc.Get <bool>("stop_casting")) { return(true); } } return(false); } //前摇时间0.1秒,不可被打断,被神将的520601打断 float runTime = m_actor.GetCurActionTime(m_actor.GetCurPlayAction()); if (runTime < 0.1f && m_actor.mActorType != ActorType.AT_MONSTER) // 怪物攻击可以被打断 { return(false); } //如果是BOSS,并且处于气绝状态 if (m_actor.mActorType == ActorType.AT_BOSS && m_actor.IsInQiJue()) { return(true); } //霸体了,且不是破霸体技能 if (m_isEndure) { return(false); } return(false); } //子技能可以切换 if (m_curSkillBase != null && m_curSkillBase.IsSubSkill(stateParm.skillID)) { return(true); } //yy 如果是后摇状态可以切换 if (m_bAfterAttack && stateParm.state == ACTOR_STATE.AS_ATTACK) { return(true); } //内部状态切换 if (stateParm.isComposeSkill) { //组合技能 return(m_actor.ComposeSkillCanCastSkill(stateParm.composeSkillDesc.changeTime)); } //普通技能切换,看霸体时间结束没 if (null != m_actor && m_actor.mActorType != ActorType.AT_LOCAL_PLAYER) { return(true); } return(!m_isEndure); }