/// <summary>
 /// Initializes a new instance of the <see cref="ItemUpgradeConfiguration"/> class.
 /// </summary>
 /// <param name="optionType">Type of the option.</param>
 /// <param name="addsOption">if set to <c>true</c> [adds option].</param>
 /// <param name="increasesOption">if set to <c>true</c> [increases option].</param>
 /// <param name="successChance">The success chance.</param>
 /// <param name="failResult">The fail result.</param>
 public ItemUpgradeConfiguration(ItemOptionType optionType, bool addsOption, bool increasesOption, double successChance, ItemFailResult failResult)
 {
     this.OptionType      = optionType;
     this.AddsOption      = addsOption;
     this.IncreasesOption = increasesOption;
     this.SuccessChance   = successChance;
     this.FailResult      = failResult;
 }
示例#2
0
        /// <summary>
        /// Creates the fenrir.
        /// </summary>
        /// <param name="itemSlot">The item slot.</param>
        /// <param name="color">The color.</param>
        /// <returns>The created fenrir.</returns>
        protected Item CreateFenrir(byte itemSlot, ItemOptionType color = null)
        {
            var fenrir = this.CreatePet(itemSlot, 37);

            if (color == null)
            {
                return(fenrir);
            }

            var options = fenrir.Definition.PossibleItemOptions.First().PossibleOptions.Where(p => p.OptionType == color);

            foreach (var option in options)
            {
                var optionLink = this.Context.CreateNew <ItemOptionLink>();
                optionLink.ItemOption = option;
                fenrir.ItemOptions.Add(optionLink);
            }

            return(fenrir);
        }
示例#3
0
        private static void AddFenrirOptionIfFlagSet(byte fenrirByte, byte fenrirFlag, ItemOptionType fenrirOptionType, IContext persistenceContext, Item item)
        {
            var isFlagSet = (fenrirByte & fenrirFlag) == fenrirFlag;

            if (!isFlagSet)
            {
                return;
            }

            var blackOption = item.Definition.PossibleItemOptions.FirstOrDefault(o => o.PossibleOptions.Any(p => p.OptionType == fenrirOptionType))
                              ?? throw new ArgumentException($"The fenrir flag {fenrirFlag} in {fenrirByte} was set, but the option is not defined as possible option in the item definition ({item.Definition.Number}, {item.Definition.Group}).");
            var optionLink = persistenceContext.CreateNew <ItemOptionLink>();

            optionLink.ItemOption = blackOption.PossibleOptions.First();
            item.ItemOptions.Add(optionLink);
        }
示例#4
0
        public bool GetItemOption(out ItemOptionType itemOption, int id, string columnName, bool errorCheck)
        {
            int type = 0;

            itemOption = ItemOptionType.Type_None;

            if (GetInt(out type, id, GetIndex(columnName), columnName, errorCheck) == false)
            {
                return(false);
            }

            switch (type)
            {
            case (int)ItemOptionType.Type_Hp_Value:
                itemOption = ItemOptionType.Type_Hp_Value;
                break;

            case (int)ItemOptionType.Type_Physical_Attack_Value:
                itemOption = ItemOptionType.Type_Physical_Attack_Value;
                break;

            case (int)ItemOptionType.Type_Physical_Defence_Value:
                itemOption = ItemOptionType.Type_Physical_Defence_Value;
                break;

            case (int)ItemOptionType.Type_Magic_Attack_Value:
                itemOption = ItemOptionType.Type_Magic_Attack_Value;
                break;

            case (int)ItemOptionType.Type_Magic_Defence_Value:
                itemOption = ItemOptionType.Type_Magic_Defence_Value;
                break;

            case (int)ItemOptionType.Type_Hp_Ratio:
                itemOption = ItemOptionType.Type_Hp_Ratio;
                break;

            case (int)ItemOptionType.Type_Physical_Attack_Ratio:
                itemOption = ItemOptionType.Type_Physical_Attack_Ratio;
                break;

            case (int)ItemOptionType.Type_Magic_Attack_Ratio:
                itemOption = ItemOptionType.Type_Magic_Attack_Ratio;
                break;

            case (int)ItemOptionType.Type_Physical_Defence_Ratio:
                itemOption = ItemOptionType.Type_Physical_Defence_Ratio;
                break;

            case (int)ItemOptionType.Type_Magic_Defence_Ratio:
                itemOption = ItemOptionType.Type_Magic_Defence_Ratio;
                break;

            case (int)ItemOptionType.Type_Move_Speed_Ratio:
                itemOption = ItemOptionType.Type_Move_Speed_Ratio;
                break;

            case (int)ItemOptionType.Type_Attack_Effect_Ratio:
                itemOption = ItemOptionType.Type_Attack_Effect_Ratio;
                break;

            case (int)ItemOptionType.Type_BloodSucking_Ratio:
                itemOption = ItemOptionType.Type_BloodSucking_Ratio;
                break;

            case (int)ItemOptionType.Type_Heal_Ratio:
                itemOption = ItemOptionType.Type_Heal_Ratio;
                break;

            case (int)ItemOptionType.Type_Buff_Ratio:
                itemOption = ItemOptionType.Type_Buff_Ratio;
                break;

            case (int)ItemOptionType.Type_Debuff_Ratio:
                itemOption = ItemOptionType.Type_Debuff_Ratio;
                break;

            case (int)ItemOptionType.Type_SuperArmor:
                itemOption = ItemOptionType.Type_SuperArmor;
                break;

            case (int)ItemOptionType.Type_Attribute_Damage_Ratio:
                itemOption = ItemOptionType.Type_Attribute_Damage_Ratio;
                break;

            case (int)ItemOptionType.Type_Critical_Ratio:
                itemOption = ItemOptionType.Type_Critical_Ratio;
                break;

            case (int)ItemOptionType.Type_Avoid_Ratio:
                itemOption = ItemOptionType.Type_Avoid_Ratio;
                break;
            }

            return(true);
        }
 public static ItemOptionType GetPersistentOf(this ItemOptionType optionType, IRepositoryManager repositoryManager)
 {
     return(repositoryManager.GetRepository <ItemOptionType>().GetById(optionType.Id));
 }
示例#6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AncientSets"/> class.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="gameConfiguration">The game configuration.</param>
 public AncientSets(IContext context, GameConfiguration gameConfiguration)
     : base(context, gameConfiguration)
 {
     this.ancientBonusOptionType = this.GameConfiguration.ItemOptionTypes.First(iot => iot == ItemOptionTypes.AncientBonus);
     this.ancientOptionType      = this.GameConfiguration.ItemOptionTypes.First(iot => iot == ItemOptionTypes.AncientOption);
 }
示例#7
0
        /// <inheritdoc />
        public override void Initialize()
        {
            this.ancientBonusOptionType = this.GameConfiguration.ItemOptionTypes.First(iot => iot == ItemOptionTypes.AncientBonus);
            this.ancientOptionType      = this.GameConfiguration.ItemOptionTypes.First(iot => iot == ItemOptionTypes.AncientOption);

            var warrior = this.AddAncientSet(
                "Warrior", // Leather
                1,
                (Stats.TotalStrength, 10.0f),
                (Stats.SkillDamageBonus, 10.0f),
                (Stats.MaximumAbility, 20.0f),
                (Stats.AbilityRecoveryAbsolute, 5.0f),
                (Stats.DefenseBase, 20.0f),
                (Stats.TotalAgility, 10.0f),
                (Stats.CriticalDamageChance, 0.05f),
                (Stats.ExcellentDamageChance, 0.05f),
                (Stats.TotalStrength, 25.0f));

            this.AddItems(
                warrior,
                (5, ItemGroups.Boots, Stats.TotalVitality),
                (5, ItemGroups.Gloves, Stats.TotalVitality),
                (5, ItemGroups.Helm, Stats.TotalVitality),
                (5, ItemGroups.Pants, Stats.TotalVitality),
                (5, ItemGroups.Armor, Stats.TotalVitality),
                (1, ItemGroups.Axes, Stats.TotalStrength),  // Morning Star
                (8, ItemGroups.Misc1, Stats.TotalAgility)); // Ring of Ice

            var anonymous = this.AddAncientSet(
                "Anonymous", // Leather
                2,
                (Stats.MaximumHealth, 50.0f),
                (Stats.TotalAgility, 50.0f),
                (Stats.ShieldBlockDamageDecrement, 0.25f),
                (Stats.BaseDamageBonus, 30.0f));

            this.AddItems(
                anonymous,
                (5, ItemGroups.Boots, Stats.TotalVitality),
                (5, ItemGroups.Helm, Stats.TotalVitality),
                (5, ItemGroups.Pants, Stats.TotalVitality),
                (0, ItemGroups.Shields, Stats.TotalVitality)); // Small Shield

            var hyperion = this.AddAncientSet(
                "Hyperion", // Bronze
                1,
                (Stats.TotalEnergy, 15.0f),
                (Stats.TotalAgility, 15.0f),
                (Stats.SkillDamageBonus, 20.0f),
                (Stats.MaximumMana, 30.0f));

            this.AddItems(
                hyperion,
                (0, ItemGroups.Boots, Stats.TotalVitality),
                (0, ItemGroups.Pants, Stats.TotalVitality),
                (0, ItemGroups.Armor, Stats.TotalVitality));

            var mist = this.AddAncientSet(
                "Mist", // Bronze
                2,
                (Stats.TotalVitality, 20.0f),
                (Stats.SkillDamageBonus, 30.0f),
                (Stats.DoubleDamageChance, 0.1f),
                (Stats.TotalAgility, 20.0f));

            this.AddItems(
                mist,
                (0, ItemGroups.Gloves, Stats.TotalVitality),
                (0, ItemGroups.Pants, Stats.TotalVitality),
                (0, ItemGroups.Helm, Stats.TotalVitality));

            var eplete = this.AddAncientSet(
                "Eplete", // Scale
                1,
                (Stats.SkillDamageBonus, 15.0f),
                (Stats.AttackRatePvm, 50.0f),
                (Stats.WizardryAttackDamageIncrease, 0.05f),
                (Stats.MaximumHealth, 50.0f),
                (Stats.MaximumAbility, 30.0f),
                (Stats.CriticalDamageChance, 0.10f),
                (Stats.ExcellentDamageChance, 0.10f));

            this.AddItems(
                eplete,
                (6, ItemGroups.Pants, Stats.TotalVitality),
                (6, ItemGroups.Armor, Stats.TotalVitality),
                (6, ItemGroups.Helm, Stats.TotalVitality),
                (9, ItemGroups.Shields, Stats.TotalVitality), // Plate Shield
                (12, ItemGroups.Misc1, Stats.TotalEnergy));   // Pendant of Lightning

            var berserker = this.AddAncientSet(
                "Berserker", // Scale
                2,
                (Stats.MaximumPhysBaseDmg, 10.0f),
                (Stats.MaximumPhysBaseDmg, 20.0f),
                (Stats.MaximumPhysBaseDmg, 30.0f),
                (Stats.MaximumPhysBaseDmg, 40.0f),
                (Stats.SkillDamageBonus, 50.0f),
                (Stats.TotalStrength, 40.0f));

            this.AddItems(
                berserker,
                (6, ItemGroups.Pants, Stats.TotalVitality),
                (6, ItemGroups.Armor, Stats.TotalVitality),
                (6, ItemGroups.Helm, Stats.TotalVitality),
                (6, ItemGroups.Gloves, Stats.TotalVitality),
                (6, ItemGroups.Boots, Stats.TotalVitality));

            var garuda = this.AddAncientSet(
                "Garuda", // Brass
                1,
                (Stats.MaximumAbility, 30.0f),
                (Stats.DoubleDamageChance, 0.05f),
                (Stats.TotalEnergy, 15.0f),
                (Stats.MaximumHealth, 50.0f),
                (Stats.SkillDamageBonus, 25.0f),
                (Stats.WizardryAttackDamageIncrease, 15.0f));

            this.AddItems(
                garuda,
                (8, ItemGroups.Pants, Stats.TotalVitality),
                (8, ItemGroups.Armor, Stats.TotalVitality),
                (8, ItemGroups.Gloves, Stats.TotalVitality),
                (8, ItemGroups.Boots, Stats.TotalVitality),
                (13, ItemGroups.Misc1, Stats.TotalStrength)); // Pendant of Fire

            var cloud = this.AddAncientSet(
                "Cloud", // Brass
                2,
                (Stats.CriticalDamageChance, 0.20f),
                (Stats.CriticalDamageBonus, 50.0f));

            this.AddItems(
                cloud,
                (8, ItemGroups.Pants, Stats.TotalVitality),
                (8, ItemGroups.Helm, Stats.TotalVitality));

            var kantata = this.AddAncientSet(
                "Kantata", // Plate
                1,
                (Stats.TotalEnergy, 15.0f),
                (Stats.TotalVitality, 30.0f),
                (Stats.WizardryAttackDamageIncrease, 10.0f),
                (Stats.TotalStrength, 15.0f),
                (Stats.SkillDamageBonus, 25.0f),
                (Stats.ExcellentDamageChance, 10.0f),
                (Stats.ExcellentDamageBonus, 20.0f));

            this.AddItems(
                kantata,
                (9, ItemGroups.Boots, Stats.TotalVitality),
                (9, ItemGroups.Gloves, Stats.TotalVitality),
                (9, ItemGroups.Armor, Stats.TotalVitality),
                (23, ItemGroups.Misc1, Stats.TotalAgility),  // Ring of Wind
                (9, ItemGroups.Misc1, Stats.TotalVitality)); // Ring of Poison

            var rave = this.AddAncientSet(
                "Rave", // Plate
                2,
                (Stats.SkillDamageBonus, 20.0f),
                (Stats.DoubleDamageChance, 0.10f),
                (Stats.TwoHandedWeaponDamageIncrease, 0.30f),
                (Stats.DefenseIgnoreChance, 0.05f));

            this.AddItems(
                rave,
                (9, ItemGroups.Helm, Stats.TotalVitality),
                (9, ItemGroups.Pants, Stats.TotalVitality),
                (9, ItemGroups.Armor, Stats.TotalVitality));

            var hyon = this.AddAncientSet(
                "Hyon", // Dragon
                1,
                (Stats.DefenseBase, 25),
                (Stats.DoubleDamageChance, 0.10f),
                (Stats.SkillDamageBonus, 20),
                (Stats.CriticalDamageChance, 0.15f),
                (Stats.ExcellentDamageChance, 0.15f),
                (Stats.CriticalDamageBonus, 20f),
                (Stats.ExcellentDamageBonus, 20f));

            this.AddItems(
                hyon,
                (14, ItemGroups.Swords, Stats.TotalStrength), // Lightning Sword
                (1, ItemGroups.Helm, Stats.TotalVitality),
                (1, ItemGroups.Boots, Stats.TotalVitality),
                (1, ItemGroups.Gloves, Stats.TotalVitality));

            var vicious = this.AddAncientSet(
                "Vicious", // Dragon
                2,
                (Stats.SkillDamageBonus, 15.0f),
                (Stats.BaseDamageBonus, 15.0f),
                (Stats.DoubleDamageChance, 0.10f),
                (Stats.MinimumPhysBaseDmg, 20f),
                (Stats.MaximumPhysBaseDmg, 30f),
                (Stats.DefenseIgnoreChance, 0.05f));

            this.AddItems(
                vicious,
                (22, ItemGroups.Misc1, Stats.TotalStrength), // Ring of Earth
                (1, ItemGroups.Helm, Stats.TotalVitality),
                (1, ItemGroups.Pants, Stats.TotalVitality),
                (1, ItemGroups.Armor, Stats.TotalVitality));

            var apollo = this.AddAncientSet(
                "Apollo", // Pad
                1,
                (Stats.TotalEnergy, 10.0f),
                (Stats.WizardryAttackDamageIncrease, 0.05f),
                (Stats.SkillDamageBonus, 10.0f),
                (Stats.MaximumMana, 30.0f),
                (Stats.MaximumHealth, 30.0f),
                (Stats.MaximumAbility, 20.0f),
                (Stats.CriticalDamageChance, 0.10f),
                (Stats.ExcellentDamageChance, 0.10f),
                (Stats.TotalEnergy, 30.0f));

            this.AddItems(
                apollo,
                (0, ItemGroups.Staff, Stats.TotalEnergy), // Skull Staff
                (2, ItemGroups.Helm, Stats.TotalVitality),
                (2, ItemGroups.Armor, Stats.TotalVitality),
                (2, ItemGroups.Pants, Stats.TotalVitality),
                (2, ItemGroups.Gloves, Stats.TotalVitality),
                (25, ItemGroups.Misc1, Stats.TotalStrength), // Pendant of Ice
                (24, ItemGroups.Misc1, Stats.BaseEnergy));   // Ring of Magic

            var barnake = this.AddAncientSet(
                "Barnake", // Pad
                2,
                (Stats.WizardryAttackDamageIncrease, 0.10f),
                (Stats.TotalEnergy, 20.0f),
                (Stats.SkillDamageBonus, 30.0f),
                (Stats.MaximumMana, 100.0f));

            this.AddItems(
                barnake,
                (2, ItemGroups.Helm, Stats.TotalVitality),
                (2, ItemGroups.Pants, Stats.TotalVitality),
                (2, ItemGroups.Boots, Stats.TotalVitality));

            var evis = this.AddAncientSet(
                "Evis", // Bone
                1,
                (Stats.SkillDamageBonus, 15.0f),
                (Stats.TotalVitality, 20.0f),
                (Stats.WizardryAttackDamageIncrease, 0.10f),
                (Stats.DoubleDamageChance, 0.05f),
                (Stats.AttackRatePvm, 50.0f),
                (Stats.AbilityRecoveryAbsolute, 5.0f));

            this.AddItems(
                evis,
                (4, ItemGroups.Armor, Stats.TotalVitality),
                (4, ItemGroups.Pants, Stats.TotalVitality),
                (4, ItemGroups.Boots, Stats.TotalVitality),
                (26, ItemGroups.Misc1, Stats.TotalAgility)); // Pendant of Wind

            var sylion = this.AddAncientSet(
                "Sylion", // Bone
                2,
                (Stats.DoubleDamageChance, 0.05f),
                (Stats.CriticalDamageChance, 0.05f),
                (Stats.DefenseBase, 20.0f),
                (Stats.TotalStrength, 50.0f),
                (Stats.TotalAgility, 50.0f),
                (Stats.TotalVitality, 50.0f),
                (Stats.TotalEnergy, 50.0f));

            this.AddItems(
                sylion,
                (4, ItemGroups.Armor, Stats.TotalVitality),
                (4, ItemGroups.Gloves, Stats.TotalVitality),
                (4, ItemGroups.Boots, Stats.TotalVitality),
                (4, ItemGroups.Helm, Stats.TotalVitality));

            var heras = this.AddAncientSet(
                "Heras", // Sphinx
                1,
                (Stats.TotalStrength, 15.0f),
                (Stats.WizardryAttackDamageIncrease, 0.10f),
                (Stats.DefenseIncreaseWithEquippedShield, 0.05f),
                (Stats.TotalEnergy, 15.0f),
                (Stats.AttackRatePvm, 50.0f),
                (Stats.CriticalDamageChance, 0.10f),
                (Stats.ExcellentDamageChance, 0.10f),
                (Stats.MaximumHealth, 50.0f),
                (Stats.MaximumMana, 50.0f));

            this.AddItems(
                heras,
                (6, ItemGroups.Shields, Stats.TotalVitality), // Skull Shield
                (7, ItemGroups.Pants, Stats.TotalVitality),
                (7, ItemGroups.Armor, Stats.TotalVitality),
                (7, ItemGroups.Helm, Stats.TotalVitality),
                (7, ItemGroups.Gloves, Stats.TotalVitality),
                (7, ItemGroups.Boots, Stats.TotalVitality));

            var minet = this.AddAncientSet(
                "Minet", // Sphinx
                2,
                (Stats.TotalEnergy, 30.0f),
                (Stats.DefenseBase, 30.0f),
                (Stats.MaximumMana, 100.0f),
                (Stats.SkillDamageBonus, 15.0f));

            this.AddItems(
                minet,
                (7, ItemGroups.Pants, Stats.TotalVitality),
                (7, ItemGroups.Armor, Stats.TotalVitality),
                (7, ItemGroups.Boots, Stats.TotalVitality));

            var anubis = this.AddAncientSet(
                "Anubis", // Legendary
                1,
                (Stats.DoubleDamageChance, 0.10f),
                (Stats.MaximumMana, 50.0f),
                (Stats.WizardryAttackDamageIncrease, 0.10f),
                (Stats.CriticalDamageChance, 0.15f),
                (Stats.ExcellentDamageChance, 0.15f),
                (Stats.CriticalDamageBonus, 20.0f),
                (Stats.ExcellentDamageChance, 20.0f));

            this.AddItems(
                anubis,
                (3, ItemGroups.Armor, Stats.TotalVitality),
                (3, ItemGroups.Helm, Stats.TotalVitality),
                (3, ItemGroups.Gloves, Stats.TotalVitality),
                (21, ItemGroups.Misc1, Stats.TotalEnergy)); // Ring of Fire

            var enis = this.AddAncientSet(
                "Enis", // Legendary
                2,
                (Stats.SkillDamageBonus, 10.0f),
                (Stats.DoubleDamageChance, 0.10f),
                (Stats.TotalEnergy, 30.0f),
                (Stats.WizardryAttackDamageIncrease, 0.10f),
                (Stats.DefenseIgnoreChance, 0.05f));

            this.AddItems(
                enis,
                (3, ItemGroups.Armor, Stats.TotalVitality),
                (3, ItemGroups.Helm, Stats.TotalVitality),
                (3, ItemGroups.Boots, Stats.TotalVitality),
                (3, ItemGroups.Pants, Stats.TotalVitality));

            var ceto = this.AddAncientSet(
                "Ceto", // Vine
                1,
                (Stats.TotalAgility, 10.0f),
                (Stats.MaximumHealth, 50.0f),
                (Stats.DefenseBase, 20.0f),
                (Stats.DefenseIncreaseWithEquippedShield, 0.05f),
                (Stats.TotalEnergy, 10.0f),
                (Stats.MaximumHealth, 50.0f),
                (Stats.TotalStrength, 20.0f));

            this.AddItems(
                ceto,
                (10, ItemGroups.Boots, Stats.TotalVitality),
                (10, ItemGroups.Gloves, Stats.TotalVitality),
                (10, ItemGroups.Helm, Stats.TotalVitality),
                (10, ItemGroups.Pants, Stats.TotalVitality),
                (2, ItemGroups.Swords, Stats.TotalStrength),  // Rapier
                (22, ItemGroups.Misc1, Stats.TotalStrength)); // Ring of Earth

            var drake = this.AddAncientSet(
                "Drake", // Vine
                2,
                (Stats.TotalAgility, 20.0f),
                (Stats.BaseDamageBonus, 25.0f),
                (Stats.DoubleDamageChance, 0.20f),
                (Stats.DefenseBase, 40.0f),
                (Stats.CriticalDamageChance, 0.10f));

            this.AddItems(
                drake,
                (10, ItemGroups.Boots, Stats.TotalVitality),
                (10, ItemGroups.Armor, Stats.TotalVitality),
                (10, ItemGroups.Helm, Stats.TotalVitality),
                (10, ItemGroups.Pants, Stats.TotalVitality));

            var gaia = this.AddAncientSet(
                "Gaia", // Silk
                1,
                (Stats.SkillDamageBonus, 10.0f),
                (Stats.MaximumMana, 25.0f),
                (Stats.TotalStrength, 10.0f),
                (Stats.DoubleDamageChance, 0.05f),
                (Stats.TotalAgility, 30.0f),
                (Stats.ExcellentDamageChance, 0.10f),
                (Stats.ExcellentDamageBonus, 10.0f));

            this.AddItems(
                gaia,
                (11, ItemGroups.Armor, Stats.TotalVitality),
                (11, ItemGroups.Gloves, Stats.TotalVitality),
                (11, ItemGroups.Helm, Stats.TotalVitality),
                (11, ItemGroups.Pants, Stats.TotalVitality),
                (9, ItemGroups.Bows, Stats.TotalStrength)); // Golden Crossbow

            var fase = this.AddAncientSet(
                "Fase", // Silk
                2,
                (Stats.MaximumHealth, 100.0f),
                (Stats.MaximumMana, 100.0f),
                (Stats.DefenseBase, 100.0f));

            this.AddItems(
                fase,
                (11, ItemGroups.Gloves, Stats.TotalVitality),
                (11, ItemGroups.Pants, Stats.TotalVitality),
                (11, ItemGroups.Boots, Stats.TotalVitality));

            var odin = this.AddAncientSet(
                "Odin", // Wind
                1,
                (Stats.TotalEnergy, 15.0f),
                (Stats.MaximumHealth, 50.0f),
                (Stats.AttackRatePvm, 50.0f),
                (Stats.TotalAgility, 30.0f),
                (Stats.MaximumMana, 50.0f),
                (Stats.DefenseIgnoreChance, 0.05f),
                (Stats.MaximumAbility, 50.0f));

            this.AddItems(
                odin,
                (12, ItemGroups.Armor, Stats.TotalVitality),
                (12, ItemGroups.Gloves, Stats.TotalVitality),
                (12, ItemGroups.Helm, Stats.TotalVitality),
                (12, ItemGroups.Pants, Stats.TotalVitality),
                (12, ItemGroups.Boots, Stats.TotalVitality));

            var elvian = this.AddAncientSet(
                "Elvian", // Wind
                2,
                (Stats.TotalAgility, 30.0f),
                (Stats.DefenseIgnoreChance, 0.05f));

            this.AddItems(
                elvian,
                (12, ItemGroups.Pants, Stats.TotalVitality),
                (12, ItemGroups.Boots, Stats.TotalVitality));

            var argo = this.AddAncientSet(
                "Argo", // Spirit
                1,
                (Stats.MaximumPhysBaseDmg, 20.0f),
                (Stats.SkillDamageBonus, 25.0f),
                (Stats.MaximumAbility, 50.0f),
                (Stats.DoubleDamageChance, 0.05f));

            this.AddItems(
                argo,
                (13, ItemGroups.Armor, Stats.TotalVitality),
                (13, ItemGroups.Gloves, Stats.TotalVitality),
                (13, ItemGroups.Pants, Stats.TotalVitality));

            var karis = this.AddAncientSet(
                "Karis", // Spirit
                2,
                (Stats.SkillDamageBonus, 15.0f),
                (Stats.DoubleDamageChance, 0.10f),
                (Stats.CriticalDamageChance, 0.10f),
                (Stats.TotalAgility, 40f));

            this.AddItems(
                karis,
                (13, ItemGroups.Helm, Stats.TotalVitality),
                (13, ItemGroups.Boots, Stats.TotalVitality),
                (13, ItemGroups.Pants, Stats.TotalVitality));

            var gywen = this.AddAncientSet(
                "Gywen", // Guardian
                1,
                (Stats.TotalAgility, 30.0f),
                (Stats.MinimumPhysBaseDmg, 20.0f),
                (Stats.DefenseBase, 20.0f),
                (Stats.MaximumPhysBaseDmg, 20.0f),
                (Stats.CriticalDamageChance, 0.15f),
                (Stats.ExcellentDamageChance, 0.15f),
                (Stats.CriticalDamageBonus, 20.0f),
                (Stats.ExcellentDamageBonus, 20.0f));

            this.AddItems(
                gywen,
                (14, ItemGroups.Boots, Stats.TotalVitality),
                (14, ItemGroups.Gloves, Stats.TotalVitality),
                (14, ItemGroups.Armor, Stats.TotalVitality),
                (5, ItemGroups.Bows, Stats.TotalAgility), // Silver Bow
                (28, ItemGroups.Misc1, null));            // Pendant of Ability

            var aruan = this.AddAncientSet(
                "Aruan", // Guardian
                2,
                (Stats.BaseDamageBonus, 10.0f),
                (Stats.DoubleDamageChance, 0.10f),
                (Stats.SkillDamageBonus, 20.0f),
                (Stats.CriticalDamageChance, 0.15f),
                (Stats.ExcellentDamageChance, 0.15f),
                (Stats.DefenseIgnoreChance, 0.05f));

            this.AddItems(
                aruan,
                (14, ItemGroups.Boots, Stats.TotalVitality),
                (14, ItemGroups.Pants, Stats.TotalVitality),
                (14, ItemGroups.Armor, Stats.TotalVitality),
                (14, ItemGroups.Helm, Stats.TotalVitality));

            var gaion = this.AddAncientSet(
                "Gaion", // Storm Crow
                1,
                (Stats.DefenseIgnoreChance, 0.05f),
                (Stats.DoubleDamageChance, 0.15f),
                (Stats.SkillDamageBonus, 15.0f),
                (Stats.ExcellentDamageChance, 0.15f),
                (Stats.ExcellentDamageBonus, 30.0f),
                (Stats.WizardryAttackDamageIncrease, 0.10f),
                (Stats.TotalStrength, 30.0f));

            this.AddItems(
                gaion,
                (15, ItemGroups.Boots, Stats.TotalVitality),
                (15, ItemGroups.Pants, Stats.TotalVitality),
                (15, ItemGroups.Armor, Stats.TotalVitality),
                (27, ItemGroups.Misc1, Stats.TotalVitality)); // Pendant of Water

            var muren = this.AddAncientSet(
                "Muren", // Storm Crow
                2,
                (Stats.SkillDamageBonus, 10.0f),
                (Stats.WizardryAttackDamageIncrease, 0.10f),
                (Stats.DoubleDamageChance, 0.10f),
                (Stats.CriticalDamageChance, 0.15f),
                (Stats.ExcellentDamageChance, 0.15f),
                (Stats.DefenseBase, 25f),
                (Stats.TwoHandedWeaponDamageIncrease, 0.20f));

            this.AddItems(
                muren,
                (15, ItemGroups.Gloves, Stats.TotalVitality),
                (15, ItemGroups.Pants, Stats.TotalVitality),
                (15, ItemGroups.Armor, Stats.TotalVitality),
                (21, ItemGroups.Misc1, Stats.TotalVitality)); // Ring of Fire

            var agnis = this.AddAncientSet(
                "Agnis", // Adamantine
                1,
                (Stats.DoubleDamageChance, 0.10f),
                (Stats.DefenseBase, 40.0f),
                (Stats.SkillDamageBonus, 20.0f),
                (Stats.CriticalDamageChance, 0.15f),
                (Stats.ExcellentDamageChance, 0.15f),
                (Stats.CriticalDamageBonus, 20.0f),
                (Stats.ExcellentDamageBonus, 20.0f));

            this.AddItems(
                agnis,
                (26, ItemGroups.Armor, Stats.TotalVitality),
                (26, ItemGroups.Pants, Stats.TotalVitality),
                (26, ItemGroups.Helm, Stats.TotalVitality),
                (9, ItemGroups.Misc1, Stats.TotalVitality)); // Ring of Poison

            var broy = this.AddAncientSet(
                "Broy", // Adamantine
                2,
                (Stats.BaseDamageBonus, 20.0f),
                (Stats.SkillDamageBonus, 20.0f),
                (Stats.TotalEnergy, 30.0f),
                (Stats.CriticalDamageChance, 0.15f),
                (Stats.ExcellentDamageChance, 0.15f),
                (Stats.DefenseIgnoreChance, 0.05f),
                (Stats.TotalLeadership, 30.0f));

            this.AddItems(
                broy,
                (26, ItemGroups.Pants, Stats.TotalVitality),
                (26, ItemGroups.Gloves, Stats.TotalVitality),
                (26, ItemGroups.Boots, Stats.TotalVitality),
                (25, ItemGroups.Misc1, Stats.TotalStrength)); // Pendant of Ice

            var chrono = this.AddAncientSet(
                "Chrono", // Red Wing
                1,
                (Stats.DoubleDamageChance, 0.20f),
                (Stats.DefenseBase, 60.0f),
                (Stats.SkillDamageBonus, 30.0f),
                (Stats.CriticalDamageChance, 0.15f),
                (Stats.ExcellentDamageChance, 0.15f),
                (Stats.CriticalDamageBonus, 20.0f),
                (Stats.ExcellentDamageBonus, 20.0f));

            this.AddItems(
                chrono,
                (40, ItemGroups.Helm, Stats.TotalVitality),
                (40, ItemGroups.Pants, Stats.TotalVitality),
                (40, ItemGroups.Gloves, Stats.TotalVitality),
                (24, ItemGroups.Misc1, Stats.TotalEnergy)); // Ring of Magic

            var semeden = this.AddAncientSet(
                "Semeden", // Red Wing
                2,
                (Stats.WizardryAttackDamageIncrease, 0.15f),
                (Stats.SkillDamageBonus, 25.0f),
                (Stats.TotalEnergy, 30.0f),
                (Stats.CriticalDamageChance, 0.15f),
                (Stats.ExcellentDamageChance, 0.15f),
                (Stats.DefenseIgnoreChance, 0.05f));

            this.AddItems(
                semeden,
                (40, ItemGroups.Boots, Stats.TotalVitality),
                (40, ItemGroups.Gloves, Stats.TotalVitality),
                (40, ItemGroups.Armor, Stats.TotalVitality),
                (40, ItemGroups.Helm, Stats.TotalVitality));
        }