Ejemplo n.º 1
0
 public void Setup(LZFighterAnimator fighter)
 {
     life       = fighter.fighter.GetComponent <Life>();
     combo      = fighter.fighter.GetComponent <Combo>();
     stun       = fighter.fighter.GetComponent <Stun>();
     guardBreak = fighter.fighter.GetComponent <GuardBreak>();
 }
Ejemplo n.º 2
0
    private void OnTriggerEnter(Collider other)
    {
        Debug.Log("Sword Hit!\nDamage: " + damage + ". slowAmount: " + slowAmount + ". duration: " + duration + ". element: " + element + ".\nTag: " + other.tag);

        if (other.CompareTag("Player"))
        {
            BuffHandler playerBuffHandler = other.GetComponent <BuffHandler>();
            StatHandler statHandler       = other.GetComponent <StatHandler>();
            Buff        debuff;

            switch (element)
            {
            case ElementEnum.fire:

                debuff = new Burn(statHandler, new Stat(duration), damage);
                playerBuffHandler.AddBuff(debuff);
                break;

            case ElementEnum.ice:
                debuff = new Slow(statHandler, new Stat(duration), new ScalingStatModificator(slowAmount));
                statHandler.TakeDamage(damage);
                playerBuffHandler.AddBuff(debuff);
                break;

            case ElementEnum.lightning:
                debuff = new Stun(statHandler, new Stat(duration));
                statHandler.TakeDamage(damage);
                playerBuffHandler.AddBuff(debuff);
                break;
            }
        }
    }
Ejemplo n.º 3
0
    public override bool ActivateAbility(GameObject target)
    {
        if (remaining_cooldown <= 0.001f)
        {
            //activate the ability here

            //play the bonk sound

            BonkSound.Play();

            //apply a stun to the target
            enemy_controller    enemy;
            unit_control_script unit;
            if ((enemy = target.GetComponent <enemy_controller>()) != null)
            {
                Stun stun = GameObject.Instantiate(new GameObject()).AddComponent <Stun>();
                stun.SetDuration(stun_duration);
                stun.SetOwner(target);

                //face the owner towards the enemy
                unit_control_handle.FaceTowardsTarget(target.transform.position);
                //damage the enemy
                enemy.MagicDamage(damage, unit_control_handle);
            }



            remaining_cooldown = cooldown;
        }
        return(true);
    }
Ejemplo n.º 4
0
    void IncreaseStun()
    {
        if (BC.MonsterIsAnimating)
        {
            return;
        }

        //this will prevent speed increasing when pause menu is open, end of game, or user's turn
        if (BC.PauseGame || userController.IsUsersTurn || (BC.BattleState == BattleController.State.ENDCONDITION) || (BC.BattleState == BattleController.State.BEGIN))
        {
            return;
        }

        if (stunCounter >= BC.Threshold)
        {
            //remove stun component
            Stun stunComponent = GetComponent <Stun>();
            if (stunComponent != null)
            {
                stunComponent.Check();
                //reset speed and continue this process until the stun component changes this monsters status back to its originalState
                stunCounter = 0;
            }
            else
            {
                Debug.Log("IncreaseStun() was likely triggered but no stun component found for " + this.gameObject);
            }
        }
        else
        {
            stunCounter += baseSpeed * Time.deltaTime;
        }
    }
Ejemplo n.º 5
0
 private void Awake()
 {
     _combatSystem = GetComponentInChildren <CombatSystem>();
     _animator     = GetComponent <Animator>();
     _rigidbody    = GetComponent <Rigidbody>();
     _stun         = GetComponentInChildren <Stun>();
 }
Ejemplo n.º 6
0
        public override void DoNextAction(GameContext gameContext)
        {
            IAction action = null;

            if (Buster.StunAvailableIn <= 0 && gameContext.OppositeBusters.Any())
            {
                var a = gameContext.OppositeBusters.OrderBy(b => b.Position.GetDist(Buster.Position)).First();
                if (a.Position.GetDist(Buster.Position) < 1760)
                {
                    action = new Stun(a);
                    Buster.StunAvailableIn = 20;
                }
                else
                {
                    action = new Move(a.Position);
                }
            }
            else
            {
                Buster.CurrentState = new EmptyState(Buster);
                Buster.CurrentState.DoNextAction(gameContext);
                return;
            }
            action.Do();
        }
Ejemplo n.º 7
0
        public override void DoNextAction(GameContext gameContext)
        {
            IAction action = null;

            if (Buster.StunAvailableIn <= 0)
            {
                var a = gameContext.OppositeBusters.FirstOrDefault(b => b.Position.GetDist(Buster.Position) < 1760);
                if (a != null)
                {
                    action = new Stun(a);
                    Buster.StunAvailableIn = 20;
                }
            }
            if (action == null)
            {
                if (Buster.Position.GetDist(gameContext.GetQG()) < 1600)
                {
                    gameContext.Score++;
                    action = new Release();
                }
                else
                {
                    action = new Move(gameContext.GetQG());
                }
            }
            action.Do();
        }
Ejemplo n.º 8
0
 public StunEffect(int duration)
 {
     this.duration = duration;
     effectType    = StatusEffectType.CONDITION;
     action        = new Stun(null);
     dir           = Direction.NONE;
 }
Ejemplo n.º 9
0
    private void Awake()
    {
        ghostState      = new StateMachine();
        ghostIdleState  = new Idle(ghostAnimator, idleAnimation);
        ghostStuntState = new Stun(ghostAnimator, stunAnimation, returnStunMethod);

        box = GetComponent <BoxCollider2D>();
        sr  = GetComponent <SpriteRenderer>();

        switch (element)
        {
        case Element.Fire:
            sr.color = Color.red;
            break;

        case Element.Ice:
            sr.color = Color.cyan;
            break;

        case Element.Water:
            sr.color = Color.blue;
            break;

        default:
            break;
        }
    }
Ejemplo n.º 10
0
 // Start is called before the first frame update
 void Start()
 {
     personnage = GameObject.Find("Personnage");
     perso      = GameObject.Find("Personnage").GetComponent <Stun>();
     stun       = false;
     calcMov    = GetComponent <CalculateMove>();
     stunRange  = perso.stunRange;
 }
Ejemplo n.º 11
0
 public void copyFrom(Stun original)
 {
     this.creator           = original.creator;
     this.timeMultiplier    = original.timeMultiplier;
     this.damagePerSecond   = original.damagePerSecond;
     this.ammoDrainedPerSec = original.ammoDrainedPerSec;
     this.duration          = original.duration;
 }
Ejemplo n.º 12
0
        // Adds the given items and returns the resultant Weapon
        public WeaponStats WithAugments(IEnumerable <WeaponAugmentTemplate> augments)
        {
            // Add up all the Stats of all the items
            WeaponAugmentTemplate overallAugment = this.BaseStats;

            foreach (WeaponAugmentTemplate augment in augments)
            {
                overallAugment = overallAugment.Plus(augment);
            }

            // Now do some last computations on the totals (like converting from rates to times)
            WeaponStats weapon = new WeaponStats();

            // Attributes about when you may fire
            weapon.OwnersVelocityScale = 1;
            weapon.MaxAmmo             = overallAugment.MaxAmmo;
            weapon.WarmupTime          = 1 / overallAugment.WarmupRate;
            weapon.CooldownTime        = 1 / overallAugment.CooldownRate;

            // Attributes of the projectile it launches, to determine when it hits
            Projectile templateProjectile = new Projectile();

            templateProjectile.setVelocity(new double[] { 100, 0 });
            templateProjectile.setRemainingFlightTime(overallAugment.FlightDuration);
            templateProjectile.setPenetration(0.5);
            templateProjectile.setNumExplosionsRemaining(overallAugment.MaxNumExplosions);
            templateProjectile.setHomingAccel(overallAugment.HomingAccel);
            templateProjectile.enableHomingOnCharacters(true);
            templateProjectile.enableHomingOnProjectiles(true);
            templateProjectile.setBoomerangAccel(0);
            templateProjectile.setShape(new GameCircle(10));
            templateProjectile.setBitmap(this.ProjectileBitmap);

            weapon.TemplateProjectile = templateProjectile;

            // Attributes of the explosion it creates, to determine what happens in the area it hits
            Explosion templateExplosion = new Explosion();

            templateExplosion.setDuration(overallAugment.ExplosionDuration);
            templateExplosion.setFriendlyFireEnabled(false);
            templateExplosion.setKnockbackAccel(0);
            templateExplosion.setShape(new GameCircle(overallAugment.ExplosionRadius));
            templateExplosion.setBitmap(this.ExplosionBitmap);

            templateProjectile.setTemplateExplosion(templateExplosion);

            // Attributes of the stun that gets applied to characters caught in the explosion
            Stun templateStun = new Stun();

            templateStun.setTimeMultiplier(1.0 / (overallAugment.TimestopWeight + 1));
            templateStun.setDamagePerSecond(overallAugment.StunDamagePerSecond);
            templateStun.setAmmoDrain(0);
            templateStun.setDuration(overallAugment.StunDuration);

            templateExplosion.setTemplateStun(templateStun);

            return(weapon);
        }
        // update the attributes of the current weapon based on the text fields
        void updateCurrentWeapon()
        {
            templateWeapon = new Weapon();
            // attributes of the weapon
            templateWeapon.setMaxAmmo(parseDouble(maxAmmo));
            templateWeapon.refillAmmo();
            templateWeapon.setAmmoRechargeRate(parseDouble(ammoRechargeRate));
            templateWeapon.setAmmoPerBox(parseDouble(ammoPerBox));
            templateWeapon.setWarmupTime(parseDouble(warmupTime));
            templateWeapon.setCooldownTime(parseDouble(cooldownTime));
#if SWITCH_TIMES
            templateWeapon.setSwitchToTime(parseDouble(switchToTime));
            templateWeapon.setSwitchFromTime(parseDouble(switchFromTime));
#endif
            templateWeapon.setAutomatic(automatic.IsChecked.Value);
            templateWeapon.setTriggerSticky(stickyTrigger.IsChecked.Value);
            templateWeapon.setOwnersVelocityScale(parseDouble(ownersVelocityScale));
            templateWeapon.enableFiringWhileInactive(fireWhileInactive.IsChecked.Value);
            templateWeapon.enableCooldownWhileInactive(cooldownWhileInactive.IsChecked.Value);
            templateWeapon.enableRechargeWhileInactive(rechargeWhileInactive.IsChecked.Value);

            Projectile templateProjectile = new Projectile();
            double[]   tempVector         = new double[2];
            tempVector[0] = parseDouble(projectileX);
            tempVector[1] = parseDouble(projectileY);
            templateProjectile.setCenter(tempVector);
            tempVector[0] = parseDouble(projectileVX);
            tempVector[1] = parseDouble(projectileVY);
            templateProjectile.setVelocity(tempVector);
            templateProjectile.setDragCoefficient(parseDouble(projectileDrag));
            templateProjectile.setGravity(parseDouble(projectileGravity));
            templateProjectile.setBitmap(ImageLoader.loadImage(projectileImage.Text));
            templateProjectile.setShape(new GameCircle(parseDouble(projectileRadius)));
            templateProjectile.setRemainingFlightTime(parseDouble(remainingFlightTime));
            templateProjectile.setNumExplosionsRemaining(parseInt(numExplosionsRemaining));
            templateProjectile.setPenetration(parseDouble(penetration));
            templateProjectile.setHomingAccel(parseDouble(homingAccel));
            templateProjectile.setBoomerangAccel(parseDouble(boomerangAccel));
            templateProjectile.enableHomingOnProjectiles(homeOnProjectiles.IsChecked.Value);
            templateProjectile.enableHomingOnCharacters(homeOnCharacters.IsChecked.Value);
            templateWeapon.setTemplateProjectile(templateProjectile);

            Explosion templateExplosion = new Explosion();
            templateExplosion.setBitmap(ImageLoader.loadImage(explosionImage.Text));
            templateExplosion.setShape(new GameCircle(parseDouble(explosionRadius)));
            templateExplosion.setDuration(parseDouble(explosionDuration));
            templateExplosion.setFriendlyFireEnabled(friendlyFire.IsChecked.Value);
            templateExplosion.setKnockbackAccel(parseDouble(knockBack));
            templateProjectile.setTemplateExplosion(templateExplosion);

            Stun templateStun = new Stun();
            templateStun.setTimeMultiplier(parseDouble(timeMultiplier));
            templateStun.setDamagePerSecond(parseDouble(damagePerSecond));
            templateStun.setAmmoDrain(parseDouble(ammoDrain));
            templateStun.setDuration(parseDouble(stunDuration));
            templateExplosion.setTemplateStun(templateStun);
        }
Ejemplo n.º 14
0
        public override void DoNextAction(GameContext gameContext)
        {
            var     comment = "";
            IAction action  = null;

            if (Buster.StunAvailableIn <= 0)
            {
                var a = gameContext.OppositeBusters.FirstOrDefault(b => b.Position.GetDist(Buster.Position) < 1760);
                if (a != null && a.StunFor < 3)
                {
                    action = new Stun(a);
                    Buster.StunAvailableIn = 20;
                }
            }
            if (action == null && gameContext.Ghosts.Any(g => g.Position.GetDist(Buster.Position) < 2200))
            {
                comment = "ghost to catch";
                Ghost target;
                if (Buster.GhostTarget != null && gameContext.Ghosts.Select(g => g.Id).Contains(Buster.GhostTarget.Id))
                {
                    target = Buster.GhostTarget;
                }
                else
                {
                    target = gameContext.Ghosts
                             .Where(g => g.Position.GetDist(Buster.Position) < 2200 && gameContext.MyBusters.Where(b => b.GhostTarget?.Id == g.Id).Count() <= g.Value)
                             .OrderBy(g => Buster.Position.GetDist(g.Position))
                             .FirstOrDefault();
                }
                Buster.GhostTarget = target;
                if (target != null)
                {
                    var dist = Buster.Position.GetDist(target.Position);
                    if (dist < 1760 && dist > 900)
                    {
                        action = new Bust(target.Id);
                    }
                    else
                    {
                        if (dist < 900)
                        {
                            action = new Move(target.Position.X + 50, target.Position.Y);
                        }
                        else
                        {
                            action = new Move(target.Position);
                        }
                    }
                }
            }
            if (action == null)
            {
                comment = "no ghost";
                action  = new RandomMove();
            }
            action.Do(comment);
        }
        void updateFieldsFromWeapon()
        {
            // attributes of the weapon
            maxAmmo.Text          = templateWeapon.getMaxAmmo().ToString();
            ammoRechargeRate.Text = templateWeapon.getAmmoRechargeRate().ToString();
            ammoPerBox.Text       = templateWeapon.getAmmoPerBox().ToString();
            warmupTime.Text       = templateWeapon.getWarmupTime().ToString();
            cooldownTime.Text     = templateWeapon.getCooldownTime().ToString();
#if SWITCH_TIMES
            switchToTime.Text   = templateWeapon.getSwitchToTime().ToString();
            switchFromTime.Text = templateWeapon.getSwitchFromTime().ToString();
#endif
            automatic.IsChecked             = templateWeapon.isAutomatic();
            stickyTrigger.IsChecked         = templateWeapon.isTriggerSticky();
            ownersVelocityScale.Text        = templateWeapon.getOwnersVelocityScale().ToString();
            fireWhileInactive.IsChecked     = templateWeapon.canFireWhileInactive();
            cooldownWhileInactive.IsChecked = templateWeapon.coolsDownWhileInactive();
            rechargeWhileInactive.IsChecked = templateWeapon.rechargesWhileInactive();

            // attributes of the projectile
            Projectile templateProjectile = templateWeapon.getTemplateProjectile();
            projectileX.Text            = templateProjectile.getCenter()[0].ToString();
            projectileY.Text            = templateProjectile.getCenter()[1].ToString();
            projectileVX.Text           = templateProjectile.getVelocity()[0].ToString();
            projectileVY.Text           = templateProjectile.getVelocity()[1].ToString();
            projectileDrag.Text         = templateProjectile.getDragCoefficient().ToString();
            projectileGravity.Text      = templateProjectile.getGravity().ToString();
            projectileImage.Text        = templateProjectile.getImage().Source.ToString();
            projectileRadius.Text       = ((templateProjectile.getShape().getWidth() + templateProjectile.getShape().getHeight()) / 4).ToString();
            remainingFlightTime.Text    = templateProjectile.getRemainingFlightTime().ToString();
            numExplosionsRemaining.Text = templateProjectile.getNumExplosionsRemaining().ToString();
            penetration.Text            = templateProjectile.getPenetration().ToString();
            homingAccel.Text            = templateProjectile.getHomingAccel().ToString();
            boomerangAccel.Text         = templateProjectile.getBoomerangAccel().ToString();
            homeOnProjectiles.IsChecked = templateProjectile.shouldHomeOnProjectiles();
            homeOnCharacters.IsChecked  = templateProjectile.shouldHomeOnCharacters();

            // attributes of the explosion
            Explosion templateExplosion = templateProjectile.getTemplateExplosion();
            explosionImage.Text    = templateExplosion.getImage().Source.ToString();
            explosionRadius.Text   = ((templateExplosion.getShape().getWidth() + templateExplosion.getShape().getHeight()) / 4).ToString();
            explosionDuration.Text = templateExplosion.getDuration().ToString();
            friendlyFire.IsChecked = templateExplosion.isFriendlyFireEnabled();
            knockBack.Text         = templateExplosion.getKnockbackAccel().ToString();

            // attributes of the stun
            Stun templateStun = templateExplosion.getTemplateStun();
            timeMultiplier.Text  = templateStun.getTimeMultiplier().ToString();
            damagePerSecond.Text = templateStun.getDamagePerSecond().ToString();
            ammoDrain.Text       = templateStun.getAmmoDrain().ToString();
            stunDuration.Text    = templateStun.getDuration().ToString();

            // now update anything else that might need it
            //this.calculateCost();
            this.weaponCost.Content = this.templateWeapon.getCost();
        }
Ejemplo n.º 16
0
    public void RunEffects()
    {
        map.selectedEnemy = this.name;
        GameObject effects = GameObject.Find("Effects");

        if (Burned)
        {
//			map.selectedEnemy = this.name;
//
            Burn burn = effects.GetComponent <Burn> ();
            burn.RunBurn();
        }
        if (Slowed)
        {
//			map.selectedEnemy = this.name;
//			GameObject Slow = GameObject.Find ("_Scripts");
            Slow slow = effects.GetComponent <Slow> ();
            slow.RunSlow();
        }
        if (Poisoned)
        {
//			map.selectedEnemy = this.name;
//			GameObject Poison = GameObject.Find ("_Scripts");
            Poison poison = effects.GetComponent <Poison> ();
            poison.RunPoison();
        }
        if (Bleeding)
        {
//			map.selectedEnemy = this.name;
//			GameObject Bleed = GameObject.Find ("_Scripts");
            Bleed bleed = effects.GetComponent <Bleed> ();
            bleed.RunBleed();
        }
        if (Stunned)
        {
//			map.selectedEnemy = this.name;
//			GameObject Stun = GameObject.Find ("_Scripts");
            Stun stun = effects.GetComponent <Stun> ();
            stun.RunStun();
        }
        if (Chilled)
        {
            Chill chill = effects.GetComponent <Chill> ();
            chill.RunChill();
        }
        if (Frozen)
        {
            Frozen frozen = effects.GetComponent <Frozen> ();
            frozen.RunFrozen();
        }
        if (Blinded)
        {
            Blind blind = effects.GetComponent <Blind> ();
            blind.RunBlind();
        }
    }
Ejemplo n.º 17
0
    void Awake()
    {
        // Assign references
        _enemy = GetComponent <Enemy>();
        Stun _stun = gameObject.AddComponent <Stun>();

        _stun.Duration = 0.4f;
        render         = GetComponent <Renderer>();
        audioSource    = GetComponent <AudioSource>();
    }
Ejemplo n.º 18
0
        public override void UseAbility(AbstractUnit unit)
        {
            base.UseAbility(unit);
            unit.RecieveDamage(getDmg(0));

            Stun s = new Stun(unit, 1, 90);

            s.TurnOn(host.MOD.apply_stun_chance, unit.MOD.ResistBleed);

            unit.buffs.Add(s);
        }
Ejemplo n.º 19
0
 void OnTriggerEnter(Collider other)
 {
     if (other.CompareTag("Enemy"))
     {
         Stun _stun = other.gameObject.AddComponent <Stun>();
         _stun.Duration = liftDuration;
         GameObject  tornado  = Instantiate(miniTornado, other.transform.position, Quaternion.identity) as GameObject;
         MiniTornado _tornado = tornado.GetComponent <MiniTornado>();
         _tornado.LiftDuration = liftDuration;
         _tornado.Damage       = 70 + bonusDamage;
         _tornado.Target       = other.gameObject;
     }
 }
Ejemplo n.º 20
0
    // When damaged, check cooldown for the next snap; If snappable, reset cooldown, do damage, adjust visuals/audio.
    void OnDamage()
    {
        if (currentTickCooldown <= 0)
        {
            Stun stun = gameObject.AddComponent <Stun>();
            stun.Duration       = 0.4f;
            currentTickCooldown = TickCooldown;
            _enemy.TakeDamage(tickDamage);

            render.sharedMaterial = snapMaterial;
            audioSource.PlayOneShot(coldSnapImpactSound, 1);
            print("Snapped!");
        }
    }
    void ApplyStun(Transform playerHit)
    {
        Stun playerHitStun = playerHit.GetComponent <Stun> ();

        if (playerHitStun != null)
        {
            playerHitStun.Refresh();
            playerHitStun.duration = 2;
        }
        else
        {
            Stun stun = playerHit.gameObject.AddComponent <Stun>();
            stun.duration = 2;
        }
    }
Ejemplo n.º 22
0
 void AddPlayerInformations()
 {
     foreach (PlayerController player in GameController.singleton.playerManager.playersControllers)
     {
         point.Add(player, 0);
         player.playerUI.points.text = point[player].ToString();
         Stun auxStun = new Stun();
         auxStun.canMove    = true;
         auxStun.timeInStun = 0;
         canMove.Add(player, auxStun);
         GameObject obj = GameObject.Instantiate(_basket1, new Vector3(player.transform.position.x, player.transform.position.y + 2.1f, player.transform.position.z), Quaternion.identity, player.transform).gameObject as GameObject;
         obj.GetComponent <Basket>().player = player;
         obj.GetComponent <Basket>().type   = 0;
     }
 }
Ejemplo n.º 23
0
    private void ShootCollisionCheck()
    {
        Vector2 direction = Vector2.right;

        if (GetComponent <Movement>())
        {
            if (GetComponent <Movement>().direction == Movement.Direction.Left)
            {
                direction = Vector2.left;
            }
        }
        RaycastHit2D hit = Physics2D.BoxCast(transform.position, Vector2.one, 0, direction, 200, _collision.collisionLayer);

        if (hit)
        {
            Damage damage = hit.collider.GetComponent <Damage>();
            Stun   stun   = hit.collider.GetComponent <Stun>();
            if (damage)
            {
                damage.ExecuteDamage(attack.GetDamageAmount(), null);
                Object blood = Instantiate(damage.bloodShoot, hit.point, Quaternion.identity);
                if (transform.localScale.x < 0)
                {
                    ((GameObject)blood).transform.Rotate(0, 180, 0);
                }
            }
            if (stun)
            {
                stun.GetStunned(stunAmount: 0.7f, power: Stun.Power.Shoot);
            }
            if (bulletSpark)
            {
                GameObject instance = Instantiate(bulletSpark);
                instance.transform.position = new Vector3(hit.point.x, hit.point.y, -35);
                if (transform.localScale.x > 0)
                {
                    Vector3 euler = instance.transform.localEulerAngles;
                    euler.y = 180;
                    instance.transform.localEulerAngles = euler;
                }
                if (!hit.collider.tag.Contains("Obstacle"))
                {
                    instance.transform.FindContainsInChildren("Wood").SetActive(false);
                }
            }
        }
    }
Ejemplo n.º 24
0
    private void OnCollisionEnter(Collision collision)
    {
        Physics.IgnoreLayerCollision(12, 8);

        GameObject other = collision.gameObject;

        if (other != null)
        {
            if (other.CompareTag("Player"))
            {
                BuffHandler playerBuffHandler = other.GetComponent <BuffHandler>();
                StatHandler statHandler       = other.GetComponent <StatHandler>();
                Buff        debuff;

                switch (element)
                {
                case ElementEnum.fire:
                    debuff = new Burn(statHandler, new Stat(duration), damage);
                    playerBuffHandler.AddBuff(debuff);
                    break;

                case ElementEnum.ice:
                    debuff = new Slow(statHandler, new Stat(duration), new ScalingStatModificator(slowAmount));
                    statHandler.TakeDamage(damage);
                    playerBuffHandler.AddBuff(debuff);
                    break;

                case ElementEnum.lightning:
                    debuff = new Stun(statHandler, new Stat(duration));
                    statHandler.TakeDamage(damage);
                    playerBuffHandler.AddBuff(debuff);
                    break;
                }
                Destroy(gameObject);
            }
            Destroy(gameObject);
        }
        else if (other.gameObject.CompareTag("Untagged"))
        {
            // Debug.Log("Projectile collide with ELSE: " + other.gameObject.name);
            Destroy(gameObject);
        }
        else
        {
            // Debug.Log("Projectile collide with: " + other.gameObject.name);
        }
    }
Ejemplo n.º 25
0
 public virtual void applyStun(Stun newStun)
 {
     // only process the stun if this object type cares about it
     if (this.stuns != null)
     {
         // figure out what created this stun
         Explosion source   = newStun.getCreator();
         Stun      previous = null;
         if (this.stuns.TryGetValue(source, out previous))
         {
             // if we were already stunned by this source then replace the previous stun
             previous = newStun;
         }
         else
         {
             // if we were not already stunned by this source then add this stun
             this.stuns.Add(source, newStun);
         }
     }
 }
Ejemplo n.º 26
0
 void InsertPlayerInDates()
 {
     cameras = new GameObject[players.Count];
     for (int i = 0; i < cameras.Length; i++)
     {
         cameras[i] = GameObject.Find("Camera_P" + (i + 1));
         //Debug.Log(cameras[i].gameObject.name);
     }
     for (int i = 0; i < players.Count; i++)
     {
         playerMortos.Add(players[i], false);
         PositionsLR auxLR = new PositionsLR();
         playerPosition.Add(players[i], auxLR);
         playerPosition[players[i]].left  = players[i].transform.position;
         playerPosition[players[i]].right = new Vector3(players[i].transform.position.x + 2f, players[i].transform.position.y, players[i].transform.position.z);
         Stun auxStun = new Stun();
         auxStun.canMove    = true;
         auxStun.timeInStun = 0;
         canMove.Add(players[i], auxStun);
     }
 }
Ejemplo n.º 27
0
        public override void DoNextAction(GameContext gameContext)
        {
            IAction action = null;

            if (Buster.StunAvailableIn <= 0 && gameContext.OppositeBusters.Any(b => b.State == 1))
            {
                var a = gameContext.OppositeBusters.Where(b => b.State == 1).OrderBy(b => b.Position.GetDist(Buster.Position)).First();
                if (a.Position.GetDist(Buster.Position) < 1760)
                {
                    action = new Stun(a);
                    Buster.StunAvailableIn = 20;
                }
                else
                {
                    action = new Move(a.Position);
                }
            }
            else
            {
                action = new Move(gameContext.GetOppositeQG());
            }
            action.Do("guard");
        }
Ejemplo n.º 28
0
    // This is called after collision checks are passed. Now we deal damage and stun the target
    public void interactWith(GameObject target, double numSeconds)
    {
        Stun newStun = new Stun(this.templateStun);
        // calculate stun duration
        double stunDuration = Math.Min(this.duration, numSeconds) + this.templateStun.getDuration();

        newStun.setDuration(stunDuration);
        // calculate stun acceleration
        double dx       = target.getCenter()[0] - this.getCenter()[0];
        double dy       = target.getCenter()[1] - this.getCenter()[1];
        double distance = Math.Sqrt(dx * dx + dy * dy);

        // prevent division by zero
        if (distance <= 0)
        {
            distance = 1;
        }
        double[] accel      = new double[2];
        double   accelScale = this.getKnockbackAccel() / distance;

        accel[0] = dx * accelScale;
        accel[1] = dy * accelScale;
        // error checking
        newStun.setAccel(accel);
        // apply the stun
        target.applyStun(newStun);
        Character myOwner = this.getOwner();

        if (myOwner != null)
        {
            myOwner.reinforce(1);
        }
        if (target.isACharacter())
        {
            ((Character)target).reinforce(-1);
        }
    }
Ejemplo n.º 29
0
        private void BabarianSkill_VisibleChanged(object sender, EventArgs e)
        {
            Bash.SetSkillPoints        = "0";
            Leap.SetSkillPoints        = "0";
            DoubleSwing.SetSkillPoints = "0";
            Stun.SetSkillPoints        = "0";
            DoubleThrow.SetSkillPoints = "0";
            LeapAtk.SetSkillPoints     = "0";
            ConRate.SetSkillPoints     = "0";
            Frengy.SetSkillPoints      = "0";
            WhellWind.SetSkillPoints   = "0";
            Berserk.SetSkillPoints     = "0";

            Bash.setTextBoxColor();
            Leap.setTextBoxColor();
            DoubleSwing.setTextBoxColor();
            Stun.setTextBoxColor();
            DoubleThrow.setTextBoxColor();
            LeapAtk.setTextBoxColor();
            ConRate.setTextBoxColor();
            Frengy.setTextBoxColor();
            WhellWind.setTextBoxColor();
            Berserk.setTextBoxColor();
        }
Ejemplo n.º 30
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            BuffHandler playerBuffHandler = other.GetComponent <BuffHandler>();
            StatHandler statHandler       = other.GetComponent <StatHandler>();
            Buff        debuff;



            switch (element)
            {
            case ElementEnum.fire:
                debuff = new Burn(statHandler, new Stat(duration), damage);
                playerBuffHandler.AddBuff(debuff);
                break;

            case ElementEnum.ice:
                debuff = new Slow(statHandler, new Stat(duration), new ScalingStatModificator(slowAmount));
                statHandler.TakeDamage(damage);
                playerBuffHandler.AddBuff(debuff);
                break;

            case ElementEnum.lightning:
                debuff = new Stun(statHandler, new Stat(duration));
                statHandler.TakeDamage(damage);
                playerBuffHandler.AddBuff(debuff);
                break;
            }
        }
        else if (other.CompareTag("Projectile"))
        {
            Debug.Log("SHIELD ENTER PROJECTILE: " + other.gameObject.transform);
            Destroy(other.gameObject);
        }
    }
Ejemplo n.º 31
0
        public void UseSkill(Aggregate playerType, SkillType skillType, int rank, uint userID)
        {
            #region Global Variables

            uint eid;
            Random random = new Random();

            #endregion

            #region Check Cool Down

            //make sure the user isn't cooling down from a previous use
            foreach (CoolDown cd in _game.CoolDownComponent.All)
            {
                if (cd.Type == skillType && cd.UserID == userID)
                    return;
            }

            #endregion

            switch (playerType)
            {
                #region Checking Player Type

                #region Cyborg

                case Aggregate.CyborgPlayer:

                    #region Race Variables

                    #endregion

                    switch (skillType)
                    {
                        #region Checking Skill Type

                        case SkillType.EnergyShield:

                            #region Skill Variables
                            TimedEffect timedEffectShield;
                            Buff buffEffectShield;
                            float effectDurationShield;
                            uint targetIDShield;
                            int damageDecreaseShield;
                            int healShield;
                            HealOverTime hotShield;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    targetIDShield = GetPlayerID();
                                    healShield = 1;
                                    effectDurationShield = 5;
                                    damageDecreaseShield = 10;

                                    foreach (Player player in _game.PlayerComponent.All)
                                    {
                                        targetIDShield = player.EntityID;
                                        timedEffectShield = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDurationShield,
                                            TimeLeft = effectDurationShield,
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffectShield);

                                        hotShield = new HealOverTime()
                                        {
                                            EntityID = eid,
                                            AmountPerTick = healShield,
                                            TickTime = 1
                                        };
                                        _game.HealOverTimeComponent.Add(eid, hotShield);

                                        buffEffectShield = new Buff()
                                        {
                                            EntityID = eid,
                                            TargetID = targetIDShield,
                                            DefenseMelee = damageDecreaseShield,
                                            DefenseRanged = damageDecreaseShield
                                        };
                                        _game.BuffComponent.Add(eid, buffEffectShield);
                                    }

                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    targetIDShield = GetPlayerID();
                                    healShield = 1;
                                    effectDurationShield = 5;
                                    damageDecreaseShield = 12;

                                    foreach (Player player in _game.PlayerComponent.All)
                                    {
                                        targetIDShield = player.EntityID;
                                        timedEffectShield = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDurationShield,
                                            TimeLeft = effectDurationShield,
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffectShield);

                                        hotShield = new HealOverTime()
                                        {
                                            EntityID = eid,
                                            AmountPerTick = healShield,
                                            TickTime = 1
                                        };
                                        _game.HealOverTimeComponent.Add(eid, hotShield);

                                        buffEffectShield = new Buff()
                                        {
                                            EntityID = eid,
                                            TargetID = targetIDShield,
                                            DefenseMelee = damageDecreaseShield,
                                            DefenseRanged = damageDecreaseShield
                                        };
                                        _game.BuffComponent.Add(eid, buffEffectShield);
                                    }
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    targetIDShield = GetPlayerID();
                                    healShield = 2;
                                    effectDurationShield = 6;
                                    damageDecreaseShield = 12;

                                    foreach (Player player in _game.PlayerComponent.All)
                                    {
                                        targetIDShield = player.EntityID;
                                        timedEffectShield = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDurationShield,
                                            TimeLeft = effectDurationShield,
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffectShield);

                                        hotShield = new HealOverTime()
                                        {
                                            EntityID = eid,
                                            AmountPerTick = healShield,
                                            TickTime = 1
                                        };
                                        _game.HealOverTimeComponent.Add(eid, hotShield);

                                        buffEffectShield = new Buff()
                                        {
                                            EntityID = eid,
                                            TargetID = targetIDShield,
                                            DefenseMelee = damageDecreaseShield,
                                            DefenseRanged = damageDecreaseShield
                                        };
                                        _game.BuffComponent.Add(eid, buffEffectShield);
                                    }
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    targetIDShield = GetPlayerID();
                                    healShield = 2;
                                    effectDurationShield = 6;
                                    damageDecreaseShield = 14;

                                    foreach (Player player in _game.PlayerComponent.All)
                                    {
                                        targetIDShield = player.EntityID;
                                        timedEffectShield = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDurationShield,
                                            TimeLeft = effectDurationShield,
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffectShield);

                                        hotShield = new HealOverTime()
                                        {
                                            EntityID = eid,
                                            AmountPerTick = healShield,
                                            TickTime = 1
                                        };
                                        _game.HealOverTimeComponent.Add(eid, hotShield);

                                        buffEffectShield = new Buff()
                                        {
                                            EntityID = eid,
                                            TargetID = targetIDShield,
                                            DefenseMelee = damageDecreaseShield,
                                            DefenseRanged = damageDecreaseShield
                                        };
                                        _game.BuffComponent.Add(eid, buffEffectShield);
                                    }
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    targetIDShield = GetPlayerID();
                                    healShield = 3;
                                    effectDurationShield = 7;
                                    damageDecreaseShield = 15;

                                    foreach (Player player in _game.PlayerComponent.All)
                                    {
                                        targetIDShield = player.EntityID;
                                        timedEffectShield = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDurationShield,
                                            TimeLeft = effectDurationShield,
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffectShield);

                                        hotShield = new HealOverTime()
                                        {
                                            EntityID = eid,
                                            AmountPerTick = healShield,
                                            TickTime = 1
                                        };
                                        _game.HealOverTimeComponent.Add(eid, hotShield);

                                        buffEffectShield = new Buff()
                                        {
                                            EntityID = eid,
                                            TargetID = targetIDShield,
                                            DefenseMelee = damageDecreaseShield,
                                            DefenseRanged = damageDecreaseShield
                                        };
                                        _game.BuffComponent.Add(eid, buffEffectShield);
                                    }
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    targetIDShield = GetPlayerID();
                                    healShield = 3;
                                    effectDurationShield = 8;
                                    damageDecreaseShield = 16;

                                    foreach (Player player in _game.PlayerComponent.All)
                                    {
                                        targetIDShield = player.EntityID;
                                        timedEffectShield = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDurationShield,
                                            TimeLeft = effectDurationShield,
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffectShield);

                                        hotShield = new HealOverTime()
                                        {
                                            EntityID = eid,
                                            AmountPerTick = healShield,
                                            TickTime = 1
                                        };
                                        _game.HealOverTimeComponent.Add(eid, hotShield);

                                        buffEffectShield = new Buff()
                                        {
                                            EntityID = eid,
                                            TargetID = targetIDShield,
                                            DefenseMelee = damageDecreaseShield,
                                            DefenseRanged = damageDecreaseShield
                                        };
                                        _game.BuffComponent.Add(eid, buffEffectShield);
                                    }
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    targetIDShield = GetPlayerID();
                                    healShield = 4;
                                    effectDurationShield = 17;
                                    damageDecreaseShield = 9;

                                    foreach (Player player in _game.PlayerComponent.All)
                                    {
                                        targetIDShield = player.EntityID;
                                        timedEffectShield = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDurationShield,
                                            TimeLeft = effectDurationShield,
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffectShield);

                                        hotShield = new HealOverTime()
                                        {
                                            EntityID = eid,
                                            AmountPerTick = healShield,
                                            TickTime = 1
                                        };
                                        _game.HealOverTimeComponent.Add(eid, hotShield);

                                        buffEffectShield = new Buff()
                                        {
                                            EntityID = eid,
                                            TargetID = targetIDShield,
                                            DefenseMelee = damageDecreaseShield,
                                            DefenseRanged = damageDecreaseShield
                                        };
                                        _game.BuffComponent.Add(eid, buffEffectShield);
                                    }
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    targetIDShield = GetPlayerID();
                                    healShield = 4;
                                    effectDurationShield = 10;
                                    damageDecreaseShield = 18;

                                    foreach (Player player in _game.PlayerComponent.All)
                                    {
                                        targetIDShield = player.EntityID;
                                        timedEffectShield = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDurationShield,
                                            TimeLeft = effectDurationShield,
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffectShield);

                                        hotShield = new HealOverTime()
                                        {
                                            EntityID = eid,
                                            AmountPerTick = healShield,
                                            TickTime = 1
                                        };
                                        _game.HealOverTimeComponent.Add(eid, hotShield);

                                        buffEffectShield = new Buff()
                                        {
                                            EntityID = eid,
                                            TargetID = targetIDShield,
                                            DefenseMelee = damageDecreaseShield,
                                            DefenseRanged = damageDecreaseShield
                                        };
                                        _game.BuffComponent.Add(eid, buffEffectShield);
                                    }
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    targetIDShield = GetPlayerID();
                                    healShield = 5;
                                    effectDurationShield = 10;
                                    damageDecreaseShield = 20;

                                    foreach (Player player in _game.PlayerComponent.All)
                                    {
                                        targetIDShield = player.EntityID;
                                        timedEffectShield = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDurationShield,
                                            TimeLeft = effectDurationShield,
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffectShield);

                                        hotShield = new HealOverTime()
                                        {
                                            EntityID = eid,
                                            AmountPerTick = healShield,
                                            TickTime = 1
                                        };
                                        _game.HealOverTimeComponent.Add(eid, hotShield);

                                        buffEffectShield = new Buff()
                                        {
                                            EntityID = eid,
                                            TargetID = targetIDShield,
                                            DefenseMelee = damageDecreaseShield,
                                            DefenseRanged = damageDecreaseShield
                                        };
                                        _game.BuffComponent.Add(eid, buffEffectShield);
                                    }
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    targetIDShield = GetPlayerID();
                                    healShield = 5;
                                    effectDurationShield = 10;
                                    damageDecreaseShield = 25;

                                    foreach (Player player in _game.PlayerComponent.All)
                                    {
                                        targetIDShield = player.EntityID;
                                        timedEffectShield = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDurationShield,
                                            TimeLeft = effectDurationShield,
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffectShield);

                                        hotShield = new HealOverTime()
                                        {
                                            EntityID = eid,
                                            AmountPerTick = healShield,
                                            TickTime = 1
                                        };
                                        _game.HealOverTimeComponent.Add(eid, hotShield);

                                        buffEffectShield = new Buff()
                                        {
                                            EntityID = eid,
                                            TargetID = targetIDShield,
                                            DefenseMelee = damageDecreaseShield,
                                            DefenseRanged = damageDecreaseShield
                                        };
                                        _game.BuffComponent.Add(eid, buffEffectShield);
                                    }
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.Defibrillate:

                            #region Skill Variables

                            TimedEffect timedEffect;
                            float effectDuration;

                            Buff buffEffect;
                            uint targetID;
                            int speedIncrease;
                            int AttackSpeedIncrease;

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    effectDuration = 3;
                                    targetID = GetPlayerID();
                                    speedIncrease = 200;
                                    AttackSpeedIncrease = 150;

                                    timedEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDuration,
                                        TimeLeft = effectDuration,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffect);

                                    buffEffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease,
                                        AttackSpeed = AttackSpeedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffect);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    effectDuration = 3;
                                    targetID = GetPlayerID();
                                    speedIncrease = 200;
                                    AttackSpeedIncrease = 200;

                                    timedEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDuration,
                                        TimeLeft = effectDuration,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffect);

                                    buffEffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease,
                                        AttackSpeed = AttackSpeedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffect);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    effectDuration = 4;
                                    targetID = GetPlayerID();
                                    speedIncrease = 200;
                                    AttackSpeedIncrease = 200;

                                    timedEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDuration,
                                        TimeLeft = effectDuration,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffect);

                                    buffEffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease,
                                        AttackSpeed = AttackSpeedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffect);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    effectDuration = 4;
                                    targetID = GetPlayerID();
                                    speedIncrease = 200;
                                    AttackSpeedIncrease = 250;

                                    timedEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDuration,
                                        TimeLeft = effectDuration,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffect);

                                    buffEffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease,
                                        AttackSpeed = AttackSpeedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffect);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    effectDuration = 5;
                                    targetID = GetPlayerID();
                                    speedIncrease = 200;
                                    AttackSpeedIncrease = 250;

                                    timedEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDuration,
                                        TimeLeft = effectDuration,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffect);

                                    buffEffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease,
                                        AttackSpeed = AttackSpeedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffect);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    effectDuration = 5;
                                    targetID = GetPlayerID();
                                    speedIncrease = 200;
                                    AttackSpeedIncrease = 300;

                                    timedEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDuration,
                                        TimeLeft = effectDuration,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffect);

                                    buffEffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease,
                                        AttackSpeed = AttackSpeedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffect);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    effectDuration = 5;
                                    targetID = GetPlayerID();
                                    speedIncrease = 200;
                                    AttackSpeedIncrease = 300;

                                    timedEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDuration,
                                        TimeLeft = effectDuration,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffect);

                                    buffEffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease,
                                        AttackSpeed = AttackSpeedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffect);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    effectDuration = 6;
                                    targetID = GetPlayerID();
                                    speedIncrease = 200;
                                    AttackSpeedIncrease = 300;

                                    timedEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDuration,
                                        TimeLeft = effectDuration,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffect);

                                    buffEffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease,
                                        AttackSpeed = AttackSpeedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffect);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    effectDuration = 6;
                                    targetID = GetPlayerID();
                                    speedIncrease = 200;
                                    AttackSpeedIncrease = 350;

                                    timedEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDuration,
                                        TimeLeft = effectDuration,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffect);

                                    buffEffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease,
                                        AttackSpeed = AttackSpeedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffect);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    effectDuration = 8;
                                    targetID = GetPlayerID();
                                    speedIncrease = 200;
                                    AttackSpeedIncrease = 400;

                                    timedEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDuration,
                                        TimeLeft = effectDuration,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffect);

                                    buffEffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease,
                                        AttackSpeed = AttackSpeedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffect);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.Nanobots:

                            #region Skill Variables
                            TimedEffect timedEffectNano;
                            float effectDurationNano;

                            DirectHeal directheal;
                            uint targetIDNano;
                            int heal;

                            HealOverTime hot;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    targetIDNano = GetPlayerID();
                                    heal = 5;

                                    directheal = new DirectHeal()
                                    {
                                        EntityID = eid,
                                        Amount = heal
                                    };
                                    _game.DirectHealComponent.Add(eid, directheal);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    targetIDNano = GetPlayerID();
                                    heal = 8;

                                    directheal = new DirectHeal()
                                    {
                                        EntityID = eid,
                                        Amount = heal
                                    };
                                    _game.DirectHealComponent.Add(eid, directheal);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    targetIDNano = GetPlayerID();
                                    heal = 10;

                                    directheal = new DirectHeal()
                                    {
                                        EntityID = eid,
                                        Amount = heal
                                    };
                                    _game.DirectHealComponent.Add(eid, directheal);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    targetIDNano = GetPlayerID();
                                    heal = 12;

                                    directheal = new DirectHeal()
                                    {
                                        EntityID = eid,
                                        Amount = heal
                                    };
                                    _game.DirectHealComponent.Add(eid, directheal);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    targetIDNano = GetPlayerID();
                                    heal = 14;

                                    directheal = new DirectHeal()
                                    {
                                        EntityID = eid,
                                        Amount = heal
                                    };
                                    _game.DirectHealComponent.Add(eid, directheal); eid = Entity.NextEntity();
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    targetIDNano = GetPlayerID();
                                    heal = 16;

                                    directheal = new DirectHeal()
                                    {
                                        EntityID = eid,
                                        Amount = heal
                                    };
                                    _game.DirectHealComponent.Add(eid, directheal);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    targetIDNano = GetPlayerID();
                                    heal = 18;

                                    directheal = new DirectHeal()
                                    {
                                        EntityID = eid,
                                        Amount = heal
                                    };
                                    _game.DirectHealComponent.Add(eid, directheal);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    targetIDNano = GetPlayerID();
                                    heal = 20;

                                    directheal = new DirectHeal()
                                    {
                                        EntityID = eid,
                                        Amount = heal
                                    };
                                    _game.DirectHealComponent.Add(eid, directheal);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    targetIDNano = GetPlayerID();
                                    heal = 25;

                                    directheal = new DirectHeal()
                                    {
                                        EntityID = eid,
                                        Amount = heal
                                    };
                                    _game.DirectHealComponent.Add(eid, directheal);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    targetIDNano = GetPlayerID();
                                    heal = 25;
                                    effectDurationNano = 10;

                                    directheal = new DirectHeal()
                                    {
                                        EntityID = eid,
                                        Amount = heal
                                    };
                                    _game.DirectHealComponent.Add(eid, directheal);

                                    timedEffectNano = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDurationNano,
                                        TimeLeft = effectDurationNano,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffectNano);

                                    hot = new HealOverTime()
                                    {
                                        EntityID = eid,
                                        AmountPerTick = 1,
                                        TickTime = 2
                                    };
                                    _game.HealOverTimeComponent.Add(eid, hot);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.TargettingUpgrade:

                            #region Skill Variables

                            Buff buffEffectTarget;
                            int WeaponIncrease;

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    WeaponIncrease = 120;
                                    buffEffectTarget = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponStrength = WeaponIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectTarget);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    WeaponIncrease = 145;
                                    buffEffectTarget = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponStrength = WeaponIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectTarget);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    WeaponIncrease = 130;
                                    buffEffectTarget = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponStrength = WeaponIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectTarget);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    WeaponIncrease = 135;
                                    buffEffectTarget = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponStrength = WeaponIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectTarget);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    WeaponIncrease = 145;
                                    buffEffectTarget = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponStrength = WeaponIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectTarget);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    WeaponIncrease = 160;
                                    buffEffectTarget = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponStrength = WeaponIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectTarget);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    WeaponIncrease = 175;
                                    buffEffectTarget = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponStrength = WeaponIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectTarget);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    WeaponIncrease = 200;
                                    buffEffectTarget = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponStrength = WeaponIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectTarget);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    WeaponIncrease = 225;
                                    buffEffectTarget = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponStrength = WeaponIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectTarget);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    WeaponIncrease = 250;
                                    buffEffectTarget = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponStrength = WeaponIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectTarget);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.RepulsorArm:

                            #region Skill Variables
                            InstantEffect instantEffectRepulse;
                            uint eid_2Repulse;
                            uint targetIDRepulse;

                            KnockBack knockBackEffectRepulse;
                            Vector2 originRepulse;
                            float distanceRepulse;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    targetIDRepulse = GetPlayerID();
                                    eid_2Repulse = Entity.NextEntity();
                                    originRepulse = _game.PositionComponent[targetIDRepulse].Center;
                                    distanceRepulse = 100;

                                    instantEffectRepulse = new InstantEffect()
                                    {
                                        EntityID = eid_2Repulse,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Repulse, instantEffectRepulse);

                                    knockBackEffectRepulse = new KnockBack()
                                    {
                                        EntityID = eid_2Repulse,
                                        Origin = originRepulse,
                                        Distance = distanceRepulse,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Repulse, knockBackEffectRepulse);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    targetIDRepulse = GetPlayerID();
                                    eid_2Repulse = Entity.NextEntity();
                                    originRepulse = _game.PositionComponent[targetIDRepulse].Center;
                                    distanceRepulse = 100;

                                    instantEffectRepulse = new InstantEffect()
                                    {
                                        EntityID = eid_2Repulse,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Repulse, instantEffectRepulse);

                                    knockBackEffectRepulse = new KnockBack()
                                    {
                                        EntityID = eid_2Repulse,
                                        Origin = originRepulse,
                                        Distance = distanceRepulse,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Repulse, knockBackEffectRepulse);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    targetIDRepulse = GetPlayerID();
                                    eid_2Repulse = Entity.NextEntity();
                                    originRepulse = _game.PositionComponent[targetIDRepulse].Center;
                                    distanceRepulse = 100;

                                    instantEffectRepulse = new InstantEffect()
                                    {
                                        EntityID = eid_2Repulse,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Repulse, instantEffectRepulse);

                                    knockBackEffectRepulse = new KnockBack()
                                    {
                                        EntityID = eid_2Repulse,
                                        Origin = originRepulse,
                                        Distance = distanceRepulse,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Repulse, knockBackEffectRepulse);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    targetIDRepulse = GetPlayerID();
                                    eid_2Repulse = Entity.NextEntity();
                                    originRepulse = _game.PositionComponent[targetIDRepulse].Center;
                                    distanceRepulse = 100;

                                    instantEffectRepulse = new InstantEffect()
                                    {
                                        EntityID = eid_2Repulse,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Repulse, instantEffectRepulse);

                                    knockBackEffectRepulse = new KnockBack()
                                    {
                                        EntityID = eid_2Repulse,
                                        Origin = originRepulse,
                                        Distance = distanceRepulse,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Repulse, knockBackEffectRepulse);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    targetIDRepulse = GetPlayerID();
                                    eid_2Repulse = Entity.NextEntity();
                                    originRepulse = _game.PositionComponent[targetIDRepulse].Center;
                                    distanceRepulse = 100;

                                    instantEffectRepulse = new InstantEffect()
                                    {
                                        EntityID = eid_2Repulse,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Repulse, instantEffectRepulse);

                                    knockBackEffectRepulse = new KnockBack()
                                    {
                                        EntityID = eid_2Repulse,
                                        Origin = originRepulse,
                                        Distance = distanceRepulse,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Repulse, knockBackEffectRepulse);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    targetIDRepulse = GetPlayerID();
                                    eid_2Repulse = Entity.NextEntity();
                                    originRepulse = _game.PositionComponent[targetIDRepulse].Center;
                                    distanceRepulse = 100;

                                    instantEffectRepulse = new InstantEffect()
                                    {
                                        EntityID = eid_2Repulse,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Repulse, instantEffectRepulse);

                                    knockBackEffectRepulse = new KnockBack()
                                    {
                                        EntityID = eid_2Repulse,
                                        Origin = originRepulse,
                                        Distance = distanceRepulse,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Repulse, knockBackEffectRepulse);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    targetIDRepulse = GetPlayerID();
                                    eid_2Repulse = Entity.NextEntity();
                                    originRepulse = _game.PositionComponent[targetIDRepulse].Center;
                                    distanceRepulse = 100;

                                    instantEffectRepulse = new InstantEffect()
                                    {
                                        EntityID = eid_2Repulse,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Repulse, instantEffectRepulse);

                                    knockBackEffectRepulse = new KnockBack()
                                    {
                                        EntityID = eid_2Repulse,
                                        Origin = originRepulse,
                                        Distance = distanceRepulse,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Repulse, knockBackEffectRepulse);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    targetIDRepulse = GetPlayerID();
                                    eid_2Repulse = Entity.NextEntity();
                                    originRepulse = _game.PositionComponent[targetIDRepulse].Center;
                                    distanceRepulse = 100;

                                    instantEffectRepulse = new InstantEffect()
                                    {
                                        EntityID = eid_2Repulse,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Repulse, instantEffectRepulse);

                                    knockBackEffectRepulse = new KnockBack()
                                    {
                                        EntityID = eid_2Repulse,
                                        Origin = originRepulse,
                                        Distance = distanceRepulse,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Repulse, knockBackEffectRepulse);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    targetIDRepulse = GetPlayerID();
                                    eid_2Repulse = Entity.NextEntity();
                                    originRepulse = _game.PositionComponent[targetIDRepulse].Center;
                                    distanceRepulse = 100;

                                    instantEffectRepulse = new InstantEffect()
                                    {
                                        EntityID = eid_2Repulse,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Repulse, instantEffectRepulse);

                                    knockBackEffectRepulse = new KnockBack()
                                    {
                                        EntityID = eid_2Repulse,
                                        Origin = originRepulse,
                                        Distance = distanceRepulse,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Repulse, knockBackEffectRepulse);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    targetIDRepulse = GetPlayerID();
                                    eid_2Repulse = Entity.NextEntity();
                                    originRepulse = _game.PositionComponent[targetIDRepulse].Center;
                                    distanceRepulse = 100;

                                    instantEffectRepulse = new InstantEffect()
                                    {
                                        EntityID = eid_2Repulse,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Repulse, instantEffectRepulse);

                                    knockBackEffectRepulse = new KnockBack()
                                    {
                                        EntityID = eid_2Repulse,
                                        Origin = originRepulse,
                                        Distance = distanceRepulse,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Repulse, knockBackEffectRepulse);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.EnergyShot:

                            #region Skill Variables
                            DirectDamage DirectDamageShot;
                            InstantEffect instantEffectShot;
                            int shotDamage;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    shotDamage = 5;

                                    instantEffectShot = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, instantEffectShot);

                                    DirectDamageShot = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = shotDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, DirectDamageShot);

                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    shotDamage = 10;

                                    instantEffectShot = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, instantEffectShot);

                                    DirectDamageShot = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = shotDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, DirectDamageShot);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    shotDamage = 15;

                                    instantEffectShot = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, instantEffectShot);

                                    DirectDamageShot = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = shotDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, DirectDamageShot);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    shotDamage = 20;

                                    instantEffectShot = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, instantEffectShot);

                                    DirectDamageShot = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = shotDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, DirectDamageShot);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    shotDamage = 25;

                                    instantEffectShot = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, instantEffectShot);

                                    DirectDamageShot = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = shotDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, DirectDamageShot);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    shotDamage = 30;

                                    instantEffectShot = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, instantEffectShot);

                                    DirectDamageShot = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = shotDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, DirectDamageShot);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    shotDamage = 35;

                                    instantEffectShot = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, instantEffectShot);

                                    DirectDamageShot = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = shotDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, DirectDamageShot);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    shotDamage = 38;

                                    instantEffectShot = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, instantEffectShot);

                                    DirectDamageShot = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = shotDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, DirectDamageShot);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    shotDamage = 40;

                                    instantEffectShot = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, instantEffectShot);

                                    DirectDamageShot = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = shotDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, DirectDamageShot);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    shotDamage = 45;

                                    instantEffectShot = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, instantEffectShot);

                                    DirectDamageShot = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = shotDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, DirectDamageShot);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.AlloyBody:

                            #region Skill Variables

                            Buff buffEffectAlloy;
                            int damageDecrease;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    damageDecrease = 5;
                                    buffEffectAlloy = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        DefenseMelee = damageDecrease,
                                        DefenseRanged = damageDecrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectAlloy);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    damageDecrease = 10;
                                    buffEffectAlloy = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        DefenseMelee = damageDecrease,
                                        DefenseRanged = damageDecrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectAlloy);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    damageDecrease = 12;
                                    buffEffectAlloy = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        DefenseMelee = damageDecrease,
                                        DefenseRanged = damageDecrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectAlloy);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    damageDecrease = 14;
                                    buffEffectAlloy = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        DefenseMelee = damageDecrease,
                                        DefenseRanged = damageDecrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectAlloy);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    damageDecrease = 16;
                                    buffEffectAlloy = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        DefenseMelee = damageDecrease,
                                        DefenseRanged = damageDecrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectAlloy);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    damageDecrease = 18;
                                    buffEffectAlloy = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        DefenseMelee = damageDecrease,
                                        DefenseRanged = damageDecrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectAlloy);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    damageDecrease = 20;
                                    buffEffectAlloy = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        DefenseMelee = damageDecrease,
                                        DefenseRanged = damageDecrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectAlloy);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    damageDecrease = 26;
                                    buffEffectAlloy = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        DefenseMelee = damageDecrease,
                                        DefenseRanged = damageDecrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectAlloy);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    damageDecrease = 32;
                                    buffEffectAlloy = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        DefenseMelee = damageDecrease,
                                        DefenseRanged = damageDecrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectAlloy);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    damageDecrease = 40;
                                    buffEffectAlloy = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        DefenseMelee = damageDecrease,
                                        DefenseRanged = damageDecrease
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectAlloy);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.CyberneticSlam:

                            #region Skill Variables
                            InstantEffect instantEffectSlam;
                            uint eid_2Slam;
                            uint targetIDSlam;

                            DirectDamage DirectDamageSlam;
                            int slamDamage;

                            KnockBack knockBackEffectSlam;
                            Vector2 originSlam;
                            float distanceSlam;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    targetIDSlam = GetPlayerID();
                                    eid_2Slam = Entity.NextEntity();
                                    originSlam = _game.PositionComponent[targetIDSlam].Center;
                                    distanceSlam = 40;
                                    slamDamage = 5;

                                    instantEffectSlam = new InstantEffect()
                                    {
                                        EntityID = eid_2Slam,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Slam, instantEffectSlam);

                                    DirectDamageSlam = new DirectDamage()
                                    {
                                        EntityID = eid_2Slam,
                                        Damage = slamDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid_2Slam, DirectDamageSlam);

                                    knockBackEffectSlam = new KnockBack()
                                    {
                                        EntityID = eid_2Slam,
                                        Origin = originSlam,
                                        Distance = distanceSlam,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Slam, knockBackEffectSlam);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    targetIDSlam = GetPlayerID();
                                    eid_2Slam = Entity.NextEntity();
                                    originSlam = _game.PositionComponent[targetIDSlam].Center;
                                    distanceSlam = 60;
                                    slamDamage = 10;

                                    instantEffectSlam = new InstantEffect()
                                    {
                                        EntityID = eid_2Slam,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Slam, instantEffectSlam);

                                    DirectDamageSlam = new DirectDamage()
                                    {
                                        EntityID = eid_2Slam,
                                        Damage = slamDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid_2Slam, DirectDamageSlam);

                                    knockBackEffectSlam = new KnockBack()
                                    {
                                        EntityID = eid_2Slam,
                                        Origin = originSlam,
                                        Distance = distanceSlam,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Slam, knockBackEffectSlam);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    targetIDSlam = GetPlayerID();
                                    eid_2Slam = Entity.NextEntity();
                                    originSlam = _game.PositionComponent[targetIDSlam].Center;
                                    distanceSlam = 80;
                                    slamDamage = 15;

                                    instantEffectSlam = new InstantEffect()
                                    {
                                        EntityID = eid_2Slam,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Slam, instantEffectSlam);

                                    DirectDamageSlam = new DirectDamage()
                                    {
                                        EntityID = eid_2Slam,
                                        Damage = slamDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid_2Slam, DirectDamageSlam);

                                    knockBackEffectSlam = new KnockBack()
                                    {
                                        EntityID = eid_2Slam,
                                        Origin = originSlam,
                                        Distance = distanceSlam,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Slam, knockBackEffectSlam);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    targetIDSlam = GetPlayerID();
                                    eid_2Slam = Entity.NextEntity();
                                    originSlam = _game.PositionComponent[targetIDSlam].Center;
                                    distanceSlam = 100;
                                    slamDamage = 20;

                                    instantEffectSlam = new InstantEffect()
                                    {
                                        EntityID = eid_2Slam,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Slam, instantEffectSlam);

                                    DirectDamageSlam = new DirectDamage()
                                    {
                                        EntityID = eid_2Slam,
                                        Damage = slamDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid_2Slam, DirectDamageSlam);

                                    knockBackEffectSlam = new KnockBack()
                                    {
                                        EntityID = eid_2Slam,
                                        Origin = originSlam,
                                        Distance = distanceSlam,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Slam, knockBackEffectSlam);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    targetIDSlam = GetPlayerID();
                                    eid_2Slam = Entity.NextEntity();
                                    originSlam = _game.PositionComponent[targetIDSlam].Center;
                                    distanceSlam = 120;
                                    slamDamage = 25;

                                    instantEffectSlam = new InstantEffect()
                                    {
                                        EntityID = eid_2Slam,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Slam, instantEffectSlam);

                                    DirectDamageSlam = new DirectDamage()
                                    {
                                        EntityID = eid_2Slam,
                                        Damage = slamDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid_2Slam, DirectDamageSlam);

                                    knockBackEffectSlam = new KnockBack()
                                    {
                                        EntityID = eid_2Slam,
                                        Origin = originSlam,
                                        Distance = distanceSlam,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Slam, knockBackEffectSlam);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    targetIDSlam = GetPlayerID();
                                    eid_2Slam = Entity.NextEntity();
                                    originSlam = _game.PositionComponent[targetIDSlam].Center;
                                    distanceSlam = 140;
                                    slamDamage = 30;

                                    instantEffectSlam = new InstantEffect()
                                    {
                                        EntityID = eid_2Slam,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Slam, instantEffectSlam);

                                    DirectDamageSlam = new DirectDamage()
                                    {
                                        EntityID = eid_2Slam,
                                        Damage = slamDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid_2Slam, DirectDamageSlam);

                                    knockBackEffectSlam = new KnockBack()
                                    {
                                        EntityID = eid_2Slam,
                                        Origin = originSlam,
                                        Distance = distanceSlam,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Slam, knockBackEffectSlam);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    targetIDSlam = GetPlayerID();
                                    eid_2Slam = Entity.NextEntity();
                                    originSlam = _game.PositionComponent[targetIDSlam].Center;
                                    distanceSlam = 160;
                                    slamDamage = 35;

                                    instantEffectSlam = new InstantEffect()
                                    {
                                        EntityID = eid_2Slam,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Slam, instantEffectSlam);

                                    DirectDamageSlam = new DirectDamage()
                                    {
                                        EntityID = eid_2Slam,
                                        Damage = slamDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid_2Slam, DirectDamageSlam);

                                    knockBackEffectSlam = new KnockBack()
                                    {
                                        EntityID = eid_2Slam,
                                        Origin = originSlam,
                                        Distance = distanceSlam,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Slam, knockBackEffectSlam);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    targetIDSlam = GetPlayerID();
                                    eid_2Slam = Entity.NextEntity();
                                    originSlam = _game.PositionComponent[targetIDSlam].Center;
                                    distanceSlam = 180;
                                    slamDamage = 40;

                                    instantEffectSlam = new InstantEffect()
                                    {
                                        EntityID = eid_2Slam,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Slam, instantEffectSlam);

                                    DirectDamageSlam = new DirectDamage()
                                    {
                                        EntityID = eid_2Slam,
                                        Damage = slamDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid_2Slam, DirectDamageSlam);

                                    knockBackEffectSlam = new KnockBack()
                                    {
                                        EntityID = eid_2Slam,
                                        Origin = originSlam,
                                        Distance = distanceSlam,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Slam, knockBackEffectSlam);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    targetIDSlam = GetPlayerID();
                                    eid_2Slam = Entity.NextEntity();
                                    originSlam = _game.PositionComponent[targetIDSlam].Center;
                                    distanceSlam = 200;
                                    slamDamage = 45;

                                    instantEffectSlam = new InstantEffect()
                                    {
                                        EntityID = eid_2Slam,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Slam, instantEffectSlam);

                                    DirectDamageSlam = new DirectDamage()
                                    {
                                        EntityID = eid_2Slam,
                                        Damage = slamDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid_2Slam, DirectDamageSlam);

                                    knockBackEffectSlam = new KnockBack()
                                    {
                                        EntityID = eid_2Slam,
                                        Origin = originSlam,
                                        Distance = distanceSlam,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Slam, knockBackEffectSlam);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    targetIDSlam = GetPlayerID();
                                    eid_2Slam = Entity.NextEntity();
                                    originSlam = _game.PositionComponent[targetIDSlam].Center;
                                    distanceSlam = 220;
                                    slamDamage = 50;

                                    instantEffectSlam = new InstantEffect()
                                    {
                                        EntityID = eid_2Slam,
                                    };
                                    _game.InstantEffectComponent.Add(eid_2Slam, instantEffectSlam);

                                    DirectDamageSlam = new DirectDamage()
                                    {
                                        EntityID = eid_2Slam,
                                        Damage = slamDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid_2Slam, DirectDamageSlam);

                                    knockBackEffectSlam = new KnockBack()
                                    {
                                        EntityID = eid_2Slam,
                                        Origin = originSlam,
                                        Distance = distanceSlam,
                                    };
                                    _game.KnockBackComponent.Add(eid_2Slam, knockBackEffectSlam);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.ThrusterRush:

                            #region Skill Variables
                            TimedEffect timedEffectRush;
                            float effectDurationRush;

                            Buff buffEffectRush;
                            uint targetIDRush;
                            int speedIncreaseRush;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    effectDurationRush = 1;
                                    targetIDRush = GetPlayerID();
                                    speedIncreaseRush = 600;

                                    timedEffectRush = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDurationRush,
                                        TimeLeft = effectDurationRush,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffectRush);

                                    buffEffectRush = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetIDRush,
                                        MovementSpeed = speedIncreaseRush,
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectRush);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    effectDurationRush = 1;
                                    targetIDRush = GetPlayerID();
                                    speedIncreaseRush = 600;

                                    timedEffectRush = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDurationRush,
                                        TimeLeft = effectDurationRush,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffectRush);

                                    buffEffectRush = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetIDRush,
                                        MovementSpeed = speedIncreaseRush,
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectRush);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    effectDurationRush = 1;
                                    targetIDRush = GetPlayerID();
                                    speedIncreaseRush = 600;

                                    timedEffectRush = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDurationRush,
                                        TimeLeft = effectDurationRush,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffectRush);

                                    buffEffectRush = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetIDRush,
                                        MovementSpeed = speedIncreaseRush,
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectRush);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    effectDurationRush = 1;
                                    targetIDRush = GetPlayerID();
                                    speedIncreaseRush = 600;

                                    timedEffectRush = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDurationRush,
                                        TimeLeft = effectDurationRush,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffectRush);

                                    buffEffectRush = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetIDRush,
                                        MovementSpeed = speedIncreaseRush,
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectRush);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    effectDurationRush = 1;
                                    targetIDRush = GetPlayerID();
                                    speedIncreaseRush = 600;

                                    timedEffectRush = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDurationRush,
                                        TimeLeft = effectDurationRush,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffectRush);

                                    buffEffectRush = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetIDRush,
                                        MovementSpeed = speedIncreaseRush,
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectRush);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    effectDurationRush = 1;
                                    targetIDRush = GetPlayerID();
                                    speedIncreaseRush = 600;

                                    timedEffectRush = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDurationRush,
                                        TimeLeft = effectDurationRush,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffectRush);

                                    buffEffectRush = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetIDRush,
                                        MovementSpeed = speedIncreaseRush,
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectRush);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    effectDurationRush = 1;
                                    targetIDRush = GetPlayerID();
                                    speedIncreaseRush = 600;

                                    timedEffectRush = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDurationRush,
                                        TimeLeft = effectDurationRush,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffectRush);

                                    buffEffectRush = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetIDRush,
                                        MovementSpeed = speedIncreaseRush,
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectRush);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    effectDurationRush = 1;
                                    targetIDRush = GetPlayerID();
                                    speedIncreaseRush = 600;

                                    timedEffectRush = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDurationRush,
                                        TimeLeft = effectDurationRush,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffectRush);

                                    buffEffectRush = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetIDRush,
                                        MovementSpeed = speedIncreaseRush,
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectRush);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    effectDurationRush = 1;
                                    targetIDRush = GetPlayerID();
                                    speedIncreaseRush = 600;

                                    timedEffectRush = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDurationRush,
                                        TimeLeft = effectDurationRush,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffectRush);

                                    buffEffectRush = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetIDRush,
                                        MovementSpeed = speedIncreaseRush,
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectRush);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    effectDurationRush = 1;
                                    targetIDRush = GetPlayerID();
                                    speedIncreaseRush = 600;

                                    timedEffectRush = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = effectDurationRush,
                                        TimeLeft = effectDurationRush,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffectRush);

                                    buffEffectRush = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetIDRush,
                                        MovementSpeed = speedIncreaseRush,
                                    };
                                    _game.BuffComponent.Add(eid, buffEffectRush);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        default:
                            break;

                        #endregion
                    }
                    break;

                #endregion

                #region Gargranian

                case Aggregate.GargranianPlayer:

                    #region Race Variables

                    #endregion

                    switch (skillType)
                    {
                        #region Checking Skill Type

                        case SkillType.Teleport:
                            {
                                #region Skill Variables
                                int psiCost = (int)(_game.StatsComponent[userID].PsiBase * .05);
                                int distance = 300;
                                #endregion

                                switch (rank)
                                {
                                    #region Checking Rank
                                    case 1:
                                        psiCost += (int)(_game.StatsComponent[userID].PsiBase * .5);
                                        break;

                                    case 2:
                                        psiCost += (int)(_game.StatsComponent[userID].PsiBase * .45);
                                        break;

                                    case 3:
                                        psiCost += (int)(_game.StatsComponent[userID].PsiBase * .40);
                                        break;

                                    case 4:
                                        psiCost += (int)(_game.StatsComponent[userID].PsiBase * .35);
                                        break;

                                    case 5:
                                        psiCost += (int)(_game.StatsComponent[userID].PsiBase * .30);
                                        break;

                                    case 6:
                                        psiCost += (int)(_game.StatsComponent[userID].PsiBase * .25);
                                        break;

                                    case 7:
                                        psiCost += (int)(_game.StatsComponent[userID].PsiBase * .20);
                                        break;

                                    case 8:
                                        psiCost += (int)(_game.StatsComponent[userID].PsiBase * .15);
                                        break;

                                    case 9:
                                        psiCost += (int)(_game.StatsComponent[userID].PsiBase * .10);
                                        break;

                                    case 10:
                                        psiCost += (int)(_game.StatsComponent[userID].PsiBase * .05);
                                        break;

                                    default:
                                        break;
                                    #endregion
                                }

                                #region Logic
                                if(DrainPsiOrFatigue(userID, psiCost))
                                {
                                    //a new eid for the animation
                                    uint entityId = Entity.NextEntity();

                                    //need to get your old position and which direction you were facing
                                    Position pos = _game.PositionComponent[userID];
                                    Facing facing = (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow;

                                    //create the animation for the after effect
                                    SpriteAnimation animation = new SpriteAnimation()
                                    {
                                        EntityID = entityId,
                                        IsLooping = false,
                                        CurrentFrame = 0,
                                        CurrentAnimationRow = (int)facing,
                                        FramesPerSecond = 15,
                                        IsPlaying = true,
                                        TimePassed = 0
                                    };
                                    _game.SpriteAnimationComponent[entityId] = animation;

                                    //give the after effect a position
                                    Position animationPos = new Position()
                                    {
                                        EntityID = entityId,
                                        Center = new Vector2(pos.Center.X - 32, pos.Center.Y - 32),
                                        Radius = 0,
                                        RoomID = _game.PositionComponent[userID].RoomID
                                    };
                                    _game.PositionComponent[entityId] = animationPos;

                                    //set the spritesheet for the after effect
                                    Texture2D spriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/Invis");
                                    spriteSheet.Name = "Spritesheets/Skills/Effects/Invis";

                                    //set up the sprite for the after effect
                                    Sprite sprite = new Sprite()
                                    {
                                        EntityID = entityId,
                                        SpriteBounds = new Rectangle(0, 0, 64, 64),
                                        SpriteColor = new Color(255, 255, 255, 255),
                                        SpriteSheet = spriteSheet,
                                        UseDifferentColor = false,
                                    };
                                    _game.SpriteComponent[entityId] = sprite;

                                    //allow the after effect to expire
                                    TimedEffect timedEffect = new TimedEffect()
                                    {
                                        EntityID = entityId,
                                        TotalDuration = 1,
                                        TimeLeft = 1
                                    };
                                    _game.TimedEffectComponent.Add(entityId, timedEffect);

                                    //depending at which direction the character is facing, move them in that direction
                                    switch (facing)
                                    {
                                        case Facing.North:
                                            pos.Center.Y -= distance;
                                            if (pos.Center.Y <= 0)
                                                pos.Center.Y = 5;
                                            break;
                                        case Facing.East:
                                            pos.Center.X += distance;
                                            if (pos.Center.X >= _game.GraphicsDevice.Viewport.Width)
                                                pos.Center.X = _game.GraphicsDevice.Viewport.Width - 5;
                                            break;
                                        case Facing.South:
                                            pos.Center.Y += distance;
                                            if (pos.Center.Y >= _game.GraphicsDevice.Viewport.Height)
                                                pos.Center.Y = _game.GraphicsDevice.Viewport.Height - 5;
                                            break;
                                        case Facing.West:
                                            pos.Center.X -= distance;
                                            if (pos.Center.X <= 0)
                                                pos.Center.X = 5;
                                            break;
                                    }

                                    //update their position
                                    _game.PositionComponent[userID] = pos;

                                    //check for collision with static objects
                                    _game.CollisionSystem.CheckTeleportCollision(userID, facing);

                                }
                                #endregion
                                break;
                            }

                        case SkillType.Invisibility:
                            {
                                #region Skill Variables
                                int duration = 0;
                                int psiCost = (int)(_game.StatsComponent[userID].PsiBase * .05);
                                #endregion

                                switch (rank)
                                {
                                    #region Checking Rank
                                    case 1:
                                        duration = 2;
                                        break;

                                    case 2:
                                        duration = 4;
                                        break;

                                    case 3:
                                        duration = 6;
                                        break;

                                    case 4:
                                        duration = 8;
                                        break;

                                    case 5:
                                        duration = 10;
                                        break;

                                    case 6:
                                        duration = 12;
                                        break;

                                    case 7:
                                        duration = 14;
                                        break;

                                    case 8:
                                        duration = 16;
                                        break;

                                    case 9:
                                        duration = 18;
                                        break;

                                    case 10:
                                        duration = 20;
                                        break;

                                    default:
                                        break;
                                    #endregion
                                }
                                #region Logic
                                if (DrainPsiOrFatigue(userID, psiCost))
                                {
                                    eid = Entity.NextEntity();

                                    TimedEffect timedEffect;
                                    timedEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = duration,
                                        TimeLeft = duration
                                    };
                                    _game.TimedEffectComponent.Add(eid, timedEffect);

                                    AgroDrop agroDrop = new AgroDrop()
                                    {
                                        EntityID = eid,
                                        PlayerID = userID
                                    };
                                    _game.AgroDropComponent.Add(eid, agroDrop);

                                    ChangeVisibility changeVisibility;
                                    changeVisibility = new ChangeVisibility()
                                    {
                                        EntityID = eid,
                                        TargetID = userID,
                                        newColor = new Color(45, 45, 45, 0)
                                    };
                                    _game.ChangeVisibilityComponent.Add(eid, changeVisibility);
                                }
                                #endregion
                                break;
                            }

                        case SkillType.Meditate:
                            {
                                #region Skill Variables
                                float psiAmount = (float)(_game.StatsComponent[userID].PsiBase * .01);
                                int duration = 5;
                                #endregion

                                switch (rank)
                                {
                                    #region Checking Rank
                                    case 1:
                                        psiAmount += (float)(_game.StatsComponent[userID].PsiBase * .02);
                                        break;

                                    case 2:
                                        psiAmount += (float)(_game.StatsComponent[userID].PsiBase * .04);
                                        break;

                                    case 3:
                                        psiAmount += (float)(_game.StatsComponent[userID].PsiBase * .06);
                                        break;

                                    case 4:
                                        psiAmount += (float)(_game.StatsComponent[userID].PsiBase * .08);
                                        break;

                                    case 5:
                                        psiAmount += (float)(_game.StatsComponent[userID].PsiBase * .10);
                                        break;

                                    case 6:
                                        psiAmount += (float)(_game.StatsComponent[userID].PsiBase * .12);
                                        break;

                                    case 7:
                                        psiAmount += (float)(_game.StatsComponent[userID].PsiBase * .14);
                                        break;

                                    case 8:
                                        psiAmount += (float)(_game.StatsComponent[userID].PsiBase * .16);
                                        break;

                                    case 9:
                                        psiAmount += (float)(_game.StatsComponent[userID].PsiBase * .18);
                                        break;

                                    case 10:
                                        psiAmount += (float)(_game.StatsComponent[userID].PsiBase * .2);
                                        break;

                                    default:
                                        break;
                                }
                                    #endregion

                                    #region logic

                                         uint entityId = Entity.NextEntity();

                                         TimedEffect timed = new TimedEffect()
                                         {
                                             EntityID = entityId,
                                             TimeLeft = duration,
                                             TotalDuration = duration
                                         };
                                         _game.TimedEffectComponent[entityId] = timed;

                                         PsiOrFatigueRegen regen = new PsiOrFatigueRegen()
                                         {
                                             EntityID = entityId,
                                             TargetID = userID,
                                             AmountPerTick = psiAmount,
                                             CurrentTime = 1,
                                             TickTime = 1
                                         };
                                         _game.PsiOrFatigueRegenComponent[entityId] = regen;

                                    #endregion
                                break;
                            }
                        case SkillType.PsionicSpear:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.Push:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.ImprovedPsionicSpear:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.MentalBarrier:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.WormOfGargran:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.Soothe:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        default:
                            break;

                        #endregion
                    }
                    break;

                #endregion

                #region Cultist
                //Implementation for the Cultist Player ~Nick B.
                //Useful - Regex for separating rank cases into regions
                //Replace: break;.*:Cc:Cc
                //With: break;\n#endregion\n\n#region Rank \n
                //Turns
                //      break;
                //
                //      case 2:
                //Into
                //      break;
                //      #endregion
                //
                //      #region Rank
                //      case 2:
                //
                // All thats needed is to add #region Rank 1
                // and an #endregion after case 10
                // and put in the rank numbers
                // ~Nick B.
                case Aggregate.CultistPlayer:
                    {
                        #region Race Variables
                        int test;
                        #endregion

                        switch (skillType)
                        {
                            #region Checking Skill Type

                            case SkillType.Enslave: //Projectile
                                {
                                    #region Skill Logic

                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.Enslave,
                                        (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                        _game.PositionComponent[userID], rank, 300, userID);

                                    #endregion

                                    break;
                                }

                            case SkillType.Fear: //AOE
                                {
                                    #region Skill Variables
                                    int fearRange = 0;
                                    #endregion

                                    #region Skill Logic

                                    switch (rank)
                                    {
                                        #region Checking Rank

                                        #region Rank 1
                                        case 1:
                                            fearRange = 10;
                                            break;
                                        #endregion

                                        #region Rank 2
                                        case 2:
                                            fearRange = 13;
                                            break;
                                        #endregion

                                        #region Rank 3
                                        case 3:
                                            fearRange = 17;
                                            break;
                                        #endregion

                                        #region Rank 4
                                        case 4:
                                            fearRange = 25;
                                            break;
                                        #endregion

                                        #region Rank 5
                                        case 5:
                                            fearRange = 30;
                                            break;
                                        #endregion

                                        #region Rank 6
                                        case 6:
                                            fearRange = 37;
                                            break;
                                        #endregion

                                        #region Rank 7
                                        case 7:
                                            fearRange = 48;
                                            break;
                                        #endregion

                                        #region Rank 8
                                        case 8:
                                            fearRange = 55;
                                            break;
                                        #endregion

                                        #region Rank 9
                                        case 9:
                                            fearRange = 67;
                                            break;
                                        #endregion

                                        #region Rank 10
                                        case 10:
                                            fearRange = 90;
                                            break;
                                        #endregion

                                        default:
                                            break;
                                        #endregion
                                    }

                                    _game.SkillEntityFactory.CreateSkillAoE(SkillType.Fear,
                                        _game.PositionComponent[userID], rank, fearRange);

                                    #endregion

                                    break;
                                }

                            case SkillType.Sacrifice: //Instant
                                {
                                    #region Skill Variables

                                    InstantEffect instantEffect;
                                    DirectHeal directHeal;
                                    DirectDamage directDamage;

                                    uint enslavedEnemyID = int.MaxValue;
                                    float damageValue = 0, healValue = 0;

                                    #endregion

                                    #region Skill Logic

                                    //Getting whatever is the first monster enslaved by this player
                                    //Alternatively, could sacrifice all enslaved monsters
                                    foreach (Enslave effect in _game.EnslaveComponent.All)
                                    {
                                        if (effect.OwnerID == userID && _game.EnemyComponent.Contains(effect.TargetID))
                                        {
                                            enslavedEnemyID = effect.TargetID;
                                            break;
                                        }
                                    }

                                    if (!_game.EnemyComponent.Contains(enslavedEnemyID)) return;

                                    damageValue = _game.EnemyComponent[enslavedEnemyID].Health;

                                    switch (rank)
                                    {
                                        #region Checking Rank

                                        #region Rank 1
                                        case 1:
                                            healValue = damageValue * 0.10f; //10% of remaining life
                                            break;
                                        #endregion

                                        #region Rank 2
                                        case 2:
                                            healValue = damageValue * 0.15f; //15% of remaining life
                                            break;
                                        #endregion

                                        #region Rank 3
                                        case 3:
                                            healValue = damageValue * 0.20f; //20% of remaining life
                                            break;
                                        #endregion

                                        #region Rank 4
                                        case 4:
                                            healValue = damageValue * 0.25f; //25% of remaining life
                                            break;
                                        #endregion

                                        #region Rank 5
                                        case 5:
                                            healValue = damageValue * 0.35f; //35% of remaining life
                                            break;
                                        #endregion

                                        #region Rank 6
                                        case 6:
                                            healValue = damageValue * 0.50f; //50% of remaining life
                                            break;
                                        #endregion

                                        #region Rank 7
                                        case 7:
                                            healValue = damageValue * 0.80f; //80% of remaining life
                                            break;
                                        #endregion

                                        #region Rank 8
                                        case 8:
                                            healValue = damageValue * 1.00f; //100% of remaining life
                                            break;
                                        #endregion

                                        #region Rank 9
                                        case 9:
                                            healValue = damageValue * 1.10f; //110% of remaining life
                                            break;
                                        #endregion

                                        #region Rank 10
                                        case 10:
                                            healValue = damageValue * 0.1f; //10% of remaining life
                                            break;
                                        #endregion

                                        default:
                                            return;
                                        #endregion
                                    }

                                    //Since the only variance between ranks is the healValue variable, we can
                                    //keep it simple by just adding all the effects down here, after we've
                                    //got the variables initialized
                                    // ~Nick B.

                                    eid = Entity.NextEntity();

                                    instantEffect = new InstantEffect()
                                    {
                                        EntityID = eid,
                                        isTriggered = false,
                                    };
                                    _game.InstantEffectComponent.Add(eid, instantEffect);

                                    directDamage = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        TargetID = enslavedEnemyID,
                                        Damage = damageValue,
                                    };
                                    _game.DirectDamageComponent.Add(eid, directDamage);

                                    directHeal = new DirectHeal()
                                    {
                                        EntityID = eid,
                                        TargetID = userID,
                                        Amount = healValue,
                                    };
                                    _game.DirectHealComponent.Add(eid, directHeal);

                                    #endregion

                                    break;
                                }

                            case SkillType.PsionicSpear: //Projectile
                                {
                                    #region Skill Logic

                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.PsionicSpear,
                                        (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                        _game.PositionComponent[userID], rank, 300, userID);

                                    #endregion

                                    break;
                                }

                            case SkillType.Taint: //Projectile
                                {
                                    #region Skill Logic

                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.Taint,
                                        (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                        _game.PositionComponent[userID], rank, 300, userID);

                                    #endregion

                                    break;
                                }

                            case SkillType.Rot: //Projectile
                                {
                                    #region Skill Logic

                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.Rot,
                                        (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                        _game.PositionComponent[userID], rank, 300, userID);

                                    #endregion

                                    break;
                                }

                            case SkillType.Push: //AOE
                                {
                                    #region Skill Variables
                                    int pushRange = 0;
                                    #endregion

                                    #region Skill Logic

                                    switch (rank)
                                    {
                                        #region Checking Rank

                                        #region Rank 1
                                        case 1:
                                            pushRange = 15;
                                            break;
                                        #endregion

                                        #region Rank 2
                                        case 2:
                                            pushRange = 20;
                                            break;
                                        #endregion

                                        #region Rank 3
                                        case 3:
                                            pushRange = 24;
                                            break;
                                        #endregion

                                        #region Rank 4
                                        case 4:
                                            pushRange = 30;
                                            break;
                                        #endregion

                                        #region Rank 5
                                        case 5:
                                            pushRange = 45;
                                            break;
                                        #endregion

                                        #region Rank 6
                                        case 6:
                                            pushRange = 60;
                                            break;
                                        #endregion

                                        #region Rank 7
                                        case 7:
                                            pushRange = 85;
                                            break;
                                        #endregion

                                        #region Rank 8
                                        case 8:
                                            pushRange = 100;
                                            break;
                                        #endregion

                                        #region Rank 9
                                        case 9:
                                            pushRange = 125;
                                            break;
                                        #endregion

                                        #region Rank 10
                                        case 10:
                                            pushRange = 150;
                                            break;
                                        #endregion

                                        default:
                                            break;
                                        #endregion
                                    }

                                    _game.SkillEntityFactory.CreateSkillAoE(SkillType.Push,
                                        _game.PositionComponent[userID], rank, pushRange);

                                    #endregion

                                    break;
                                }

                            case SkillType.Lightning: //Instant
                                {
                                    #region Skill Variables

                                    InstantEffect instantEffect;
                                    DirectDamage directDamage;

                                    uint eid_2;
                                    TimedEffect timedEffect;
                                    Stun stun;

                                    Random damageMod = new Random();

                                    Position evalPosition;
                                    uint tempEnemyID;
                                    List<uint> ignoreList = new List<uint>();
                                    int chainNumber = 0;
                                    float duration = 0;
                                    int damageValue = 0;
                                    float maxChainDistance = 0;

                                    #endregion

                                    #region Skill Logic
                                    //No need to continue if we can't even get the position of the player
                                    //which means there will need to be some bugs to iron out
                                    if (!_game.PositionComponent.Contains(userID)) return;

                                    evalPosition = _game.PositionComponent[userID];

                                    switch (rank)
                                    {
                                        #region Checking Rank

                                        #region Rank 1
                                        case 1:
                                            chainNumber = 1; //Chains through 1 enemy
                                            duration = 2; //Duration of 2 seconds
                                            damageValue = 2 + damageMod.Next(4); //Damage between 2 and 5
                                            maxChainDistance = 10; //Biggest gap an arc will span
                                            break;
                                        #endregion

                                        #region Rank 2
                                        case 2:
                                            chainNumber = 1; //Chains through 1 enemy
                                            duration = 3; //Duration of 3 seconds
                                            damageValue = 4 + damageMod.Next(5); //Damage between 4 and 8
                                            maxChainDistance = 15; //Biggest gap an arc will span
                                            break;
                                        #endregion

                                        #region Rank 3
                                        case 3:
                                            chainNumber = 2; //Chains through 2 enemies
                                            duration = 3; //Duration of 3 seconds
                                            damageValue = 6 + damageMod.Next(5); //Damage between 6 and 10
                                            maxChainDistance = 15; //Biggest gap an arc will span
                                            break;
                                        #endregion

                                        #region Rank 4
                                        case 4:
                                            chainNumber = 2; //Chains through 2 enemies
                                            duration = 4; //Duration of 4 seconds
                                            damageValue = 10 + damageMod.Next(3); //Damage between 10 and 12
                                            maxChainDistance = 18; //Biggest gap an arc with span
                                            break;
                                        #endregion

                                        #region Rank 5
                                        case 5:
                                            chainNumber = 3; //Chains through 3 enemies
                                            duration = 5; //Duration of 5 seconds
                                            damageValue = 13 + damageMod.Next(3); //Damage between 13 and 15
                                            maxChainDistance = 21; //Biggest gap an arc will span
                                            break;
                                        #endregion

                                        #region Rank 6
                                        case 6:
                                            chainNumber = 3; //Chains through 3 enemies
                                            duration = 5; //Duration of 5 seconds
                                            damageValue = 17 + damageMod.Next(4); //Damage between 17 and 20
                                            maxChainDistance = 26; //Biggest gap an arc will span
                                            break;
                                        #endregion

                                        #region Rank 7
                                        case 7:
                                            chainNumber = 4; //Chains through 4 enemies
                                            duration = 7; //Duration of 7 seconds
                                            damageValue = 22 + damageMod.Next(6); //Damage between 22 and 27
                                            maxChainDistance = 30; //Biggest gap an arc will span
                                            break;
                                        #endregion

                                        #region Rank 8
                                        case 8:
                                            chainNumber = 4; //Chains through 4 enemies
                                            duration = 7; //Duration of 7 seconds
                                            damageValue = 30 + damageMod.Next(11); //Damage between 30 and 40
                                            maxChainDistance = 38; //Biggest gap an arc will span
                                            break;
                                        #endregion

                                        #region Rank 9
                                        case 9:
                                            chainNumber = 5; //Chains through 5 enemies
                                            duration = 7; //Duration of 7 seconds
                                            damageValue = 35 + damageMod.Next(13); //Damage between 35 and 47
                                            maxChainDistance = 45; //Biggest gap an arc will span
                                            break;
                                        #endregion

                                        #region Rank 10
                                        case 10:
                                            chainNumber = 6; //Chains through 6 enemies
                                            duration = 10; //Duration of 10 seconds
                                            damageValue = 50 + damageMod.Next(16); //Damage between 50 and 65
                                            maxChainDistance = 50; //Biggest gap an arc will span
                                            break;
                                        #endregion

                                        default:
                                            return;
                                        #endregion
                                    }

                                    eid = Entity.NextEntity();
                                    instantEffect = new InstantEffect()
                                    {
                                        EntityID = eid,
                                        isTriggered = false,
                                    };
                                    _game.InstantEffectComponent.Add(eid, instantEffect);

                                    eid_2 = Entity.NextEntity();
                                    timedEffect = new TimedEffect()
                                    {
                                        EntityID = eid_2,
                                        TotalDuration = duration,
                                        TimeLeft = duration,
                                    };

                                    for (int x = 0; x < chainNumber; x++)
                                    {
                                        tempEnemyID = _game.CollisionSystem.GetClosestEnemy(evalPosition, ignoreList, maxChainDistance);

                                        //No need to continue, no enemy is close enough or no other enemies exist
                                        if (!_game.EnemyComponent.Contains(tempEnemyID)) break;

                                        //Add the enemy we just chained to to the ignore list, we don't want
                                        //to chain to them again
                                        ignoreList.Add(tempEnemyID);

                                        //This will be an instant effect, so we'll use eid here
                                        directDamage = new DirectDamage()
                                        {
                                            EntityID = eid,
                                            TargetID = tempEnemyID,
                                            Damage = damageValue,
                                        };
                                        _game.DirectDamageComponent.Add(eid, directDamage);

                                        //This will be a timed effect, so we'll need eid_2 here
                                        stun = new Stun()
                                        {
                                            EntityID = eid_2,
                                            TargetID = tempEnemyID,
                                            Type = StunType.CantBreak,
                                        };
                                        _game.StunComponent.Add(eid_2, stun);
                                    }

                                    #endregion

                                    break;
                                }

                            case SkillType.Malice: //AOE
                                {
                                    #region Skill Variables
                                    int meterConversion = 75;
                                    int maliceRange = 0;
                                    #endregion

                                    #region Skill Logic

                                    switch (rank)
                                    {
                                        #region Checking Rank

                                        #region Rank 1
                                        case 1:
                                            maliceRange = 2;
                                            break;
                                        #endregion

                                        #region Rank 2
                                        case 2:
                                            maliceRange = 2;
                                            break;
                                        #endregion

                                        #region Rank 3
                                        case 3:
                                            maliceRange = 3;
                                            break;
                                        #endregion

                                        #region Rank 4
                                        case 4:
                                            maliceRange = 3;
                                            break;
                                        #endregion

                                        #region Rank 5
                                        case 5:
                                            maliceRange = 4;
                                            break;
                                        #endregion

                                        #region Rank 6
                                        case 6:
                                            maliceRange = 5;
                                            break;
                                        #endregion

                                        #region Rank 7
                                        case 7:
                                            maliceRange = 5;
                                            break;
                                        #endregion

                                        #region Rank 8
                                        case 8:
                                            maliceRange = 6;
                                            break;
                                        #endregion

                                        #region Rank 9
                                        case 9:
                                            maliceRange = 6;
                                            break;
                                        #endregion

                                        #region Rank 10
                                        case 10:
                                            maliceRange = 6;
                                            break;
                                        #endregion

                                        default:
                                            break;
                                        #endregion
                                    }

                                    _game.SkillEntityFactory.CreateSkillAoE(SkillType.Malice,
                                        _game.PositionComponent[userID], rank, maliceRange * meterConversion);

                                    #endregion

                                    break;
                                }

                            default:
                                {
                                    break;
                                }

                            #endregion
                        }
                        break;
                    }

                #endregion

                #region Vermis

                case Aggregate.ZombiePlayer:
                    CoolDown coolDown;
                    TimedEffect timeEffect;
                    Buff buff;
                    #region Race Variables

                    #endregion

                    switch (skillType)
                    {
                        #region Checking Skill Type

                        case SkillType.ThrownBlades:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.ThrownBlades,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.ThrownBlades, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                        _game.PositionComponent[userID], 1, 300, userID);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.ThrownBlades,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.ThrownBlades, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 2, 300, userID);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.ThrownBlades,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.ThrownBlades, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 3, 300, userID);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.ThrownBlades,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.ThrownBlades, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 4, 300, userID);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.ThrownBlades,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.ThrownBlades, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 5, 300, userID);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.ThrownBlades,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.ThrownBlades, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 6, 300, userID);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.ThrownBlades,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.ThrownBlades, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 7, 300, userID);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.ThrownBlades,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.ThrownBlades, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 8, 300, userID);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.ThrownBlades,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.ThrownBlades, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 9, 300, userID);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.ThrownBlades,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.ThrownBlades, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 10, 300, userID);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.FrenziedAttack:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.FrenziedAttack,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID =eid,
                                        TimeLeft = 10,
                                         TotalDuration=10,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 100,
                                        DefenseMelee = 0,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 10,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = true,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 10,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.FrenziedAttack,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID =eid,
                                        TimeLeft = 10,
                                         TotalDuration=10,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 120,
                                        DefenseMelee = 0,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 15,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = true,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 15,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 12,
                                        TimeLeft = 12,
                                        Type = SkillType.FrenziedAttack,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 12,
                                        TotalDuration = 12,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 120,
                                        DefenseMelee = 0,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 15,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = true,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 15,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 14,
                                        TimeLeft = 14,
                                        Type = SkillType.FrenziedAttack,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 14,
                                        TotalDuration = 14,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 140,
                                        DefenseMelee = 0,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 20,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = true,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 20,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;
                                case 5:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 14,
                                        TimeLeft = 14,
                                        Type = SkillType.FrenziedAttack,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 14,
                                        TotalDuration = 14,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 140,
                                        DefenseMelee = 0,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 20,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = true,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 20,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 16,
                                        TimeLeft = 16,
                                        Type = SkillType.FrenziedAttack,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 16,
                                        TotalDuration = 16,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 140,
                                        DefenseMelee = 0,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 20,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = true,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 20,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 16,
                                        TimeLeft = 16,
                                        Type = SkillType.FrenziedAttack,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 16,
                                        TotalDuration = 16,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 160,
                                        DefenseMelee = 0,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 25,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = true,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 25,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 18,
                                        TimeLeft = 18,
                                        Type = SkillType.FrenziedAttack,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 18,
                                        TotalDuration = 18,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 160,
                                        DefenseMelee = 0,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 25,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = true,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 25,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 18,
                                        TimeLeft = 18,
                                        Type = SkillType.FrenziedAttack,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 18,
                                        TotalDuration = 18,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 180,
                                        DefenseMelee = 0,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 30,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = true,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 30,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 20,
                                        TimeLeft = 20,
                                        Type = SkillType.FrenziedAttack,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 20,
                                        TotalDuration = 20,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 200,
                                        DefenseMelee = 0,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 35,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = true,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 35,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.CausticWeapons:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.CausticWeapons,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.CausticWeapons,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.CausticWeapons,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.CausticWeapons,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.CausticWeapons,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.CausticWeapons,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.CausticWeapons,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.CausticWeapons,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.CausticWeapons,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.CausticWeapons,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.MeatShield:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.MeatShield,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 10,
                                        TotalDuration = 10,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 0,
                                        DefenseMelee = 0,
                                        DefenseRanged = 1,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = true,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = false,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = true,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = -6,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.MeatShield,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 10,
                                        TotalDuration = 10,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 0,
                                        DefenseMelee = 0,
                                        DefenseRanged = 1,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = true,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = false,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = true,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = -5,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 12,
                                        TimeLeft = 12,
                                        Type = SkillType.MeatShield,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 12,
                                        TotalDuration = 12,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 0,
                                        DefenseMelee = 0,
                                        DefenseRanged = 2,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = true,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = false,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = true,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = -5,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 14,
                                        TimeLeft = 14,
                                        Type = SkillType.MeatShield,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 14,
                                        TotalDuration = 14,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 0,
                                        DefenseMelee = 0,
                                        DefenseRanged = 2,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = true,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = false,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = true,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = -4,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;
                                case 5:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 14,
                                        TimeLeft = 14,
                                        Type = SkillType.MeatShield,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 14,
                                        TotalDuration = 14,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 0,
                                        DefenseMelee = 0,
                                        DefenseRanged = 3,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = true,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = false,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = true,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = -4,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 16,
                                        TimeLeft = 16,
                                        Type = SkillType.MeatShield,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 16,
                                        TotalDuration = 16,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 0,
                                        DefenseMelee = 0,
                                        DefenseRanged = 3,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = true,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = false,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = true,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = -3,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 16,
                                        TimeLeft = 16,
                                        Type = SkillType.MeatShield,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 16,
                                        TotalDuration = 16,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 0,
                                        DefenseMelee = 0,
                                        DefenseRanged = 4,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = true,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = false,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = true,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = -3,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 18,
                                        TimeLeft = 18,
                                        Type = SkillType.MeatShield,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 18,
                                        TotalDuration = 18,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 0,
                                        DefenseMelee = 0,
                                        DefenseRanged = 4,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = true,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = false,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = true,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = -2,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 18,
                                        TimeLeft = 18,
                                        Type = SkillType.MeatShield,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 18,
                                        TotalDuration = 18,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 0,
                                        DefenseMelee = 0,
                                        DefenseRanged = 5,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = true,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = false,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = true,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = -2,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 20,
                                        TimeLeft = 20,
                                        Type = SkillType.MeatShield,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 20,
                                        TotalDuration = 20,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = 0,
                                        DefenseMelee = 0,
                                        DefenseRanged = 7,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = false,
                                        isPercentDefenseRanged = true,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength =- 1,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.HardenedBody:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.HardenedBody,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 10,
                                        TotalDuration = 10,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = -100,
                                        DefenseMelee = 1,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = true,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength =0,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.HardenedBody,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 10,
                                        TotalDuration = 10,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = -90,
                                        DefenseMelee = 1,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = true,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength =0,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 12,
                                        TimeLeft = 12,
                                        Type = SkillType.HardenedBody,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 12,
                                        TotalDuration = 12,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = -90,
                                        DefenseMelee = 2,
                                        DefenseRanged =0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = true,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 0,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 14,
                                        TimeLeft = 14,
                                        Type = SkillType.HardenedBody,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 14,
                                        TotalDuration = 14,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = -80,
                                        DefenseMelee = 2,
                                        DefenseRanged = 2,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = true,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 0,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;
                                case 5:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 14,
                                        TimeLeft = 14,
                                        Type = SkillType.HardenedBody,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 14,
                                        TotalDuration = 14,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = -80,
                                        DefenseMelee = 3,
                                        DefenseRanged = 2,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = true,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 0,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 16,
                                        TimeLeft = 16,
                                        Type = SkillType.HardenedBody,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 16,
                                        TotalDuration = 16,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = -70,
                                        DefenseMelee = 3,
                                        DefenseRanged = 3,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = true,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 0,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 16,
                                        TimeLeft = 16,
                                        Type = SkillType.HardenedBody,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 16,
                                        TotalDuration = 16,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = -70,
                                        DefenseMelee = 4,
                                        DefenseRanged = 4,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = true,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = false,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 0,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 18,
                                        TimeLeft = 18,
                                        Type = SkillType.HardenedBody,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 18,
                                        TotalDuration = 18,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = -60,
                                        DefenseMelee = 4,
                                        DefenseRanged = 4,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = true,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = false,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 0,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 18,
                                        TimeLeft = 18,
                                        Type = SkillType.HardenedBody,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 18,
                                        TotalDuration = 18,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = -60,
                                        DefenseMelee = 5,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = false,
                                        isPercentDefenseMelee = true,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed =true,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 0,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();

                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 20,
                                        TimeLeft = 20,
                                        Type = SkillType.HardenedBody,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    timeEffect = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 20,
                                        TotalDuration = 20,
                                    };
                                    _game.TimedEffectComponent.Add(eid, timeEffect);
                                    buff = new Buff()
                                    {
                                        EntityID = eid,
                                        MovementSpeed = -50,
                                        DefenseMelee = 7,
                                        DefenseRanged = 0,
                                        AttackMelee = 0,
                                        AttackRanged = 0,
                                        AttackSpeed = 00,
                                        isPercentAttackMelee = false,
                                        isPercentAttackRanged = false,
                                        isPercentAttackSpeed = true,
                                        isPercentDefenseMelee = true,
                                        isPercentDefenseRanged = false,
                                        isPercentFatigue = false,
                                        isPercentHealth = false,
                                        isPercentMovementSpeed = false,
                                        Fatigue = 0,
                                        Health = 0,
                                        isPercentPsi = false,
                                        isPercentResistPoison = false,
                                        isPercentWeaponAccuracy = false,
                                        isPercentWeaponSpeed = false,
                                        isPercentWeaponStrength = false,
                                        Psi = 0,
                                        ResistPoison = 0,
                                        TargetID = userID,
                                        WeaponAccuracy = 0,
                                        WeaponSpeed = 0,
                                        WeaponStrength = 0,
                                    };
                                    _game.BuffComponent.Add(eid, buff);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.Regeneration:

                            #region Skill Variables
                            HealOverTime HoT;
                            TimedEffect time;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.Regeneration,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    HoT = new HealOverTime()
                                    {
                                        AmountPerTick = 1,
                                        CurrentStack = 1,
                                        CurrentTime = 0,
                                        EntityID = eid,
                                        MaxStack = 1,
                                        TargetID = userID,
                                        TickTime = 1,
                                    };
                                    _game.HealOverTimeComponent.Add(eid, HoT);

                                    time = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 10,
                                        TotalDuration = 10,
                                    };
                                    _game.TimedEffectComponent.Add(eid, time);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    HoT = new HealOverTime()
                                    {
                                        AmountPerTick = 1,
                                        CurrentStack = 1,
                                        CurrentTime = 0,
                                        EntityID = eid,
                                        MaxStack = 1,
                                        TargetID = userID,
                                        TickTime = 1,
                                    };
                                    _game.HealOverTimeComponent.Add(eid, HoT);

                                    time = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 12,
                                        TotalDuration = 12,
                                    };
                                    _game.TimedEffectComponent.Add(eid, time);
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 12,
                                        TimeLeft = 12,
                                        Type = SkillType.Regeneration,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 12,
                                        TimeLeft = 12,
                                        Type = SkillType.Regeneration,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    HoT = new HealOverTime()
                                    {
                                        AmountPerTick = 1,
                                        CurrentStack = 1,
                                        CurrentTime = 0,
                                        EntityID = eid,
                                        MaxStack = 1,
                                        TargetID = userID,
                                        TickTime = 1,
                                    };
                                    _game.HealOverTimeComponent.Add(eid, HoT);

                                    time = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 12,
                                        TotalDuration = 12,
                                    };
                                    _game.TimedEffectComponent.Add(eid, time);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.Regeneration,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);

                                    HoT = new HealOverTime()
                                    {
                                        AmountPerTick = 2,
                                        CurrentStack = 1,
                                        CurrentTime = 0,
                                        EntityID = eid,
                                        MaxStack = 1,
                                        TargetID = userID,
                                        TickTime = 1,
                                    };
                                    _game.HealOverTimeComponent.Add(eid, HoT);

                                    time = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 14,
                                        TotalDuration = 14,
                                    };
                                    _game.TimedEffectComponent.Add(eid, time);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.Regeneration,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    HoT = new HealOverTime()
                                    {
                                        AmountPerTick = 3,
                                        CurrentStack = 1,
                                        CurrentTime = 0,
                                        EntityID = eid,
                                        MaxStack = 1,
                                        TargetID = userID,
                                        TickTime = 1,
                                    };
                                    _game.HealOverTimeComponent.Add(eid, HoT);

                                    time = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 14,
                                        TotalDuration = 14,
                                    };
                                    _game.TimedEffectComponent.Add(eid, time);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.Regeneration,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    HoT = new HealOverTime()
                                    {
                                        AmountPerTick = 3,
                                        CurrentStack = 1,
                                        CurrentTime = 0,
                                        EntityID = eid,
                                        MaxStack = 1,
                                        TargetID = userID,
                                        TickTime = 1,
                                    };
                                    _game.HealOverTimeComponent.Add(eid, HoT);

                                    time = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 16,
                                        TotalDuration = 16,
                                    };
                                    _game.TimedEffectComponent.Add(eid, time);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.Regeneration,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    HoT = new HealOverTime()
                                    {
                                        AmountPerTick = 4,
                                        CurrentStack = 1,
                                        CurrentTime = 0,
                                        EntityID = eid,
                                        MaxStack = 1,
                                        TargetID = userID,
                                        TickTime = 1,
                                    };
                                    _game.HealOverTimeComponent.Add(eid, HoT);

                                    time = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 16,
                                        TotalDuration = 16,
                                    };
                                    _game.TimedEffectComponent.Add(eid, time);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.Regeneration,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.Regeneration,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    HoT = new HealOverTime()
                                    {
                                        AmountPerTick = 4,
                                        CurrentStack = 1,
                                        CurrentTime = 0,
                                        EntityID = eid,
                                        MaxStack = 1,
                                        TargetID = userID,
                                        TickTime = 1,
                                    };
                                    _game.HealOverTimeComponent.Add(eid, HoT);

                                    time = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 18,
                                        TotalDuration = 18,
                                    };
                                    _game.TimedEffectComponent.Add(eid, time);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 10,
                                        TimeLeft = 10,
                                        Type = SkillType.Regeneration,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    HoT = new HealOverTime()
                                    {
                                        AmountPerTick = 5,
                                        CurrentStack = 1,
                                        CurrentTime = 0,
                                        EntityID = eid,
                                        MaxStack = 1,
                                        TargetID = userID,
                                        TickTime = 1,
                                    };
                                    _game.HealOverTimeComponent.Add(eid, HoT);

                                    time = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TimeLeft = 20,
                                        TotalDuration = 20,
                                    };
                                    _game.TimedEffectComponent.Add(eid, time);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.BenignParasite:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.BenignParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.BenignParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 1, 300, userID);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.BenignParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.BenignParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 2, 300, userID);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.BenignParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.BenignParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 3, 300, userID);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.BenignParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.BenignParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 4, 300, userID);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.BenignParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.BenignParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 5, 300, userID);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.BenignParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.BenignParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 6, 300, userID);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.BenignParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.BenignParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 7, 300, userID);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.BenignParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.BenignParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 8, 300, userID);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.BenignParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.BenignParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                        _game.PositionComponent[userID], 9, 300, userID);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.BenignParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.BenignParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 10, 300, userID);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.MaliciousParasite:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MaliciousParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MaliciousParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 1, 300, userID);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MaliciousParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MaliciousParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 2, 300, userID);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MaliciousParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MaliciousParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 3, 300, userID);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MaliciousParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MaliciousParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 4, 300, userID);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MaliciousParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MaliciousParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 5, 300, userID);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MaliciousParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MaliciousParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 6, 300, userID);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MaliciousParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MaliciousParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 7, 300, userID);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MaliciousParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MaliciousParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 8, 300, userID);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MaliciousParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MaliciousParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 9, 300, userID);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MaliciousParasite,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MaliciousParasite, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 10, 300, userID);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        case SkillType.MindlessParasites:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MindlessParasites,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MindlessParasites, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 1, 300, userID);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MindlessParasites,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MindlessParasites, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 2, 300, userID);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MindlessParasites,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MindlessParasites, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 3, 300, userID);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MindlessParasites,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MindlessParasites, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 4, 300, userID);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MindlessParasites,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MindlessParasites, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 5, 300, userID);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MindlessParasites,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MindlessParasites, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 6, 300, userID);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MindlessParasites,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MindlessParasites, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 7, 300, userID);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MindlessParasites,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MindlessParasites, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 8, 300, userID);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MindlessParasites,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MindlessParasites, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 9, 300, userID);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    coolDown = new CoolDown()
                                    {
                                        EntityID = eid,
                                        MaxTime = 1,
                                        TimeLeft = 1,
                                        Type = SkillType.MindlessParasites,
                                        UserID = userID,
                                    };
                                    _game.CoolDownComponent.Add(eid, coolDown);
                                    _game.SkillEntityFactory.CreateSkillProjectile(SkillType.MindlessParasites, (Facing)_game.SpriteAnimationComponent[userID].CurrentAnimationRow,
                                       _game.PositionComponent[userID], 10, 300, userID);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;

                        default:
                            break;

                        #endregion
                    }
                    break;

                #endregion

                #region Earthian

                //Earthian Skills done by Andrew Bellinder
                case Aggregate.EarthianPlayer:
                    #region Race Variables

                    #endregion

                    switch (skillType)
                    {
                        #region Checking Skill Type

                        #region Turret

                        case SkillType.Turret:
                            {

                                #region Skill Variables
                                Turret turret;
                                TimedEffect timedEffect;
                                float effectDuration;
                                Sprite sprite;
                                Position turretPosition;

                                #endregion

                                switch (rank)
                                {
                                    #region Checking Rank
                                    case 1:
                                        eid = Entity.NextEntity();
                                        effectDuration = 3;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        turretPosition = _game.PositionComponent[GetPlayerID()];
                                        turret = new Turret()
                                        {
                                            EntityID = eid,
                                            position = turretPosition,
                                            range = 100,
                                        };
                                        _game.TurretComponent.Add(eid, turret);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(11, 49, 37, 63),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, turret.position);

                                        break;

                                    case 2:
                                        eid = Entity.NextEntity();
                                        effectDuration = 4;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        turretPosition = _game.PositionComponent[GetPlayerID()];
                                        turret = new Turret()
                                        {
                                            EntityID = eid,
                                            position = turretPosition,
                                            range = 100,
                                        };
                                        _game.TurretComponent.Add(eid, turret);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(11, 49, 37, 63),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, turret.position);

                                        break;

                                    case 3:
                                        eid = Entity.NextEntity();
                                        effectDuration = 5;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        turretPosition = _game.PositionComponent[GetPlayerID()];
                                        turret = new Turret()
                                        {
                                            EntityID = eid,
                                            position = turretPosition,
                                            range = 150,
                                        };
                                        _game.TurretComponent.Add(eid, turret);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(11, 49, 37, 63),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, turret.position);
                                        break;

                                    case 4:
                                        eid = Entity.NextEntity();
                                        effectDuration = 6;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        turretPosition = _game.PositionComponent[GetPlayerID()];
                                        turret = new Turret()
                                        {
                                            EntityID = eid,
                                            position = turretPosition,
                                            range = 200,
                                        };
                                        _game.TurretComponent.Add(eid, turret);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(11, 49, 37, 63),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, turret.position);
                                        break;

                                    case 5:
                                        eid = Entity.NextEntity();
                                        effectDuration = 7;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        turretPosition = _game.PositionComponent[GetPlayerID()];
                                        turret = new Turret()
                                        {
                                            EntityID = eid,
                                            position = turretPosition,
                                            range = 250,
                                        };
                                        _game.TurretComponent.Add(eid, turret);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(11, 49, 37, 63),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, turret.position);
                                        break;

                                    case 6:
                                        eid = Entity.NextEntity();
                                        effectDuration = 8;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        turretPosition = _game.PositionComponent[GetPlayerID()];
                                        turret = new Turret()
                                        {
                                            EntityID = eid,
                                            position = turretPosition,
                                            range = 300,
                                        };
                                        _game.TurretComponent.Add(eid, turret);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(11, 49, 37, 63),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, turret.position);
                                        break;

                                    case 7:
                                        eid = Entity.NextEntity();
                                        effectDuration = 9;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        turretPosition = _game.PositionComponent[GetPlayerID()];
                                        turret = new Turret()
                                        {
                                            EntityID = eid,
                                            position = turretPosition,
                                            range = 350,
                                        };
                                        _game.TurretComponent.Add(eid, turret);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(11, 49, 37, 63),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, turret.position);
                                        break;

                                    case 8:
                                        eid = Entity.NextEntity();
                                        effectDuration = 10;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        turretPosition = _game.PositionComponent[GetPlayerID()];
                                        turret = new Turret()
                                        {
                                            EntityID = eid,
                                            position = turretPosition,
                                            range = 400,
                                        };
                                        _game.TurretComponent.Add(eid, turret);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(11, 49, 37, 63),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, turret.position);
                                        break;

                                    case 9:
                                        eid = Entity.NextEntity();
                                        effectDuration = 11;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        turretPosition = _game.PositionComponent[GetPlayerID()];
                                        turret = new Turret()
                                        {
                                            EntityID = eid,
                                            position = turretPosition,
                                            range = 450,
                                        };
                                        _game.TurretComponent.Add(eid, turret);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(11, 49, 37, 63),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, turret.position);
                                        break;

                                    case 10:
                                        eid = Entity.NextEntity();
                                        effectDuration = 12;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        turretPosition = _game.PositionComponent[GetPlayerID()];
                                        turret = new Turret()
                                        {
                                            EntityID = eid,
                                            position = turretPosition,
                                            range = 500,
                                        };
                                        _game.TurretComponent.Add(eid, turret);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(11, 49, 37, 63),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, turret.position);
                                        break;

                                    default:
                                        break;
                                    #endregion
                                }
                            }
                            break;

                        #endregion

                        #region Trap

                        case SkillType.Trap:
                            {

                                #region Skill Variables

                                TimedEffect timedEffect;
                                float effectDuration;
                                Trap trap;
                                Sprite sprite;
                                Position trapPosition;

                                #endregion

                                switch (rank)
                                {
                                    #region Checking Rank
                                    case 1:
                                        eid = Entity.NextEntity();
                                        effectDuration = 3;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        trapPosition = _game.PositionComponent[GetPlayerID()];
                                        trap = new Trap()
                                        {
                                            EntityID = eid,
                                            position = trapPosition,
                                            isSet = false,
                                            range = 20,
                                            duration = effectDuration,
                                        };
                                        _game.TrapComponent.Add(eid, trap);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(0, 10, 69, 42),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, trap.position);
                                        break;

                                    case 2:
                                        eid = Entity.NextEntity();
                                        effectDuration = 4;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        trapPosition = _game.PositionComponent[GetPlayerID()];
                                        trap = new Trap()
                                        {
                                            EntityID = eid,
                                            position = trapPosition,
                                            isSet = false,
                                            range = 20,
                                            duration = effectDuration,
                                        };
                                        _game.TrapComponent.Add(eid, trap);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(0, 10, 69, 42),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, trap.position);
                                        break;

                                    case 3:
                                        eid = Entity.NextEntity();
                                        effectDuration = 4;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        trapPosition = _game.PositionComponent[GetPlayerID()];
                                        trap = new Trap()
                                        {
                                            EntityID = eid,
                                            position = trapPosition,
                                            isSet = false,
                                            range = 30,
                                            duration = effectDuration,
                                        };
                                        _game.TrapComponent.Add(eid, trap);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(0, 10, 69, 42),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, trap.position);
                                        break;

                                    case 4:
                                        eid = Entity.NextEntity();
                                        effectDuration = 4;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        trapPosition = _game.PositionComponent[GetPlayerID()];
                                        trap = new Trap()
                                        {
                                            EntityID = eid,
                                            position = trapPosition,
                                            isSet = false,
                                            range = 30,
                                            duration = effectDuration,
                                        };
                                        _game.TrapComponent.Add(eid, trap);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(0, 10, 69, 42),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, trap.position);
                                        break;

                                    case 5:
                                        eid = Entity.NextEntity();
                                        effectDuration = 5;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        trapPosition = _game.PositionComponent[GetPlayerID()];
                                        trap = new Trap()
                                        {
                                            EntityID = eid,
                                            position = trapPosition,
                                            isSet = false,
                                            range = 40,
                                            duration = effectDuration,
                                        };
                                        _game.TrapComponent.Add(eid, trap);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(0, 10, 69, 42),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, trap.position);
                                        break;

                                    case 6:
                                        eid = Entity.NextEntity();
                                        effectDuration = 5;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        trapPosition = _game.PositionComponent[GetPlayerID()];
                                        trap = new Trap()
                                        {
                                            EntityID = eid,
                                            position = trapPosition,
                                            isSet = false,
                                            range = 40,
                                            duration = effectDuration,
                                        };
                                        _game.TrapComponent.Add(eid, trap);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(0, 10, 69, 42),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, trap.position);
                                        break;

                                    case 7:
                                        eid = Entity.NextEntity();
                                        effectDuration = 6;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        trapPosition = _game.PositionComponent[GetPlayerID()];
                                        trap = new Trap()
                                        {
                                            EntityID = eid,
                                            position = trapPosition,
                                            isSet = false,
                                            range = 50,
                                            duration = effectDuration,
                                        };
                                        _game.TrapComponent.Add(eid, trap);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(0, 10, 69, 42),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, trap.position);
                                        break;

                                    case 8:
                                        eid = Entity.NextEntity();
                                        effectDuration = 6;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        trapPosition = _game.PositionComponent[GetPlayerID()];
                                        trap = new Trap()
                                        {
                                            EntityID = eid,
                                            position = trapPosition,
                                            isSet = false,
                                            range = 50,
                                            duration = effectDuration,
                                        };
                                        _game.TrapComponent.Add(eid, trap);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(0, 10, 69, 42),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, trap.position);
                                        break;

                                    case 9:
                                        eid = Entity.NextEntity();
                                        effectDuration = 6;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        trapPosition = _game.PositionComponent[GetPlayerID()];
                                        trap = new Trap()
                                        {
                                            EntityID = eid,
                                            position = trapPosition,
                                            isSet = false,
                                            range = 60,
                                            duration = effectDuration,
                                        };
                                        _game.TrapComponent.Add(eid, trap);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(0, 10, 69, 42),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, trap.position);
                                        break;

                                    case 10:
                                        eid = Entity.NextEntity();
                                        effectDuration = 7;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        trapPosition = _game.PositionComponent[GetPlayerID()];
                                        trap = new Trap()
                                        {
                                            EntityID = eid,
                                            position = trapPosition,
                                            isSet = false,
                                            range = 60,
                                            duration = effectDuration,
                                        };
                                        _game.TrapComponent.Add(eid, trap);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                            SpriteBounds = new Rectangle(0, 10, 69, 42),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, trap.position);
                                        break;

                                    default:
                                        break;
                                    #endregion
                                }
                            }
                            break;

                        #endregion

                        #region Exploding Droids

                        case SkillType.ExplodingDroids:
                            {
                                if (_game.EnemyComponent.All.Count() > 0)
                                {
                                    #region Skill Variables

                                    TimedEffect timedEffect;
                                    float effectDuration;

                                    Movement movement;
                                    float droidSpeed;

                                    ExplodingDroid explodingDroid;
                                    Sprite sprite;

                                    Position droidPosition;

                                    Collideable collideable;

                                    #endregion

                                    switch (rank)
                                    {
                                        #region Checking Rank
                                        case 1:
                                            eid = Entity.NextEntity();
                                            effectDuration = 6;
                                            droidSpeed = 110;

                                            timedEffect = new TimedEffect()
                                            {
                                                EntityID = eid,
                                                TotalDuration = effectDuration,
                                                TimeLeft = effectDuration
                                            };
                                            _game.TimedEffectComponent.Add(eid, timedEffect);

                                            movement = new Movement()
                                            {
                                                EntityID = eid,
                                                Speed = droidSpeed,
                                            };
                                            _game.MovementComponent.Add(eid, movement);

                                            droidPosition = _game.PositionComponent[GetPlayerID()];
                                            droidPosition.Radius = 32;
                                            explodingDroid = new ExplodingDroid()
                                            {
                                                EntityID = eid,
                                                position = droidPosition,
                                                hasEnemy = false,
                                            };
                                            _game.ExplodingDroidComponent.Add(eid, explodingDroid);

                                            sprite = new Sprite()
                                            {
                                                EntityID = eid,
                                                SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                                SpriteBounds = new Rectangle(51, 45, 71, 82),
                                            };
                                            _game.SpriteComponent.Add(eid, sprite);

                                            collideable = new Collideable()
                                            {
                                                EntityID = eid,
                                                RoomID = droidPosition.RoomID,
                                                Bounds = new CircleBounds(droidPosition.Center, droidPosition.Radius),
                                            };
                                            _game.CollisionComponent.Add(eid, collideable);

                                            _game.PositionComponent.Add(eid, explodingDroid.position);
                                            break;

                                        case 2:
                                            eid = Entity.NextEntity();
                                            effectDuration = 6;
                                            droidSpeed = 115;

                                            timedEffect = new TimedEffect()
                                            {
                                                EntityID = eid,
                                                TotalDuration = effectDuration,
                                                TimeLeft = effectDuration
                                            };
                                            _game.TimedEffectComponent.Add(eid, timedEffect);

                                            movement = new Movement()
                                            {
                                                EntityID = eid,
                                                Speed = droidSpeed,
                                            };
                                            _game.MovementComponent.Add(eid, movement);

                                            droidPosition = _game.PositionComponent[GetPlayerID()];
                                            droidPosition.Radius = 35;
                                            explodingDroid = new ExplodingDroid()
                                            {
                                                EntityID = eid,
                                                position = droidPosition,
                                                hasEnemy = false,
                                            };
                                            _game.ExplodingDroidComponent.Add(eid, explodingDroid);

                                            sprite = new Sprite()
                                            {
                                                EntityID = eid,
                                                SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                                SpriteBounds = new Rectangle(51, 45, 71, 82),
                                            };
                                            _game.SpriteComponent.Add(eid, sprite);

                                            collideable = new Collideable()
                                            {
                                                EntityID = eid,
                                                RoomID = droidPosition.RoomID,
                                                Bounds = new CircleBounds(droidPosition.Center, droidPosition.Radius),
                                            };
                                            _game.CollisionComponent.Add(eid, collideable);

                                            _game.PositionComponent.Add(eid, explodingDroid.position);
                                            break;

                                        case 3:
                                            eid = Entity.NextEntity();
                                            effectDuration = 6;
                                            droidSpeed = 120;

                                            timedEffect = new TimedEffect()
                                            {
                                                EntityID = eid,
                                                TotalDuration = effectDuration,
                                                TimeLeft = effectDuration
                                            };
                                            _game.TimedEffectComponent.Add(eid, timedEffect);

                                            movement = new Movement()
                                            {
                                                EntityID = eid,
                                                Speed = droidSpeed,
                                            };
                                            _game.MovementComponent.Add(eid, movement);

                                            droidPosition = _game.PositionComponent[GetPlayerID()];
                                            droidPosition.Radius = 40;
                                            explodingDroid = new ExplodingDroid()
                                            {
                                                EntityID = eid,
                                                position = droidPosition,
                                                hasEnemy = false,
                                            };
                                            _game.ExplodingDroidComponent.Add(eid, explodingDroid);

                                            sprite = new Sprite()
                                            {
                                                EntityID = eid,
                                                SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                                SpriteBounds = new Rectangle(51, 45, 71, 82),
                                            };
                                            _game.SpriteComponent.Add(eid, sprite);

                                            collideable = new Collideable()
                                            {
                                                EntityID = eid,
                                                RoomID = droidPosition.RoomID,
                                                Bounds = new CircleBounds(droidPosition.Center, droidPosition.Radius),
                                            };
                                            _game.CollisionComponent.Add(eid, collideable);

                                            _game.PositionComponent.Add(eid, explodingDroid.position);
                                            break;

                                        case 4:
                                            eid = Entity.NextEntity();
                                            effectDuration = 6;
                                            droidSpeed = 125;

                                            timedEffect = new TimedEffect()
                                            {
                                                EntityID = eid,
                                                TotalDuration = effectDuration,
                                                TimeLeft = effectDuration
                                            };
                                            _game.TimedEffectComponent.Add(eid, timedEffect);

                                            movement = new Movement()
                                            {
                                                EntityID = eid,
                                                Speed = droidSpeed,
                                            };
                                            _game.MovementComponent.Add(eid, movement);

                                            droidPosition = _game.PositionComponent[GetPlayerID()];
                                            droidPosition.Radius = 45;
                                            explodingDroid = new ExplodingDroid()
                                            {
                                                EntityID = eid,
                                                position = droidPosition,
                                                hasEnemy = false,
                                            };
                                            _game.ExplodingDroidComponent.Add(eid, explodingDroid);

                                            sprite = new Sprite()
                                            {
                                                EntityID = eid,
                                                SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                                SpriteBounds = new Rectangle(51, 45, 71, 82),
                                            };
                                            _game.SpriteComponent.Add(eid, sprite);

                                            collideable = new Collideable()
                                            {
                                                EntityID = eid,
                                                RoomID = droidPosition.RoomID,
                                                Bounds = new CircleBounds(droidPosition.Center, droidPosition.Radius),
                                            };
                                            _game.CollisionComponent.Add(eid, collideable);

                                            _game.PositionComponent.Add(eid, explodingDroid.position);
                                            break;

                                        case 5:
                                            eid = Entity.NextEntity();
                                            effectDuration = 6;
                                            droidSpeed = 130;

                                            timedEffect = new TimedEffect()
                                            {
                                                EntityID = eid,
                                                TotalDuration = effectDuration,
                                                TimeLeft = effectDuration
                                            };
                                            _game.TimedEffectComponent.Add(eid, timedEffect);

                                            movement = new Movement()
                                            {
                                                EntityID = eid,
                                                Speed = droidSpeed,
                                            };
                                            _game.MovementComponent.Add(eid, movement);

                                            droidPosition = _game.PositionComponent[GetPlayerID()];
                                            droidPosition.Radius = 50;
                                            explodingDroid = new ExplodingDroid()
                                            {
                                                EntityID = eid,
                                                position = droidPosition,
                                                hasEnemy = false,
                                            };
                                            _game.ExplodingDroidComponent.Add(eid, explodingDroid);

                                            sprite = new Sprite()
                                            {
                                                EntityID = eid,
                                                SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                                SpriteBounds = new Rectangle(51, 45, 71, 82),
                                            };
                                            _game.SpriteComponent.Add(eid, sprite);

                                            collideable = new Collideable()
                                            {
                                                EntityID = eid,
                                                RoomID = droidPosition.RoomID,
                                                Bounds = new CircleBounds(droidPosition.Center, droidPosition.Radius),
                                            };
                                            _game.CollisionComponent.Add(eid, collideable);

                                            _game.PositionComponent.Add(eid, explodingDroid.position);
                                            break;

                                        case 6:
                                            eid = Entity.NextEntity();
                                            effectDuration = 6;
                                            droidSpeed = 135;

                                            timedEffect = new TimedEffect()
                                            {
                                                EntityID = eid,
                                                TotalDuration = effectDuration,
                                                TimeLeft = effectDuration
                                            };
                                            _game.TimedEffectComponent.Add(eid, timedEffect);

                                            movement = new Movement()
                                            {
                                                EntityID = eid,
                                                Speed = droidSpeed,
                                            };
                                            _game.MovementComponent.Add(eid, movement);

                                            droidPosition = _game.PositionComponent[GetPlayerID()];
                                            droidPosition.Radius = 55;
                                            explodingDroid = new ExplodingDroid()
                                            {
                                                EntityID = eid,
                                                position = droidPosition,
                                                hasEnemy = false,
                                            };
                                            _game.ExplodingDroidComponent.Add(eid, explodingDroid);

                                            sprite = new Sprite()
                                            {
                                                EntityID = eid,
                                                SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                                SpriteBounds = new Rectangle(51, 45, 71, 82),
                                            };
                                            _game.SpriteComponent.Add(eid, sprite);

                                            collideable = new Collideable()
                                            {
                                                EntityID = eid,
                                                RoomID = droidPosition.RoomID,
                                                Bounds = new CircleBounds(droidPosition.Center, droidPosition.Radius),
                                            };
                                            _game.CollisionComponent.Add(eid, collideable);

                                            _game.PositionComponent.Add(eid, explodingDroid.position);
                                            break;

                                        case 7:
                                            eid = Entity.NextEntity();
                                            effectDuration = 6;
                                            droidSpeed = 140;

                                            timedEffect = new TimedEffect()
                                            {
                                                EntityID = eid,
                                                TotalDuration = effectDuration,
                                                TimeLeft = effectDuration
                                            };
                                            _game.TimedEffectComponent.Add(eid, timedEffect);

                                            movement = new Movement()
                                            {
                                                EntityID = eid,
                                                Speed = droidSpeed,
                                            };
                                            _game.MovementComponent.Add(eid, movement);

                                            droidPosition = _game.PositionComponent[GetPlayerID()];
                                            droidPosition.Radius = 60;
                                            explodingDroid = new ExplodingDroid()
                                            {
                                                EntityID = eid,
                                                position = droidPosition,
                                                hasEnemy = false,
                                            };
                                            _game.ExplodingDroidComponent.Add(eid, explodingDroid);

                                            sprite = new Sprite()
                                            {
                                                EntityID = eid,
                                                SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                                SpriteBounds = new Rectangle(51, 45, 71, 82),
                                            };
                                            _game.SpriteComponent.Add(eid, sprite);

                                            collideable = new Collideable()
                                            {
                                                EntityID = eid,
                                                RoomID = droidPosition.RoomID,
                                                Bounds = new CircleBounds(droidPosition.Center, droidPosition.Radius),
                                            };
                                            _game.CollisionComponent.Add(eid, collideable);

                                            _game.PositionComponent.Add(eid, explodingDroid.position);
                                            break;

                                        case 8:
                                            eid = Entity.NextEntity();
                                            effectDuration = 6;
                                            droidSpeed = 145;

                                            timedEffect = new TimedEffect()
                                            {
                                                EntityID = eid,
                                                TotalDuration = effectDuration,
                                                TimeLeft = effectDuration
                                            };
                                            _game.TimedEffectComponent.Add(eid, timedEffect);

                                            movement = new Movement()
                                            {
                                                EntityID = eid,
                                                Speed = droidSpeed,
                                            };
                                            _game.MovementComponent.Add(eid, movement);

                                            droidPosition = _game.PositionComponent[GetPlayerID()];
                                            droidPosition.Radius = 65;
                                            explodingDroid = new ExplodingDroid()
                                            {
                                                EntityID = eid,
                                                position = droidPosition,
                                                hasEnemy = false,
                                            };
                                            _game.ExplodingDroidComponent.Add(eid, explodingDroid);

                                            sprite = new Sprite()
                                            {
                                                EntityID = eid,
                                                SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                                SpriteBounds = new Rectangle(51, 45, 71, 82),
                                            };
                                            _game.SpriteComponent.Add(eid, sprite);

                                            collideable = new Collideable()
                                            {
                                                EntityID = eid,
                                                RoomID = droidPosition.RoomID,
                                                Bounds = new CircleBounds(droidPosition.Center, droidPosition.Radius),
                                            };
                                            _game.CollisionComponent.Add(eid, collideable);

                                            _game.PositionComponent.Add(eid, explodingDroid.position);
                                            break;

                                        case 9:
                                            eid = Entity.NextEntity();
                                            effectDuration = 6;
                                            droidSpeed = 150;

                                            timedEffect = new TimedEffect()
                                            {
                                                EntityID = eid,
                                                TotalDuration = effectDuration,
                                                TimeLeft = effectDuration
                                            };
                                            _game.TimedEffectComponent.Add(eid, timedEffect);

                                            movement = new Movement()
                                            {
                                                EntityID = eid,
                                                Speed = droidSpeed,
                                            };
                                            _game.MovementComponent.Add(eid, movement);

                                            droidPosition = _game.PositionComponent[GetPlayerID()];
                                            droidPosition.Radius = 70;
                                            explodingDroid = new ExplodingDroid()
                                            {
                                                EntityID = eid,
                                                position = droidPosition,
                                                hasEnemy = false,
                                            };
                                            _game.ExplodingDroidComponent.Add(eid, explodingDroid);

                                            sprite = new Sprite()
                                            {
                                                EntityID = eid,
                                                SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                                SpriteBounds = new Rectangle(51, 45, 71, 82),
                                            };
                                            _game.SpriteComponent.Add(eid, sprite);

                                            collideable = new Collideable()
                                            {
                                                EntityID = eid,
                                                RoomID = droidPosition.RoomID,
                                                Bounds = new CircleBounds(droidPosition.Center, droidPosition.Radius),
                                            };
                                            _game.CollisionComponent.Add(eid, collideable);

                                            _game.PositionComponent.Add(eid, explodingDroid.position);
                                            break;

                                        case 10:
                                            eid = Entity.NextEntity();
                                            effectDuration = 6;
                                            droidSpeed = 155;

                                            timedEffect = new TimedEffect()
                                            {
                                                EntityID = eid,
                                                TotalDuration = effectDuration,
                                                TimeLeft = effectDuration
                                            };
                                            _game.TimedEffectComponent.Add(eid, timedEffect);

                                            movement = new Movement()
                                            {
                                                EntityID = eid,
                                                Speed = droidSpeed,
                                            };
                                            _game.MovementComponent.Add(eid, movement);

                                            droidPosition = _game.PositionComponent[GetPlayerID()];
                                            droidPosition.Radius = 75;
                                            explodingDroid = new ExplodingDroid()
                                            {
                                                EntityID = eid,
                                                position = droidPosition,
                                                hasEnemy = false,
                                            };
                                            _game.ExplodingDroidComponent.Add(eid, explodingDroid);

                                            sprite = new Sprite()
                                            {
                                                EntityID = eid,
                                                SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/EngineeringOffense"),
                                                SpriteBounds = new Rectangle(51, 45, 71, 82),
                                            };
                                            _game.SpriteComponent.Add(eid, sprite);

                                            collideable = new Collideable()
                                            {
                                                EntityID = eid,
                                                RoomID = droidPosition.RoomID,
                                                Bounds = new CircleBounds(droidPosition.Center, droidPosition.Radius),
                                            };
                                            _game.CollisionComponent.Add(eid, collideable);

                                            _game.PositionComponent.Add(eid, explodingDroid.position);
                                            break;

                                        default:
                                            break;
                                        #endregion
                                    }
                                }
                            }
                            break;

                        #endregion

                        #region Healing Station

                        case SkillType.HealingStation:
                            {

                                #region Skill Variables

                                HealingStation healingStation;
                                Sprite sprite;
                                Position stationPosition;

                                Collideable collideable;

                                #endregion

                                switch (rank)
                                {
                                    #region Checking Rank
                                    case 1:
                                        eid = Entity.NextEntity();

                                        stationPosition = _game.PositionComponent[GetPlayerID()];

                                        healingStation = new HealingStation()
                                        {
                                            EntityID = eid,
                                            position = stationPosition,
                                            healthAvailable = 10,

                                        };
                                        _game.HealingStationComponent.Add(eid, healingStation);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = stationPosition.RoomID,
                                            Bounds = new CircleBounds(stationPosition.Center, stationPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Turret"),
                                            SpriteBounds = new Rectangle(0, 0, 37, 28),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, stationPosition);

                                        break;

                                    case 2:
                                        eid = Entity.NextEntity();

                                        stationPosition = _game.PositionComponent[GetPlayerID()];

                                        healingStation = new HealingStation()
                                        {
                                            EntityID = eid,
                                            position = stationPosition,
                                            healthAvailable = 15,

                                        };
                                        _game.HealingStationComponent.Add(eid, healingStation);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = stationPosition.RoomID,
                                            Bounds = new CircleBounds(stationPosition.Center, stationPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Turret"),
                                            SpriteBounds = new Rectangle(0, 0, 37, 28),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, stationPosition);

                                        break;

                                    case 3:
                                        eid = Entity.NextEntity();

                                        stationPosition = _game.PositionComponent[GetPlayerID()];

                                        healingStation = new HealingStation()
                                        {
                                            EntityID = eid,
                                            position = stationPosition,
                                            healthAvailable = 20,

                                        };
                                        _game.HealingStationComponent.Add(eid, healingStation);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = stationPosition.RoomID,
                                            Bounds = new CircleBounds(stationPosition.Center, stationPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Turret"),
                                            SpriteBounds = new Rectangle(0, 0, 37, 28),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, stationPosition);

                                        break;

                                    case 4:
                                        eid = Entity.NextEntity();

                                        stationPosition = _game.PositionComponent[GetPlayerID()];

                                        healingStation = new HealingStation()
                                        {
                                            EntityID = eid,
                                            position = stationPosition,
                                            healthAvailable = 25,

                                        };
                                        _game.HealingStationComponent.Add(eid, healingStation);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = stationPosition.RoomID,
                                            Bounds = new CircleBounds(stationPosition.Center, stationPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Turret"),
                                            SpriteBounds = new Rectangle(0, 0, 37, 28),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, stationPosition);

                                        break;

                                    case 5:
                                        eid = Entity.NextEntity();

                                        stationPosition = _game.PositionComponent[GetPlayerID()];

                                        healingStation = new HealingStation()
                                        {
                                            EntityID = eid,
                                            position = stationPosition,
                                            healthAvailable = 30,

                                        };
                                        _game.HealingStationComponent.Add(eid, healingStation);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = stationPosition.RoomID,
                                            Bounds = new CircleBounds(stationPosition.Center, stationPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Turret"),
                                            SpriteBounds = new Rectangle(0, 0, 37, 28),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, stationPosition);

                                        break;

                                    case 6:
                                        eid = Entity.NextEntity();

                                        stationPosition = _game.PositionComponent[GetPlayerID()];

                                        healingStation = new HealingStation()
                                        {
                                            EntityID = eid,
                                            position = stationPosition,
                                            healthAvailable = 35,

                                        };
                                        _game.HealingStationComponent.Add(eid, healingStation);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = stationPosition.RoomID,
                                            Bounds = new CircleBounds(stationPosition.Center, stationPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Turret"),
                                            SpriteBounds = new Rectangle(0, 0, 37, 28),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, stationPosition);

                                        break;

                                    case 7:
                                        eid = Entity.NextEntity();

                                        stationPosition = _game.PositionComponent[GetPlayerID()];

                                        healingStation = new HealingStation()
                                        {
                                            EntityID = eid,
                                            position = stationPosition,
                                            healthAvailable = 40,

                                        };
                                        _game.HealingStationComponent.Add(eid, healingStation);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = stationPosition.RoomID,
                                            Bounds = new CircleBounds(stationPosition.Center, stationPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Turret"),
                                            SpriteBounds = new Rectangle(0, 0, 37, 28),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, stationPosition);

                                        break;

                                    case 8:
                                        eid = Entity.NextEntity();

                                        stationPosition = _game.PositionComponent[GetPlayerID()];

                                        healingStation = new HealingStation()
                                        {
                                            EntityID = eid,
                                            position = stationPosition,
                                            healthAvailable = 45,

                                        };
                                        _game.HealingStationComponent.Add(eid, healingStation);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = stationPosition.RoomID,
                                            Bounds = new CircleBounds(stationPosition.Center, stationPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Turret"),
                                            SpriteBounds = new Rectangle(0, 0, 37, 28),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, stationPosition);

                                        break;

                                    case 9:
                                        eid = Entity.NextEntity();

                                        stationPosition = _game.PositionComponent[GetPlayerID()];

                                        healingStation = new HealingStation()
                                        {
                                            EntityID = eid,
                                            position = stationPosition,
                                            healthAvailable = 50,

                                        };
                                        _game.HealingStationComponent.Add(eid, healingStation);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = stationPosition.RoomID,
                                            Bounds = new CircleBounds(stationPosition.Center, stationPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Turret"),
                                            SpriteBounds = new Rectangle(0, 0, 37, 28),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, stationPosition);

                                        break;

                                    case 10:
                                        eid = Entity.NextEntity();

                                        stationPosition = _game.PositionComponent[GetPlayerID()];

                                        healingStation = new HealingStation()
                                        {
                                            EntityID = eid,
                                            position = stationPosition,
                                            healthAvailable = 60,

                                        };
                                        _game.HealingStationComponent.Add(eid, healingStation);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = stationPosition.RoomID,
                                            Bounds = new CircleBounds(stationPosition.Center, stationPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Turret"),
                                            SpriteBounds = new Rectangle(0, 0, 37, 28),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        _game.PositionComponent.Add(eid, stationPosition);

                                        break;

                                    default:
                                        break;
                                    #endregion
                                }
                            }
                            break;

                        #endregion

                        #region Portable Shop

                        case SkillType.PortableShop:
                            {

                                #region Skill Variables
                                TimedEffect timedEffect;
                                float effectDuration;
                                #endregion

                                switch (rank)
                                {
                                    #region Checking Rank
                                    case 1:
                                        eid = Entity.NextEntity();
                                        effectDuration = 5;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        _game.SkillEntityFactory.CreateSkillDeployable(SkillType.PortableShop, _game.PositionComponent[GetPlayerID()], 1);
                                        break;

                                    case 2:
                                        eid = Entity.NextEntity();
                                        effectDuration = 5;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        _game.SkillEntityFactory.CreateSkillDeployable(SkillType.PortableShop, _game.PositionComponent[GetPlayerID()], 2);
                                        break;

                                    case 3:
                                        eid = Entity.NextEntity();
                                        effectDuration = 7;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        _game.SkillEntityFactory.CreateSkillDeployable(SkillType.PortableShop, _game.PositionComponent[GetPlayerID()], 2);
                                        break;

                                    case 4:
                                        eid = Entity.NextEntity();
                                        effectDuration = 9;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        _game.SkillEntityFactory.CreateSkillDeployable(SkillType.PortableShop, _game.PositionComponent[GetPlayerID()], 2);
                                        break;

                                    case 5:
                                        eid = Entity.NextEntity();
                                        effectDuration = 9;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        _game.SkillEntityFactory.CreateSkillDeployable(SkillType.PortableShop, _game.PositionComponent[GetPlayerID()], 2);
                                        break;

                                    case 6:
                                        eid = Entity.NextEntity();
                                        effectDuration = 11;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        _game.SkillEntityFactory.CreateSkillDeployable(SkillType.PortableShop, _game.PositionComponent[GetPlayerID()], 2);
                                        break;

                                    case 7:
                                        eid = Entity.NextEntity();
                                        effectDuration = 13;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        _game.SkillEntityFactory.CreateSkillDeployable(SkillType.PortableShop, _game.PositionComponent[GetPlayerID()], 2);
                                        break;

                                    case 8:
                                        eid = Entity.NextEntity();
                                        effectDuration = 15;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        _game.SkillEntityFactory.CreateSkillDeployable(SkillType.PortableShop, _game.PositionComponent[GetPlayerID()], 2);
                                        break;

                                    case 9:
                                        eid = Entity.NextEntity();
                                        effectDuration = 17;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        _game.SkillEntityFactory.CreateSkillDeployable(SkillType.PortableShop, _game.PositionComponent[GetPlayerID()], 2);
                                        break;

                                    case 10:
                                        eid = Entity.NextEntity();
                                        effectDuration = 20;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        _game.SkillEntityFactory.CreateSkillDeployable(SkillType.PortableShop, _game.PositionComponent[GetPlayerID()], 2);
                                        break;

                                    default:
                                        break;
                                    #endregion
                                }
                            }
                            break;

                        #endregion

                        #region Portable Shield

                        case SkillType.PortableShield:
                            {

                                #region Skill Variables

                                TimedEffect timedEffect;
                                float effectDuration;

                                PortableShield portableShield;
                                Position shieldPosition;

                                Sprite sprite;
                                Collideable collideable;

                                #endregion

                                switch (rank)
                                {
                                    #region Checking Rank
                                    case 1:
                                        eid = Entity.NextEntity();
                                        effectDuration = 5;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        shieldPosition = _game.PositionComponent[GetPlayerID()];
                                        shieldPosition.Radius = 100;

                                        portableShield = new PortableShield()
                                        {
                                            EntityID = eid,
                                            position = shieldPosition,
                                        };
                                        _game.PortableShieldComponent.Add(eid, portableShield);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/BubbleShield"),
                                            SpriteBounds = new Rectangle(18, 34, 229, 136),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = shieldPosition.RoomID,
                                            Bounds = new CircleBounds(shieldPosition.Center, shieldPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        _game.PositionComponent.Add(eid, shieldPosition); break;

                                    case 2:
                                        eid = Entity.NextEntity();
                                        effectDuration = 6;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        shieldPosition = _game.PositionComponent[GetPlayerID()];
                                        shieldPosition.Radius = 100;

                                        portableShield = new PortableShield()
                                        {
                                            EntityID = eid,
                                            position = shieldPosition,
                                        };
                                        _game.PortableShieldComponent.Add(eid, portableShield);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/BubbleShield"),
                                            SpriteBounds = new Rectangle(18, 34, 229, 136),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = shieldPosition.RoomID,
                                            Bounds = new CircleBounds(shieldPosition.Center, shieldPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        _game.PositionComponent.Add(eid, shieldPosition);
                                        break;

                                    case 3:
                                        eid = Entity.NextEntity();
                                        effectDuration = 7;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        shieldPosition = _game.PositionComponent[GetPlayerID()];
                                        shieldPosition.Radius = 100;

                                        portableShield = new PortableShield()
                                        {
                                            EntityID = eid,
                                            position = shieldPosition,
                                        };
                                        _game.PortableShieldComponent.Add(eid, portableShield);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/BubbleShield"),
                                            SpriteBounds = new Rectangle(18, 34, 229, 136),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = shieldPosition.RoomID,
                                            Bounds = new CircleBounds(shieldPosition.Center, shieldPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        _game.PositionComponent.Add(eid, shieldPosition);
                                        break;

                                    case 4:
                                        eid = Entity.NextEntity();
                                        effectDuration = 8;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        shieldPosition = _game.PositionComponent[GetPlayerID()];
                                        shieldPosition.Radius = 100;

                                        portableShield = new PortableShield()
                                        {
                                            EntityID = eid,
                                            position = shieldPosition,
                                        };
                                        _game.PortableShieldComponent.Add(eid, portableShield);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/BubbleShield"),
                                            SpriteBounds = new Rectangle(18, 34, 229, 136),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = shieldPosition.RoomID,
                                            Bounds = new CircleBounds(shieldPosition.Center, shieldPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        _game.PositionComponent.Add(eid, shieldPosition);
                                        break;

                                    case 5:
                                        eid = Entity.NextEntity();
                                        effectDuration = 9;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        shieldPosition = _game.PositionComponent[GetPlayerID()];
                                        shieldPosition.Radius = 100;

                                        portableShield = new PortableShield()
                                        {
                                            EntityID = eid,
                                            position = shieldPosition,
                                        };
                                        _game.PortableShieldComponent.Add(eid, portableShield);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/BubbleShield"),
                                            SpriteBounds = new Rectangle(18, 34, 229, 136),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = shieldPosition.RoomID,
                                            Bounds = new CircleBounds(shieldPosition.Center, shieldPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        _game.PositionComponent.Add(eid, shieldPosition);
                                        break;

                                    case 6:
                                        eid = Entity.NextEntity();
                                        effectDuration = 10;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        shieldPosition = _game.PositionComponent[GetPlayerID()];
                                        shieldPosition.Radius = 100;

                                        portableShield = new PortableShield()
                                        {
                                            EntityID = eid,
                                            position = shieldPosition,
                                        };
                                        _game.PortableShieldComponent.Add(eid, portableShield);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/BubbleShield"),
                                            SpriteBounds = new Rectangle(18, 34, 229, 136),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = shieldPosition.RoomID,
                                            Bounds = new CircleBounds(shieldPosition.Center, shieldPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        _game.PositionComponent.Add(eid, shieldPosition);
                                        break;

                                    case 7:
                                        eid = Entity.NextEntity();
                                        effectDuration = 11;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        shieldPosition = _game.PositionComponent[GetPlayerID()];
                                        shieldPosition.Radius = 100;

                                        portableShield = new PortableShield()
                                        {
                                            EntityID = eid,
                                            position = shieldPosition,
                                        };
                                        _game.PortableShieldComponent.Add(eid, portableShield);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/BubbleShield"),
                                            SpriteBounds = new Rectangle(18, 34, 229, 136),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = shieldPosition.RoomID,
                                            Bounds = new CircleBounds(shieldPosition.Center, shieldPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        _game.PositionComponent.Add(eid, shieldPosition);
                                        break;

                                    case 8:
                                        eid = Entity.NextEntity();
                                        effectDuration = 12;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        shieldPosition = _game.PositionComponent[GetPlayerID()];
                                        shieldPosition.Radius = 100;

                                        portableShield = new PortableShield()
                                        {
                                            EntityID = eid,
                                            position = shieldPosition,
                                        };
                                        _game.PortableShieldComponent.Add(eid, portableShield);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/BubbleShield"),
                                            SpriteBounds = new Rectangle(18, 34, 229, 136),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = shieldPosition.RoomID,
                                            Bounds = new CircleBounds(shieldPosition.Center, shieldPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        _game.PositionComponent.Add(eid, shieldPosition);
                                        break;

                                    case 9:
                                        eid = Entity.NextEntity();
                                        effectDuration = 13;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        shieldPosition = _game.PositionComponent[GetPlayerID()];
                                        shieldPosition.Radius = 100;

                                        portableShield = new PortableShield()
                                        {
                                            EntityID = eid,
                                            position = shieldPosition,
                                        };
                                        _game.PortableShieldComponent.Add(eid, portableShield);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/BubbleShield"),
                                            SpriteBounds = new Rectangle(18, 34, 229, 136),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = shieldPosition.RoomID,
                                            Bounds = new CircleBounds(shieldPosition.Center, shieldPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        _game.PositionComponent.Add(eid, shieldPosition);
                                        break;

                                    case 10:
                                        eid = Entity.NextEntity();
                                        effectDuration = 14;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        shieldPosition = _game.PositionComponent[GetPlayerID()];
                                        shieldPosition.Radius = 100;

                                        portableShield = new PortableShield()
                                        {
                                            EntityID = eid,
                                            position = shieldPosition,
                                        };
                                        _game.PortableShieldComponent.Add(eid, portableShield);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/BubbleShield"),
                                            SpriteBounds = new Rectangle(18, 34, 229, 136),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        collideable = new Collideable()
                                        {
                                            EntityID = eid,
                                            RoomID = shieldPosition.RoomID,
                                            Bounds = new CircleBounds(shieldPosition.Center, shieldPosition.Radius),
                                        };
                                        _game.CollisionComponent.Add(eid, collideable);

                                        _game.PositionComponent.Add(eid, shieldPosition);
                                        break;

                                    default:
                                        break;
                                    #endregion
                                }
                            }
                            break;

                        #endregion

                        #region Motivate

                        case SkillType.Motivate:
                            {

                                #region Skill Variables

                                TimedEffect timedEffect;
                                float effectDuration;

                                Buff buffEffect;

                                Sprite sprite;
                                Position motivatePosition;

                                #endregion

                                switch (rank)
                                {
                                    #region Checking Rank

                                    #region Rank 1

                                    case 1:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/bubble"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        motivatePosition = _game.PositionComponent[GetPlayerID()];
                                        motivatePosition.Center.X += 40;
                                        motivatePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, motivatePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                Health = 5,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }

                                        break;

                                    #endregion

                                    #region Rank 2

                                    case 2:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/bubble"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        motivatePosition = _game.PositionComponent[GetPlayerID()];
                                        motivatePosition.Center.X += 40;
                                        motivatePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, motivatePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                Health = 10,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    #endregion

                                    #region Rank 3

                                    case 3:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/bubble"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        motivatePosition = _game.PositionComponent[GetPlayerID()];
                                        motivatePosition.Center.X += 40;
                                        motivatePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, motivatePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                Health = 15,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    #endregion

                                    #region Rank 4

                                    case 4:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/bubble"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        motivatePosition = _game.PositionComponent[GetPlayerID()];
                                        motivatePosition.Center.X += 40;
                                        motivatePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, motivatePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                Health = 20,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    #endregion

                                    #region Rank 5

                                    case 5:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/bubble"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        motivatePosition = _game.PositionComponent[GetPlayerID()];
                                        motivatePosition.Center.X += 40;
                                        motivatePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, motivatePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                Health = 25,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    #endregion

                                    #region Rank 6

                                    case 6:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/bubble"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        motivatePosition = _game.PositionComponent[GetPlayerID()];
                                        motivatePosition.Center.X += 40;
                                        motivatePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, motivatePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                Health = 30,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    #endregion

                                    #region Rank 7

                                    case 7:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/bubble"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        motivatePosition = _game.PositionComponent[GetPlayerID()];
                                        motivatePosition.Center.X += 40;
                                        motivatePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, motivatePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                Health = 35,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    #endregion

                                    #region Rank 8

                                    case 8:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/bubble"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        motivatePosition = _game.PositionComponent[GetPlayerID()];
                                        motivatePosition.Center.X += 40;
                                        motivatePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, motivatePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                Health = 40,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    #endregion

                                    #region Rank 9

                                    case 9:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/bubble"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        motivatePosition = _game.PositionComponent[GetPlayerID()];
                                        motivatePosition.Center.X += 40;
                                        motivatePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, motivatePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                Health = 45,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    #endregion

                                    #region Rank 10

                                    case 10:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/bubble"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        motivatePosition = _game.PositionComponent[GetPlayerID()];
                                        motivatePosition.Center.X += 40;
                                        motivatePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, motivatePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                Health = 50,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    #endregion

                                    default:
                                        break;
                                    #endregion
                                }
                            }
                            break;

                        #endregion

                        #region Fall Back

                        case SkillType.FallBack:
                            {
                                #region Skill Variables

                                TimedEffect timedEffect;
                                float effectDuration;

                                Buff buffEffect;

                                Sprite sprite;
                                Position fallBackPosition;

                                #endregion

                                switch (rank)
                                {
                                    #region Checking Rank
                                    case 1:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/fallback"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        fallBackPosition = _game.PositionComponent[GetPlayerID()];
                                        fallBackPosition.Center.X += 40;
                                        fallBackPosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, fallBackPosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = 1,
                                                AttackMelee = -1,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }

                                        break;

                                    case 2:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/fallback"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        fallBackPosition = _game.PositionComponent[GetPlayerID()];
                                        fallBackPosition.Center.X += 40;
                                        fallBackPosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, fallBackPosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = 2,
                                                AttackMelee = -1,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }

                                        break;

                                    case 3:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/fallback"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        fallBackPosition = _game.PositionComponent[GetPlayerID()];
                                        fallBackPosition.Center.X += 40;
                                        fallBackPosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, fallBackPosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = 3,
                                                AttackMelee = -2,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 4:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/fallback"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        fallBackPosition = _game.PositionComponent[GetPlayerID()];
                                        fallBackPosition.Center.X += 40;
                                        fallBackPosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, fallBackPosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = 4,
                                                AttackMelee = -2,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 5:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/fallback"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        fallBackPosition = _game.PositionComponent[GetPlayerID()];
                                        fallBackPosition.Center.X += 40;
                                        fallBackPosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, fallBackPosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = 5,
                                                AttackMelee = -3,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 6:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/fallback"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        fallBackPosition = _game.PositionComponent[GetPlayerID()];
                                        fallBackPosition.Center.X += 40;
                                        fallBackPosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, fallBackPosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = 6,
                                                AttackMelee = -3,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 7:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/fallback"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        fallBackPosition = _game.PositionComponent[GetPlayerID()];
                                        fallBackPosition.Center.X += 40;
                                        fallBackPosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, fallBackPosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = 7,
                                                AttackMelee = -4,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 8:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/fallback"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        fallBackPosition = _game.PositionComponent[GetPlayerID()];
                                        fallBackPosition.Center.X += 40;
                                        fallBackPosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, fallBackPosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = 8,
                                                AttackMelee = -4,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 9:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/fallback"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        fallBackPosition = _game.PositionComponent[GetPlayerID()];
                                        fallBackPosition.Center.X += 40;
                                        fallBackPosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, fallBackPosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = 9,
                                                AttackMelee = -5,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 10:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/fallback"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        fallBackPosition = _game.PositionComponent[GetPlayerID()];
                                        fallBackPosition.Center.X += 40;
                                        fallBackPosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, fallBackPosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = 10,
                                                AttackMelee = -5,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    default:
                                        break;
                                    #endregion
                                }
                            }
                            break;

                        #endregion

                        #region Charge

                        case SkillType.Charge:
                            {

                                #region Skill Variables
                                TimedEffect timedEffect;
                                float effectDuration;

                                Buff buffEffect;

                                Sprite sprite;
                                Position chargePosition;

                                #endregion

                                switch (rank)
                                {
                                    #region Checking Rank
                                    case 1:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/charge"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        chargePosition = _game.PositionComponent[GetPlayerID()];
                                        chargePosition.Center.X += 40;
                                        chargePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, chargePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = -1,
                                                AttackMelee = 1,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }

                                        break;

                                    case 2:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/charge"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        chargePosition = _game.PositionComponent[GetPlayerID()];
                                        chargePosition.Center.X += 40;
                                        chargePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, chargePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = -1,
                                                AttackMelee = 2,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }

                                        break;

                                    case 3:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/charge"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        chargePosition = _game.PositionComponent[GetPlayerID()];
                                        chargePosition.Center.X += 40;
                                        chargePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, chargePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = -2,
                                                AttackMelee = 3,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 4:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/charge"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        chargePosition = _game.PositionComponent[GetPlayerID()];
                                        chargePosition.Center.X += 40;
                                        chargePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, chargePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = -2,
                                                AttackMelee = 4,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 5:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/charge"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        chargePosition = _game.PositionComponent[GetPlayerID()];
                                        chargePosition.Center.X += 40;
                                        chargePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, chargePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = -3,
                                                AttackMelee = 5,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 6:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/charge"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        chargePosition = _game.PositionComponent[GetPlayerID()];
                                        chargePosition.Center.X += 40;
                                        chargePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, chargePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = -3,
                                                AttackMelee = 6,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 7:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/charge"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        chargePosition = _game.PositionComponent[GetPlayerID()];
                                        chargePosition.Center.X += 40;
                                        chargePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, chargePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = -4,
                                                AttackMelee = 7,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 8:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/charge"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        chargePosition = _game.PositionComponent[GetPlayerID()];
                                        chargePosition.Center.X += 40;
                                        chargePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, chargePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = -4,
                                                AttackMelee = 8,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 9:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/charge"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        chargePosition = _game.PositionComponent[GetPlayerID()];
                                        chargePosition.Center.X += 40;
                                        chargePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, chargePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = -5,
                                                AttackMelee = 9,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    case 10:
                                        eid = Entity.NextEntity();
                                        effectDuration = 0.5f;

                                        timedEffect = new TimedEffect()
                                        {
                                            EntityID = eid,
                                            TotalDuration = effectDuration,
                                            TimeLeft = effectDuration
                                        };
                                        _game.TimedEffectComponent.Add(eid, timedEffect);

                                        sprite = new Sprite()
                                        {
                                            EntityID = eid,
                                            SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/charge"),
                                            SpriteBounds = new Rectangle(0, 0, 76, 48),
                                        };
                                        _game.SpriteComponent.Add(eid, sprite);

                                        chargePosition = _game.PositionComponent[GetPlayerID()];
                                        chargePosition.Center.X += 40;
                                        chargePosition.Center.Y -= 30;

                                        _game.PositionComponent.Add(eid, chargePosition);

                                        foreach (Player player in _game.PlayerComponent.All)
                                        {
                                            eid = Entity.NextEntity();

                                            buffEffect = new Buff()
                                            {
                                                EntityID = eid,
                                                TargetID = player.EntityID,
                                                DefenseMelee = -5,
                                                AttackMelee = 10,
                                            };
                                            _game.BuffComponent.Add(eid, buffEffect);
                                        }
                                        break;

                                    default:
                                        break;
                                    #endregion
                                }
                            }
                            break;

                        #endregion

                        default:
                            break;

                        #endregion
                    }
                    break;

                #endregion

                #region Space Pirate
                //This was the part contributed by Austin Murphy
                case Aggregate.SpacePiratePlayer:

                    #region Race Variables

                    #endregion

                    switch (skillType)
                    {
                        #region Checking Skill Type

                        #region AgilityBerserker
                        case SkillType.AgilityBerserker:

                            #region Skill Variables
                            TimedEffect te1, te2;
                            int speedIncrease = 1000;
                            int attackDecrease = -50;
                            float duration, cd;
                            uint targetID;
                            Buff buffeffect;
                            int afterS = -500;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    duration = 10;
                                    cd = 55;
                                    targetID = GetPlayerID();
                                    te1 = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = duration,
                                        TimeLeft = duration
                                    };

                                    _game.TimedEffectComponent.Add(eid, te1);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease,
                                        AttackMelee = attackDecrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    duration = 15;
                                    cd = 50;
                                    targetID = GetPlayerID();
                                    te1 = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = duration,
                                        TimeLeft = duration
                                    };

                                    _game.TimedEffectComponent.Add(eid, te1);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    duration = 20;
                                    cd = 45;
                                    targetID = GetPlayerID();
                                    te1 = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = duration,
                                        TimeLeft = duration
                                    };

                                    _game.TimedEffectComponent.Add(eid, te1);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    duration = 25;
                                    cd = 40;
                                    targetID = GetPlayerID();
                                    te1 = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = duration,
                                        TimeLeft = duration
                                    };

                                    _game.TimedEffectComponent.Add(eid, te1);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    duration = 30;
                                    cd = 35;
                                    targetID = GetPlayerID();
                                    te1 = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = duration,
                                        TimeLeft = duration
                                    };

                                    _game.TimedEffectComponent.Add(eid, te1);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    duration = 35;
                                    cd = 30;
                                    targetID = GetPlayerID();
                                    te1 = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = duration,
                                        TimeLeft = duration
                                    };

                                    _game.TimedEffectComponent.Add(eid, te1);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    duration = 40;
                                    cd = 25;
                                    targetID = GetPlayerID();
                                    te1 = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = duration,
                                        TimeLeft = duration
                                    };

                                    _game.TimedEffectComponent.Add(eid, te1);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    duration = 45;
                                    cd = 20;
                                    targetID = GetPlayerID();
                                    te1 = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = duration,
                                        TimeLeft = duration
                                    };

                                    _game.TimedEffectComponent.Add(eid, te1);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    duration = 50;
                                    cd = 15;
                                    targetID = GetPlayerID();
                                    te1 = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = duration,
                                        TimeLeft = duration
                                    };

                                    _game.TimedEffectComponent.Add(eid, te1);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    duration = 55;
                                    cd = 5;
                                    targetID = GetPlayerID();
                                    te1 = new TimedEffect()
                                    {
                                        EntityID = eid,
                                        TotalDuration = duration,
                                        TimeLeft = duration
                                    };

                                    _game.TimedEffectComponent.Add(eid, te1);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        MovementSpeed = speedIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;
                        #endregion

                        #region DualWielding
                        case SkillType.DualWielding:

                            #region Skill Variables
                            int offhand;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    offhand = -80;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = offhand,
                                        AttackMelee = offhand
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    offhand = -74;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = offhand,
                                        AttackMelee = offhand
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    offhand = -68;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = offhand,
                                        AttackMelee = offhand
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    offhand = -62;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = offhand,
                                        AttackMelee = offhand
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    offhand = -56;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = offhand,
                                        AttackMelee = offhand
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    offhand = -50;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = offhand,
                                        AttackMelee = offhand
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    offhand = -44;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = offhand,
                                        AttackMelee = offhand
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    offhand = -38;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = offhand,
                                        AttackMelee = offhand
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    offhand = -32;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = offhand,
                                        AttackMelee = offhand
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    offhand = -20;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = offhand,
                                        AttackMelee = offhand
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;
                        #endregion

                        #region HeavyDrinker
                        case SkillType.HeavyDrinker:

                            #region Skill Variables
                            int resistance;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    resistance = 5;
                                    targetID = GetPlayerID();

                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        ResistPoison = resistance
                                    };
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    resistance = 10;
                                    targetID = GetPlayerID();

                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        ResistPoison = resistance
                                    };
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    resistance = 20;
                                    targetID = GetPlayerID();

                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        ResistPoison = resistance
                                    };
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    resistance = 30;
                                    targetID = GetPlayerID();

                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        ResistPoison = resistance
                                    };
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    resistance = 40;
                                    targetID = GetPlayerID();

                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        ResistPoison = resistance
                                    };
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    resistance = 50;
                                    targetID = GetPlayerID();

                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        ResistPoison = resistance
                                    };
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    resistance = 60;
                                    targetID = GetPlayerID();

                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        ResistPoison = resistance
                                    };
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    resistance = 70;
                                    targetID = GetPlayerID();

                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        ResistPoison = resistance
                                    };
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    resistance = 80;
                                    targetID = GetPlayerID();

                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        ResistPoison = resistance
                                    };
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    resistance = 90;
                                    targetID = GetPlayerID();

                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        ResistPoison = resistance
                                    };
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;
                        #endregion

                        #region TrickShot
                        //Trick shot has been modified greatly to fit into our prototype game.
                        case SkillType.TrickShot:

                            #region Skill Variables
                            int TSDamage;
                            DirectDamage dd;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    TSDamage = 20;
                                    dd = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = TSDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, dd);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    TSDamage = 40;
                                    dd = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = TSDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, dd);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    TSDamage = 60;
                                    dd = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = TSDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, dd);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    TSDamage = 80;
                                    dd = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = TSDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, dd);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    TSDamage = 100;
                                    dd = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = TSDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, dd);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    TSDamage = 120;
                                    dd = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = TSDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, dd);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    TSDamage = 140;
                                    dd = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = TSDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, dd);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    TSDamage = 160;
                                    dd = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = TSDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, dd);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    TSDamage = 180;
                                    dd = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = TSDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, dd);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    TSDamage = 200;
                                    dd = new DirectDamage()
                                    {
                                        EntityID = eid,
                                        Damage = TSDamage
                                    };
                                    _game.DirectDamageComponent.Add(eid, dd);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;
                        #endregion

                        #region PowerShot
                        case SkillType.PowerShot:

                            #region Skill Variables
                            int PSDamageIncrease;
                            InstantEffect ie;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    PSDamageIncrease = 10;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = PSDamageIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);

                                    ie = new InstantEffect()
                                    {
                                        EntityID = eid
                                    };
                                    _game.InstantEffectComponent.Add(eid, ie);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    PSDamageIncrease = 20;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = PSDamageIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);

                                    ie = new InstantEffect()
                                    {
                                        EntityID = eid
                                    };
                                    _game.InstantEffectComponent.Add(eid, ie);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    PSDamageIncrease = 30;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = PSDamageIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);

                                    ie = new InstantEffect()
                                    {
                                        EntityID = eid
                                    };
                                    _game.InstantEffectComponent.Add(eid, ie);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    PSDamageIncrease = 40;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = PSDamageIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);

                                    ie = new InstantEffect()
                                    {
                                        EntityID = eid
                                    };
                                    _game.InstantEffectComponent.Add(eid, ie);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    PSDamageIncrease = 50;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = PSDamageIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);

                                    ie = new InstantEffect()
                                    {
                                        EntityID = eid
                                    };
                                    _game.InstantEffectComponent.Add(eid, ie);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    PSDamageIncrease = 60;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = PSDamageIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);

                                    ie = new InstantEffect()
                                    {
                                        EntityID = eid
                                    };
                                    _game.InstantEffectComponent.Add(eid, ie);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    PSDamageIncrease = 70;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = PSDamageIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);

                                    ie = new InstantEffect()
                                    {
                                        EntityID = eid
                                    };
                                    _game.InstantEffectComponent.Add(eid, ie);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    PSDamageIncrease = 80;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = PSDamageIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);

                                    ie = new InstantEffect()
                                    {
                                        EntityID = eid
                                    };
                                    _game.InstantEffectComponent.Add(eid, ie);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    PSDamageIncrease = 90;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = PSDamageIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);

                                    ie = new InstantEffect()
                                    {
                                        EntityID = eid
                                    };
                                    _game.InstantEffectComponent.Add(eid, ie);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    PSDamageIncrease = 100;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackRanged = PSDamageIncrease
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);

                                    ie = new InstantEffect()
                                    {
                                        EntityID = eid
                                    };
                                    _game.InstantEffectComponent.Add(eid, ie);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;
                        #endregion

                        #region EagleShot
                        //EagleShot has been heavly modified to fit within our game prototype.
                        case SkillType.EagleShot:

                            #region Skill Variables
                            int ESA;
                            InstantEffect eie;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    ESA = 10;
                                    eie = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, eie);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponAccuracy = ESA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    ESA = 20;
                                    eie = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, eie);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponAccuracy = ESA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    ESA = 30;
                                    eie = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, eie);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponAccuracy = ESA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    ESA = 40;
                                    eie = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, eie);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponAccuracy = ESA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    ESA = 50;
                                    eie = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, eie);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponAccuracy = ESA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    ESA = 60;
                                    eie = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, eie);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponAccuracy = ESA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    ESA = 70;
                                    eie = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, eie);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponAccuracy = ESA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    ESA = 80;
                                    eie = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, eie);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponAccuracy = ESA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    ESA = 90;
                                    eie = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, eie);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponAccuracy = ESA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    targetID = GetPlayerID();
                                    ESA = 100;
                                    eie = new InstantEffect()
                                    {
                                        EntityID = eid,
                                    };
                                    _game.InstantEffectComponent.Add(eid, eie);
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        WeaponAccuracy = ESA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;
                        #endregion

                        #region Theft
                        case SkillType.Theft:

                            #region Skill Variables
                            ChanceToSucceed cts;
                            int prob;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    prob = 5;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    prob = 10;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    prob = 20;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    prob = 30;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    prob = 40;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    prob = 50;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    prob = 60;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    prob = 70;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    prob = 80;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    prob = 90;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;
                        #endregion

                        #region Mug
                        case SkillType.Mug:

                            #region Skill Variables
                            int mugA;
                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    prob = 5;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);

                                    mugA = -75;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackMelee = mugA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    prob = 10;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);

                                    mugA = -75;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackMelee = mugA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    prob = 20;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);

                                    mugA = -75;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackMelee = mugA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    prob = 30;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);

                                    mugA = -75;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackMelee = mugA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    prob = 40;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);

                                    mugA = -75;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackMelee = mugA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    prob = 50;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);

                                    mugA = -75;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackMelee = mugA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    prob = 60;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);

                                    mugA = -75;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackMelee = mugA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    prob = 70;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);

                                    mugA = -75;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackMelee = mugA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    prob = 80;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);

                                    mugA = -75;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackMelee = mugA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    prob = 90;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);

                                    mugA = -75;
                                    targetID = GetPlayerID();
                                    buffeffect = new Buff()
                                    {
                                        EntityID = eid,
                                        TargetID = targetID,
                                        AttackMelee = mugA
                                    };
                                    _game.BuffComponent.Add(eid, buffeffect);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;
                        #endregion

                        #region LockPick
                        case SkillType.LockPicking:

                            #region Skill Variables

                            #endregion

                            switch (rank)
                            {
                                #region Checking Rank
                                case 1:
                                    eid = Entity.NextEntity();
                                    prob = 5;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 2:
                                    eid = Entity.NextEntity();
                                    prob = 10;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 3:
                                    eid = Entity.NextEntity();
                                    prob = 20;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 4:
                                    eid = Entity.NextEntity();
                                    prob = 30;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 5:
                                    eid = Entity.NextEntity();
                                    prob = 40;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 6:
                                    eid = Entity.NextEntity();
                                    prob = 50;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 7:
                                    eid = Entity.NextEntity();
                                    prob = 60;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 8:
                                    eid = Entity.NextEntity();
                                    prob = 70;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 9:
                                    eid = Entity.NextEntity();
                                    prob = 80;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                case 10:
                                    eid = Entity.NextEntity();
                                    prob = 90;
                                    cts = new ChanceToSucceed()
                                    {
                                        EntityID = eid,
                                        SuccessRateAsPercentage = prob
                                    };
                                    _game.ChanceToSucceedComponent.Add(eid, cts);
                                    break;

                                default:
                                    break;
                                #endregion
                            }
                            break;
                        #endregion

                        default:
                            break;

                        #endregion
                    }
                    break;

                #endregion

                default:
                    break;

                #endregion
            }
        }
Ejemplo n.º 32
0
 public StatusEffects clone()
 {
     Stun stun = new Stun();
     stun.duration = this.duration;
     return stun;
 }