Terraria.HitTile.Prune C# (CSharp) Method

Prune() public method

public Prune ( ) : void
return void
        public void Prune()
        {
            bool flag = false;
            for (int index = 0; index <= 20; ++index)
            {
                HitTile.HitTileObject hitTileObject = this.data[index];
                if (hitTileObject.type != 0)
                {
                    Tile tile = Main.tile[hitTileObject.X, hitTileObject.Y];
                    if (hitTileObject.timeToLive <= 1)
                    {
                        hitTileObject.Clear();
                        flag = true;
                    }
                    else
                    {
                        --hitTileObject.timeToLive;
                        if ((double)hitTileObject.timeToLive < 12.0)
                            hitTileObject.damage -= 10;
                        else if ((double)hitTileObject.timeToLive < 24.0)
                            hitTileObject.damage -= 7;
                        else if ((double)hitTileObject.timeToLive < 36.0)
                            hitTileObject.damage -= 5;
                        else if ((double)hitTileObject.timeToLive < 48.0)
                            hitTileObject.damage -= 2;
                        if (hitTileObject.damage < 0)
                        {
                            hitTileObject.Clear();
                            flag = true;
                        }
                        else if (hitTileObject.type == 1)
                        {
                            if (!tile.active())
                            {
                                hitTileObject.Clear();
                                flag = true;
                            }
                        }
                        else if ((int)tile.wall == 0)
                        {
                            hitTileObject.Clear();
                            flag = true;
                        }
                    }
                }
            }
            if (!flag)
                return;
            int num1 = 1;
            while (flag)
            {
                flag = false;
                for (int index = num1; index < 20; ++index)
                {
                    if (this.data[this.order[index]].type == 0 && this.data[this.order[index + 1]].type != 0)
                    {
                        int num2 = this.order[index];
                        this.order[index] = this.order[index + 1];
                        this.order[index + 1] = num2;
                        flag = true;
                    }
                }
            }
        }