private decimal GetGuildElementBonus(Armor armor, Guild guild) { decimal elementBonus = 1; if (armor.Element1 != Element.All) { if (armor.HasElement(Element.Air)) elementBonus += (guild.AirBonus / 100m); if (armor.HasElement(Element.Earth)) elementBonus += (guild.EarthBonus / 100m); if (armor.HasElement(Element.Fire)) elementBonus += (guild.FireBonus / 100m); if (armor.HasElement(Element.Spirit)) elementBonus += (guild.SpiritBonus / 100m); if (armor.HasElement(Element.Water)) elementBonus += (guild.WaterBonus / 100m); } return elementBonus; }
private EpicBossResults GetEpicBossResults(EpicBoss epicBoss, Guild guild, Player player) { EpicBossResults results = new EpicBossResults(); results.Items = new List<EpicBossResultItem>(); int playerHealth = GetPlayerHealth(player.Level); int playerStats = GetPlayerStats(player.Level); int followerHealth = GetFollowerHealth(player.Level); int followerStats = GetFollowerStats(player.Level); decimal baseAttack = GetBaseAttack(player.Level); decimal knightBonus = GetKnightBonus(player.KnightCount); foreach (PlayerArmor playerArmor in player.Armors) { Armor armor = ArmorTable.Instance.GetArmor(playerArmor.ArmorName); KeyValuePair<int, int> armorStats = GetArmorStats(armor, playerArmor.Level, playerArmor.IsPlus); decimal guildRankBonus = GetGuildRankBonus(guild.RankBonus); decimal guildElementBonus = GetGuildElementBonus(armor, guild); decimal playerBonus = GetPlayerBonus(epicBoss.Element1, epicBoss.Element2, armor, playerArmor.IsNemesis); decimal bossLevelBonus = GetBossLevelBonus(epicBoss.Level); decimal bossElementBonus = GetBossElementBonus(epicBoss, armor); int playerDamageDone = GetDamageDone(baseAttack, armorStats.Key + playerStats, epicBoss.Defense, guildRankBonus, guildElementBonus, playerBonus, knightBonus); int followerDamageDone = GetDamageDone(baseAttack, armorStats.Key + followerStats, epicBoss.Defense, guildRankBonus, guildElementBonus, playerBonus, knightBonus); int playerDamageTaken = GetDamageTaken(armorStats.Value + playerStats, epicBoss.Attack, guildRankBonus, guildElementBonus, bossLevelBonus, bossElementBonus); int followerDamageTaken = GetDamageTaken(armorStats.Value + followerStats, epicBoss.Attack, guildRankBonus, guildElementBonus, bossLevelBonus, bossElementBonus); int playerHitsTaken = (playerHealth / playerDamageTaken) + 1; int followerHitsTaken = (followerHealth / followerDamageTaken) + 1; results.Items.Add(new EpicBossResultItem(armor.Name, armor.SafeName, playerDamageDone, playerDamageTaken, playerHitsTaken, followerDamageDone, followerDamageTaken, followerHitsTaken)); } results.Items.Sort((x, y) => -1 * x.PlayerTotalDamageDone.CompareTo(y.PlayerTotalDamageDone)); return results; }
private string GetGuildDataValidationMessage(Guild guild) { if (guild == null) return Strings.ErrorGuildDataNotProvided; return string.Empty; }
private Guild GetGuild() { Guild guild = new Guild(); guild.RankBonus = 5; guild.AirBonus = 6; guild.EarthBonus = 6; guild.FireBonus = 6; guild.SpiritBonus = 6; guild.WaterBonus = 6; return guild; }