Пример #1
0
        public override bool OnFollowTarget(PlayerInstance player)
        {
            if (player.IsMoving)
            {
                return(false);
            }

            if (player.CanCastSpell())
            {
                //到释放技能距离
                player.ChangeState(ePlayerState.CastSpell);
            }
            else
            {
                if (!player.FollowTarget(player.mAttackTarget))
                {
                    player.ChangeState(ePlayerState.Idle);
                    return(false);
                }
            }

            return(true);
        }
Пример #2
0
        public override bool FollowTarget(PlayerInstance player, RoleActor target)
        {
            if (!base.FollowTarget(player, target))
            {
                return(false);
            }

            player.SelectSpell();

            if (player.CanCastSpell())
            {
                //到释放技能距离
                player.ChangeState(ePlayerState.WaitCoolDown);
            }
            else
            {
                Vector3 standPos = target.GetSurroundPosition(player.GetPosition(), (int)player.mCastSpellDistance, player.Id);
                if (!Util.PassableForMod(player.HostMap.Navigator, standPos))
                {
                    if (!Util.PassableForMod(player.HostMap.Navigator, player.GetPosition()))
                    {
                        return(false);
                    }
                    standPos = player.GetPosition();
                }

                if (!player.MoveTo(standPos))
                {
                    return(false);
                }

                player.ChangeState(ePlayerState.FollowTarget);
            }

            return(true);
        }