コード例 #1
0
        private static void Curaga1(AbilityBuilder builder)
        {
            builder.Create(Feat.Curaga1, PerkType.Curaga)
            .Name("Curaga I")
            .HasRecastDelay(RecastGroup.Curaga1, 12f)
            .HasActivationDelay(4.0f)
            .RequirementMP(12)
            .UsesActivationType(AbilityActivationType.Casted)
            .DisplaysVisualEffectWhenActivating()
            .HasImpactAction((activator, target, level) =>
            {
                var bonus = GetAbilityModifier(AbilityType.Wisdom, activator);

                foreach (var member in Party.GetAllPartyMembersWithinRange(activator, 5.0f))
                {
                    var amount = Random.D6(2) + bonus;

                    ApplyEffectToObject(DurationType.Instant, GetRacialType(target) == RacialType.Undead
                            ? EffectDamage(amount)
                            : EffectHeal(amount), target);

                    ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Healing_S), member);

                    Enmity.ModifyEnmityOnAll(activator, amount);
                }

                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.WhiteMagic, 3);
            });
        }
コード例 #2
0
        public Dictionary <Feat, AbilityDetail> BuildAbilities()
        {
            var builder = new AbilityBuilder()
                          .Create(Feat.Sleep, PerkType.Sleep)
                          .Name("Sleep")
                          .HasRecastDelay(RecastGroup.Sleep, 12f)
                          .HasActivationDelay(2f)
                          .RequirementMP(8)
                          .UsesActivationType(AbilityActivationType.Casted)
                          .DisplaysVisualEffectWhenActivating()
                          .HasImpactAction((activator, target, level) =>
            {
                var resistance   = Resistance.GetResistance(target, ResistanceType.Sleep);
                var baseDuration = Random.NextFloat(15.0f, 30.0f);
                var duration     = baseDuration * resistance;

                StatusEffect.Apply(activator, target, StatusEffectType.Sleep, duration);
                Resistance.ModifyResistance(target, ResistanceType.Sleep, -0.25f);

                CombatPoint.AddCombatPoint(activator, target, SkillType.BlackMagic, 3);
                Enmity.ModifyEnmity(activator, target, 18);
            });

            return(builder.Build());
        }
コード例 #3
0
        private static void Poisona(AbilityBuilder builder)
        {
            builder.Create(Feat.Poisona, PerkType.Poisona)
            .Name("Poisona")
            .HasRecastDelay(RecastGroup.Raise, 60f)
            .HasActivationDelay(1f)
            .RequirementMP(4)
            .UsesActivationType(AbilityActivationType.Casted)
            .HasCustomValidation((activator, target, level) =>
            {
                if (!StatusEffect.HasStatusEffect(target, StatusEffectType.Poison1) &&
                    !StatusEffect.HasStatusEffect(target, StatusEffectType.Poison2) &&
                    !StatusEffect.HasStatusEffect(target, StatusEffectType.Poison3))
                {
                    return("Your target is not poisoned.");
                }

                return(string.Empty);
            })
            .HasImpactAction((activator, target, level) =>
            {
                StatusEffect.Remove(target, StatusEffectType.Poison1);
                StatusEffect.Remove(target, StatusEffectType.Poison2);
                StatusEffect.Remove(target, StatusEffectType.Poison3);

                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Head_Nature), target);

                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.WhiteMagic, 3);
                Enmity.ModifyEnmity(activator, target, 6);
            });
        }
コード例 #4
0
        private static void Cover3(AbilityBuilder builder)
        {
            builder.Create(Feat.Cover3, PerkType.Cover)
            .Name("Cover III")
            .HasRecastDelay(RecastGroup.Cover, 120f)
            .RequirementStamina(12)
            .UsesActivationType(AbilityActivationType.Casted)
            .DisplaysVisualEffectWhenActivating(VisualEffect.None)
            .HasCustomValidation((activator, target, level) =>
            {
                if (activator == target)
                {
                    return("You cannot Cover yourself.");
                }

                return(string.Empty);
            })
            .HasImpactAction((activator, target, level) =>
            {
                var length = 60f + GetAbilityModifier(AbilityType.Constitution, activator) * 2f;
                StatusEffect.Apply(activator, target, StatusEffectType.Cover3, length);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Dur_Prot_Epic_Armor), target);

                Enmity.ModifyEnmityOnAll(activator, 10);
                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.Chivalry, 3);
            });
        }
コード例 #5
0
        private static void RecoveryStab3(AbilityBuilder builder)
        {
            builder.Create(Feat.RecoveryStab3, PerkType.RecoveryStab)
            .Name("Recovery Stab III")
            .HasRecastDelay(RecastGroup.RecoveryStab, 60f)
            .RequirementStamina(16)
            .UsesActivationType(AbilityActivationType.Weapon)
            .HasImpactAction((activator, target, level) =>
            {
                var bonus = GetAbilityModifier(AbilityType.Wisdom, activator);
                foreach (var member in Party.GetAllPartyMembersWithinRange(activator, 5.0f))
                {
                    var amount   = Random.D8(3) + bonus;
                    var duration = 24f;

                    if (StatusEffect.HasStatusEffect(activator, StatusEffectType.DeliberateStab))
                    {
                        duration *= 2f;
                    }

                    ApplyEffectToObject(DurationType.Instant, EffectHeal(amount), member);
                    ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Healing_S), member);
                    ApplyEffectToObject(DurationType.Temporary, EffectRegenerate(1, 6f), member, duration);


                    Enmity.ModifyEnmityOnAll(activator, amount + 6);
                }

                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.RedMagic, 3);
                Enmity.ModifyEnmityOnAll(activator, 10);
            });
        }
コード例 #6
0
        private static void TransferStamina1(AbilityBuilder builder)
        {
            builder.Create(Feat.TransferStamina1, PerkType.TransferStamina)
            .Name("Transfer Stamina I")
            .HasRecastDelay(RecastGroup.Transfer, 60f)
            .RequirementMP(20)
            .UsesActivationType(AbilityActivationType.Casted)
            .HasActivationDelay(4f)
            .HasCustomValidation((activator, target, level) =>
            {
                if (!GetIsPC(target) || GetIsDM(target))
                {
                    return("Only players may be targeted with this ability.");
                }

                return(string.Empty);
            })
            .HasImpactAction((activator, target, level) =>
            {
                const int BaseTransferAmount = 10;

                var playerId = GetObjectUUID(target);
                var dbPlayer = DB.Get <Player>(playerId);
                Stat.RestoreStamina(target, dbPlayer, BaseTransferAmount);
                DB.Set(playerId, dbPlayer);

                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.RedMagic, 2);
                Enmity.ModifyEnmityOnAll(activator, 6);
            });
        }
コード例 #7
0
        public static void ApplyLifeStealRecovery()
        {
            var target             = OBJECT_SELF;
            var lifeStealAmount    = GetLocalFloat(target, LifeStealVariableName);
            var lifeStealActivator = GetLocalObject(target, LifeStealActivatorVariableName);

            if (lifeStealAmount <= 0.0f)
            {
                return;
            }

            var damageDetails = Damage.GetDamageEventData();

            if (lifeStealActivator != damageDetails.Damager)
            {
                return;
            }

            var recoveryAmount = (int)(damageDetails.Total * lifeStealAmount);

            ApplyEffectToObject(DurationType.Instant, EffectHeal(recoveryAmount), lifeStealActivator);
            ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Healing_S), lifeStealActivator);

            Enmity.ModifyEnmity(lifeStealActivator, target, recoveryAmount + 6);
            CombatPoint.AddCombatPoint(lifeStealActivator, target, SkillType.Thievery, 2);

            DeleteLocalFloat(target, LifeStealVariableName);
            DeleteLocalObject(target, LifeStealActivatorVariableName);
        }
コード例 #8
0
        private static void Raise(AbilityBuilder builder)
        {
            builder.Create(Feat.Raise, PerkType.Raise)
            .Name("Raise I")
            .HasRecastDelay(RecastGroup.Raise, 60f)
            .HasActivationDelay(15f)
            .RequirementMP(25)
            .UsesActivationType(AbilityActivationType.Casted)
            .HasCustomValidation((activator, target, level) =>
            {
                if (GetCurrentHitPoints(target) > -11 ||
                    !GetIsDead(target))
                {
                    return("Your target is still alive.");
                }

                return(string.Empty);
            })
            .HasImpactAction((activator, target, level) =>
            {
                ApplyEffectToObject(DurationType.Instant, EffectResurrection(), target);

                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.WhiteMagic, 5);
                Enmity.ModifyEnmityOnAll(activator, 60);
            });
        }
コード例 #9
0
        private static void Convert(AbilityBuilder builder)
        {
            builder.Create(Feat.Convert, PerkType.Convert)
            .Name("Convert")
            .HasRecastDelay(RecastGroup.Convert, 600f)
            .UsesActivationType(AbilityActivationType.Casted)
            .HasCustomValidation((activator, target, level) =>
            {
                if (!GetIsPC(activator) || GetIsDM(activator))
                {
                    return("Only players may use this ability.");
                }

                var playerId = GetObjectUUID(activator);
                var dbPlayer = DB.Get <Player>(playerId);

                if (dbPlayer.MP <= 0)
                {
                    return("Your MP is too low to convert.");
                }

                return(string.Empty);
            })
            .HasImpactAction((activator, target, level) =>
            {
                var playerId = GetObjectUUID(activator);
                var dbPlayer = DB.Get <Player>(playerId);

                var currentHP = GetCurrentHitPoints(activator);
                var currentMP = dbPlayer.MP;

                // Set MP to 0 then do a restore by the player's HP.
                dbPlayer.MP = 0;
                Stat.RestoreMP(activator, dbPlayer, currentHP);
                DB.Set(playerId, dbPlayer);

                // Current HP is higher than MP. Deal damage.
                if (currentHP > currentMP)
                {
                    var damageAmount = currentHP - currentMP;
                    ApplyEffectToObject(DurationType.Instant, EffectDamage(damageAmount), activator);
                }
                // Current HP is lower than MP. Heal damage.
                else if (currentHP < currentMP)
                {
                    var recoverAmount = currentMP - currentHP;
                    ApplyEffectToObject(DurationType.Instant, EffectHeal(recoverAmount), activator);
                }

                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Good_Help), activator);

                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.RedMagic, 5);
                Enmity.ModifyEnmityOnAll(activator, 10);
            });
        }
コード例 #10
0
        private static void AttemptSteal(uint activator, uint target, int baseChance)
        {
            var delta = 0.0f;

            // Players who use this ability have their Thievery skill checked against the CR
            // of the target. Other users simply have a delta of zero.
            if (GetIsPC(activator) && !GetIsDM(activator))
            {
                var playerId = GetObjectUUID(activator);
                var dbPlayer = DB.Get <Player>(playerId);
                var cr       = GetChallengeRating(target) * 3;
                var thievery = dbPlayer.Skills[SkillType.Thievery];

                delta = (thievery.Rank - cr) * 0.01f;
            }

            var chance = baseChance + (delta * baseChance);

            if (chance < 1)
            {
                chance = 1;
            }
            else if (chance > 95)
            {
                chance = 95;
            }

            if (Random.D100(1) <= chance)
            {
                for (var item = GetFirstItemInInventory(target); GetIsObjectValid(item); item = GetNextItemInInventory(target))
                {
                    // This item can be stolen. Copy it to the thief now.
                    if (GetLocalBool(item, "STEAL_ITEM"))
                    {
                        DeleteLocalBool(item, "STEAL_ITEM");
                        CopyItem(item, activator, true);

                        Messaging.SendMessageNearbyToPlayers(activator, $"{GetName(activator)} successfully steals '{GetName(item)}' from {GetName(target)}.");

                        DestroyObject(item);
                        break;
                    }
                }
            }
            else
            {
                SendMessageToPC(activator, $"You failed to steal from {GetName(target)}.");
            }

            CombatPoint.AddCombatPoint(activator, target, SkillType.Thievery, 3);
            Enmity.ModifyEnmity(activator, target, 5);
        }
コード例 #11
0
 private static void Invincible(AbilityBuilder builder)
 {
     builder.Create(Feat.Invincible, PerkType.Invincible)
     .Name("Invincible")
     .HasRecastDelay(RecastGroup.OneHourAbility, 3600f)
     .UsesActivationType(AbilityActivationType.Casted)
     .RequirementStamina(50)
     .HasImpactAction((activator, target, level) =>
     {
         StatusEffect.Apply(activator, target, StatusEffectType.Invincible, 30.0f);
         CombatPoint.AddCombatPointToAllTagged(activator, SkillType.Chivalry, 5);
         Enmity.ModifyEnmityOnAll(activator, 500);
         ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Fnf_Sound_Burst), target);
     });
 }
コード例 #12
0
        private static void WaspSting3(AbilityBuilder builder)
        {
            builder.Create(Feat.WaspSting3, PerkType.WaspSting)
            .Name("Wasp Sting III")
            .HasRecastDelay(RecastGroup.WaspSting, 60f)
            .RequirementStamina(12)
            .UsesActivationType(AbilityActivationType.Weapon)
            .HasImpactAction((activator, target, level) =>
            {
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Poison_S), target);
                StatusEffect.Apply(activator, target, StatusEffectType.Poison3, 24f);

                CombatPoint.AddCombatPoint(activator, target, SkillType.Thievery, 3);
                Enmity.ModifyEnmity(activator, target, 20);
            });
        }
コード例 #13
0
        private static void SubtleBlow2(AbilityBuilder builder)
        {
            builder.Create(Feat.SubtleBlow2, PerkType.SubtleBlow)
            .Name("Subtle Blow II")
            .HasRecastDelay(RecastGroup.SubtleBlow, 300f)
            .RequirementStamina(7)
            .UsesActivationType(AbilityActivationType.Casted)
            .HasImpactAction((activator, target, level) =>
            {
                StatusEffect.Apply(activator, target, StatusEffectType.SubtleBlow2, 30f);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Ac_Bonus), target);

                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.Chi, 3);
                Enmity.ModifyEnmityOnAll(activator, 8);
            });
        }
コード例 #14
0
        private static void Manafont(AbilityBuilder builder)
        {
            builder.Create(Feat.Manafont, PerkType.Manafont)
            .Name("Manafont")
            .HasRecastDelay(RecastGroup.OneHourAbility, 3600f)
            .UsesActivationType(AbilityActivationType.Casted)
            .RequirementMP(50)
            .HasImpactAction((activator, target, level) =>
            {
                StatusEffect.Apply(activator, target, StatusEffectType.Manafont, 30f);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Fnf_Sound_Burst), target);

                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.RedMagic, 5);
                Enmity.ModifyEnmityOnAll(activator, 100);
            });
        }
コード例 #15
0
        private static void Blind1(AbilityBuilder builder)
        {
            builder.Create(Feat.Blind1, PerkType.Blind)
            .Name("Blind I")
            .HasRecastDelay(RecastGroup.Blind, 12f)
            .RequirementMP(6)
            .UsesActivationType(AbilityActivationType.Casted)
            .HasActivationDelay(2f)
            .HasImpactAction((activator, target, level) =>
            {
                StatusEffect.Apply(activator, target, StatusEffectType.Blind1, 15f);

                Enmity.ModifyEnmity(activator, target, 4);
                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.RedMagic, 3);
            });
        }
コード例 #16
0
        private static void Ironclad1(AbilityBuilder builder)
        {
            builder.Create(Feat.Ironclad1, PerkType.Ironclad)
            .Name("Ironclad I")
            .HasRecastDelay(RecastGroup.Ironclad, 300f)
            .RequirementStamina(10)
            .UsesActivationType(AbilityActivationType.Casted)
            .HasImpactAction((activator, target, level) =>
            {
                StatusEffect.Apply(activator, target, StatusEffectType.Ironclad1, 60f);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Death_Ward), target);

                Enmity.ModifyEnmityOnAll(activator, 8);
                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.Chivalry, 3);
            });
        }
コード例 #17
0
        private static void PerfectDodge(AbilityBuilder builder)
        {
            builder.Create(Feat.PerfectDodge, PerkType.PerfectDodge)
            .Name("Perfect Dodge")
            .HasRecastDelay(RecastGroup.OneHourAbility, 3600f)
            .UsesActivationType(AbilityActivationType.Casted)
            .RequirementStamina(50)
            .HasImpactAction((activator, target, level) =>
            {
                ApplyEffectToObject(DurationType.Temporary, EffectACIncrease(20), target, 30f);
                ApplyEffectToObject(DurationType.Temporary, EffectVisualEffect(VisualEffect.Vfx_Dur_Pixiedust), target, 30f);

                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.Thievery, 5);
                Enmity.ModifyEnmityOnAll(activator, 150);
            });
        }
コード例 #18
0
        private static void Refresh(AbilityBuilder builder)
        {
            builder.Create(Feat.Refresh, PerkType.Refresh)
            .Name("Refresh")
            .HasRecastDelay(RecastGroup.Refresh, 18f)
            .RequirementMP(12)
            .UsesActivationType(AbilityActivationType.Casted)
            .HasImpactAction((activator, target, level) =>
            {
                StatusEffect.Apply(activator, target, StatusEffectType.Refresh, 180f);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Head_Mind), target);

                Enmity.ModifyEnmityOnAll(activator, 6);
                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.RedMagic, 3);
            });
        }
コード例 #19
0
        private static void Shadowstitch2(AbilityBuilder builder)
        {
            builder.Create(Feat.Shadowstitch2, PerkType.Shadowstitch)
            .Name("Shadowstitch II")
            .HasRecastDelay(RecastGroup.Shadowstitch, 60f)
            .RequirementStamina(18)
            .UsesActivationType(AbilityActivationType.Weapon)
            .HasImpactAction((activator, target, level) =>
            {
                var duration = 24f;
                ApplyEffectToObject(DurationType.Temporary, EffectVisualEffect(VisualEffect.Vfx_Dur_Aura_Magenta), target, duration);
                ApplyEffectToObject(DurationType.Temporary, EffectCutsceneImmobilize(), target, duration);

                CombatPoint.AddCombatPoint(activator, target, SkillType.Thievery, 3);
                Enmity.ModifyEnmity(activator, target, 18);
            });
        }
コード例 #20
0
        private static void ElementalSeal(AbilityBuilder builder)
        {
            builder.Create(Feat.ElementalSeal, PerkType.ElementalSeal)
            .Name("Elemental Seal")
            .DisplaysVisualEffectWhenActivating()
            .HasRecastDelay(RecastGroup.OneHourAbility, 3600f)
            .UsesActivationType(AbilityActivationType.Casted)
            .RequirementMP(50)
            .HasImpactAction((activator, target, level) =>
            {
                StatusEffect.Apply(activator, target, StatusEffectType.ElementalSeal, 30f);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Fnf_Howl_Mind), target);

                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.BlackMagic, 5);
                Enmity.ModifyEnmityOnAll(activator, 300);
            });
        }
コード例 #21
0
        private static void Regen2(AbilityBuilder builder)
        {
            builder.Create(Feat.Regen1, PerkType.Regen)
            .Name("Regen II")
            .HasRecastDelay(RecastGroup.Regen, 12f)
            .HasActivationDelay(4f)
            .RequirementMP(12)
            .UsesActivationType(AbilityActivationType.Casted)
            .HasImpactAction((activator, target, level) =>
            {
                ApplyEffectToObject(DurationType.Temporary, EffectRegenerate(2, 6f), target, 60f);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Holy_Aid), target);

                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.WhiteMagic, 3);
                Enmity.ModifyEnmityOnAll(activator, 6);
            });
        }
コード例 #22
0
        private static void Flee2(AbilityBuilder builder)
        {
            builder.Create(Feat.Flee2, PerkType.Flee)
            .Name("Flee II")
            .HasRecastDelay(RecastGroup.Flee, 300f)
            .RequirementStamina(25)
            .UsesActivationType(AbilityActivationType.Casted)
            .HasActivationDelay(2.0f)
            .HasImpactAction((activator, target, level) =>
            {
                var duration = 30f + (GetAbilityModifier(AbilityType.Dexterity, activator) * 2);
                ApplyEffectToObject(DurationType.Temporary, EffectMovementSpeedIncrease(80), target, duration);

                Enmity.ModifyEnmityOnAll(activator, 8);
                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.Thievery, 3);
            });
        }
コード例 #23
0
        private static void DeliberateStab(AbilityBuilder builder)
        {
            builder.Create(Feat.DeliberateStab, PerkType.DeliberateStab)
            .Name("Deliberate Stab")
            .HasRecastDelay(RecastGroup.DeliberateStab, 300f)
            .RequirementStamina(20)
            .UsesActivationType(AbilityActivationType.Casted)
            .HasActivationDelay(2f)
            .HasImpactAction((activator, target, level) =>
            {
                StatusEffect.Apply(activator, target, StatusEffectType.DeliberateStab, 30f);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Divine_Strike_Holy), activator);

                Enmity.ModifyEnmityOnAll(activator, 3);
                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.RedMagic, 3);
            });
        }
コード例 #24
0
        private static void PiercingStab3(AbilityBuilder builder)
        {
            builder.Create(Feat.PiercingStab3, PerkType.PiercingStab)
            .Name("Piercing Stab III")
            .HasRecastDelay(RecastGroup.PiercingStab, 60f)
            .RequirementStamina(15)
            .UsesActivationType(AbilityActivationType.Weapon)
            .HasImpactAction((activator, target, level) =>
            {
                var duration = CalculateDuration(activator);
                StatusEffect.Apply(activator, target, StatusEffectType.Bleed3, duration);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Com_Chunk_Red_Small), target);

                CombatPoint.AddCombatPoint(activator, target, SkillType.RedMagic, 2);
                Enmity.ModifyEnmity(activator, target, 14);
            });
        }
コード例 #25
0
        private static void Blind2(AbilityBuilder builder)
        {
            builder.Create(Feat.Blind2, PerkType.Blind)
            .Name("Blind II")
            .HasRecastDelay(RecastGroup.Blind, 12f)
            .RequirementMP(10)
            .UsesActivationType(AbilityActivationType.Casted)
            .HasActivationDelay(2f)
            .HasImpactAction((activator, target, level) =>
            {
                // Intentional to use Blind I again.
                StatusEffect.Apply(activator, target, StatusEffectType.Blind1, 30f);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Dazed_S), target);

                Enmity.ModifyEnmity(activator, target, 6);
                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.RedMagic, 3);
            });
        }
コード例 #26
0
        private static void Protect(AbilityBuilder builder)
        {
            builder.Create(Feat.Protect, PerkType.Protect)
            .Name("Protect")
            .HasRecastDelay(RecastGroup.Protect, 4f)
            .HasActivationDelay(2.0f)
            .RequirementMP(4)
            .UsesActivationType(AbilityActivationType.Casted)
            .DisplaysVisualEffectWhenActivating()
            .HasImpactAction((activator, target, level) =>
            {
                ApplyEffectToObject(DurationType.Temporary, EffectDamageReduction(4, DamagePower.Normal), target, 1800f);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Ac_Bonus), target);

                Enmity.ModifyEnmityOnAll(activator, 4);
                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.RedMagic, 2);
            });
        }
コード例 #27
0
        private static void Chakra1(AbilityBuilder builder)
        {
            builder.Create(Feat.Chakra1, PerkType.Chakra)
            .Name("Chakra I")
            .HasRecastDelay(RecastGroup.Chakra, 30f)
            .HasActivationDelay(2f)
            .UsesActivationType(AbilityActivationType.Casted)
            .RequirementStamina(10)
            .HasImpactAction((activator, target, level) =>
            {
                var hpRecover = Random.D6(2);
                ApplyEffectToObject(DurationType.Instant, EffectHeal(hpRecover), target);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Healing_S), target);

                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.Chi, 2);
                Enmity.ModifyEnmityOnAll(activator, 6 + hpRecover);
            });
        }
コード例 #28
0
        private static void Dia3(AbilityBuilder builder)
        {
            builder.Create(Feat.Dia3, PerkType.Dia)
            .Name("Dia III")
            .HasRecastDelay(RecastGroup.Dia, 3f)
            .HasActivationDelay(1.0f)
            .RequirementMP(6)
            .UsesActivationType(AbilityActivationType.Casted)
            .DisplaysVisualEffectWhenActivating()
            .HasImpactAction((activator, target, level) =>
            {
                StatusEffect.Apply(activator, target, StatusEffectType.Dia3, 60f);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Blind_Deaf_M), target);

                Enmity.ModifyEnmity(activator, target, 10);
                CombatPoint.AddCombatPoint(activator, target, SkillType.WhiteMagic, 3);
            });
        }
コード例 #29
0
        private static void InnerHealing4(AbilityBuilder builder)
        {
            builder.Create(Feat.InnerHealing4, PerkType.InnerHealing)
            .Name("Inner Healing IV")
            .HasRecastDelay(RecastGroup.InnerHealing, 180f)
            .HasActivationDelay(2f)
            .UsesActivationType(AbilityActivationType.Casted)
            .RequirementStamina(25)
            .HasImpactAction((activator, target, level) =>
            {
                var hpRecover = (int)(GetMaxHitPoints(target) * 0.4f);
                ApplyEffectToObject(DurationType.Instant, EffectHeal(hpRecover), target);
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Restoration), target);

                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.Chi, 8);
                Enmity.ModifyEnmityOnAll(activator, 25 + hpRecover);
            });
        }
コード例 #30
0
        private static void ShockSpikes2(AbilityBuilder builder)
        {
            builder.Create(Feat.ShockSpikes2, PerkType.ShockSpikes)
            .Name("Shock Spikes II")
            .HasRecastDelay(RecastGroup.ShockSpikes, 10f)
            .HasActivationDelay(3f)
            .RequirementMP(12)
            .UsesActivationType(AbilityActivationType.Casted)
            .DisplaysVisualEffectWhenActivating()
            .HasImpactAction((activator, target, level) =>
            {
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Com_Blood_Crt_Yellow), target);
                ApplyShockSpikes(target, 1, DamageBonus.DAMAGEBONUS_2d4);

                Enmity.ModifyEnmityOnAll(activator, 8);
                CombatPoint.AddCombatPointToAllTagged(activator, SkillType.RedMagic, 3);
            });
        }