public override void Cast() { if (Cooldown <= TimeSpan.Zero) { Execute(); } else if (Being.SkillPoints(SkillType.Rewind) > 0 && !Rewound) { if (LastLevel != Level.CurrentLevel || Level.TimeIntoLevel.TotalMilliseconds - LastDashMilliseconds < Being.SkillValue(SkillType.Rewind, false) * 1000) { Being.X = LastPosition.X; Being.Y = LastPosition.Y; Rewound = true; } } }
public static void AddBuff(this Being being, BuffTypes type) { switch (type) { case BuffTypes.Dash: being.Buffs.Add(new DashBuff(being, AbilityConstants.DashBonus * (1 + ((Zerd)being).Player.AbilityUpgrades[AbilityUpgradeType.DashDistance] / 100f))); return; case BuffTypes.Sprint: being.Buffs.Add(new SprintBuff(being, ((Zerd)being).BootItem.SprintBonus)); return; case BuffTypes.BlazingSpeed: if (being.SkillPoints(SkillType.BlazingSpeed) > 0) { being.Buffs.Add(new BlazingSpeedBuff(being as Zerd, TimeSpan.FromSeconds(PlayerSkills.BlazingSpeedSeconds), being.BaseSpeed * being.SkillValue(SkillType.BlazingSpeed, false) / 100f)); } return; } throw new Exception("Unhandled buff"); }