예제 #1
0
파일: Zone.cs 프로젝트: Somnium13/SS13
        // Function from file: areas.dm
        public void burglaralert(Obj trigger = null)
        {
            ByTable cameras = null;
            dynamic RA      = null;
            Obj_Machinery_Door_Airlock DOOR    = null;
            Obj_Machinery_Camera       C       = null;
            Mob_Living_Silicon         SILICON = null;


            if (this.always_unpowered)
            {
                return;
            }
            cameras = new ByTable();

            foreach (dynamic _c in Lang13.Enumerate(this.related))
            {
                RA = _c;

                ((Zone)RA).set_fire_alarm_effect();

                foreach (dynamic _a in Lang13.Enumerate(RA, typeof(Obj_Machinery_Door_Airlock)))
                {
                    DOOR = _a;

                    Task13.Schedule(0, (Task13.Closure)(() => {
                        DOOR.close();

                        if (DOOR.density)
                        {
                            DOOR.locked = true;
                            DOOR.update_icon();
                        }
                        return;
                    }));
                }

                foreach (dynamic _b in Lang13.Enumerate(RA, typeof(Obj_Machinery_Camera)))
                {
                    C = _b;

                    cameras.Add(C);
                }
            }

            foreach (dynamic _d in Lang13.Enumerate(GlobalVars.player_list, typeof(Mob_Living_Silicon)))
            {
                SILICON = _d;


                if (SILICON.triggerAlarm("Burglar", this, cameras, trigger))
                {
                    Task13.Schedule(600, (Task13.Closure)(() => {
                        SILICON.cancelAlarm("Burglar", this, trigger);
                        return;
                    }));
                }
            }
            return;
        }
        // Function from file: doorcontrol.dm
        public override bool activate(  )
        {
            Obj_Machinery_Door_Airlock D = null;

            this.cooldown = 1;

            foreach (dynamic _a in Lang13.Enumerate(GlobalVars.airlocks, typeof(Obj_Machinery_Door_Airlock)))
            {
                D = _a;


                if (D.id_tag == this.id)
                {
                    if ((this.specialfunctions & 1) != 0)
                    {
                        if (D.density)
                        {
                            D.open();
                        }
                        else
                        {
                            D.close();
                        }
                    }

                    if ((this.specialfunctions & 2) != 0)
                    {
                        D.aiDisabledIdScanner = !D.aiDisabledIdScanner;
                    }

                    if ((this.specialfunctions & 4) != 0)
                    {
                        if (!((Wires)D.wires).is_cut("bolts") && D.hasPower())
                        {
                            D.locked = !D.locked;
                            D.update_icon();
                        }
                    }

                    if ((this.specialfunctions & 8) != 0)
                    {
                        D.secondsElectrified = (D.secondsElectrified != 0 ? 0 : -1);
                    }

                    if ((this.specialfunctions & 16) != 0)
                    {
                        D.safe = !D.safe;
                    }
                }
            }
            Task13.Sleep(10);
            this.cooldown = 0;
            return(false);
        }