public override IEnumerable <TickTimer> Main() { //UsePrimaryResource(15f); // dashing strike never specifies the target's id so we just search for the closest target Target = GetEnemiesInRadius(TargetPosition, 8f).GetClosestTo(TargetPosition); if (Target != null) { // put dash destination just beyond target TargetPosition = PowerMath.TranslateDirection2D(User.Position, Target.Position, Target.Position, 7f); } else { // if no target, always dash fixed amount TargetPosition = PowerMath.TranslateDirection2D(User.Position, TargetPosition, User.Position, 13f); } var dashBuff = new DashMoverBuff(TargetPosition); AddBuff(User, dashBuff); yield return(dashBuff.Timeout); if (Target != null && Target.World != null) // target could've died or left world { User.TranslateFacing(Target.Position, true); yield return(WaitSeconds(0.1f)); User.PlayEffectGroup(113720); WeaponDamage(Target, 1.60f, DamageType.Physical); } }
public override IEnumerable<TickTimer> Main() { Target = GetEnemiesInRadius(TargetPosition, 12f).GetClosestTo(TargetPosition); if (Target != null) { TargetPosition = PowerMath.TranslateDirection2D(User.Position, Target.Position, Target.Position, 5f); } else { TargetPosition = PowerMath.TranslateDirection2D(User.Position, TargetPosition, TargetPosition, 0f); } var dashBuff = new DashMoverBuff(TargetPosition); AddBuff(User, dashBuff); yield return dashBuff.Timeout; GeneratePrimaryResource(EvalTag(PowerKeys.ResourceGainedOnFirstHit)); //since its furygenerator -> this should be fine without being the first hit. if (Target != null && Target.World != null) // target could've died or left world { User.TranslateFacing(Target.Position, true); yield return WaitSeconds(0.1f); User.PlayEffectGroup(166193); foreach (Actor enemy in GetEnemiesInArcDirection(User.Position, Target.Position, ScriptFormula(13), 8f).Actors) { WeaponDamage(enemy, ScriptFormula(14), DamageType.Physical); Knockback(enemy, ScriptFormula(10)); } } yield break; }
public override IEnumerable<TickTimer> Main() { StartCooldown(EvalTag(PowerKeys.CooldownTime)); UsePrimaryResource(EvalTag(PowerKeys.ResourceCost)); // dashing strike never specifies the target's id so we just search for the closest target Target = GetEnemiesInRadius(TargetPosition, ScriptFormula(0)).GetClosestTo(TargetPosition); if (Target != null) { // put dash destination just beyond target TargetPosition = PowerMath.TranslateDirection2D(User.Position, Target.Position, Target.Position, ScriptFormula(2)); } else { // if no target, always dash fixed amount TargetPosition = PowerMath.TranslateDirection2D(User.Position, TargetPosition, User.Position, ScriptFormula(7)); } var dashBuff = new DashMoverBuff(TargetPosition); AddBuff(User, dashBuff); yield return dashBuff.Timeout; if (Target != null && Target.World != null) // target could've died or left world { User.TranslateFacing(Target.Position, true); yield return WaitSeconds(0.1f); User.PlayEffectGroup(113720); WeaponDamage(Target, ScriptFormula(1), DamageType.Physical); if (Rune_E > 0) { if (Rand.NextDouble() < ScriptFormula(32)) { AddBuff(Target, new DebuffStunned(WaitSeconds(ScriptFormula(33)))); } } } if (Rune_C > 0) { //Dodge Chance Buff } if (Rune_B > 0) { //Movement Speed Buff } }
public override IEnumerable<TickTimer> Main() { //UsePrimaryResource(15f); // dashing strike never specifies the target's id so we just search for the closest target Target = GetEnemiesInRadius(TargetPosition, 8f).GetClosestTo(TargetPosition); if (Target != null) { // put dash destination just beyond target TargetPosition = PowerMath.TranslateDirection2D(User.Position, Target.Position, Target.Position, 7f); } else { // if no target, always dash fixed amount TargetPosition = PowerMath.TranslateDirection2D(User.Position, TargetPosition, User.Position, 13f); } var dashBuff = new DashMoverBuff(TargetPosition); AddBuff(User, dashBuff); yield return dashBuff.Timeout; if (Target != null && Target.World != null) // target could've died or left world { User.TranslateFacing(Target.Position, true); yield return WaitSeconds(0.1f); User.PlayEffectGroup(113720); WeaponDamage(Target, 1.60f, DamageType.Physical); } }
public override IEnumerable<TickTimer> Main() { Target = GetEnemiesInRadius(TargetPosition, 12f).GetClosestTo(TargetPosition); if (Target != null) { // put dash destination just beyond target TargetPosition = PowerMath.TranslateDirection2D(User.Position, Target.Position, Target.Position, 5f); } else { // if no target, always dash fixed amount TargetPosition = PowerMath.TranslateDirection2D(User.Position, TargetPosition, TargetPosition, 0f); } var dashBuff = new DashMoverBuff(TargetPosition); AddBuff(User, dashBuff); yield return dashBuff.Timeout; if (Target != null && Target.World != null) // target could've died or left world { User.TranslateFacing(Target.Position, true); yield return WaitSeconds(0.1f); User.PlayEffectGroup(166194); } }