public Player(ClientProcessor psr) : base((short)psr.Character.ObjectType, psr.Random) { this.psr = psr; statsMgr = new StatsManager(this); nName = psr.Account.Name; AccountId = psr.Account.AccountId; switch (psr.Account.Rank) { case 0: Name = psr.Account.Tags + " " + psr.Account.Name; break; case 1: Name = "[Donator] " + psr.Account.Tags + " " + psr.Account.Name; break; case 2: Name = "[VIP] " + psr.Account.Tags + " " + psr.Account.Name; break; case 3: Name = "[Trial GM] " + psr.Account.Tags + " " + psr.Account.Name; break; case 4: Name = "[Tester] " + psr.Account.Tags + " " + psr.Account.Name; break; case 5: Name = "[GM] " + psr.Account.Tags + " " + psr.Account.Name; break; case 6: Name = "[QA] " + psr.Account.Tags + " " + psr.Account.Name; break; case 7: Name = "[Dev] " + psr.Account.Tags + " " + psr.Account.Name; break; case 8: Name = "[CM] " + psr.Account.Tags + " " + psr.Account.Name; break; case 9: Name = "[Head QA] " + psr.Account.Tags + " " + psr.Account.Name; break; case 10: Name = "[Head Dev] " + psr.Account.Tags + " " + psr.Account.Name; break; case 11: Name = "[Founder] " + psr.Account.Tags + " " + psr.Account.Name; break; } Level = psr.Character.Level; Experience = psr.Character.Exp; ExperienceGoal = GetExpGoal(psr.Character.Level); if (psr.Account.Rank > 2) Stars = 95; else if (psr.Account.Rank > 1) Stars = 90; else Stars = GetStars(); //Temporary (until pub server) Texture1 = psr.Character.Tex1; Texture2 = psr.Character.Tex2; Credits = psr.Account.Credits; NameChosen = psr.Account.NameChosen; CurrentFame = psr.Account.Stats.Fame; Fame = psr.Character.CurrentFame; var state = psr.Account.Stats.ClassStates.SingleOrDefault(_ => _.ObjectType == ObjectType); FameGoal = GetFameGoal(state != null ? state.BestFame : 0); Glowing = false; Guild = psr.Account.Guild.Name; GuildRank = psr.Account.Guild.Rank; if (psr.Character.HitPoints <= 0) { HP = psr.Character.MaxHitPoints; psr.Character.HitPoints = psr.Character.MaxHitPoints; } else HP = psr.Character.HitPoints; MP = psr.Character.MagicPoints; ConditionEffects = 0; OxygenBar = 100; Decision = 0; combs = new Combinations(); price = new Prices(); Locked = psr.Account.Locked ?? new List<int>(); Ignored = psr.Account.Ignored ?? new List<int>(); Commands = psr.Account.Commands ?? new List<string>(); try { using (var dbx = new Database()) { Locked = dbx.GetLockeds(AccountId); Ignored = dbx.GetIgnoreds(AccountId); Commands = dbx.GetCommands(AccountId); dbx.Dispose(); } List<string> BrokenCommands = new List<string>(new string[] { "vanish" }); List<string> TestingCommands = new List<string>(new string[] { "" }); List<string> BuySellCommands = new List<string>(new string[] { "buy", "sell" }); List<string> GuildCommands = new List<string>(new string[] { "g", "invite" }); List<string> BanCommands = new List<string>(new string[] { "ban", "unban", "warn", "ip", "ipban" }); List<string> StatCommands = new List<string>(new string[] { "hp", "mp", "att", "def", "vit", "wis", "dex", "spd", "stars", "level", "fame" }); List<string> PlayerCommands = new List<string>(new string[] { "tutorial", "name", "visit", "who", "swho", "pause", "afk", "getquest", "teleport", "tell", "group", "solo", "shop", "commands", "stats", "arenas", "leaderboard", "gleaderboard", "forge", "forgelist", "yes", "no", "say", "server", "stats", "p", "bp", "nothing" }); List<string> VIPCommands = new List<string>(new string[] { "d" }); List<string> TrialGMCommands = new List<string>(new string[] { "give", "god", "addeff", "remeff", "tq", "visitBP", "grave", "summon", "arena", "closerealm" }); List<string> GMCommands = new List<string>(new string[] { "ban", "unban", "kill", "kick", "message", "announce" }); GMCommands.AddRange(TrialGMCommands); GMCommands.AddRange(BanCommands); GMCommands.AddRange(StatCommands); List<string> QACommands = new List<string>(new string[] { "tq", "visitBP", "grave", "kick", "summon", "message", "spawn", "announce", "setpiece" }); List<string> DevCommands = new List<string>(new string[] { "killall", "killallx", "spawn", "restart", "osay" }); DevCommands.AddRange(GMCommands); List<string> CMCommands = new List<string>(new string[] { "rename", "grank", "setguild" }); CMCommands.AddRange(DevCommands); List<string> HeadQACommands = new List<string>(new string[] { "" }); HeadQACommands.AddRange(CMCommands); //List<string> HeadDevCommands = new List<string>(new string[] { "" }); HeadDevCommands.AddRange(HeadQAdCommands); List<string> FounderCommands = new List<string>(new string[] { "" }); var t = typeof(ICommand); foreach (var i in t.Assembly.GetTypes()) { if (t.IsAssignableFrom(i) && i != t) { var instance = (ICommand)Activator.CreateInstance(i); FounderCommands.Add(instance.Command); } } switch (psr.Account.Rank) { default: break; case 2: Commands.AddRange(VIPCommands); break; case 3: Commands.AddRange(TrialGMCommands); break; case 4: Commands.AddRange(TestingCommands); break; case 5: Commands.AddRange(GMCommands); break; case 6: Commands.AddRange(QACommands); break; case 7: Commands.AddRange(DevCommands); break; case 8: Commands.AddRange(CMCommands); break; case 9: Commands.AddRange(HeadQACommands); break; case 10: //Commands.AddRange(HeadDevCommands); break; case 11: Commands.AddRange(FounderCommands); Commands.Add("visitBP"); break; } Commands.AddRange(PlayerCommands); Commands.AddRange(GuildCommands); Commands.AddRange(BuySellCommands); Commands = Commands.Distinct().ToList(); #region Donator bundles //will do later List<string> Bundle1Commands = new List<string>(new string[] { "" }); List<string> Bundle2Commands = new List<string>(new string[] { "" }); List<string> Bundle3Commands = new List<string>(new string[] { "" }); List<string> Bundle4Commands = new List<string>(new string[] { "" }); #endregion } catch { } Inventory = psr.Character.Equipment.Select( _ => _ == -1 ? null : (XmlDatas.ItemDescs.ContainsKey(_) ? XmlDatas.ItemDescs[_] : null)).ToArray(); SlotTypes = Utils.FromCommaSepString32(XmlDatas.TypeToElement[ObjectType].Element("SlotTypes").Value); Stats = new[] { psr.Character.MaxHitPoints, psr.Character.MaxMagicPoints, psr.Character.Attack, psr.Character.Defense, psr.Character.Speed, psr.Character.HpRegen, psr.Character.MpRegen, psr.Character.Dexterity }; Pet = null; }