示例#1
0
 public override void OnTick()
 {
     if (_enemyListTimer.IsFinished)
     {
         if (_defendObject != null)
         {
             PopulateList();
         }
         else
         {
             try
             {
                 FindObject();
                 Logging.WriteDebug(Color.LightSalmon, "DefendObject: Attempting to find Defendant...");
             }
             catch (Exception ex)
             {
                 Logging.WriteDebug(Color.LimeGreen,
                                    "DefendObject: TickException: " + ex.Message + " Trace: " + ex.StackTrace);
             }
         }
     }
     _enemyListTimer.Reset();
 }
        protected override Composite CreateBehavior()
        {
            return _root ?? (_root =
                new PrioritySelector(

                           new Decorator(ret => (Counter > NumberOfTimes && QuestId == 0)  || (me.QuestLog.GetQuestById(QuestId) != null && me.QuestLog.GetQuestById(QuestId).IsCompleted),
                                new Sequence(
                                    new Action(ret => TreeRoot.StatusText = "Finished!"),
                                    new WaitContinue(120,
                                        new Action(delegate
                                        {
                                            _isDone = true;
                                            return RunStatus.Success;
                                        }))
                                    )),

                           new Decorator(ret => _timer != null && !_timer.IsFinished,
                                new Sequence(
                                        new Action(ret => TreeRoot.StatusText = "UseItemOn - WaitTimer: " + _timer.TimeLeft.Seconds + " Seconds Left"),
                                        new Action(delegate { return RunStatus.Success; })
                                    )
                                ),

                           new Decorator(ret => _timer != null && _timer.IsFinished,
                                new Sequence(
                                        new Action(ret => _timer.Reset()),
                                        new Action(ret => _timer = null),
                                        new Action(delegate { return RunStatus.Success; })
                                    )
                                ),


                           new Decorator(c => npcList.Count == 0,
                            new Action(c =>
                            {
                                if (!me.IsIndoors && !me.Mounted && me.Level > 19)
                                {
                                    TreeRoot.StatusText = "Mounting!";
                                    Styx.Logic.Mount.MountUp();
                                }

                                TreeRoot.StatusText = "Moving To Location - X: " + Location.X + " Y: " + Location.Y + " Z: " + Location.Z;
                                Navigator.MoveTo(Location);
                            })
                        ),
                        

                        new Decorator(c => npcList.Count > 0 && InCombatHPUse > 0,
                            new Action(c =>
                            {

                                if (npcList[0].Location.Distance(me.Location) <= Range && InCombatHPUse > 0 && !me.IsCasting)
                                {
                                    if (npcList[0].HealthPercent > InCombatHPUse)
                                    {
                                        TreeRoot.StatusText = "Attacking Mob - Current Health %:" + npcList[0].HealthPercent + " Attacking Until: " + InCombatHPUse;
                                        WoWMovement.MoveStop();
                                        if (me.CurrentTarget == npcList[0])
                                        {
                                            npcList[0].Target();
                                            npcList[0].Face();
                                            Thread.Sleep(300);
                                        }
                                        SpellManager.Cast(RangeSpell);
                                        return RunStatus.Running;
                                    }
                                    else
                                    {
                                        TreeRoot.StatusText = "Using Item - " + wowItem.Name + " On Mob: " + npcList[0].Name;
                                        WoWMovement.MoveStop();
                                        npcList[0].Target();
                                        npcList[0].Face();
                                        Thread.Sleep(300);
                                        wowItem.Interact();
                                        Counter++;
                                        return RunStatus.Success;
                                    }
                                }

                                return RunStatus.Failure;

                            })),

                         new Decorator(c => npcList.Count > 0 && InCombatHPUse == 0,
                            new Action(c =>
                            {

                                if (npcList[0].Location.Distance(me.Location) < Range)
                                {
                                    TreeRoot.StatusText = "Using Item - " + wowItem.Name + " On Mob: " + npcList[0].Name;
                                    WoWMovement.MoveStop();
                                    Thread.Sleep(300);
                                    npcList[0].Target();
                                    npcList[0].Face();
                                    Thread.Sleep(300);
                                    wowItem.Interact();
                                    Counter++;
                                    _timer = new Timer(new TimeSpan(0, 0, 0, 0, WaitTime));
                                    _timer.Reset();

                                    return RunStatus.Success;
                                }
                                else
                                {

                                    TreeRoot.StatusText = "Moving To Mob - " + npcList[0].Name + " Yards Away: " + npcList[0].Location.Distance(me.Location);
                                    Navigator.MoveTo(npcList[0].Location);
                                    return RunStatus.Running;
                                }
                            }))

                    ));
        }
        protected override Composite CreateBehavior()
        {
            return(_root ?? (_root =
                                 new PrioritySelector(

                                     new Decorator(ret => (Counter > NumberOfTimes && QuestId == 0) || (me.QuestLog.GetQuestById(QuestId) != null && me.QuestLog.GetQuestById(QuestId).IsCompleted),
                                                   new Sequence(
                                                       new Action(ret => TreeRoot.StatusText = "Finished!"),
                                                       new WaitContinue(120,
                                                                        new Action(delegate
            {
                _isDone = true;
                return RunStatus.Success;
            }))
                                                       )),

                                     new Decorator(ret => _timer != null && !_timer.IsFinished,
                                                   new Sequence(
                                                       new Action(ret => TreeRoot.StatusText = "UseItemOn - WaitTimer: " + _timer.TimeLeft.Seconds + " Seconds Left"),
                                                       new Action(delegate { return RunStatus.Success; })
                                                       )
                                                   ),

                                     new Decorator(ret => _timer != null && _timer.IsFinished,
                                                   new Sequence(
                                                       new Action(ret => _timer.Reset()),
                                                       new Action(ret => _timer = null),
                                                       new Action(delegate { return RunStatus.Success; })
                                                       )
                                                   ),


                                     new Decorator(c => npcList.Count == 0,
                                                   new Action(c =>
            {
                if (!me.IsIndoors && !me.Mounted && me.Level > 19)
                {
                    TreeRoot.StatusText = "Mounting!";
                    Styx.Logic.Mount.MountUp();
                }

                TreeRoot.StatusText = "Moving To Location - X: " + Location.X + " Y: " + Location.Y + " Z: " + Location.Z;
                Navigator.MoveTo(Location);
            })
                                                   ),


                                     new Decorator(c => npcList.Count > 0 && InCombatHPUse > 0,
                                                   new Action(c =>
            {
                if (npcList[0].Location.Distance(me.Location) <= Range && InCombatHPUse > 0 && !me.IsCasting)
                {
                    if (npcList[0].HealthPercent > InCombatHPUse)
                    {
                        TreeRoot.StatusText = "Attacking Mob - Current Health %:" + npcList[0].HealthPercent + " Attacking Until: " + InCombatHPUse;
                        WoWMovement.MoveStop();
                        if (me.CurrentTarget == npcList[0])
                        {
                            npcList[0].Target();
                            npcList[0].Face();
                            Thread.Sleep(300);
                        }
                        SpellManager.Cast(RangeSpell);
                        return RunStatus.Running;
                    }
                    else
                    {
                        TreeRoot.StatusText = "Using Item - " + wowItem.Name + " On Mob: " + npcList[0].Name;
                        WoWMovement.MoveStop();
                        npcList[0].Target();
                        npcList[0].Face();
                        Thread.Sleep(300);
                        wowItem.Interact();
                        Counter++;
                        return RunStatus.Success;
                    }
                }

                return RunStatus.Failure;
            })),

                                     new Decorator(c => npcList.Count > 0 && InCombatHPUse == 0,
                                                   new Action(c =>
            {
                if (npcList[0].Location.Distance(me.Location) < Range)
                {
                    TreeRoot.StatusText = "Using Item - " + wowItem.Name + " On Mob: " + npcList[0].Name;
                    WoWMovement.MoveStop();
                    Thread.Sleep(300);
                    npcList[0].Target();
                    npcList[0].Face();
                    Thread.Sleep(300);
                    wowItem.Interact();
                    Counter++;
                    _timer = new Timer(new TimeSpan(0, 0, 0, 0, WaitTime));
                    _timer.Reset();

                    return RunStatus.Success;
                }
                else
                {
                    TreeRoot.StatusText = "Moving To Mob - " + npcList[0].Name + " Yards Away: " + npcList[0].Location.Distance(me.Location);
                    Navigator.MoveTo(npcList[0].Location);
                    return RunStatus.Running;
                }
            }))

                                     )));
        }