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; }
private void keepAliveTimerTick(object state) { Logger.DebugPrint("Sending keep-alive packet to " + LoggedinUser.Username); byte[] updatePacket = PacketBuilder.CreateKeepAlive(); SendPacket(updatePacket); }