public NPC GetAMob(Random rng, int floor) { int mlevel = GetAreaFloorLevel(rng, floor); int rtier = ArrayM.IndexWithRates(mobs.Length, rng); return(NPC.GenerateNPC(mlevel, mobs[rtier][ArrayM.IndexWithRates(mobs[rtier].Count, rng)])); }
public async Task Click2(SocketReaction reaction, IUserMessage msg) { string emote = reaction.Emote.ToString(); if (emote == help) { await AllHelp(reaction, msg); } else if (type != MsgType.SpecSelection && ArrayM.IsInArray(emote, specs)) { await player.Specialization.MainMenu(player, reaction.Channel); } else if (options.Contains(emote)) { string function = type.ToString(); try { await reflectionCache.Run <Task>(function, this, reaction, msg); } catch (Exception e) { if (!await NeitsilliaError.SpecialExceptions(e, reaction.Channel, player)) { ReactionHandler.LogReactionError(this, e, reaction.Emote, msg.Channel); } } } }
public int Resistance(int i) { while (stats.resistance.Length < ReferenceData.DmgType.Length) { stats.resistance = ArrayM.AddItem(stats.resistance, 0); } return(equipment.Resistance(i) + stats.resistance[i]); }
public object[] Opportunist(CombatResult owner, CombatResult enemy) { if (enemy.character.status.Count > 0) { owner.damageMultiplier = ArrayM.AddEach(owner.damageMultiplier, 0.01 * enemy.character.status.Count); } return(new object[] { owner, enemy }); }
public object[] Underestimated(CombatResult owner, CombatResult enemy) { if (owner.character.level < enemy.character.level || owner.character.Rank() < enemy.character.Rank()) { owner.damageMultiplier = ArrayM.AddEach(owner.damageMultiplier, 0.1); } return(new object[] { owner, enemy }); }
public object[] Vengeful(CombatResult owner) { double per = (owner.character.health / owner.character.Health()) - 0.35; if (per > 0) { owner.damageMultiplier = ArrayM.AddEach(owner.damageMultiplier, per); } return(R(owner)); }
public long Damage(int i) { while (stats.damage.Length < ReferenceData.DmgType.Length) { stats.damage = ArrayM.AddItem(stats.damage, 0); } if (i == 0) { return(Convert.ToInt32((equipment.Damage(i) + stats.damage[i]) * stats.PhysicalDMG())); } return(equipment.Damage(i) + stats.damage[i]); }
public static async Task ListCharacters(IUser user, IMessageChannel chan, string prefix = null) { var chars = BotUser.GetCharFiles(user.Id); if (chars.Count < 1) { await chan.SendMessageAsync($"No characters found, use ``{prefix}New Character characternamehere`` to create characters"); } else { string list = ArrayM.ToString(chars, Environment.NewLine); EmbedBuilder em = DUtils.BuildEmbed(user.Username + "'s Characters", list, null, default, DUtils.NewField("Commands", "`Load charactername` & `Delete charactername`"));
public object[] LoneWolf(CombatResult owner, CombatResult enemy) { if (enemy.SentHit && enemy.abilityUsed.type == Ability.AType.Martial) { var enemies = enemy.GetAllies(); var allies = owner.GetAllies(); int d = enemies.Length - allies.Length; if (d > 0) { owner.bonusResistance = ArrayM.AddEach(owner.bonusResistance, 20 * d); } } return(new object[] { owner, enemy }); }
public string[] MobDrops(int lootCount) { string[] looted = new string[lootCount]; if (drops != null) { for (int i = 0; i < lootCount; i++) { int t = ArrayM.IndexWithRates(drops.Length, Program.rng); looted[i] = drops[t][ArrayM.IndexWithRates(drops[t].Count, Program.rng)]; } return(looted); } return(null); }
public object[] AwaitedStorm(CombatResult owner, CombatResult enemy) { if (owner.abilityUsed.IsType(Ability.AType.Elemental, Ability.AType.Enchantment, Ability.AType.Martial)) { if (rank > 0) { int bonus = owner.character.stats.GetSTR() * rank; owner.damageMultiplier = ArrayM.AddEach(owner.damageMultiplier, bonus / 100.00); owner.perkProcs.Add($"+{bonus}% DMG on {enemy.Name}"); rank = 0; } } else { rank++; } return(R(owner, enemy)); }
public async Task TestAreaFloorTest(string tables) { var l = tables.Split(';'); List <string>[] table = new List <string> [l.Length]; for (int i = 0; i < l.Length; i++) { table[i] = new List <string>(l[i].Split(',')); } string lootb = ArrayM.ToString(table); string loota = "To do"; //ArrayM.ToString(ArrayM.FloorEffect(table, floor, maxfloor)); EmbedBuilder test = new EmbedBuilder(); test.WithTitle("Area Floor Effect Test"); test.AddField("Table", "Before:" + Environment.NewLine + lootb + Environment.NewLine + "After:" + Environment.NewLine + loota); await ReplyAsync(embed : test.Build()); }
public async Task CratesListUI(ISocketMessageChannel chan) { if (ResourceCrates == null) { ResourceCrates = new int[5]; } while (ResourceCrates.Length < 5) { ResourceCrates = ArrayM.AddItem(ResourceCrates, 0); } EmbedBuilder em = AMYPrototype.Commands.DUtils.BuildEmbed("Resource Crates", "Select a Crate type to open." + Environment.NewLine + $"{EUI.GetNum(0)} {ResourceCrates[0]} x Wooden Crates" + Environment.NewLine + $"{EUI.GetNum(1)} {ResourceCrates[1]} x Bronze Crates" + Environment.NewLine + $"{EUI.GetNum(2)} {ResourceCrates[2]} x Silver Crates" + Environment.NewLine + $"{EUI.GetNum(3)} {ResourceCrates[3]} x Golden Crates" + Environment.NewLine + $"{EUI.GetNum(4)} {ResourceCrates[4]} x Platinum Crates"); NewUI(await chan.SendMessageAsync(embed: em.Build()), MsgType.ResourceCrateList); }
public object[] GladiatorPatientia(CombatResult owner) { int set = GearSets.GetSetPower("Gladiator", owner.character.equipment); double buff = (set * 0.2) * rank; int max = 10 + (3 * set); if (buff >= max) { buff += (18 * set); rank = 0; } else { rank++; } owner.perkProcs.Add($"Gladiator Patientia: +{Math.Round(buff, 2)}% PHY DMG"); owner.damageMultiplier = ArrayM.AddEach(owner.damageMultiplier, buff / 100.00); return(R(owner)); }
/// <summary> /// Calculates the total Damage /// </summary> /// <param name="i">index of damage type</param> /// <param name="b">User Base stat</param> /// <param name="e">User Efficiency</param> /// <returns></returns> public long Damage(int i, double b, double e) { while (damage.Length < ReferenceData.DmgType.Length) { damage = ArrayM.AddItem(damage, 0); } switch (type) { case AType.Martial: return(Convert.ToInt32(damage[i] + b)); case AType.Enchantment: return(Convert.ToInt32(((1 + (damage[i] / 100.00)) * b) * e)); case AType.Elemental: return(Convert.ToInt32(damage[i] * e)); case AType.Tactical: case AType.Defensive: default: return(0); } }
public async Task NewVote() { if (ResourceCrates == null) { ResourceCrates = new int[5]; } while (ResourceCrates.Length < 5) { ResourceCrates = ArrayM.AddItem(ResourceCrates, 0); } string rewards = null; int amount = Program.dblAPI.CrateAmount() * ReferenceData.CrateRate; rewards += ProcessVotes(amount); Save(); await SendMessageToDM($"Your vote was registered." + $" You've received: {Environment.NewLine + rewards} with a current streak of **{voteStreak}**." + Environment.NewLine + "Use command `Crates` to open resource crates." ); }