Exemple #1
0
        private static void RodProficiency(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.WhiteMage, PerkType.RodProficiency)
            .Name("Rod Proficiency")
            .Description("Grants the ability to equip rods.")

            .AddPerkLevel()
            .Description("Grants the ability to equip tier 1 rods.")
            .Price(2)

            .AddPerkLevel()
            .Description("Grants the ability to equip tier 2 rods.")
            .Price(2)
            .RequirementSkill(SkillType.Rod, 10)

            .AddPerkLevel()
            .Description("Grants the ability to equip tier 3 rods.")
            .Price(2)
            .RequirementSkill(SkillType.Rod, 20)

            .AddPerkLevel()
            .Description("Grants the ability to equip tier 4 rods.")
            .Price(2)
            .RequirementSkill(SkillType.Rod, 30)

            .AddPerkLevel()
            .Description("Grants the ability to equip tier 5 rods.")
            .Price(2)
            .RequirementSkill(SkillType.Rod, 40);
        }
Exemple #2
0
        private static void AlchemistRecipes(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.Alchemist, PerkType.AlchemyRecipes)
            .Name("Alchemy Recipes")
            .Description("Unlocks alchemy recipes.")

            .AddPerkLevel()
            .Description("Unlocks tier 1 alchemy recipes.")
            .Price(2)

            .AddPerkLevel()
            .Description("Unlocks tier 2 alchemy recipes.")
            .Price(2)
            .RequirementSkill(SkillType.Alchemy, 10)

            .AddPerkLevel()
            .Description("Unlocks tier 3 alchemy recipes.")
            .Price(2)
            .RequirementSkill(SkillType.Alchemy, 20)

            .AddPerkLevel()
            .Description("Unlocks tier 4 alchemy recipes.")
            .Price(2)
            .RequirementSkill(SkillType.Alchemy, 30)

            .AddPerkLevel()
            .Description("Unlocks tier 5 alchemy recipes.")
            .Price(2)
            .RequirementSkill(SkillType.Alchemy, 40);
        }
Exemple #3
0
        private static void AutoCraftAlchemy(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.Alchemist, PerkType.AutoCraftAlchemy)
            .Name("Auto-Craft Alchemy")
            .Description("Unlocks and speeds up Alchemy auto-crafting.")

            .AddPerkLevel()
            .Description("Unlocks auto-craft command for Alchemy.")
            .Price(4)

            .AddPerkLevel()
            .Description("Reduces Alchemy auto-craft delay by 4 seconds.")
            .Price(2)
            .RequirementSkill(SkillType.Alchemy, 10)

            .AddPerkLevel()
            .Description("Reduces Alchemy auto-craft delay by 8 seconds.")
            .Price(2)
            .RequirementSkill(SkillType.Alchemy, 20)

            .AddPerkLevel()
            .Description("Reduces Alchemy auto-craft delay by 12 seconds.")
            .Price(2)
            .RequirementSkill(SkillType.Alchemy, 30)

            .AddPerkLevel()
            .Description("Reduces Alchemy auto-craft delay by 16 seconds.")
            .Price(2)
            .RequirementSkill(SkillType.Alchemy, 40);
        }
        private static void Dia(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.WhiteMage, PerkType.Dia)
            .Name("Dia")
            .Description("Inflicts Dia on a single target which deals Holy damage over time.")

            .AddPerkLevel()
            .Description("Grants the Dia I ability.")
            .RequirementSkill(SkillType.WhiteMagic, 10)
            .RequirementSkill(SkillType.Rod, 5)
            .Price(2)
            .GrantsFeat(Feat.Dia1)

            .AddPerkLevel()
            .Description("Grants the Dia II ability.")
            .RequirementSkill(SkillType.WhiteMagic, 30)
            .RequirementSkill(SkillType.Rod, 15)
            .Price(2)
            .GrantsFeat(Feat.Dia2)

            .AddPerkLevel()
            .Description("Grants the Dia III ability.")
            .RequirementSkill(SkillType.WhiteMagic, 40)
            .RequirementSkill(SkillType.Rod, 30)
            .Price(4)
            .GrantsFeat(Feat.Dia3);
        }
Exemple #5
0
        private static void ElectricFist(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.Monk, PerkType.ElectricFist)
            .Name("Electric Fist")
            .Description("Your next melee attack deals electrical damage.")

            .AddPerkLevel()
            .Description("Your next melee attack will deal 2d4 electrical damage.")
            .RequirementSkill(SkillType.Knuckles, 10)
            .RequirementSkill(SkillType.Chi, 5)
            .Price(3)
            .GrantsFeat(Feat.ElectricFist1)

            .AddPerkLevel()
            .Description("Your next melee attack will deal 2d8 electrical damage and has a 50% chance to inflict Static on your target for 30 seconds.")
            .RequirementSkill(SkillType.Knuckles, 30)
            .RequirementSkill(SkillType.Chi, 15)
            .Price(5)
            .GrantsFeat(Feat.ElectricFist2)

            .AddPerkLevel()
            .Description("Your next melee attack will deal 2d8 electrical damage and has a 100% chance to inflict Static on your target for 30 seconds.")
            .RequirementSkill(SkillType.Knuckles, 50)
            .RequirementSkill(SkillType.Chi, 30)
            .Price(5)
            .GrantsFeat(Feat.ElectricFist3);
        }
        private static void Cure(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.WhiteMage, PerkType.Cure)
            .Name("Cure")
            .Description("Restores HP of a single target.")

            .AddPerkLevel()
            .Description("Grants the Cure ability.")
            .Price(2)
            .GrantsFeat(Feat.Cure1)

            .AddPerkLevel()
            .Description("Grants the Cure II ability.")
            .RequirementSkill(SkillType.WhiteMagic, 15)
            .RequirementSkill(SkillType.Rod, 10)
            .Price(4)
            .GrantsFeat(Feat.Cure2)

            .AddPerkLevel()
            .Description("Grants the Cure III ability.")
            .RequirementSkill(SkillType.WhiteMagic, 30)
            .RequirementSkill(SkillType.Rod, 20)
            .Price(6)
            .GrantsFeat(Feat.Cure3);
        }
        private static void AutoCraftLeathercrafting(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.Leatherworker, PerkType.AutoCraftLeathercrafting)
            .Name("Auto-Craft Leathercraft")
            .Description("Unlocks and speeds up Leathercraft auto-crafting.")

            .AddPerkLevel()
            .Description("Unlocks auto-craft command for Leathercraft.")
            .Price(4)

            .AddPerkLevel()
            .Description("Reduces Leathercraft auto-craft delay by 4 seconds.")
            .Price(2)
            .RequirementSkill(SkillType.Leathercraft, 10)

            .AddPerkLevel()
            .Description("Reduces Leathercraft auto-craft delay by 8 seconds.")
            .Price(2)
            .RequirementSkill(SkillType.Leathercraft, 20)

            .AddPerkLevel()
            .Description("Reduces Leathercraft auto-craft delay by 12 seconds.")
            .Price(2)
            .RequirementSkill(SkillType.Leathercraft, 30)

            .AddPerkLevel()
            .Description("Reduces Leathercraft auto-craft delay by 16 seconds.")
            .Price(2)
            .RequirementSkill(SkillType.Leathercraft, 40);
        }
        private static void Stone(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.WhiteMage, PerkType.Stone)
            .Name("Stone")
            .Description("Deals earth damage to a single target.")

            .AddPerkLevel()
            .Description("Deals 1d6 earth damage to a single target.")
            .RequirementSkill(SkillType.WhiteMagic, 5)
            .RequirementSkill(SkillType.Rod, 5)
            .Price(2)
            .GrantsFeat(Feat.Stone1)

            .AddPerkLevel()
            .Description("Deals 2d6 earth damage to a single target.")
            .RequirementSkill(SkillType.WhiteMagic, 20)
            .RequirementSkill(SkillType.Rod, 15)
            .Price(2)
            .GrantsFeat(Feat.Stone2)

            .AddPerkLevel()
            .Description("Deals 2d10 earth damage to a single target.")
            .RequirementSkill(SkillType.WhiteMagic, 35)
            .RequirementSkill(SkillType.Rod, 25)
            .Price(2)
            .GrantsFeat(Feat.Stone3);
        }
        private static void LeathercraftRecipes(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.Leatherworker, PerkType.LeathercraftRecipes)
            .Name("Leathercraft Recipes")
            .Description("Unlocks leathercraft recipes.")

            .AddPerkLevel()
            .Description("Unlocks tier 1 leathercraft recipes.")
            .Price(2)

            .AddPerkLevel()
            .Description("Unlocks tier 2 leathercraft recipes.")
            .Price(2)
            .RequirementSkill(SkillType.Leathercraft, 10)

            .AddPerkLevel()
            .Description("Unlocks tier 3 leathercraft recipes.")
            .Price(2)
            .RequirementSkill(SkillType.Leathercraft, 20)

            .AddPerkLevel()
            .Description("Unlocks tier 4 leathercraft recipes.")
            .Price(2)
            .RequirementSkill(SkillType.Leathercraft, 30)

            .AddPerkLevel()
            .Description("Unlocks tier 5 leathercraft recipes.")
            .Price(2)
            .RequirementSkill(SkillType.Leathercraft, 40);
        }
Exemple #10
0
        private static void StaffProficiency(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.BlackMage, PerkType.StaffProficiency)
            .Name("Staff Proficiency")
            .Description("Grants the ability to equip staves.")

            .AddPerkLevel()
            .Description("Grants the ability to equip tier 1 staves.")
            .Price(2)

            .AddPerkLevel()
            .Description("Grants the ability to equip tier 2 staves.")
            .Price(2)
            .RequirementSkill(SkillType.Staff, 10)

            .AddPerkLevel()
            .Description("Grants the ability to equip tier 3 staves.")
            .Price(2)
            .RequirementSkill(SkillType.Staff, 20)

            .AddPerkLevel()
            .Description("Grants the ability to equip tier 4 staves.")
            .Price(2)
            .RequirementSkill(SkillType.Staff, 30)

            .AddPerkLevel()
            .Description("Grants the ability to equip tier 5 staves.")
            .Price(2)
            .RequirementSkill(SkillType.Staff, 40);
        }
        private static void KnucklesMastery(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.Monk, PerkType.KnucklesMastery)
            .Name("Knuckles Mastery")
            .Description("Grants increased BAB when equipped with knuckles.")

            // Knuckles BAB calculations work a little backwards compared to the other item types.
            // We want to add BAB when the player is newly bare-handed.
            // We want to remove BAB when the player equips any item into their right or left hands.
            .TriggerEquippedItem((player, item, inventorySlot, type, level) =>
            {
                // There are items in the right or left hands right now. Exit early
                if (GetIsObjectValid(GetItemInSlot(InventorySlot.RightHand, player)) ||
                    GetIsObjectValid(GetItemInSlot(InventorySlot.LeftHand, player)))
                {
                    return;
                }

                // Nothing was equipped, but we're about to put an item in either hand.
                // For this scenario, we need to reduce the BAB because the player is about to have a weapon equipped.
                if (inventorySlot == InventorySlot.RightHand || inventorySlot == InventorySlot.LeftHand)
                {
                    ModifyBAB(player, item, InventorySlot.Invalid, level, false, GetBaseItemType(item), InventorySlot.Invalid);
                }
            })
            .TriggerUnequippedItem((player, item, type, level) =>
            {
                var rightHand  = GetItemInSlot(InventorySlot.RightHand, player);
                var leftHand   = GetItemInSlot(InventorySlot.LeftHand, player);
                var rightValid = GetIsObjectValid(rightHand);
                var leftValid  = GetIsObjectValid(leftHand);

                // The item being removed is in either the right or left hand and the OTHER hand is empty.
                // We need to apply the BAB bonus.
                if ((rightHand == item && !leftValid) ||
                    (leftHand == item && !rightValid))
                {
                    ModifyBAB(player, item, InventorySlot.Invalid, level, true, GetBaseItemType(item), InventorySlot.Invalid);
                }
            })

            .AddPerkLevel()
            .Description("Grants +1 BAB when equipped with knuckles.")
            .Price(8)
            .RequirementSkill(SkillType.Knuckles, 20)
            .RequirementSkill(SkillType.Chi, 25)

            .AddPerkLevel()
            .Description("Grants +2 BAB when equipped with knuckles.")
            .Price(8)
            .RequirementSkill(SkillType.Knuckles, 30)
            .RequirementSkill(SkillType.Chi, 40)

            .AddPerkLevel()
            .Description("Grants +3 BAB when equipped with knuckles.")
            .Price(8)
            .RequirementSkill(SkillType.Knuckles, 40)
            .RequirementSkill(SkillType.Chi, 50);
        }
Exemple #12
0
        public Dictionary <PerkType, PerkDetail> BuildPerks()
        {
            var builder = new PerkBuilder();

            EagleEyeShot(builder);

            return(builder.Build());
        }
        public Dictionary <PerkType, PerkDetail> BuildPerks()
        {
            var builder = new PerkBuilder();

            DarkNebula(builder);

            return(builder.Build());
        }
Exemple #14
0
        public Dictionary <PerkType, PerkDetail> BuildPerks()
        {
            var builder = new PerkBuilder();

            LionHeart(builder);

            return(builder.Build());
        }
        public Dictionary <PerkType, PerkDetail> BuildPerks()
        {
            var builder = new PerkBuilder();

            LeathercraftRecipes(builder);
            AutoCraftLeathercrafting(builder);

            return(builder.Build());
        }
Exemple #16
0
        public Dictionary <PerkType, PerkDetail> BuildPerks()
        {
            var builder = new PerkBuilder();

            AlchemistRecipes(builder);
            AutoCraftAlchemy(builder);

            return(builder.Build());
        }
        public Dictionary <PerkType, PerkDetail> BuildPerks()
        {
            var builder = new PerkBuilder();

            MijinGakure(builder);
            DualWield(builder);

            return(builder.Build());
        }
        public Dictionary <PerkType, PerkDetail> BuildPerks()
        {
            var builder = new PerkBuilder();

            BlacksmithingRecipes(builder);
            AutoCraftBlacksmithing(builder);

            return(builder.Build());
        }
Exemple #19
0
        private static void MartialFinesse(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.Monk, PerkType.MartialFinesse)
            .Name("Martial Finesse")
            .Description("You make melee attack rolls with your DEX if it is higher than your STR. Must be equipped with knuckles.")

            .AddPerkLevel()
            .Description("Grants the Martial Finesse ability.")
            .RequirementSkill(SkillType.Knuckles, 10)
            .RequirementSkill(SkillType.Chi, 5)
            .Price(4)
            .TriggerPurchase((player, type, level) =>
            {
                var rightHand  = GetItemInSlot(InventorySlot.RightHand, player);
                var leftHand   = GetItemInSlot(InventorySlot.LeftHand, player);
                var rightValid = GetIsObjectValid(rightHand);
                var leftValid  = GetIsObjectValid(leftHand);

                // No weapons are equipped. Grant the feat.
                if (!rightValid && !leftValid)
                {
                    Creature.AddFeat(player, Feat.WeaponFinesse);
                }
            })
            .TriggerEquippedItem((player, item, slot, type, level) =>
            {
                // There are items in the right or left hands right now. Exit early
                if (GetIsObjectValid(GetItemInSlot(InventorySlot.RightHand, player)) ||
                    GetIsObjectValid(GetItemInSlot(InventorySlot.LeftHand, player)))
                {
                    return;
                }

                // Nothing was equipped, but we're about to put an item in either hand.
                // For this scenario, we need to remove the feat because the player is about to have a weapon equipped.
                if (slot == InventorySlot.RightHand || slot == InventorySlot.LeftHand)
                {
                    Creature.RemoveFeat(player, Feat.WeaponFinesse);
                }
            })
            .TriggerUnequippedItem((player, item, type, level) =>
            {
                var rightHand  = GetItemInSlot(InventorySlot.RightHand, player);
                var leftHand   = GetItemInSlot(InventorySlot.LeftHand, player);
                var rightValid = GetIsObjectValid(rightHand);
                var leftValid  = GetIsObjectValid(leftHand);

                // The item being removed is in either the right or left hand and the OTHER hand is empty.
                // We need to apply the feat now.
                if ((rightHand == item && !leftValid) ||
                    (leftHand == item && !rightValid))
                {
                    Creature.AddFeat(player, Feat.WeaponFinesse);
                }
            });
        }
        public Dictionary <PerkType, PerkDetail> BuildPerks()
        {
            var builder = new PerkBuilder();

            HeavyArmorProficiency(builder);
            LightArmorProficiency(builder);
            MysticArmorProficiency(builder);

            return(builder.Build());
        }
Exemple #21
0
        private static void ShieldBash(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.Knight, PerkType.Bash)
            .Name("Bash")
            .Description("Deals 1d4 damage and stuns your target for a short period of time.")

            .AddPerkLevel()
            .Description("Grants the Bash ability.")
            .RequirementSkill(SkillType.Chivalry, 5)
            .Price(3)
            .GrantsFeat(Feat.Bash);
        }
Exemple #22
0
        private static void SpikedDefense(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.Knight, PerkType.SpikedDefense)
            .Name("Spiked Defense")
            .Description("Grants a temporary damage shield to you.")

            .AddPerkLevel()
            .Description("Grants the Spiked Defense ability.")
            .RequirementSkill(SkillType.Chivalry, 15)
            .Price(3)
            .GrantsFeat(Feat.SpikedDefense);
        }
        private static void TeleportBalamb(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.WhiteMage, PerkType.TeleportBalamb)
            .Name("Teleport-Balamb")
            .Description("Teleports you and all nearby party members to Balamb Garden.")

            .AddPerkLevel()
            .Description("Grants the Teleport-Balamb ability.")
            .RequirementSkill(SkillType.WhiteMagic, 35)
            .Price(4)
            .GrantsFeat(Feat.TeleportBalamb);
        }
Exemple #24
0
        private static void ElementalSpread(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.BlackMage, PerkType.ElementalSpread)
            .Name("Elemental Spread")
            .Description("Your next blizzard, fire, or thunder spell will target all nearby enemies.")

            .AddPerkLevel()
            .Description("Grants the Elemental Spread ability.")
            .RequirementSkill(SkillType.BlackMagic, 25)
            .Price(4)
            .GrantsFeat(Feat.ElementalSpread);
        }
Exemple #25
0
        private static void Cleave(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.Knight, PerkType.Cleave)
            .Name("Cleave")
            .Description("If the character kills an opponent, he gets a free attack against any opponent who is within melee weapon range.")

            .AddPerkLevel()
            .Description("Grants the Cleave ability.")
            .RequirementSkill(SkillType.Chivalry, 10)
            .Price(3)
            .GrantsFeat(Feat.Cleave);
        }
Exemple #26
0
        private static void Protect(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.RedMage, PerkType.Protect)
            .Name("Protect")
            .Description("Grants protect to a single target, increasing damage resistance.")

            .AddPerkLevel()
            .Description("Grants the Protect ability.")
            .RequirementSkill(SkillType.RedMagic, 7)
            .RequirementSkill(SkillType.Rapier, 10)
            .Price(2)
            .GrantsFeat(Feat.Protect);
        }
Exemple #27
0
        private static void DeliberateStab(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.RedMage, PerkType.DeliberateStab)
            .Name("Deliberate Stab")
            .Description("Your next stab effect will last twice as long as normal.")

            .AddPerkLevel()
            .Description("Grants the Deliberate Stab ability.")
            .RequirementSkill(SkillType.RedMagic, 45)
            .RequirementSkill(SkillType.Rapier, 40)
            .Price(6)
            .GrantsFeat(Feat.DeliberateStab);
        }
Exemple #28
0
        private static void Refresh(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.RedMage, PerkType.Refresh)
            .Name("Refresh")
            .Description("Restores MP over time to a single target.")

            .AddPerkLevel()
            .Description("Grants the Refresh ability.")
            .RequirementSkill(SkillType.RedMagic, 35)
            .RequirementSkill(SkillType.Rapier, 20)
            .Price(6)
            .GrantsFeat(Feat.Refresh);
        }
Exemple #29
0
        private static void Convert(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.RedMage, PerkType.Convert)
            .Name("Convert")
            .Description("Your HP and MP values are switched.")

            .AddPerkLevel()
            .Description("Grants the Convert ability.")
            .RequirementSkill(SkillType.RedMagic, 40)
            .RequirementSkill(SkillType.Rapier, 35)
            .Price(8)
            .GrantsFeat(Feat.Convert);
        }
Exemple #30
0
        private static void Sleep(PerkBuilder builder)
        {
            builder.Create(PerkCategoryType.BlackMage, PerkType.Sleep)
            .Name("Sleep")
            .Description("Puts a single target to sleep for between 15 and 30 seconds. Effect will be removed if target is damaged.")

            .AddPerkLevel()
            .Description("Grants the Sleep ability.")
            .RequirementSkill(SkillType.BlackMagic, 10)
            .RequirementSkill(SkillType.Staff, 5)
            .Price(2)
            .GrantsFeat(Feat.Sleep);
        }