Beispiel #1
0
        private void minuteTimerTick(object state)
        {
            dcLock = true;
            totalMinutesElapsed++;
            if (LoggedIn)
            {
                LoggedinUser.CanUseAdsChat = true;
                LoggedinUser.FreeMinutes  -= 1;

                if (totalMinutesElapsed % 2 == 0)
                {
                    LoggedinUser.TotalGlobalChatMessages++;
                }

                if (LoggedinUser.FreeMinutes <= 0)
                {
                    LoggedinUser.FreeMinutes = 0;
                    if (!LoggedinUser.Subscribed && !LoggedinUser.Moderator && !LoggedinUser.Administrator)
                    {
                        dcLock = false;
                        Kick(Messages.KickReasonNoTime);
                        return;
                    }
                }
                bool gotoPrision = false;
                foreach (HorseInstance horse in LoggedinUser.HorseInventory.HorseList)
                {
                    if (totalMinutesElapsed % 2 == 0)
                    {
                        horse.BasicStats.Thirst--;
                        horse.BasicStats.Hunger--;

                        if (horse.BasicStats.Thirst <= 0 && horse.BasicStats.Hunger <= 0)
                        {
                            horse.BasicStats.Health -= 5;
                            if (horse.BasicStats.Hunger <= 0)
                            {
                                gotoPrision = true; // Goto jail, go directly to jail, do not pass go, do not collect 200$

                                horse.BasicStats.Health = 10;
                                horse.BasicStats.Hunger = 500;
                                horse.BasicStats.Thirst = 500;
                            }
                        }
                    }


                    if (horse.Leaser > 0)
                    {
                        horse.LeaseTime--;

                        if (horse.LeaseTime <= 0)
                        {
                            int tpX = 0;
                            int tpY = 0;
                            if (horse.Breed.Type == "unicorn" || horse.Breed.Type == "pegasus")
                            {
                                foreach (World.SpecialTile tile in World.SpecialTiles)
                                {
                                    if (tile.Code == null)
                                    {
                                        continue;
                                    }

                                    if (tile.Code.StartsWith("HORSELEASER-"))
                                    {
                                        int id = int.Parse(tile.Code.Split("-")[1]);
                                        if (horse.Leaser == id)
                                        {
                                            string msg = Messages.FormatHorseReturnedToUniter(horse.Breed.Name);
                                            if (horse.Breed.Type == "pegasus")
                                            {
                                                msg = Messages.HorseLeaserReturnedToUniterPegasus;
                                            }

                                            byte[] youWereTeleportedToUniter = PacketBuilder.CreateChat(msg, PacketBuilder.CHAT_BOTTOM_RIGHT);
                                            SendPacket(youWereTeleportedToUniter);

                                            tpX = tile.X;
                                            tpY = tile.Y;

                                            if (tile.ExitX != 0 && tile.ExitY != 0)
                                            {
                                                tpX = tile.ExitX;
                                                tpY = tile.ExitY;
                                            }
                                            else
                                            {
                                                tpY++;
                                            }
                                        }
                                    }
                                }
                            }

                            byte[] horseReturned = PacketBuilder.CreateChat(Messages.FormatHorseReturnedToOwner(horse.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
                            SendPacket(horseReturned);

                            if (tpX != 0 && tpY != 0)
                            {
                                LoggedinUser.Teleport(tpX, tpY);
                            }


                            if (LoggedinUser.CurrentlyRidingHorse != null)
                            {
                                if (LoggedinUser.CurrentlyRidingHorse.RandomId == horse.RandomId)
                                {
                                    GameServer.StopRidingHorse(this);
                                }
                            }

                            if (LoggedinUser.LastViewedHorse != null)
                            {
                                if (LoggedinUser.LastViewedHorse.RandomId == horse.RandomId)
                                {
                                    LoggedinUser.LastViewedHorse = null;
                                }
                            }


                            LoggedinUser.HorseInventory.DeleteHorse(horse);
                        }
                    }
                }
                if (gotoPrision)
                {
                    byte[] sendToPrision = PacketBuilder.CreateChat(Messages.YouWereSentToPrisionIsle, PacketBuilder.CHAT_BOTTOM_RIGHT);
                    SendPacket(sendToPrision);
                    LoggedinUser.Teleport(45, 35);
                }

                if (totalMinutesElapsed % 2 == 0)
                {
                    LoggedinUser.Thirst--;
                    LoggedinUser.Hunger--;
                }


                if (totalMinutesElapsed % 10 == 0)
                {
                    LoggedinUser.Tiredness--;
                }
            }



            if (!isDisconnecting)
            {
                minuteTimer.Change(oneMinute, oneMinute);
            }
            dcLock = false;
        }
Beispiel #2
0
 private void keepAliveTimerTick(object state)
 {
     Logger.DebugPrint("Sending keep-alive packet to " + LoggedinUser.Username);
     byte[] updatePacket = PacketBuilder.CreateKeepAlive();
     SendPacket(updatePacket);
 }