using HISP.Player; using HISP.Server; using System.Collections.Generic; namespace HISP.Game { public class Riddler { private static List riddlerRiddles = new List(); public static Riddler[] Riddles { get { return riddlerRiddles.ToArray(); } } public Riddler(int id, string riddle, string[] answers, string reason) { Id = id; Riddle = riddle; Answers = answers; Reason = reason; riddlerRiddles.Add(this); } public int Id; public string Riddle; public string[] Answers; public string Reason; public void AnswerSuccess(User user) { if (!Database.HasPlayerCompletedRiddle(this.Id, user.Id)) Database.CompleteRiddle(this.Id, user.Id); byte[] riddleAnswerCorrectPacket = PacketBuilder.CreateChat(Messages.FormatRiddlerAnswerCorrect(this.Reason), PacketBuilder.CHAT_BOTTOM_RIGHT); user.Client.SendPacket(riddleAnswerCorrectPacket); user.AddMoney(10000); if(HasCompletedAllRiddles(user)) user.Awards.AddAward(Award.GetAwardById(11)); // Riddlers Riddles } public void AnswerFail(User user) { byte[] riddleIncorrect = PacketBuilder.CreateChat(Messages.RiddlerIncorrectAnswer, PacketBuilder.CHAT_BOTTOM_RIGHT); user.Client.SendPacket(riddleIncorrect); } public bool CheckAnswer(User user, string txt) { foreach(string Answer in Answers) { if(Answer.ToLower() == txt.ToLower()) { AnswerSuccess(user); return true; } } AnswerFail(user); return false; } public static bool HasCompletedAllRiddles(User user) { if (Database.TotalRiddlesCompletedByPlayer(user.Id) >= Riddles.Length) return true; return false; } public static Riddler GetRandomRiddle(User user) { while(true) { int rng = GameServer.RandomNumberGenerator.Next(0, Riddles.Length); if (Database.HasPlayerCompletedRiddle(Riddles[rng].Id, user.Id)) { continue; } return Riddles[rng]; } } } }