Exemple #1
0
        public Point GetRandomWalkableSquare()
        {
            var walkableSquares = new List <Point>();

            for (var y = 0; y < GameMap.GetUpperBound(1); y++)
            {
                for (var x = 0; x < GameMap.GetUpperBound(0); x++)
                {
                    if (StaticModel.DoorX != x && StaticModel.DoorY != y && GameMap[x, y] == 1)
                    {
                        walkableSquares.Add(new Point(x, y));
                    }
                }
            }

            var random = RandomNumber.GenerateNewRandom(0, walkableSquares.Count);
            var i      = 0;

            foreach (var coord in walkableSquares.ToList())
            {
                if (i == random)
                {
                    return(coord);
                }

                i++;
            }

            return(new Point(0, 0));
        }
Exemple #2
0
        public void PetEnergy(bool add)
        {
            int MaxE;

            if (add)
            {
                if (Energy == 100) // If Energy is 100, no point.
                {
                    return;
                }

                if (Energy > 85)
                {
                    MaxE = MaxEnergy - Energy;
                }
                else
                {
                    MaxE = 10;
                }
            }
            else
            {
                MaxE = 15; // Remove Max Energy as 15
            }

            if (MaxE <= 4)
            {
                MaxE = 15;
            }

            var r = RandomNumber.GenerateNewRandom(4, MaxE);

            if (!add)
            {
                Energy = Energy - r;

                if (Energy < 0)
                {
                    Energy = 1;
                    r      = 1;
                }
            }
            else

            {
                Energy = Energy + r;
            }


            if (DBState != PetDatabaseUpdateState.NeedsInsert)
            {
                DBState = PetDatabaseUpdateState.NeedsUpdate;
            }
        }
 public static int GetRandomNumber(int Min, int Max)
 {
     return(RandomNumber.GenerateNewRandom(Min, Max));
 }
Exemple #4
0
 public static int GetRandomNumber(int Min, int Max) => RandomNumber.GenerateNewRandom(Min, Max);
Exemple #5
0
        public override void OnTimerTick()
        {
            var Pet = GetRoomUser();

            if (Pet == null)
            {
                return;
            }


            #region Speech

            if (SpeechTimer <= 0)
            {
                if (Pet.PetData.DBState != PetDatabaseUpdateState.NeedsInsert)
                {
                    Pet.PetData.DBState = PetDatabaseUpdateState.NeedsUpdate;
                }

                if (Pet != null)
                {
                    var RandomSpeech = new Random();
                    RemovePetStatus();

                    var Speech  = Program.GameContext.GetChatManager().GetPetLocale().GetValue("speech.pet" + Pet.PetData.Type);
                    var rSpeech = Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)];

                    if (rSpeech.Length != 3)
                    {
                        Pet.Chat(rSpeech);
                    }
                    else
                    {
                        Pet.Statusses.Add(rSpeech, StringUtilities.GetString(Pet.Z));
                    }
                }
                SpeechTimer = RandomNumber.GenerateNewRandom(20, 120);
            }
            else
            {
                SpeechTimer--;
            }

            #endregion

            #region Actions

            if (ActionTimer <= 0)
            {
                try
                {
                    RemovePetStatus();
                    ActionTimer = RandomNumber.GenerateRandom(15, 40 + GetRoomUser().PetData.VirtualId);
                    if (!GetRoomUser().RidingHorse)
                    {
                        // Remove Status
                        RemovePetStatus();

                        var nextCoord = GetRoom().GetGameMap().GetRandomWalkableSquare();
                        if (GetRoomUser().CanWalk)
                        {
                            GetRoomUser().MoveTo(nextCoord.X, nextCoord.Y);
                        }
                    }
                }
                catch (Exception e)
                {
                    Logger.Error(e);
                }
            }
            else
            {
                ActionTimer--;
            }

            #endregion

            #region Energy

            if (EnergyTimer <= 0)
            {
                RemovePetStatus();                                  // Remove Status

                Pet.PetData.PetEnergy(true);                        // Add Energy

                EnergyTimer = RandomNumber.GenerateRandom(30, 120); // 2 Min Max
            }
            else
            {
                EnergyTimer--;
            }

            #endregion
        }
Exemple #6
0
 public Item GetRandomExitTile()
 {
     return(ExitTeleports.Values.ToList()[RandomNumber.GenerateNewRandom(0, ExitTeleports.Count - 1)]);
 }