public BroodLord(LevelState parentWorld, Vector2 position)
        {
            this.parentWorld = parentWorld;
            this.position    = position;
            this.dimensions  = GlobalGameConstants.TileSize * 1.5f;
            this.velocity    = Vector2.Zero;

            minions = new BroodLing[minionCount];
            for (int i = 0; i < minionCount; i++)
            {
                minions[i] = new BroodLing(parentWorld, Vector2.Zero, this);
                parentWorld.EntityList.Add(minions[i]);
            }

            broodState = BroodLordState.Idle;

            enemy_life = 25;
            enemy_type = EnemyType.Alien;

            prob_item_drop    = 0.45;
            number_drop_items = 4;

            anim           = AnimationLib.loadNewAnimationSet("broodlord");
            anim.Animation = anim.Skeleton.Data.FindAnimation("idle");
            animation_time = 0;

            deadCushySoundTimer = 0;
        }
        public override void knockBack(Vector2 direction, float magnitude, int damage, Entity attacker)
        {
            if (knockBackTimer > knockBackDuration)
            {
                parentWorld.Particles.pushBloodParticle(CenterPoint);
                parentWorld.Particles.pushBloodParticle(CenterPoint);
                parentWorld.Particles.pushBloodParticle(CenterPoint);
                parentWorld.Particles.pushBloodParticle(CenterPoint);
                parentWorld.Particles.pushBloodParticle(CenterPoint);
                parentWorld.Particles.pushBloodParticle(CenterPoint);
                parentWorld.Particles.pushBloodParticle(CenterPoint);
                parentWorld.Particles.pushBloodParticle(CenterPoint);
                parentWorld.Particles.pushBloodParticle(CenterPoint);

                enemy_life -= damage;

                if (deadCushySoundTimer > 500f)
                {
                    AudioLib.playSoundEffect("fleshyKnockBack");

                    deadCushySoundTimer = 0;
                }

                if (enemy_life < 1)
                {
                    broodState = BroodLordState.Dying;
                    AudioLib.playSoundEffect("alienChaserDie");
                    for (int i = 0; i < 20; i++)
                    {
                        parentWorld.Particles.pushExplosiveGib(CenterPoint);
                    }

                    for (int i = 0; i < 10; i++)
                    {
                        parentWorld.Particles.pushGib(CenterPoint);
                    }
                    parentWorld.pushCoin(this);
                }

                knockBackTimer = 0;
            }
        }
        public override void update(GameTime currentTime)
        {
            animation_time      += currentTime.ElapsedGameTime.Milliseconds / 1000f;
            knockBackTimer      += currentTime.ElapsedGameTime.Milliseconds;
            deadCushySoundTimer += currentTime.ElapsedGameTime.Milliseconds;

            if (broodState != BroodLordState.Dying && broodState != BroodLordState.Dead)
            {
                for (int i = 0; i < minionCount; i++)
                {
                    if (minions[i].MinionState == BroodLing.BroodLingState.Dead)
                    {
                        float dir = (float)((Math.PI * 2 / minionCount) * i);
                        minions[i].spawn(CenterPoint + (new Vector2((float)(Math.Cos(dir)), (float)(Math.Sin(dir))) * eggDistance));
                    }
                }
            }

            if (broodState == BroodLordState.Idle)
            {
                for (int i = 0; i < minionCount; i++)
                {
                    float dir = (float)((Math.PI * 2 / minionCount) * i);
                    minions[i].setTarget(CenterPoint + (new Vector2((float)(Math.Cos(dir)), (float)(Math.Sin(dir))) * eggDistance));
                }

                foreach (Entity en in parentWorld.EntityList)
                {
                    if (en is Player && Vector2.Distance(en.CenterPoint, CenterPoint) < 500)
                    {
                        broodState = BroodLordState.Aggro;
                    }
                }
            }
            else if (broodState == BroodLordState.Aggro)
            {
                foreach (Entity en in parentWorld.EntityList)
                {
                    if (en.Enemy_Type == EnemyType.Player || en.Enemy_Type == EnemyType.Prisoner || en.Enemy_Type == EnemyType.Guard)
                    {
                        if (Vector2.Distance(en.CenterPoint, CenterPoint) < 500)
                        {
                            if (hitTest(en))
                            {
                                en.knockBack(en.CenterPoint - CenterPoint, 3.0f, 4);
                            }
                        }
                    }

                    if (en is Player && Vector2.Distance(en.CenterPoint, CenterPoint) < 500)
                    {
                        for (int i = 0; i < minionCount; i++)
                        {
                            minions[i].setTarget(en.CenterPoint - (i * en.Dimensions / 2));
                        }

                        break;
                    }
                    else if (en is Player && Vector2.Distance(en.CenterPoint, CenterPoint) > 500)
                    {
                        broodState = BroodLordState.Idle;
                    }
                }
            }
            else if (broodState == BroodLordState.Dying)
            {
                broodState = BroodLordState.Dead;
            }
            else if (broodState == BroodLordState.Dead)
            {
                position   = new Vector2(float.MinValue, float.MaxValue);
                dimensions = Vector2.Zero;
                bool removeCheck = true;

                for (int i = 0; i < minionCount; i++)
                {
                    removeCheck = (minions[i].MinionState == BroodLing.BroodLingState.Dead) && removeCheck;
                }

                remove_from_list = removeCheck;
                if (removeCheck)
                {
                    for (int i = 0; i < minionCount; i++)
                    {
                        minions[i].delete();
                    }
                }
            }
            else
            {
                throw new Exception("Invalid Broodlord State");
            }

            anim.Animation.Apply(anim.Skeleton, animation_time, true);
        }