internal EmbedBuilder PerkListEmbed(Player player, out string available) { EmbedBuilder e = new EmbedBuilder(); List <string> perks = GetPerkList(); available = ""; for (int i = 0; i < perks.Count; i++) { string r = null; if (player.HasPerk(perks[i]) > -1) { r = " [Owned]"; } else if (specPoints < 20) { r += $" [Missing {20 - specPoints} Spec Points]"; } else { available += $";{i}"; } e.AddField($"{EUI.GetNum(i)} {perks[i]} {r}", PerkLoad.Load(perks[i]).desc); } e.WithFooter($"{specPoints} Specialization Points"); return(e); }
internal static async Task ChooseRace(Player player, IMessageChannel channel) { EmbedBuilder race = new EmbedBuilder(); race.WithTitle($"{player.name}'s Race"); race.WithDescription("Select a race using the reactions, each has a unique perk. You may not change this option later."); // race.AddField($"{EUI.GetLetter(7)} | **Human** {Environment.NewLine}", $"Basic Humans{Environment.NewLine}" + $"Perk: {PerkLoad.Load("Human Adaptation").desc}{Environment.NewLine}"); // race.AddField($"{EUI.GetLetter(19)} | **Tsiun** {Environment.NewLine}", $"Black or dark color skinned, thin, pointy ears, large eyes and pupils which fill " + $"the entire eye, prefer darker areas, learn well by observing others{Environment.NewLine}" + $"Perk: {PerkLoad.Load("Tsiun Trickery").desc}{Environment.NewLine}"); // race.AddField($"{EUI.GetLetter(20)} | **Uskavian** {Environment.NewLine}", $"Large creatures, not known as a smart race, not very creative and usually does" + $" what they know works, brown or darker skin color with some patterns sometimes{Environment.NewLine}" + $"Perk: {PerkLoad.Load("Uskavian Learning").desc}{Environment.NewLine}"); // race.AddField($"{EUI.GetLetter(12)} | **Miganan** {Environment.NewLine}", $"Similar to humans but with only pale skin variants, mostly white up to grey-ish" + $" with a touch of slight beige, very strong skin, grows no hair{Environment.NewLine}" + $"Perk: {PerkLoad.Load("Migana Skin").desc}{Environment.NewLine}"); // race.AddField($"{EUI.GetLetter(8)} | **Ireskian** {Environment.NewLine}", $"Usually around a feet or two shorter than humans, like to craft and creating things," + $" artistic folks, longingly keep their young appearance{Environment.NewLine}" + $"Perk: {PerkLoad.Load("Ireskian Talent").desc}{Environment.NewLine}"); await player.NewUI(null, race.Build(), channel, MsgType.ChooseRace); }
internal static async Task AutoCharacter(Player player, IMessageChannel channel, bool ask) { if (ask) { EmbedBuilder em = DUtils.BuildEmbed("Character Creation", $"{EUI.ok} - Randomize {Environment.NewLine} {EUI.next} - Manual (Advanced)" + Environment.NewLine + Environment.NewLine + $"{EUI.info} - More Info", null, default); await player.NewUI(null, em.Build(), channel, MsgType.AutoNewCharacter); } else { int[] rolls = GetRolls(); var s = player.stats; s.endurance = rolls[0]; s.intelligence = rolls[1]; s.strength = rolls[2]; s.charisma = rolls[3]; s.dexterity = rolls[4]; s.perception = rolls[5]; // player.abilities.Add(Ability.Load("Strike")); player.abilities.Add(Ability.Load("Shelter")); // player.race = Utils.RandomElement <ReferenceData.HumanoidRaces>(); switch (player.race) { case ReferenceData.HumanoidRaces.Human: player.perks.Add(PerkLoad.Load("Human Adaptation")); break; case ReferenceData.HumanoidRaces.Tsiun: player.perks.Add(PerkLoad.Load("Tsiun Trickery")); break; case ReferenceData.HumanoidRaces.Uskavian: player.perks.Add(PerkLoad.Load("Uskavian Learning")); break; case ReferenceData.HumanoidRaces.Miganan: player.perks.Add(PerkLoad.Load("Migana Skin")); break; case ReferenceData.HumanoidRaces.Ireskian: player.perks.Add(PerkLoad.Load("Ireskian Talent")); break; } // player.level = 0; player.health = player.Health(); player.stamina = player.Stamina(); player.SaveFileMongo(); await GameCommands.StatsDisplay(player, channel); await channel.SendMessageAsync("Welcome to Neitsillia, Traveler. To guide you, you've been given the \"Tutorial\" Quest line." + Environment.NewLine + "Use the `Quest` command to view your quest list and inspect the quest using the assigned emote. Follow the Tutorial quest to learn to play."); } }
void NPCSetUp() { GearNPC(); int p = 0; for (int k = baseLevel; k < level;) { k += p += 5; AddStats(); } //for (int i = 0; i < abilities.Count; i++) // abilities[i] = Ability.Load(abilities[i].name); for (int i = 0; i < perks.Count; i++) { if (perks[i].name == "-Random") { perks[i] = PerkLoad.RandomPerk(perks[i].tier, "Character"); } else { perks[i] = PerkLoad.Load(perks[i].name); } } switch (race) { case "Human": perks.Add(PerkLoad.Load("Human Adaptation")); break; case "Tsiun": perks.Add(PerkLoad.Load("Tsiun Trickery")); break; case "Uskavian": perks.Add(PerkLoad.Load("Uskavian Learning")); break; case "Miganan": perks.Add(PerkLoad.Load("Migana Skin")); break; case "Ireskian": perks.Add(PerkLoad.Load("Ireskian Talent")); break; } health = Health(); stamina = Stamina(); if (level >= 20) { GetCombatRole(); } }
public async Task ChooseRace(SocketReaction reaction, IUserMessage msg) { bool selected = true; switch (reaction.Emote.ToString()) { case "🇭": { player.race = ReferenceData.HumanoidRaces.Human; player.perks.Add(PerkLoad.Load("Human Adaptation")); } break; case "🇹": { player.race = ReferenceData.HumanoidRaces.Tsiun; player.perks.Add(PerkLoad.Load("Tsiun Trickery")); } break; case "🇺": { player.race = ReferenceData.HumanoidRaces.Uskavian; player.perks.Add(PerkLoad.Load("Uskavian Learning")); } break; case "🇲": { player.race = ReferenceData.HumanoidRaces.Miganan; player.perks.Add(PerkLoad.Load("Migana Skin")); } break; case "🇮": { player.race = ReferenceData.HumanoidRaces.Ireskian; player.perks.Add(PerkLoad.Load("Ireskian Talent")); } break; default: selected = false; break; } if (selected) { player.SaveFileMongo(); await TryMSGDel(msg); await CharacterCommands.StarterAbilities(player, reaction.Channel, 0); } }
private void GetCombatRole() { int[] rolls = new int[Enum.GetValues(typeof(CombatRole)).Length]; for (int i = 1; i < rolls.Length; i++) { rolls[i] = Program.rng.Next(1, 101); } //Stat var rolls[1] += stats.GetINT(); rolls[2] += stats.GetSTR(); //Get Highest roll int c = 0; for (int j = 0; j < rolls.Length; j++) { if (rolls[j] > rolls[c]) { c = j; } } //Apply new role role = (CombatRole)c; string[] avPerks = null; switch (role) { case CombatRole.Healer: abilities.Add(Ability.Load("Healing Spore", Math.Min(level, 40))); avPerks = new[] { "Adrenaline", "Energizing Touch", "Adaptation", }; stats.intelligence += 3; break; case CombatRole.Fighter: abilities.Add(Ability.Load("Execute", Math.Min(level / 2, 25))); avPerks = new[] { "Unstoppable Force", "Precision Enhancement", "Fighting Spirit" }; stats.strength += 3; break; } if (avPerks != null) { perks.Add(PerkLoad.Load(Utils.RandomElement(avPerks))); } }
public async Task ApplyPerk(int index, string perkName) { if (await IsGMLevel(4)) { Item item = Context.Player.inventory.GetItem(index - 1); if (item != null && item.CanBeEquip()) { item.perk = PerkLoad.Load(perkName); Context.Player.SaveFileMongo(); await ReplyAsync("Perks replaced"); } else { await ReplyAsync("item is not gear"); } } }
internal string PurchasePerk(Player player, int i) { if (specPoints >= 20) { List <string> list = GetPerkList(); if (player.HasPerk(list[i]) == -1) { PerksObtained.Add(list[i]); player.perks.Add(PerkLoad.Load(list[i])); specPoints -= 20; player.SaveFileMongo(); return(list[i]); } return($"Player already has perk {list[i]}"); } return($"Missing {20-specPoints} spec points"); }
public async Task Grant_Perk(IUser user, [Remainder] string name) { if (await IsGMLevel(3)) { string perkName = StringM.UpperAt(name); Player p = Player.Load(user.Id, Player.IgnoreException.All); int i = p.HasPerk(perkName); if (i == -1) { p.perks.Add(PerkLoad.Load(perkName)); p.SaveFileMongo(); await DUtils.DeleteContextMessageAsync(Context); } else { await DUtils.Replydb(Context, $"{p.name} already has the perk {perkName}", lifetime : 0.5); } } }
internal static async Task FixFile(Player player, ISocketMessageChannel chan) { string message = null; int errorsFixed = 0; //Character Info if (player.userSheet == null) { player.userSheet = new Sheet(); errorsFixed++; } if (player.userSheet.appearance == null) { player.userSheet.appearance = "Unknown"; errorsFixed++; } if (player.userSheet.gender == null) { player.userSheet.gender = "Unknown"; errorsFixed++; } if (player.userSheet.lore == null) { player.userSheet.lore = "Unknown"; errorsFixed++; } if (player.userSheet.personality == null) { player.userSheet.personality = "Unknown"; errorsFixed++; } //End Character //Inventory if (player.inventory == null) { player.inventory = new Neitsillia.Collections.Inventory(); errorsFixed++; } // if (player.schematics == null) { player.schematics = new List <Schematic>(); errorsFixed++; } player.schematics.Sort((x, y) => x.name.CompareTo(y.name)); for (int i = 0; i < player.schematics.Count;) { if (player.schematics[i].path != player.schematics[i].name) { player.schematics[i].path = player.schematics[i].name; errorsFixed++; } if (i > 0 && player.schematics[i].name == player.schematics[i - 1].name) { player.schematics.RemoveAt(i); errorsFixed++; } else { i++; } } // foreach (Perk perk in player.perks) { Perk update = PerkLoad.Load(perk.name); if (perk.desc != update.desc) { errorsFixed++; perk.desc = update.desc; } if (perk.trigger != update.trigger) { errorsFixed++; perk.trigger = update.trigger; } if (perk.end != update.end) { errorsFixed++; perk.end = update.end; } } for (int i = 0; i < Neitsillia.Collections.Equipment.gearCount; i++) { Item gear = player.equipment.GetGear(i); if (gear != null && gear.perk != null) { if (gear.perk.name == "-Random") { gear.LoadPerk(); } Perk update = PerkLoad.Load(gear.perk.name); if (gear.perk.desc != update.desc) { errorsFixed++; gear.perk.desc = update.desc; } if (gear.perk.trigger != update.trigger) { errorsFixed++; gear.perk.trigger = update.trigger; } if (gear.perk.end != update.end) { errorsFixed++; gear.perk.end = update.end; } } } //Abilities foreach (Ability a in player.abilities) { Ability update = Ability.Load(a.name, a.level); if (a.staminaDrain != update.staminaDrain) { a.staminaDrain = update.staminaDrain; errorsFixed++; } if (a.maxLevel != update.maxLevel) { a.maxLevel = update.maxLevel; errorsFixed++; } if (a.tier != update.tier) { a.tier = update.tier; errorsFixed++; } if (a.description != update.description) { a.description = update.description; errorsFixed++; } if (a.evolves != update.evolves || ((a.evolves != null && update.evolves != null) && !a.evolves.SequenceEqual(update.evolves))) { a.evolves = update.evolves; errorsFixed++; } } //Area if (player.AreaInfo == null) { await player.SetArea(Area.LoadFromName("Atsauka")); } errorsFixed++; message += "You were brought back to Atsauka | "; //End Area player.SaveFileMongo(); message = errorsFixed + " Error(s) found and fixed"; if (errorsFixed == 0) { message += " If you are still encountering issues please contact an Administrator or GM"; } await chan.SendMessageAsync($"{player.name}({player.userid}) : {message}"); }