private bool MakeMissile() { var damage = AbilityConstants.DragonBreathDamage * Being.SkillValue(SkillType.FireMastery, true); Globals.GameState.Missiles.Add(new DragonBreathMissile(Being as Zerd, new DamageInstance(null, damage, DamageTypes.Fire, Being, AbilityTypes.DragonsBreath), Being.Position)); return(true); }
protected override bool Execute() { var knockback = new GameObjects.Knockback(Being.Facing, AbilityConstants.LavaBlastKnockbackLength, AbilityConstants.LavaBlastKnockback); var damage = AbilityConstants.LavaBlastDamage * Being.SkillValue(SkillType.FireMastery, true); Globals.GameState.Missiles.Add(new LavaBlastMissile(Being as Zerd, new GameObjects.DamageInstance(knockback, damage, DamageTypes.Fire, Being, AbilityTypes.LavaBlast), Being.Position)); Being.AddBuff(BuffTypes.BlazingSpeed); return(base.Execute()); }
public override void ReleaseCharge() { var knockback = new GameObjects.Knockback(Being.Facing, AbilityConstants.WandKnockbackLength, AbilityConstants.WandKnockback); var damage = AbilityConstants.WandDamage * Being.SkillValue(SkillType.ImprovedWand, true); Globals.GameState.Missiles.Add(new WandMissile(Being, new GameObjects.DamageInstance(knockback, damage, DamageTypes.Magic, Being, AbilityTypes.Wand), Being.Position)); }
protected override bool Execute() { LastDashMilliseconds = (float)Level.TimeIntoLevel.TotalMilliseconds; LastLevel = Level.CurrentLevel; LastPosition = new Vector2(Being.Position.X, Being.Position.Y); Rewound = false; Being.AddBuff(BuffTypes.Dash); Cooldown = TimeSpan.FromSeconds(FullCooldown.TotalSeconds - Being.SkillValue(SkillType.Dancer, false)); return(true); }
protected override bool Execute() { var knockback = new GameObjects.Knockback(Being.Facing, AbilityConstants.WandKnockbackLength, AbilityConstants.WandKnockback); var damage = AbilityConstants.WandDamage * Being.SkillValue(SkillType.ImprovedWand, true); Globals.GameState.Missiles.Add(new WandMissile(Being, new GameObjects.DamageInstance(knockback, damage, DamageTypes.Magic, Being, AbilityTypes.Wand), Being.Position)); return(base.Execute()); }
protected override bool Execute() { var knockback = new Knockback(Being.Facing, AbilityConstants.IceballKnockbackLength, AbilityConstants.IceballKnockback); var damage = AbilityConstants.IceballDamage * Being.SkillValue(SkillType.ImprovedIceball, true); Globals.GameState.Missiles.Add(new IceballMissile((Zerd)Being, new DamageInstance(knockback, damage, DamageTypes.Frost, Being, AbilityTypes.Iceball), Being.Position)); // replenish mana based on bonuses Being.Mana += AbilityConstants.IceballManaCost * ((Being.SkillValue(SkillType.FrozenSoul, false) + Being.AbilityValue(AbilityUpgradeType.IceballMana)) / 100f); return(base.Execute()); }
protected override bool Execute() { var damage = new DamageInstance(null, AbilityConstants.FrostPoundDamage, DamageTypes.Frost, Being, AbilityTypes.FrostPound); foreach (var enemy in Being.Enemies().Where(e => e.Position.DistanceBetween(Being.Position) < AbilityConstants.FrostPoundRange)) { damage.DamageBeing(enemy); enemy.Buffs.Add(new FrozenBuff(enemy, AbilityConstants.FrostPoundFrozenLength)); } // replenish mana based on bonuses Being.Mana += AbilityConstants.FrostPoundManaCost * (Being.SkillValue(SkillType.FrozenSoul, false) / 100f); return(base.Execute()); }
protected override bool Execute() { var knockback = new Knockback(Being.Facing, AbilityConstants.FireballKnockbackLength, AbilityConstants.FireballKnockback); var damage = AbilityConstants.FireballDamage * Being.SkillValue(SkillType.ImprovedFireball, true) * Being.SkillValue(SkillType.FireMastery, true) * Being.AbilityValue(AbilityUpgradeType.FireballDamage, true); Globals.GameState.Missiles.Add(new FireballMissile(Being as Zerd, new DamageInstance(knockback, damage, DamageTypes.Fire, Being, AbilityTypes.Fireball), Being.Position)); // replenish mana based on bonuses Being.Mana += AbilityConstants.FireballManaCost * (Being.AbilityValue(AbilityUpgradeType.FireballMana) / 100f); Being.AddBuff(BuffTypes.BlazingSpeed); return(base.Execute()); }
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 override void Cast() { if (Cooldown > TimeSpan.Zero || Being.Mana < ManaCost) { return; } if (Being.GetCurrentAnimation().Name != AnimationTypes.Move && Being.GetCurrentAnimation().Name != AnimationTypes.Stand) { return; } Globals.GameState.Missiles.Add(new IcicleMissile((Zerd)Being, new DamageInstance(null, AbilityConstants.IcicleDamage, DamageTypes.Frost, Being, AbilityTypes.Iceball), Being.Position, 0)); Globals.GameState.Missiles.Add(new IcicleMissile((Zerd)Being, new DamageInstance(null, AbilityConstants.IcicleDamage, DamageTypes.Frost, Being, AbilityTypes.Iceball), Being.Position, 1)); Globals.GameState.Missiles.Add(new IcicleMissile((Zerd)Being, new DamageInstance(null, AbilityConstants.IcicleDamage, DamageTypes.Frost, Being, AbilityTypes.Iceball), Being.Position, 2)); Globals.GameState.Missiles.Add(new IcicleMissile((Zerd)Being, new DamageInstance(null, AbilityConstants.IcicleDamage, DamageTypes.Frost, Being, AbilityTypes.Iceball), Being.Position, 3)); Globals.GameState.Missiles.Add(new IcicleMissile((Zerd)Being, new DamageInstance(null, AbilityConstants.IcicleDamage, DamageTypes.Frost, Being, AbilityTypes.Iceball), Being.Position, 4)); Globals.GameState.Missiles.Add(new IcicleMissile((Zerd)Being, new DamageInstance(null, AbilityConstants.IcicleDamage, DamageTypes.Frost, Being, AbilityTypes.Iceball), Being.Position, 5)); Globals.GameState.Missiles.Add(new IcicleMissile((Zerd)Being, new DamageInstance(null, AbilityConstants.IcicleDamage, DamageTypes.Frost, Being, AbilityTypes.Iceball), Being.Position, 6)); Globals.GameState.Missiles.Add(new IcicleMissile((Zerd)Being, new DamageInstance(null, AbilityConstants.IcicleDamage, DamageTypes.Frost, Being, AbilityTypes.Iceball), Being.Position, 7)); Execute(); // replenish mana based on bonuses Being.Mana += AbilityConstants.IcicleManaCost * (Being.SkillValue(SkillType.FrozenSoul, false) / 100f); }
public WandMissile(Being being, DamageInstance damageInstance, Point p) : base("Missiles/orbs.png") { Damage = damageInstance; Width = 32; Height = 32; X = p.X; Y = p.Y; Origin = p; Creator = being; Distance = AbilityConstants.WandDistance * being.SkillValue(SkillType.ImprovedWand, true); Speed = AbilityConstants.WandSpeed; Velocity = Creator.Facing.Normalized(); Animations = new AnimationList(); var spawnAnimation = new Animation(AnimationTypes.Spawn); spawnAnimation.AddFrame(new Rectangle(32 * 3, 0, 32, 32), TimeSpan.FromSeconds(0.15)); spawnAnimation.AddFrame(new Rectangle(32 * 4, 0, 32, 32), TimeSpan.FromSeconds(0.15)); spawnAnimation.AddFrame(new Rectangle(32 * 5, 0, 32, 32), TimeSpan.FromSeconds(0.15), SpawnedFunc); Animations.Add(spawnAnimation); var moveAnimation = new Animation(AnimationTypes.Move); moveAnimation.AddFrame(new Rectangle(32 * 0, 0, 32, 32), TimeSpan.FromSeconds(0.15)); moveAnimation.AddFrame(new Rectangle(32 * 1, 0, 32, 32), TimeSpan.FromSeconds(0.15)); moveAnimation.AddFrame(new Rectangle(32 * 2, 0, 32, 32), TimeSpan.FromSeconds(0.15)); moveAnimation.AddFrame(new Rectangle(32 * 1, 0, 32, 32), TimeSpan.FromSeconds(0.15)); Animations.Add(moveAnimation); var dieAnimation = new Animation(AnimationTypes.Death); dieAnimation.AddFrame(new Rectangle(32 * 5, 0, 32, 32), TimeSpan.FromSeconds(0.07)); dieAnimation.AddFrame(new Rectangle(32 * 4, 0, 32, 32), TimeSpan.FromSeconds(0.07)); dieAnimation.AddFrame(new Rectangle(32 * 3, 0, 32, 32), TimeSpan.FromSeconds(0.07)); dieAnimation.AddFrame(new Rectangle(32 * 3, 0, 32, 32), TimeSpan.FromSeconds(0.07), DeathFunc); Animations.Add(dieAnimation); }
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"); }
public RageBuff(Being being, TimeSpan length) : base(null, being, length, true) { CritChanceFactor = being.SkillValue(SkillType.Rage, false) / 100; }