private static void Bleed2(StatusEffectBuilder builder) { builder.Create(StatusEffectType.Bleed2) .Name("Bleed II") .EffectIcon(158) .GrantAction((target, duration) => { if (StatusEffect.HasStatusEffect(target, StatusEffectType.Bleed3)) { SendMessageToPC(target, "A more powerful version of Bleed is already in effect."); StatusEffect.Remove(target, StatusEffectType.Bleed2); return; } StatusEffect.Remove(target, StatusEffectType.Bleed1); }) .TickAction((activator, target) => { var damage = Random.D6(1); AssignCommand(activator, () => { ApplyEffectToObject(DurationType.Instant, EffectDamage(damage, DamageType.Piercing), target); }); }); }
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); }); }
private static void Stone2(AbilityBuilder builder) { builder.Create(Feat.Stone2, PerkType.Stone) .Name("Stone II") .HasRecastDelay(RecastGroup.Stone, 4f) .HasActivationDelay(2.0f) .RequirementMP(5) .UsesActivationType(AbilityActivationType.Casted) .DisplaysVisualEffectWhenActivating() .HasImpactAction((activator, target, level) => { ApplyStoneEffects(activator, target, Random.D6(2), 9); }); }
private static void Blizzard1(AbilityBuilder builder) { builder.Create(Feat.Blizzard1, PerkType.Blizzard) .Name("Blizzard I") .HasRecastDelay(RecastGroup.Blizzard, 2f) .HasActivationDelay(2.0f) .RequirementMP(2) .UsesActivationType(AbilityActivationType.Casted) .DisplaysVisualEffectWhenActivating() .HasImpactAction((activator, target, level) => { ApplyBlizzardEffects(activator, target, Random.D6(2), 5, 0.0f); ApplyAOEBlizzardEffects(activator, target, Random.D6(2), 5, 0.0f); }); }
private static void Fire1(AbilityBuilder builder) { builder.Create(Feat.Fire1, PerkType.Fire) .Name("Fire I") .HasRecastDelay(RecastGroup.Fire, 3f) .HasActivationDelay(3.0f) .RequirementMP(3) .UsesActivationType(AbilityActivationType.Casted) .DisplaysVisualEffectWhenActivating() .HasImpactAction((activator, target, level) => { ApplyFireEffects(activator, target, Random.D6(2), 5, 0.0f); ApplyAOEFireEffects(activator, target, Random.D6(2), 5, 0.0f); }); }
private static void Thunder1(AbilityBuilder builder) { builder.Create(Feat.Thunder1, PerkType.Thunder) .Name("Thunder I") .HasRecastDelay(RecastGroup.Thunder, 4f) .HasActivationDelay(4.0f) .RequirementMP(4) .UsesActivationType(AbilityActivationType.Casted) .DisplaysVisualEffectWhenActivating() .HasImpactAction((activator, target, level) => { ApplyThunderEffects(activator, target, Random.D6(2), 5, 0.0f); ApplyAOEThunderEffects(activator, target, Random.D6(2), 5, 0.0f); }); }
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); }); }
private static void Jolt2(AbilityBuilder builder) { builder.Create(Feat.Jolt2, PerkType.Jolt) .Name("Jolt II") .HasRecastDelay(RecastGroup.Jolt, 4f) .RequirementMP(8) .UsesActivationType(AbilityActivationType.Casted) .HasActivationDelay(2f) .HasImpactAction((activator, target, level) => { var damage = Random.D6(2); ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Com_Hit_Electrical), target); ApplyEffectToObject(DurationType.Instant, EffectDamage(damage), target); Enmity.ModifyEnmity(activator, target, damage + 6); CombatPoint.AddCombatPoint(activator, target, SkillType.RedMagic, 3); }); }
private static void Dia3(StatusEffectBuilder builder) { builder.Create(StatusEffectType.Dia3) .Name("Dia III") .EffectIcon(155) .GrantAction((target, duration) => { StatusEffect.Remove(target, StatusEffectType.Dia1); StatusEffect.Remove(target, StatusEffectType.Dia2); }) .TickAction((activator, target) => { var damage = Random.D6(1); AssignCommand(activator, () => { ApplyEffectToObject(DurationType.Instant, EffectDamage(damage, DamageType.Positive), target); }); }); }
private static void Bleed3(StatusEffectBuilder builder) { builder.Create(StatusEffectType.Bleed3) .Name("Bleed III") .EffectIcon(159) .GrantAction((target, duration) => { StatusEffect.Remove(target, StatusEffectType.Bleed1); StatusEffect.Remove(target, StatusEffectType.Bleed3); }) .TickAction((activator, target) => { var damage = Random.D6(2); AssignCommand(activator, () => { ApplyEffectToObject(DurationType.Instant, EffectDamage(damage, DamageType.Piercing), target); }); }); }
private static void Cure2(AbilityBuilder builder) { builder.Create(Feat.Cure2, PerkType.Cure) .Name("Cure II") .HasRecastDelay(RecastGroup.Cure2, 5f) .HasActivationDelay(2.0f) .RequirementMP(8) .UsesActivationType(AbilityActivationType.Casted) .DisplaysVisualEffectWhenActivating() .HasImpactAction((activator, target, level) => { var amount = Random.D6(2) + GetAbilityModifier(AbilityType.Wisdom, activator); ApplyEffectToObject(DurationType.Instant, EffectHeal(amount), target); ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Healing_M), target); Enmity.ModifyEnmityOnAll(activator, amount); CombatPoint.AddCombatPointToAllTagged(activator, SkillType.WhiteMagic, 3); }); }
private static void RecoveryStab1(AbilityBuilder builder) { builder.Create(Feat.RecoveryStab1, PerkType.RecoveryStab) .Name("Recovery Stab I") .HasRecastDelay(RecastGroup.RecoveryStab, 60f) .RequirementStamina(8) .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.D6(2) + bonus; ApplyEffectToObject(DurationType.Instant, EffectHeal(amount), member); ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(VisualEffect.Vfx_Imp_Healing_S), member); Enmity.ModifyEnmityOnAll(activator, amount + 2); } CombatPoint.AddCombatPointToAllTagged(activator, SkillType.RedMagic, 3); Enmity.ModifyEnmityOnAll(activator, 6); }); }