Example #1
0
        // Function from file: LINDA_system.dm
        public bool CanAtmosPass(dynamic T = null)
        {
            bool R  = false;
            Obj  O  = null;
            int  D  = 0;
            Obj  O2 = null;
            int  D2 = 0;
            int  D3 = 0;


            if (!(T is Tile))
            {
                return(false);
            }

            if (this.blocks_air || T.blocks_air)
            {
                R = true;
            }

            foreach (dynamic _a in Lang13.Enumerate(this.contents, typeof(Obj)))
            {
                O = _a;


                if (!O.CanAtmosPass(T))
                {
                    R = true;

                    if (O.BlockSuperconductivity())
                    {
                        D = Map13.GetDistance(this, T);
                        this.atmos_supeconductivity |= D;
                        D = Map13.GetDistance(T, this);
                        T.atmos_supeconductivity |= D;
                        return(false);
                    }
                }
            }

            foreach (dynamic _b in Lang13.Enumerate(T.contents, typeof(Obj)))
            {
                O2 = _b;


                if (!O2.CanAtmosPass(this))
                {
                    R = true;

                    if (O2.BlockSuperconductivity())
                    {
                        D2 = Map13.GetDistance(this, T);
                        this.atmos_supeconductivity |= D2;
                        D2 = Map13.GetDistance(T, this);
                        T.atmos_supeconductivity |= D2;
                        return(false);
                    }
                }
            }
            D3 = Map13.GetDistance(this, T);
            this.atmos_supeconductivity &= ~D3;
            D3 = Map13.GetDistance(T, this);
            T.atmos_supeconductivity &= ~D3;

            if (!R)
            {
                return(true);
            }
            return(false);
        }