Inheritance: Ability
        public override ISpell GenerateAttack()
        {
            int damage     = this.Unit.AttackPoints;
            int energyCost = 0;

            if (this.Unit.HealthPoints <= 80)
            {
                damage += (this.Unit.HealthPoints * 2);
            }

            if (this.Unit.HealthPoints > 50)
            {
                energyCost = 15;
            }

            ISpell spell = new Cleave(damage, energyCost);

            if (this.Unit.EnergyPoints < spell.EnergyCost)
            {
                throw new NotEnoughEnergyException(this.Unit.Name + " does not have enough energy to cast Cleave");
            }
            else
            {
                this.Unit.EnergyPoints -= spell.EnergyCost;
            }

            return(spell);
        }
Esempio n. 2
0
        /// <summary>
        /// Den här metoden sköter ability1
        /// </summary>
        /// <returns></returns>
        protected override Ability CastAbility1()
        {
            Ability ability = new Cleave(TextureBank.mageSpellList[6], pos, LastDirection, this);

            Ability1CooldownTimer = ability.coolDownTime;
            return(ability);
        }
Esempio n. 3
0
        public override ISpell GenerateAttack()
        {
            var attack = new Cleave();

            if (this.Unit.EnergyPoints >= attack.EnergyCost)
            {
                if (this.Unit.HealthPoints <= 80)
                {
                    attack.Damage = this.Unit.AttackPoints + (this.Unit.HealthPoints * 2);
                }
                else
                {
                    attack.Damage = this.Unit.AttackPoints;
                }

                if (this.Unit.HealthPoints > 50)
                {
                    this.Unit.EnergyPoints -= attack.EnergyCost;
                }

                return(attack);
            }

            throw new NotEnoughEnergyException(string.Format(GlobalMessages.NotEnoughEnergy, this.Unit.Name, attack));
        }
Esempio n. 4
0
        public Barbarian(Texture2D tex, Vector2 pos, int playerIndex, Controller controller) : base(tex, pos, playerIndex, controller)
        {
            HealthPoints    = ValueBank.BarbarianHealth;
            MaxHealthPoints = HealthPoints;

            Ability1 = new Cleave(TextureBank.mageSpellList[6], pos, LastDirection, this);
            Ability2 = new Slash(TextureBank.mageSpellList[1], pos, LastDirection, this);
            Ability3 = new Charge(tex, pos, new Vector2(0, 0), this, false);
        }
Esempio n. 5
0
 public Warrior()
 {
     heroTexture = Engine.Engine.GetTexture("Hero/WarriorSprite");
     Hero.loadSprite();
     visible  = true;
     heroRole = Classes.Warrior;
     inventory.addItem(new WarHammer(1, 1));
     baseHealth     = 300;
     healthPerLevel = 50;
     resetLevel();
     resetHealth();
     abilities[0] = new Cleave();
     abilities[1] = new WhirlwindSlash();
     Engine.Engine.Log(health.ToString());
 }
        public override ISpell GenerateAttack()
        {
            var attack = new Cleave(this.AttackDamage);

            if (this.Unit.HealthPoints > 50)
            {
                if (this.Unit.EnergyPoints < attack.EnergyCost)
                {
                    throw new NotEnoughEnergyException(string.Format(
                        GlobalMessages.NotEnoughEnergy,
                        this.Unit.Name, attack.GetType().Name));
                }

                this.Unit.EnergyPoints -= attack.EnergyCost;
            }

            return attack;
        }
        public override ISpell GenerateAttack()
        {
            int energyCost = new Cleave(0).EnergyCost;
            if (this.Unit.EnergyPoints > energyCost)
            {
                if (Unit.HealthPoints > DefaultWarriorFreeEnergyHealthThreshold)
                {
                    this.Unit.EnergyPoints -= energyCost;
                }
                if (this.Unit.HealthPoints > DefaultWarriorAddHealthToDamageThreshold)
                {
                    return new Cleave(this.Unit.AttackPoints);
                }
                return new Cleave(this.Unit.AttackPoints + 2 * this.Unit.HealthPoints);
            }

            throw new NotEnoughEnergyException(string.Format(GlobalMessages.NotEnoughEnergy, this.Unit.Name, "Cleave"));
        }
Esempio n. 8
0
        public override ISpell GenerateAttack()
        {
            var attack = new Cleave(this.AttackDamage);

            if (this.Unit.HealthPoints > 50)
            {
                if (this.Unit.EnergyPoints < attack.EnergyCost)
                {
                    throw new NotEnoughEnergyException(string.Format(
                                                           GlobalMessages.NotEnoughEnergy,
                                                           this.Unit.Name, attack.GetType().Name));
                }

                this.Unit.EnergyPoints -= attack.EnergyCost;
            }

            return(attack);
        }
Esempio n. 9
0
 public Brawler()
 {
     heroTexture = Engine.Engine.GetTexture("Hero/Brawler");
     Hero.loadSprite();
     heroRole            = Classes.Brawler;
     baseHealth          = 300;
     healthPerLevel      = 40;
     requiredBranchLevel = 30;
     resetLevel();
     resetHealth();
     Enemies.Enemy.UpdateTargets(this);
     Enemies.BossEnemy.UpdateBossTargets(this);
     abilities[0] = new Cleave();
     abilities[1] = new WhirlwindSlash();
     abilities[2] = new Slam();
     abilities[3] = new DoubleSlash();
     Engine.Engine.Log(health.ToString());
 }
Esempio n. 10
0
        public override ISpell GenerateAttack()
        {
            int damage = base.Unit.AttackPoints;

            if (base.Unit.HealthPoints <= 80)
            {
                damage += 2 * base.Unit.HealthPoints;
            }

            ISpell spell = new Cleave(damage);

            if (base.Unit.HealthPoints > 50)
            {
                base.TakeEnergy(spell);
            }

            return(new Cleave(damage));
        }
Esempio n. 11
0
 public Sentinel()
 {
     heroTexture = Engine.Engine.GetTexture("Hero/Sentinel");
     Hero.loadSprite();
     heroRole            = Classes.Sentinel;
     baseHealth          = 400;
     healthPerLevel      = 65;
     requiredBranchLevel = 30;
     resetLevel();
     resetHealth();
     abilities[0] = new Cleave();
     abilities[1] = new WhirlwindSlash();
     abilities[2] = new ShieldBlock();
     abilities[3] = new ShieldBash();
     Engine.Engine.Log(health.ToString());
     Enemies.Enemy.UpdateTargets(this);
     Enemies.BossEnemy.UpdateBossTargets(this);
 }
        public ISpell GenerateAttack()
        {
            var damage = this.Unit.AttackPoints;
            if (this.Unit.HealthPoints <= 80)
            {
                damage += this.Unit.HealthPoints * 2;
            }

            var cleave = new Cleave(damage);

            if (this.Unit.HealthPoints > 50)
            {
                Validator.HasEnoughEnergy(this.Unit, cleave);

                Unit.EnergyPoints -= cleave.EnergyCost;
            }

            return cleave;
        }
Esempio n. 13
0
 public Juggernaut()
 {
     heroTexture = Engine.Engine.GetTexture("Hero/Juggernaut");
     Hero.loadSprite();
     heroRole            = Classes.Juggernaut;
     baseHealth          = 500;
     healthPerLevel      = 75;
     requiredBranchLevel = int.MaxValue;
     resetLevel();
     resetHealth();
     abilities[0] = new Cleave();
     abilities[1] = new WhirlwindSlash();
     abilities[2] = new ShieldBlock();
     abilities[3] = new ShieldBash();
     abilities[4] = new Thornmail();
     abilities[5] = new DivineShield();
     Enemies.Enemy.UpdateTargets(this);
     Enemies.BossEnemy.UpdateBossTargets(this);
 }
Esempio n. 14
0
 public Berserker()
 {
     heroTexture = Engine.Engine.GetTexture("Hero/Berserker");
     Hero.loadSprite();
     heroRole            = Classes.Berserker;
     baseHealth          = 500;
     healthPerLevel      = 40;
     requiredBranchLevel = int.MaxValue;
     resetLevel();
     resetHealth();
     abilities[0] = new Cleave();
     abilities[1] = new WhirlwindSlash();
     abilities[2] = new Slam();
     abilities[3] = new DoubleSlash();
     abilities[4] = new Rage();
     abilities[5] = new Execute();
     Enemies.Enemy.UpdateTargets(this);
     Enemies.BossEnemy.UpdateBossTargets(this);
 }
        public override ISpell GenerateAttack()
        {
            var damage = this.Unit.AttackPoints;

            if (this.Unit.HealthPoints <= 80)
            {
                damage += 2 * this.Unit.HealthPoints;
            }

            var spell = new Cleave(damage);
            this.ValidateEnergyPoints(this.Unit, spell);

            if (this.Unit.HealthPoints > 50)
            {
                this.Unit.EnergyPoints -= spell.EnergyCost;
            }

            return spell;
        }
Esempio n. 16
0
        public override ISpell GenerateAttack()
        {
            ISpell currentSpell = new Cleave(this.SpellDamage);

            if (this.Unit.HealthPoints > AttackEnergyCostBreakPoint)
            {
                if (this.Unit.EnergyPoints < currentSpell.EnergyCost)
                {
                    throw new NotEnoughEnergyException(
                              string.Format(
                                  GlobalMessages.NotEnoughEnergy,
                                  this.Unit.Name,
                                  currentSpell.GetType().Name));
                }

                this.Unit.EnergyPoints -= currentSpell.EnergyCost;
            }

            return(currentSpell);
        }
Esempio n. 17
0
        public ISpell GenerateAttack()
        {
            var damage = this.Unit.AttackPoints;

            if (this.Unit.HealthPoints <= 80)
            {
                damage += this.Unit.HealthPoints * 2;
            }

            var cleave = new Cleave(damage);

            if (this.Unit.HealthPoints > 50)
            {
                Validator.HasEnoughEnergy(this.Unit, cleave);

                Unit.EnergyPoints -= cleave.EnergyCost;
            }

            return(cleave);
        }
Esempio n. 18
0
        public override ISpell GenerateAttack()
        {
            var damage = this.Unit.AttackPoints;

            if (this.Unit.HealthPoints <= 80)
            {
                damage += 2 * this.Unit.HealthPoints;
            }

            var spell = new Cleave(damage);

            this.ValidateEnergyPoints(this.Unit, spell);

            if (this.Unit.HealthPoints > 50)
            {
                this.Unit.EnergyPoints -= spell.EnergyCost;
            }

            return(spell);
        }
Esempio n. 19
0
        public override ISpell GenerateAttack()
        {
            /////Cleave damage: Equals the warrior's attack points.
            /////If the warrior's health is equal or below 80, his health * 2 is added to the damage.
            //// If the warrior's health is greater than 50, it costs him energy - otherwise it doesn't.
            var damage = this.Unit.AttackPoints;

            if (this.Unit.HealthPoints <= 80)
            {
                damage += 2 * this.Unit.HealthPoints;
            }

            var spell = new Cleave(damage);

            this.ValidateEnergyPoints(this.Unit, spell);
            if (this.Unit.HealthPoints > 50)
            {
                this.Unit.EnergyPoints -= spell.EnergyCost;
            }

            return(spell);
        }
Esempio n. 20
0
        public override ISpell GenerateAttack()
        {            
            int damage = this.Unit.AttackPoints;

            if (this.Unit.HealthPoints <= 80)
            {
                damage += this.Unit.HealthPoints * 2;
            }

            var cleave = new Cleave(damage);            

            bool costsEnergy = true;

            if (this.Unit.HealthPoints < 50)
            {
                costsEnergy = false;
            }

            if (costsEnergy)
            {
                if (this.Unit.EnergyPoints < cleave.EnergyCost)
                {
                    throw new NotEnoughEnergyException(string.Format(
                        GlobalMessages.NotEnoughEnergy,
                        this.Unit.Name,
                        cleave.GetType().Name
                    ));
                }

                this.Unit.EnergyPoints -= cleave.EnergyCost;

                return new Cleave(damage);
            }
            else
            {
                return new Cleave(damage, 0);
            }
        }
Esempio n. 21
0
        public override ISpell GenerateAttack()
        {
            int    damege = this.Unit.AttackPoints;
            ISpell spell  = null;

            if (this.Unit.HealthPoints <= 80)
            {
                spell = new Cleave((damege + (2 * this.Unit.HealthPoints)));
            }
            else
            {
                spell = new Cleave(damege);
            }
            if (this.Unit.HealthPoints > 50 && this.Unit.EnergyPoints >= spell.EnergyCost)
            {
                this.Unit.EnergyPoints -= spell.EnergyCost;
                return(spell);
            }
            else if (this.Unit.HealthPoints < 50)
            {
                return(spell);
            }
            throw new NotEnoughEnergyException(string.Format(Messages.NotEnoughEnergyException, this.Unit.Name, spell.GetType().Name));
        }
Esempio n. 22
0
    // Use this for initialization
    public void Awake()
    {
        DontDestroyOnLoad(transform.gameObject);

        EquipmentFactory = new equipmentFactory();

        if (Application.loadedLevelName == "setup")
        {
            previousScene = "setup";
            Application.LoadLevel("OverworldBaseCamp");
        }

        InfernalSpawn = (GameObject)Resources.Load("Enemy Prefabs/InfernalEnemy", typeof(GameObject));

        #region ability initialization
        Abilities = new Dictionary<string, Ability>();

        // Attack type, damage type, range, angle, cooldown, damagemod, resource cost

        #region player abilities

        #region spammed abilities

        Abilities["fireball"] = new Fireball(AttackType.PROJECTILE, DamageType.FIRE, 10.0f, 0.0f, 0.0f, 10.0f, 0f, "fireball", "Fireball", FireballExplosion);
        Abilities["shadowbolt"] = new Shadowbolt(AttackType.HONINGPROJECTILE, DamageType.SHADOW, 10.0f, 0.0f, 0.0f, 1.0f, 0f, "shadowbolt", "Shadowbolt", ShadowboltExplosion);
        Abilities["improvedshadowbolt"] = new ImprovedShadowbolt(AttackType.HONINGPROJECTILE, DamageType.SHADOW, 10.0f, 0.0f, 0.0f, 1.0f, 0f, "improvedshadowbolt", "Improved Shadowbolt", ShadowboltExplosion);
        Abilities["poisonbolt"] = new Poisonbolt(AttackType.HONINGPROJECTILE, DamageType.POISON, 10.0f, 0.0f, 0.0f, 10.0f, 0f, "poisonbolt", "poisonbolt", FireballExplosion);
        Abilities["bloodbolt"] = new Bloodbolt(AttackType.HONINGPROJECTILE, DamageType.PHYSICAL, 10.0f, 0.0f, 0.0f, 10.0f, 0f, "bloodbolt", "bloodbolt", FireballExplosion);
        Abilities["chaosbolt"] = new Chaosbolt(AttackType.HONINGPROJECTILE, DamageType.FIRE, 10.0f, 0.0f, 0.0f, 10.0f, 0f, "chaosbolt", "chaosbolt", ChaosboltExplosion);
        Abilities["chaosbarragebolt"] = new ChaosBarrageBolt(AttackType.HONINGPROJECTILE, DamageType.FIRE, 10.0f, 0.0f, 0.0f, 10.0f, 0f, "chaosbarragebolt", "chaosbarragebolt", ChaosboltExplosion);
        Abilities["icebolt"] = new IceBolt(AttackType.PROJECTILE, DamageType.WATER, 8f, 0f, 0.0f, 10.0f, 0f, "icebolt", "Ice Bolt", IceBoltParticles);
        Abilities["cleave"] = new Cleave(AttackType.MELEE, DamageType.PHYSICAL, 3.0f, 45.0f, 0.0f, 5.0f, 0f, "cleave", "Cleave", CleaveParticles);
        Abilities["arrow"] = new Arrow(AttackType.PROJECTILE, DamageType.PHYSICAL, 8.0f, 0.0f, 0.0f, 5.0f, 0f, "arrow", "Arrow", ArrowParticles);

        #endregion

        #region buff abilities

        Abilities["chaosbarrage"] = new ChaosBarrageAbility(AttackType.STATUS, DamageType.NONE, 10.0f, 0.0f, 0.0f, 0.0f, 0, "chaosbarrage", "Chaos Barrage", ChaosBarrageParticles);
        Abilities["fireballbarrage"] = new FireballBarrageAbility(AttackType.STATUS, DamageType.NONE, 10.0f, 0.0f, 30.0f, 0.0f, 100f, "fireballbarrage", "Fireball Barrage", FireballBarrageParticles);
        Abilities["rootability"] = new RootAbility(AttackType.STATUS, DamageType.NONE, 10.0f, 360.0f, 15.0f, 0.0f, 0f, "rootability", "Root Ability", null);

        #endregion

        Abilities["groundslam"] = new Hadouken(AttackType.PBAOE, DamageType.AIR, 5.0f, 360.0f, 10.0f, 10.0f, 25.0f, "groundslam", "Ground Slam", HadoukenParticles);
        Abilities["deathgrip"] = new Deathgrip(AttackType.PBAOE, DamageType.SHADOW, 5.0f, 360.0f, 0.0f, 15.0f, 25.0f, "deathgrip", "AoE Deathgrip", DeathgripParticles);
        Abilities["fusrodah"] = new Fusrodah(AttackType.PBAOE, DamageType.AIR, 5.0f, 45.0f, 5.0f, 10.0f, 20.0f, "fusrodah", "Fus Roh Dah", FusRoDahParticles);
        Abilities["flamestrike"] = new Flamestrike(AttackType.PBAOE, DamageType.FIRE, 5.0f, 360.0f, 5.0f, 1000.0f, 25.0f, "flamestrike", "Flamestrike", FlamestrikeParticles);
        Abilities["bladewaltz"] = new BladeWaltz(AttackType.PBAOE, DamageType.PHYSICAL, 5.0f, 360.0f, 30.0f, 0f, 50.0f, "bladewaltz", "Blade Waltz", BladeWaltzParticles);
        Abilities["erenwaltz"] = new ErenWaltz(AttackType.PBAOE, DamageType.PHYSICAL, 5.0f, 360.0f, 0.0f, 5.0f, 0f, "erenwaltz", "Eren Waltz", BladeWaltzParticles);
        Abilities["firemine"] = new FireMine(AttackType.PROJECTILE, DamageType.FIRE, 5.0f, 360.0f, 4.0f, 200.0f, 10f, "firemine", "Fire Mine", FiremineParticles);
        Abilities["GETOVERHERE"] = new GETOVERHERE(AttackType.PROJECTILE, DamageType.SHADOW, 4.0f, 0.0f, 0.0f, 0.1f, 10f, "GETOVERHERE", "Shadow Pull", GETOVERHEREParticles);
        Abilities["normalmine"] = new NormalMine(AttackType.PROJECTILE, DamageType.PHYSICAL, 5.0f, 360.0f, 4.0f, 1.0f, 10f, "normalmine", "Mine", MineParticles);
        Abilities["blinkstrike"] = new BlinkStrike(AttackType.PROJECTILE, DamageType.SHADOW, 4.0f, 1.0f, 0.0f, 5.0f, 10f, "blinkstrike", "Blink Strike", BlinkStrikeExplosion);
        Abilities["blink"] = new Blink(AttackType.GROUNDTARGET, DamageType.NONE, 5.0f, 0.0f, 7.0f, 0.0f, 25f, "blink", "Blink", BlinkParticles);
        Abilities["shockmine"] = new ShockMine(AttackType.PROJECTILE, DamageType.PHYSICAL, 7.0f, 360.0f, 3.0f, 30.0f, 5f, "shockmine", "Shock Mine", ShockMineProjectile);
        Abilities["aoefreeze"] = new AOEfreeze(AttackType.PBAOE, DamageType.WATER, 5.0f, 360f, 15f, 1f, 30f, "aoefreeze", "Flashfreeze", AOEFreezeParticles);
        Abilities["onhitnormal"] = new OnHitNormal(AttackType.MELEE, DamageType.PHYSICAL, 0.0f, 0.0f, 0.0f, 0.0f, 0f, "onhitnormal", "On Hit Normal", OnHitNormalParticles);
        Abilities["onhitsworddrop"] = new OnHitSwordDrop(AttackType.MELEE, DamageType.PHYSICAL, 0f, 0f, 0f, 0f, 0f, "onhitsworddrop", "Sword Drop OnHit", OnHitSwordDropObject);
        Abilities["fireballturret"] = new FireballTurret(AttackType.PROJECTILE, DamageType.NONE, 10.0f, 360.0f, 2.0f, 0.0f, 40f, "fireballturret", "Fireball Turret", FireballTurretParticles);
        Abilities["fireballturretfireball"] = new FireballTurretFireball(AttackType.PROJECTILE, DamageType.FIRE, 10.0f, 0.0f, 0.0f, 5.0f, 0f, "fireballturretfireball", "Fireball Turret Fireball", FireballExplosion);
        Abilities["frozenorb"] = new FrozenOrb(AttackType.PROJECTILE, DamageType.NONE, 5.0f, 360.0f, 8.0f, 0.0f, 30f, "frozenorb", "Frozen Orb", FrozenOrbParticles);
        Abilities["frozenorbicebolt"] = new IceBolt(AttackType.PROJECTILE, DamageType.WATER, 8f, 0f, 0.0f, 0f, 0f, "frozenorbicebolt", "Frozen Orb Ice Bolt", IceBoltParticles);
        Abilities["boomerangblade"] = new BoomerangBlade(AttackType.PROJECTILE, DamageType.PHYSICAL, 5f, 0f, 4.0f, 0f, 20f, "boomerangblade", "Boomerang Blade", BoomerangBladeExplosion);
        Abilities["boomerangbladereturn"] = new BoomerangBladeReturn(AttackType.HONINGPROJECTILE, DamageType.PHYSICAL, 0.0f, 0.0f, 0.0f, 0.0f, 0f, "boomerangbladereturn", "Boomerang Blade(returning)", BoomerangBladeExplosion);
        Abilities["axethrow"] = new AxeThrow(AttackType.PROJECTILE, DamageType.PHYSICAL, 5.0f, 0.0f, 2.0f, 0.0f, 3f, "axethrow", "Axe Throw", AxeThrowExplosion);
        Abilities["frostnova"] = new FrostNova(AttackType.PBAOE, DamageType.WATER, 7f, 360f, 20f, 0f, 60f, "frostnova", "Frost Nova", IceBoltParticles);
        Abilities["shieldbreaker"] = new ShieldBreaker(AttackType.PBAOE, DamageType.PHYSICAL, 10f, 15f, 0.0f, 5f, 20f, "shieldbreaker", "Shieldbreaker", ShieldBreakerParticles);
        Abilities["dropdasteel"] = new DropDaSteel(AttackType.STATUS, DamageType.NONE, 0f, 0f, 32f, 0f, 0f, "dropdasteel", "Drop Da Steel", dropdasteelparticles);

        Abilities["dervishdeathgrip"] = new Deathgrip(AttackType.PBAOE, DamageType.NONE, 3f, 360f, 0f, 0f, 0f, "dervishdeathgrip", "Dervish Deathgrip", DeathgripParticles);
        Abilities["infernalfireball"] = new InfernalFireball(AttackType.HONINGPROJECTILE, DamageType.FIRE, 5.0f, 360.0f, 5.0f, 30.0f, 0f, "infernalfireball", "Infernal Fireball", InfernalFireballExplosion);

        Abilities["whirlwind"] = new Whirlwind(AttackType.GROUNDTARGET, DamageType.PHYSICAL, 3.0f, 360.0f, 0.0f, 10.0f, 0f, "whirlwind", "Whirlwind", OnHitNormalParticles);
        Abilities["dervish"] = new Dervish(AttackType.GROUNDTARGET, DamageType.PHYSICAL, 5f, 360f, 0.0f, 10f, 100f, "dervish", "Dervish", OnHitNormalParticles);

        Abilities["bossinfernalfireball"] = new BossInfernalFireball(AttackType.HONINGPROJECTILE, DamageType.FIRE, 5.0f, 360.0f, 5.0f, 30.0f, 0f, "bossinfernalfireball", "Boss Infernal Fireball", BossInfernalFireballExplosion);

        //Abilities["healorb"] = new HealOrb(AttackType.PROJECTILE, DamageType.NONE, 5.0f, 360.0f, 0.0f, 0.0f, "healorb", "Heal Orb", HealOrbExplosion);

        Abilities["deathanddecay"] = new DeathAndDecay(AttackType.GROUNDTARGET, DamageType.SHADOW, 5.0f, 360.0f, 0.0f, 1.0f, 0f, "deathanddecay", "Death and Decay", DeathAndDecaySpawn);
        Abilities["shadowfury"] = new Shadowfury(AttackType.GROUNDTARGET, DamageType.SHADOW, 3.0f, 360.0f, 0.0f, 1.0f, 0f, "shadowfury", "Shadowfury", ShadowfurySpawn);
        Abilities["shadowtrap"] = new Shadowtrap(AttackType.GROUNDTARGET, DamageType.SHADOW, 3.0f, 360.0f, 0.0f, 0.0f, 0f, "shadowtrap", "Shadowtrap", ShadowtrapSpawn);

        #endregion

        #region enemy abilities

        Abilities["enemyfireball"] = new Fireball(AttackType.PROJECTILE, DamageType.FIRE, 10.0f, 0.0f, 4f, 10.0f, 0f, "enemyfireball", "Enemy Fireball", FireballExplosion);
        Abilities["enemycleaveslow"] = new Cleave(AttackType.MELEE, DamageType.PHYSICAL, 3.0f, 45.0f, 3.0f, 5.0f, 0f, "cleave", "Cleave", CleaveParticles);
        Abilities["enemycleavenormal"] = new Cleave(AttackType.MELEE, DamageType.PHYSICAL, 3.0f, 45.0f, 2f, 2.5f, 0f, "cleave", "Cleave", CleaveParticles);
        Abilities["enemycleavefast"] = new Cleave(AttackType.MELEE, DamageType.PHYSICAL, 3.0f, 45.0f, 1.0f, 1.0f, 0f, "cleave", "Cleave", CleaveParticles);
        Abilities["enemydeathgrip"] = new Deathgrip(AttackType.PBAOE, DamageType.SHADOW, 10.0f, 360.0f, 10.0f, 0.0f, 0.0f, "enemydeathgrip", "Enemy Deathgrip", DeathgripParticles);

        Abilities["bossfireball"] = new BossFireball(AttackType.PROJECTILE, DamageType.FIRE, 10.0f, 0.0f, 5.0f, 10.0f, 0f, "bossfireball", "Boss Fireball", BossInfernalFireballExplosion);

        Abilities["bossflamestrike"] = new BossFlamestrike(AttackType.PBAOE, DamageType.FIRE, 10.0f, 360.0f, 10.0f, 10.0f, 0.0f, "bossflamestrike", "Boss Flamestrike", BossFlamestrikeParticles);
        Abilities["enemywhirlwind"] = new Whirlwind(AttackType.GROUNDTARGET, DamageType.PHYSICAL, 3.0f, 360.0f, 8.0f, 5.0f, 0f, "enemywhirlwind", "Enemy Whirlwind", OnHitNormalParticles);

        #endregion
        #endregion
    }