Пример #1
0
        //使用技能
        protected virtual CommandReplyType CheckUseSkill(UseSkillCommand cmd)
        {
            if (CacheTransform == null)
            {
                return(CommandReplyType.NO);
            }
            if (CannotControlSelf())
            {
                ShowWarning("100012");
                return(CommandReplyType.NO);
            }
            if (CurFsmStateType == ActorFsmStateType.FSM_SKILL)
            {
                return(CommandReplyType.NO);
            }
            if (GetActorState(ActorStateType.IsRide))
            {
                ShowWarning("100011");
                return(CommandReplyType.NO);
            }

            SkillTree skill = m_ActorSkill.GetSkill(cmd.SkillPos);

            if (skill == null)
            {
                return(CommandReplyType.NO);
            }
            if (skill.IsInCD())
            {
                return(CommandReplyType.NO);
            }
            switch (skill.CostType)
            {
            case SkillCostType.Hp:
            {
                bool success = UseHp(skill.CostNum);
                if (!success)
                {
                    return(CommandReplyType.NO);
                }
            }
            break;

            case SkillCostType.Mp:
            {
                bool success = UseMp(skill.CostNum);
                if (!success)
                {
                    return(CommandReplyType.NO);
                }
            }
            break;
            }
            cmd.LastTime = skill.StateTime;

            ChangeState <ActorSkillFsm>(cmd);
            return(CommandReplyType.YES);
        }
Пример #2
0
        protected override void OnEnter(IFsm <ActorBase> fsm)
        {
            base.OnEnter(fsm);
            UseSkillCommand useSkillCommand = m_Command as UseSkillCommand;

            if (useSkillCommand == null)
            {
                Log.Error("UseSkillCommand convert failure.");
                return;
            }

            if (useSkillCommand.LastTime > 0)
            {
                GameEntry.Timer.Register(useSkillCommand.LastTime, Break);
            }
            m_Owner.ApplyRootMotion(false);
            m_Owner.OnUseSkill(useSkillCommand);
        }
Пример #3
0
 /// <summary>
 /// 使用技能
 /// </summary>
 public virtual void OnUseSkill(UseSkillCommand ev)
 {
     StopPathFinding();
     LookAtEnemy();
     m_ActorSkill.UseSkill(ev.SkillPos);
 }