示例#1
0
        protected override Composite CreateBehavior()
        {
            return(_root ?? (_root =
                                 new PrioritySelector(
                                     new Action(c =>
            {
                if (Me.HealthPercent < 2)
                {
                    return RunStatus.Failure;
                }
                if (Me.HealthPercent < 60 && !Me.IsActuallyInCombat)
                {
                    WoWItem food = Consumable.GetBestFood(true);
                    CharacterSettings.Instance.FoodName = food != null ? food.Name : string.Empty;
                    Rest.Feed();
                    return RunStatus.Running;
                }
                if (IsInVehicle)
                {
                    _isBehaviorDone = true;
                    return RunStatus.Success;
                }
                WoWUnit Horse = ObjectManager.GetObjectsOfType <WoWUnit>().Where(u => u.Entry == 28782).OrderBy(u => u.Distance).FirstOrDefault();
                if (Horse != null)
                {
                    if (!Me.IsActuallyInCombat)
                    {
                        if (Horse.Distance > 4)
                        {
                            Navigator.MoveTo(Horse.Location);
                        }
                        else
                        {
                            Horse.Interact();
                        }
                    }
                    if (Me.IsActuallyInCombat)
                    {
                        if (Me.CurrentTarget != null)
                        {
                            if (Me.CurrentTarget.Dead)
                            {
                                Me.ClearTarget();
                            }
                            else if (Me.CurrentTarget.Entry == 28768)
                            {
                                if (!Me.IsSafelyFacing(Horse))
                                {
                                    Horse.Face();
                                }
                            }
                            else if (!Me.IsSafelyFacing(Me.CurrentTarget))
                            {
                                Me.CurrentTarget.Face();
                            }
                            if (Me.IsMoving)
                            {
                                WoWMovement.MoveStop();
                            }
                            if (!Me.IsSafelyFacing(Me.CurrentTarget))
                            {
                                Me.CurrentTarget.Face();
                            }
                            if (SpellManager.CanCast("Icy Touch"))
                            {
                                SpellManager.Cast("Icy Touch");
                            }
                            if (SpellManager.CanCast("Plague Strike"))
                            {
                                SpellManager.Cast("Plague Strike");
                            }
                            if (SpellManager.CanCast("Blood Strike"))
                            {
                                SpellManager.Cast("Blood Strike");
                            }
                            if (SpellManager.CanCast("Death Coil"))
                            {
                                SpellManager.Cast("Death Coil");
                            }
                        }
                    }
                }
                else
                {
                    Navigator.MoveTo(Location);
                }

                return RunStatus.Running;
            }

                                                ))));
        }