Beispiel #1
0
        public override async Task <bool> StartTask()
        {
            Delay = Delay > 0 ? Delay : 2;

            if (await base.StartTask())
            {
                return(true);
            }

            _interactTask = new InteractionCoroutine(ActorId, TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(Delay), InteractAttempts, IgnoreSanityChecks, StartAnimation, EndAnimation, MarkerHash);
            return(false);
        }
 public override async Task <bool> StartTask()
 {
     if (SceneSnoId != 0)
     {
         _task = new MoveToSceneCoroutine(QuestId, ZetaDia.Globals.WorldSnoId, SceneSnoId, Zerg);
         return(false);
     }
     if (!string.IsNullOrEmpty(SceneName))
     {
         _task = new MoveToSceneCoroutine(QuestId, ZetaDia.Globals.WorldSnoId, SceneName, Zerg);
         return(false);
     }
     return(true);
 }
Beispiel #3
0
        public override async Task <bool> StartTask()
        {
            if (StartReset)
            {
                Core.Scenes.Reset();
            }

            var ignoreSceneNames = IgnoreScenes?.Select(s => s.Name).ToList();
            var levelAreaIds     = new HashSet <SNOLevelArea> {
                ZetaDia.CurrentLevelAreaSnoId
            };

            _exploreTask = new ExplorationCoroutine(levelAreaIds, ignoreSceneNames, null, false, UseSceneRegions);
            return(false);
        }
        public override async Task <bool> StartTask()
        {
            if (MarkerHash != 0)
            {
                if (MarkerType != default(WorldMarkerType))
                {
                    _task = new MoveToMapMarkerCoroutine(QuestId, ZetaDia.Globals.WorldSnoId, MarkerHash, MarkerType, Zerg);
                    return(false);
                }

                _task = new MoveToMapMarkerCoroutine(QuestId, ZetaDia.Globals.WorldSnoId, MarkerHash, Zerg);
                return(false);
            }
            if (MarkerType != default(WorldMarkerType))
            {
                _task = new MoveToMapMarkerCoroutine(QuestId, ZetaDia.Globals.WorldSnoId, MarkerType, Zerg);
                return(false);
            }
            return(true);
        }
Beispiel #5
0
        public bool TrySetRelativeDestination(Vector3 relPos, int sceneId, string sceneName)
        {
            if (relPos == Vector3.Zero)
            {
                return(false);
            }

            if (sceneId > 0)
            {
                _movementTask = new MoveToScenePositionCoroutine(sceneId, relPos, !UseNavigation);
                return(true);
            }

            if (string.IsNullOrEmpty(sceneName))
            {
                return(false);
            }

            _movementTask = new MoveToScenePositionCoroutine(sceneName, relPos, !UseNavigation);
            return(true);
        }
        private async Task <bool> InProgress()
        {
            _currentStep = Bounty.Coroutines.FirstOrDefault(b => !b.IsDone);
            if (_currentStep == null)
            {
                //TODO if boss bounty and completed run this
                //new MoveToObjectCoroutine(347558,AdvDia.CurrentWorldSnoId,433670),
                //new InteractWithGizmoCoroutine(347558,AdvDia.CurrentWorldSnoId,433670,0,5),
                _lastGenericBountySubroutine = null;
                State = BountyData.IsAvailable ? States.Failed : States.Completed;
                return(false);
            }
            //if (step is EnterLevelAreaCoroutine)
            //{
            //    var enterLevelAreaStep = step as EnterLevelAreaCoroutine;
            //    if (enterLevelAreaStep.SourceWorldId != AdvDia.CurrentWorldSnoId ||
            //        enterLevelAreaStep.DestinationWorldId != AdvDia.CurrentWorldSnoId)
            //    {
            //        Bounty.Reset();
            //        Reset();
            //        base.State = BountyCoroutine.States.TakingWaypoint;
            //        return false;
            //    }
            //}

            _lastGenericBountySubroutine = _currentStep;
            BotMain.SetCurrentStatusTextProvider(() =>
            {
                if (_lastGenericBountySubroutine != null)
                {
                    return(_lastGenericBountySubroutine.StatusText);
                }
                return(string.Empty);
            });

            await _currentStep.GetCoroutine();

            return(false);
        }
Beispiel #7
0
 public override async Task <bool> StartTask()
 {
     _task = new MoveThroughDeathGates(QuestId, ZetaDia.Globals.WorldSnoId, Count);
     return(false);
 }
Beispiel #8
0
 public override async Task <bool> StartTask()
 {
     _task = new ClearAreaForNSecondsCoroutine(QuestId, Seconds, ActorId, MarkerHash, (int)Radius);
     return(false);
 }
Beispiel #9
0
 public override async Task <bool> StartTask()
 {
     _task = new ClearLevelAreaCoroutine(QuestId, true);
     return(false);
 }
Beispiel #10
0
 private void CreateClearAreaTask()
 {
     _clearAreaTask = new ClearAreaForNSecondsCoroutine(QuestId, 5, 0, 0, 10);
 }
Beispiel #11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="callNode">AST node of subroutine call</param>
        /// <param name="requireReturn">Requires subroutine return value</param>
        private void CheckSubCall(ASTCallStatementNode callNode, bool requireReturn)
        {
            //check define
            ISubroutine sub = (ISubroutine)_symbolTable.FindSymbol(callNode.ProcedureName);

            if (sub == null)
            {
                _messages.Add(new MessageRecord(
                                  MsgCode.UndefinedSub,
                                  callNode.SourcePath,
                                  callNode.StartLine,
                                  callNode.StartPos,
                                  callNode.ProcedureName
                                  ));
            }
            else
            {
                //check return value
                if (requireReturn)
                {
                    if (!sub.Return)
                    {
                        _messages.Add(new MessageRecord(
                                          MsgCode.ReturnNotFound,
                                          callNode.SourcePath,
                                          callNode.StartLine,
                                          callNode.StartPos,
                                          callNode.ProcedureName
                                          ));
                    }
                }

                //check arguments count
                int argCnt = sub.ArgumentsCount;
                if (callNode.Arguments != null)
                {
                    if (argCnt > callNode.Arguments.Children.Count)
                    {
                        _messages.Add(new MessageRecord(
                                          MsgCode.TooFewArguments,
                                          callNode.SourcePath,
                                          callNode.StartLine,
                                          callNode.StartPos,
                                          argCnt,
                                          callNode.Arguments.Children.Count
                                          ));
                    }
                    if (argCnt < callNode.Arguments.Children.Count)
                    {
                        _messages.Add(new MessageRecord(
                                          MsgCode.TooManyArguments,
                                          callNode.SourcePath,
                                          callNode.StartLine,
                                          callNode.StartPos,
                                          argCnt,
                                          callNode.Arguments.Children.Count
                                          ));
                    }
                    //check arguments
                    foreach (var a in callNode.Arguments.Expressions)
                    {
                        CheckExpression(a);
                    }
                }
                else //no arguments
                {
                    if (argCnt != 0)
                    {
                        _messages.Add(new MessageRecord(
                                          MsgCode.TooFewArguments,
                                          callNode.SourcePath,
                                          callNode.StartLine,
                                          callNode.StartPos,
                                          argCnt,
                                          0
                                          ));
                    }
                }
            }
        }