Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
 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);
 }
Esempio n. 5
0
        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());
        }
Esempio n. 6
0
        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());
        }
Esempio n. 7
0
        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());
        }
Esempio n. 8
0
        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());
        }
Esempio n. 9
0
 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;
         }
     }
 }
Esempio n. 10
0
 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);
 }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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");
        }
Esempio n. 13
0
 public RageBuff(Being being, TimeSpan length) : base(null, being, length, true)
 {
     CritChanceFactor = being.SkillValue(SkillType.Rage, false) / 100;
 }