예제 #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;
        }
예제 #2
0
파일: AiLaws.cs 프로젝트: Somnium13/SS13
 // Function from file: ai_laws.dm
 public void associate(dynamic M = null)
 {
     if (!(this.owner != null))
     {
         this.owner = M;
     }
     return;
 }
예제 #3
0
        // Function from file: camera.dm
        public void triggerCameraAlarm(  )
        {
            Mob_Living_Silicon S = null;

            this.alarm_on = true;

            foreach (dynamic _a in Lang13.Enumerate(GlobalVars.mob_list, typeof(Mob_Living_Silicon)))
            {
                S = _a;

                S.triggerAlarm("Camera", GlobalFuncs.get_area(this), new ByTable(new object [] { this }), this);
            }
            return;
        }
예제 #4
0
        // Function from file: camera.dm
        public void cancelCameraAlarm(  )
        {
            Mob_Living_Silicon S = null;

            this.alarm_on = false;

            foreach (dynamic _a in Lang13.Enumerate(GlobalVars.mob_list, typeof(Mob_Living_Silicon)))
            {
                S = _a;

                S.cancelAlarm("Camera", GlobalFuncs.get_area(this), this);
            }
            return;
        }
예제 #5
0
        // Function from file: magnet.dm
        public void magnetic_process(  )
        {
            Obj M = null;
            Mob_Living_Silicon S = null;


            if (this.pulling)
            {
                return;
            }

            while (this.on)
            {
                this.pulling = true;
                this.center  = Map13.GetTile(((int)(this.x + this.center_x)), ((int)(this.y + this.center_y)), this.z);

                if (this.center != null)
                {
                    foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInRangeExcludeThis(this.center, this.magnetic_field), typeof(Obj)))
                    {
                        M = _a;


                        if (!Lang13.Bool(M.anchored) && Lang13.Bool(M.flags & 64))
                        {
                            Map13.StepTowardsSimple(M, this.center);
                        }
                    }

                    foreach (dynamic _b in Lang13.Enumerate(Map13.FetchInRangeExcludeThis(this.center, this.magnetic_field), typeof(Mob_Living_Silicon)))
                    {
                        S = _b;


                        if (S is Mob_Living_Silicon_Ai)
                        {
                            continue;
                        }
                        Map13.StepTowardsSimple(S, this.center);
                    }
                }
                this.f_use_power(this.electricity_level * 5);
                Task13.Sleep(13 - this.electricity_level);
            }
            this.pulling = false;
            return;
        }
예제 #6
0
        // Function from file: motion.dm
        public bool cancelAlarm(  )
        {
            Mob_Living_Silicon aiPlayer = null;


            if (this.detectTime == -1)
            {
                foreach (dynamic _a in Lang13.Enumerate(GlobalVars.player_list, typeof(Mob_Living_Silicon)))
                {
                    aiPlayer = _a;


                    if (this.status)
                    {
                        aiPlayer.cancelAlarm("Motion", GlobalFuncs.get_area(this), this);
                    }
                }
            }
            this.detectTime = 0;
            return(true);
        }
예제 #7
0
        // Function from file: motion.dm
        public bool triggerAlarm(  )
        {
            Mob_Living_Silicon aiPlayer = null;


            if (!(this.detectTime != 0))
            {
                return(false);
            }

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


                if (this.status)
                {
                    aiPlayer.triggerAlarm("Motion", GlobalFuncs.get_area(this), new ByTable(new object [] { this }), this);
                }
            }
            this.detectTime = -1;
            return(true);
        }
예제 #8
0
        // Function from file: tgstation.dme
        public override void stage_act(  )
        {
            Obj M = null;
            Mob_Living_Silicon S = null;
            Obj M2   = null;
            int?i    = null;
            int?iter = null;
            Mob_Living_Silicon S2 = null;
            int?i2                = null;
            int?iter2             = null;
            Obj M3                = null;
            int?i3                = null;
            int?iter3             = null;
            Mob_Living_Silicon S3 = null;
            int?i4                = null;
            int?iter4             = null;

            base.stage_act();

            switch ((int?)(this.stage))
            {
            case 2:

                if (Rand13.PercentChance(2))
                {
                    this.affected_mob.WriteMsg("<span class='danger'>You feel a slight shock course through your body.</span>");
                }

                if (Rand13.PercentChance(2))
                {
                    foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInRangeExcludeThis(this.affected_mob, 2), typeof(Obj)))
                    {
                        M = _a;


                        if (!Lang13.Bool(M.anchored) && Lang13.Bool(M.flags & 64))
                        {
                            Map13.StepTowardsSimple(M, this.affected_mob);
                        }
                    }

                    foreach (dynamic _b in Lang13.Enumerate(Map13.FetchInRangeExcludeThis(this.affected_mob, 2), typeof(Mob_Living_Silicon)))
                    {
                        S = _b;


                        if (S is Mob_Living_Silicon_Ai)
                        {
                            continue;
                        }
                        Map13.StepTowardsSimple(S, this.affected_mob);
                    }
                }
                break;

            case 3:

                if (Rand13.PercentChance(2))
                {
                    this.affected_mob.WriteMsg("<span class='danger'>You feel a strong shock course through your body.</span>");
                }

                if (Rand13.PercentChance(2))
                {
                    this.affected_mob.WriteMsg("<span class='danger'>You feel like clowning around.</span>");
                }

                if (Rand13.PercentChance(4))
                {
                    foreach (dynamic _c in Lang13.Enumerate(Map13.FetchInRangeExcludeThis(this.affected_mob, 4), typeof(Obj)))
                    {
                        M2 = _c;


                        if (!Lang13.Bool(M2.anchored) && Lang13.Bool(M2.flags & 64))
                        {
                            i    = null;
                            iter = Rand13.Int(1, 2);
                            i    = 0;

                            while ((i ?? 0) < (iter ?? 0))
                            {
                                Map13.StepTowardsSimple(M2, this.affected_mob);
                                i++;
                            }
                        }
                    }

                    foreach (dynamic _d in Lang13.Enumerate(Map13.FetchInRangeExcludeThis(this.affected_mob, 4), typeof(Mob_Living_Silicon)))
                    {
                        S2 = _d;


                        if (S2 is Mob_Living_Silicon_Ai)
                        {
                            continue;
                        }
                        i2    = null;
                        iter2 = Rand13.Int(1, 2);
                        i2    = 0;

                        while ((i2 ?? 0) < (iter2 ?? 0))
                        {
                            Map13.StepTowardsSimple(S2, this.affected_mob);
                            i2++;
                        }
                    }
                }
                break;

            case 4:

                if (Rand13.PercentChance(2))
                {
                    this.affected_mob.WriteMsg("<span class='danger'>You feel a powerful shock course through your body.</span>");
                }

                if (Rand13.PercentChance(2))
                {
                    this.affected_mob.WriteMsg("<span class='danger'>You query upon the nature of miracles.</span>");
                }

                if (Rand13.PercentChance(8))
                {
                    foreach (dynamic _e in Lang13.Enumerate(Map13.FetchInRangeExcludeThis(this.affected_mob, 6), typeof(Obj)))
                    {
                        M3 = _e;


                        if (!Lang13.Bool(M3.anchored) && Lang13.Bool(M3.flags & 64))
                        {
                            i3    = null;
                            iter3 = Rand13.Int(1, 3);
                            i3    = 0;

                            while ((i3 ?? 0) < (iter3 ?? 0))
                            {
                                Map13.StepTowardsSimple(M3, this.affected_mob);
                                i3++;
                            }
                        }
                    }

                    foreach (dynamic _f in Lang13.Enumerate(Map13.FetchInRangeExcludeThis(this.affected_mob, 6), typeof(Mob_Living_Silicon)))
                    {
                        S3 = _f;


                        if (S3 is Mob_Living_Silicon_Ai)
                        {
                            continue;
                        }
                        i4    = null;
                        iter4 = Rand13.Int(1, 3);
                        i4    = 0;

                        while ((i4 ?? 0) < (iter4 ?? 0))
                        {
                            Map13.StepTowardsSimple(S3, this.affected_mob);
                            i4++;
                        }
                    }
                }
                break;
            }
            return;
        }
예제 #9
0
파일: Zone.cs 프로젝트: Somnium13/SS13
        // Function from file: areas.dm
        public virtual void poweralert(bool state = false, Obj_Machinery_Power_Apc source = null)
        {
            ByTable cameras                       = null;
            Obj_Machinery_Camera C                = null;
            Mob_Living_Silicon   aiPlayer         = null;
            Obj_Machinery_Computer_StationAlert a = null;
            Mob_Living_SimpleAnimal_Drone       D = null;


            if (state != this.poweralm)
            {
                this.poweralm = state;

                if (source is Obj)
                {
                    cameras = new ByTable();

                    foreach (dynamic _a in Lang13.Enumerate(this, typeof(Obj_Machinery_Camera)))
                    {
                        C = _a;

                        cameras.Add(C);
                    }

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


                        if (state)
                        {
                            aiPlayer.cancelAlarm("Power", this, source);
                        }
                        else
                        {
                            aiPlayer.triggerAlarm("Power", this, cameras, source);
                        }
                    }

                    foreach (dynamic _c in Lang13.Enumerate(GlobalVars.machines, typeof(Obj_Machinery_Computer_StationAlert)))
                    {
                        a = _c;


                        if (state)
                        {
                            a.cancelAlarm("Power", this, source);
                        }
                        else
                        {
                            a.triggerAlarm("Power", this, cameras, source);
                        }
                    }

                    foreach (dynamic _d in Lang13.Enumerate(GlobalVars.mob_list, typeof(Mob_Living_SimpleAnimal_Drone)))
                    {
                        D = _d;


                        if (state)
                        {
                            D.cancelAlarm("Power", this, source);
                        }
                        else
                        {
                            D.triggerAlarm("Power", this, cameras, source);
                        }
                    }
                }
            }
            return;
        }
예제 #10
0
파일: Zone.cs 프로젝트: Somnium13/SS13
        // Function from file: areas.dm
        public bool atmosalert(int danger_level = 0, Obj source = null)
        {
            ByTable cameras                        = null;
            dynamic RA                             = null;
            Obj_Machinery_Camera C                 = null;
            Mob_Living_Silicon   aiPlayer          = null;
            Obj_Machinery_Computer_StationAlert a  = null;
            Mob_Living_SimpleAnimal_Drone       D  = null;
            Mob_Living_Silicon aiPlayer2           = null;
            Obj_Machinery_Computer_StationAlert a2 = null;
            Mob_Living_SimpleAnimal_Drone       D2 = null;


            if (danger_level != this.atmosalm)
            {
                if (danger_level == 2)
                {
                    cameras = new ByTable();

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


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

                            cameras.Add(C);
                        }
                    }

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

                        aiPlayer.triggerAlarm("Atmosphere", this, cameras, source);
                    }

                    foreach (dynamic _d in Lang13.Enumerate(GlobalVars.machines, typeof(Obj_Machinery_Computer_StationAlert)))
                    {
                        a = _d;

                        a.triggerAlarm("Atmosphere", this, cameras, source);
                    }

                    foreach (dynamic _e in Lang13.Enumerate(GlobalVars.mob_list, typeof(Mob_Living_SimpleAnimal_Drone)))
                    {
                        D = _e;

                        D.triggerAlarm("Atmosphere", this, cameras, source);
                    }
                }
                else if (this.atmosalm == 2)
                {
                    foreach (dynamic _f in Lang13.Enumerate(GlobalVars.player_list, typeof(Mob_Living_Silicon)))
                    {
                        aiPlayer2 = _f;

                        aiPlayer2.cancelAlarm("Atmosphere", this, source);
                    }

                    foreach (dynamic _g in Lang13.Enumerate(GlobalVars.machines, typeof(Obj_Machinery_Computer_StationAlert)))
                    {
                        a2 = _g;

                        a2.cancelAlarm("Atmosphere", this, source);
                    }

                    foreach (dynamic _h in Lang13.Enumerate(GlobalVars.mob_list, typeof(Mob_Living_SimpleAnimal_Drone)))
                    {
                        D2 = _h;

                        D2.cancelAlarm("Atmosphere", this, source);
                    }
                }
                this.atmosalm = danger_level;
                return(true);
            }
            return(false);
        }
예제 #11
0
파일: Zone.cs 프로젝트: Somnium13/SS13
        // Function from file: areas.dm
        public void firealert(Obj_Machinery source = null)
        {
            ByTable cameras = null;
            dynamic RA      = null;
            Obj_Machinery_Door_Firedoor         D  = null;
            Obj_Machinery_Firealarm             F  = null;
            Obj_Machinery_Camera                C  = null;
            Obj_Machinery_Computer_StationAlert a  = null;
            Mob_Living_Silicon            aiPlayer = null;
            Mob_Living_SimpleAnimal_Drone D2       = null;


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

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


                if (!RA.fire)
                {
                    ((Zone)RA).set_fire_alarm_effect();

                    foreach (dynamic _a in Lang13.Enumerate(RA, typeof(Obj_Machinery_Door_Firedoor)))
                    {
                        D = _a;


                        if (!D.blocked)
                        {
                            if (D.operating)
                            {
                                D.nextstate = GlobalVars.CLOSED;
                            }
                            else if (!D.density)
                            {
                                Task13.Schedule(0, (Task13.Closure)(() => {
                                    D.close();
                                    return;
                                }));
                            }
                        }
                    }

                    foreach (dynamic _b in Lang13.Enumerate(RA, typeof(Obj_Machinery_Firealarm)))
                    {
                        F = _b;

                        F.update_icon();
                    }
                }

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

                    cameras.Add(C);
                }
            }

            foreach (dynamic _e in Lang13.Enumerate(GlobalVars.machines, typeof(Obj_Machinery_Computer_StationAlert)))
            {
                a = _e;

                a.triggerAlarm("Fire", this, cameras, source);
            }

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

                aiPlayer.triggerAlarm("Fire", this, cameras, source);
            }

            foreach (dynamic _g in Lang13.Enumerate(GlobalVars.mob_list, typeof(Mob_Living_SimpleAnimal_Drone)))
            {
                D2 = _g;

                D2.triggerAlarm("Fire", this, cameras, source);
            }
            return;
        }
예제 #12
0
파일: Zone.cs 프로젝트: Somnium13/SS13
        // Function from file: areas.dm
        public void firereset(Obj_Machinery source = null)
        {
            dynamic RA = null;
            Obj_Machinery_Door_Firedoor         D        = null;
            Obj_Machinery_Firealarm             F        = null;
            Mob_Living_Silicon                  aiPlayer = null;
            Obj_Machinery_Computer_StationAlert a        = null;
            Mob_Living_SimpleAnimal_Drone       D2       = null;


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


                if (RA.fire)
                {
                    RA.fire          = false;
                    RA.mouse_opacity = 0;
                    ((Zone)RA).updateicon();

                    foreach (dynamic _a in Lang13.Enumerate(RA, typeof(Obj_Machinery_Door_Firedoor)))
                    {
                        D = _a;


                        if (!D.blocked)
                        {
                            if (D.operating)
                            {
                                D.nextstate = 1;
                            }
                            else if (D.density)
                            {
                                Task13.Schedule(0, (Task13.Closure)(() => {
                                    D.open();
                                    return;
                                }));
                            }
                        }
                    }

                    foreach (dynamic _b in Lang13.Enumerate(RA, typeof(Obj_Machinery_Firealarm)))
                    {
                        F = _b;

                        F.update_icon();
                    }
                }
            }

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

                aiPlayer.cancelAlarm("Fire", this, source);
            }

            foreach (dynamic _e in Lang13.Enumerate(GlobalVars.machines, typeof(Obj_Machinery_Computer_StationAlert)))
            {
                a = _e;

                a.cancelAlarm("Fire", this, source);
            }

            foreach (dynamic _f in Lang13.Enumerate(GlobalVars.mob_list, typeof(Mob_Living_SimpleAnimal_Drone)))
            {
                D2 = _f;

                D2.cancelAlarm("Fire", this, source);
            }
            return;
        }
예제 #13
0
        // Function from file: headcrab.dm
        public override dynamic sting_action(Mob user = null, Ent_Static target = null)
        {
            Mind    M                 = null;
            ByTable organs            = null;
            Obj_Item_Organ_Internal I = null;
            Mob_Living_Carbon_Human H = null;
            Mob_Living_Silicon      S = null;
            dynamic turf              = null;
            Mob_Living_SimpleAnimal_Hostile_Headcrab crab = null;
            Obj_Item_Organ_Internal I2 = null;

            M      = user.mind;
            organs = user.getorganszone("head", true);

            foreach (dynamic _a in Lang13.Enumerate(organs, typeof(Obj_Item_Organ_Internal)))
            {
                I = _a;

                I.Remove(user, true);
            }
            GlobalFuncs.explosion(GlobalFuncs.get_turf(user), 0, 0, 2, 0, null, null, null, true);

            foreach (dynamic _b in Lang13.Enumerate(Map13.FetchInRange(user, 2), typeof(Mob_Living_Carbon_Human)))
            {
                H = _b;

                H.WriteMsg("<span class='userdanger'>You are blinded by a shower of blood!</span>");
                H.Stun(1);
                H.blur_eyes(20);
                H.adjust_eye_damage(5);
                H.confused += 3;
            }

            foreach (dynamic _c in Lang13.Enumerate(Map13.FetchInRange(user, 2), typeof(Mob_Living_Silicon)))
            {
                S = _c;

                S.WriteMsg("<span class='userdanger'>Your sensors are disabled by a shower of blood!</span>");
                S.Weaken(3);
            }
            turf = GlobalFuncs.get_turf(user);
            Task13.Schedule(5, (Task13.Closure)(() => {
                crab = new Mob_Living_SimpleAnimal_Hostile_Headcrab(turf);

                foreach (dynamic _d in Lang13.Enumerate(organs, typeof(Obj_Item_Organ_Internal)))
                {
                    I2 = _d;

                    I2.loc = crab;
                }
                crab.origin = M;

                if (crab.origin != null)
                {
                    crab.origin.active = true;
                    crab.origin.transfer_to(crab);
                    crab.WriteMsg("<span class='warning'>You burst out of the remains of your former body in a shower of gore!</span>");
                }
                return;
            }));
            user.gib();
            GlobalFuncs.feedback_add_details("changeling_powers", "LR");
            return(1);
        }