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;
}