Пример #1
0
        // Function from file: disposal-unit.dm
        public void expel(Obj_Structure_Disposalholder H = null)
        {
            dynamic     T      = null;
            Tile        target = null;
            Ent_Dynamic AM     = null;

            T = GlobalFuncs.get_turf(this);
            GlobalFuncs.playsound(this, "sound/machines/hiss.ogg", 50, 0, 0);

            if (H != null)
            {
                foreach (dynamic _a in Lang13.Enumerate(H, typeof(Ent_Dynamic)))
                {
                    AM = _a;

                    target = GlobalFuncs.get_offset_target_turf(this.loc, Rand13.Int(5) - Rand13.Int(5), Rand13.Int(5) - Rand13.Int(5));
                    AM.forceMove(T);
                    AM.pipe_eject(0);
                    AM.throw_at_fast(target, 5, 1);
                }
                H.vent_gas(this.loc);
                GlobalFuncs.qdel(H);
            }
            return;
        }
Пример #2
0
        // Function from file: disposal-structures.dm
        public void expel(Obj_Structure_Disposalholder H = null)
        {
            dynamic     T  = null;
            Ent_Dynamic AM = null;

            T = GlobalFuncs.get_turf(this);
            Icon13.Flick("outlet-open", this);

            if (this.start_eject + 30 < Game13.time)
            {
                this.start_eject = Game13.time;
                GlobalFuncs.playsound(this, "sound/machines/warning-buzzer.ogg", 50, 0, 0);
                Task13.Sleep(20);
                GlobalFuncs.playsound(this, "sound/machines/hiss.ogg", 50, 0, 0);
            }
            else
            {
                Task13.Sleep(20);
            }

            if (H != null)
            {
                foreach (dynamic _a in Lang13.Enumerate(H, typeof(Ent_Dynamic)))
                {
                    AM = _a;

                    AM.forceMove(T);
                    AM.pipe_eject(this.dir);
                    AM.throw_at_fast(this.target, this.eject_range, 1);
                }
                H.vent_gas(T);
                GlobalFuncs.qdel(H);
            }
            return;
        }
Пример #3
0
        // Function from file: closets.dm
        public virtual void dump_contents(  )
        {
            dynamic     T  = null;
            Ent_Dynamic AM = null;

            T = GlobalFuncs.get_turf(this);

            foreach (dynamic _a in Lang13.Enumerate(this, typeof(Ent_Dynamic)))
            {
                AM = _a;

                AM.forceMove(T);

                if (this.throwing)
                {
                    Map13.Step(AM, this.dir);
                }
            }

            if (this.throwing)
            {
                this.throwing = false;
            }
            return;
        }
Пример #4
0
        // Function from file: disposal-structures.dm
        public override dynamic Destroy(  )
        {
            dynamic     H  = null;
            Ent_Static  T  = null;
            Ent_Dynamic AM = null;

            H = Lang13.FindIn(typeof(Obj_Structure_Disposalholder), this);

            if (Lang13.Bool(H))
            {
                H.active = 0;
                T        = this.loc;

                if (T.density)
                {
                    foreach (dynamic _a in Lang13.Enumerate(H, typeof(Ent_Dynamic)))
                    {
                        AM = _a;

                        AM.forceMove(this.loc);
                        AM.pipe_eject(0);
                    }
                    GlobalFuncs.qdel(H);
                    return(base.Destroy());
                }
                else
                {
                    this.expel(H, T, 0);
                }
            }
            return(base.Destroy());
        }
Пример #5
0
        // Function from file: disposal-structures.dm
        public void broken(bool?remains = null)
        {
            remains = remains ?? false;

            dynamic D = null;
            Obj_Structure_Disposalpipe_Broken P = null;
            dynamic     H  = null;
            Ent_Static  T  = null;
            Ent_Dynamic AM = null;


            if (remains == true)
            {
                foreach (dynamic _a in Lang13.Enumerate(GlobalVars.cardinal))
                {
                    D = _a;


                    if (Lang13.Bool(D & this.dpdir))
                    {
                        P     = new Obj_Structure_Disposalpipe_Broken(this.loc);
                        P.dir = Convert.ToInt32(D);
                    }
                }
            }
            this.invisibility = 101;
            H = Lang13.FindIn(typeof(Obj_Structure_Disposalholder), this);

            if (Lang13.Bool(H))
            {
                H.active = 0;
                T        = this.loc;

                if (T.density)
                {
                    foreach (dynamic _b in Lang13.Enumerate(H, typeof(Ent_Dynamic)))
                    {
                        AM = _b;

                        AM.forceMove(this.loc);
                        AM.pipe_eject(0);
                    }
                    GlobalFuncs.qdel(H);
                    return;
                }

                if (Lang13.Bool(H))
                {
                    this.expel(H, T, 0);
                }
            }
            Task13.Schedule(2, (Task13.Closure)(() => {
                GlobalFuncs.qdel(this);
                return;
            }));
            return;
        }
Пример #6
0
        // Function from file: medical_tools.dm
        public override dynamic Destroy(  )
        {
            Ent_Dynamic AM = null;


            foreach (dynamic _a in Lang13.Enumerate(this, typeof(Ent_Dynamic)))
            {
                AM = _a;

                AM.forceMove(GlobalFuncs.get_turf(this));
            }
            return(base.Destroy());
        }
Пример #7
0
 // Function from file: gygax.dm
 public override void add_cell(Ent_Dynamic C = null)
 {
     if (C != null)
     {
         C.forceMove(this);
         this.cell = C;
         return;
     }
     this.cell           = new Obj_Item_Weapon_StockParts_Cell(this);
     this.cell.charge    = 30000;
     this.cell.maxcharge = 30000;
     return;
 }
Пример #8
0
        // Function from file: mine_turfs.dm
        public void drop(Ent_Dynamic AM = null)
        {
            Ent_Dynamic L = null;

            this.visible_message("" + AM + " falls into " + this + "!");
            AM.forceMove(Map13.GetTile(this.drop_x, this.drop_y, this.drop_z));
            AM.visible_message("" + AM + " falls from above!");

            if (AM is Mob_Living)
            {
                L = AM;
                ((Mob_Living)L).adjustBruteLoss(30);
            }
            return;
        }
        // Function from file: ninja_teleporting.dm
        public void handle_teleport_grab(dynamic T = null, dynamic H = null)
        {
            Ent_Dynamic victim = null;


            if (Lang13.Bool(H.pulling) && H.pulling is Mob_Living)
            {
                victim = H.pulling;

                if (!Lang13.Bool(victim.anchored))
                {
                    victim.forceMove(Map13.GetTile(Convert.ToInt32(T.x + Rand13.Int(-1, 1)), Convert.ToInt32(T.y + Rand13.Int(-1, 1)), Convert.ToInt32(T.z)));
                }
            }
            return;
        }
Пример #10
0
        // Function from file: disposal-unit.dm
        public void eject(  )
        {
            dynamic     T  = null;
            Ent_Dynamic AM = null;

            T = GlobalFuncs.get_turf(this);

            foreach (dynamic _a in Lang13.Enumerate(this, typeof(Ent_Dynamic)))
            {
                AM = _a;

                AM.forceMove(T);
                AM.pipe_eject(0);
            }
            this.update();
            return;
        }
Пример #11
0
        // Function from file: morgue.dm
        public void open(  )
        {
            Tile        T  = null;
            Ent_Dynamic AM = null;

            GlobalFuncs.playsound(this.loc, "sound/items/Deconstruct.ogg", 50, 1);
            T = Map13.GetStep(this, this.opendir);

            foreach (dynamic _a in Lang13.Enumerate(this, typeof(Ent_Dynamic)))
            {
                AM = _a;

                AM.forceMove(T);
            }
            this.update_icon();
            return;
        }
Пример #12
0
        // Function from file: martial.dm
        public void Suplex(dynamic A = null, Ent_Dynamic D = null)
        {
            double armor_block = 0;

            D.visible_message("<span class='danger'>" + A + " suplexes " + D + "!</span>", "<span class='userdanger'>" + A + " suplexes " + D + "!</span>");
            D.forceMove(A.loc);
            armor_block = ((Mob_Living)D).run_armor_check(null, "melee");
            ((Mob_Living)D).apply_damage(30, "brute", null, armor_block);
            ((Mob_Living)D).apply_effect(6, "weaken", armor_block);
            GlobalFuncs.add_logs(A, D, "suplexed");
            ((Ent_Static)A).SpinAnimation(10, 1);
            D.SpinAnimation(10, 1);
            Task13.Schedule(3, (Task13.Closure)(() => {
                armor_block = ((Mob_Living)A).run_armor_check(null, "melee");
                ((Mob_Living)A).apply_effect(4, "weaken", armor_block);
                return;
            }));
            return;
        }
Пример #13
0
        // Function from file: morgue.dm
        public void close(  )
        {
            Ent_Dynamic AM = null;

            GlobalFuncs.playsound(this.loc, "sound/items/Deconstruct.ogg", 50, 1);

            foreach (dynamic _a in Lang13.Enumerate(this.connected.loc, typeof(Ent_Dynamic)))
            {
                AM = _a;


                if (!Lang13.Bool(AM.anchored) || AM == this.connected)
                {
                    AM.forceMove(this);
                }
            }
            this.update_icon();
            return;
        }
Пример #14
0
        // Function from file: Sleeper.dm
        public override bool blob_act(dynamic severity = null)
        {
            dynamic     T = null;
            Ent_Dynamic A = null;


            if (Rand13.PercentChance(75))
            {
                T = GlobalFuncs.get_turf(this);

                foreach (dynamic _a in Lang13.Enumerate(this, typeof(Ent_Dynamic)))
                {
                    A = _a;

                    A.forceMove(T);
                    A.blob_act();
                }
                GlobalFuncs.qdel(this);
            }
            return(false);
        }
        // Function from file: large.dm
        public override dynamic attackby(dynamic A = null, dynamic user = null, string _params = null, bool?silent = null, bool?replace_spent = null)
        {
            dynamic     T  = null;
            double      i  = 0;
            Ent_Dynamic AM = null;


            if (A is Obj_Item_Weapon_Crowbar)
            {
                T = GlobalFuncs.get_turf(this);

                if (this.manifest != null)
                {
                    this.tear_manifest(user);
                }
                ((Ent_Static)user).visible_message(new Txt().item(user).str(" pries ").the(this).item().str(" open.").ToString(), new Txt("<span class='notice'>You pry open ").the(this).item().str(".</span>").ToString(), "<span class='italics'>You hear splitting wood.</span>");
                GlobalFuncs.playsound(this.loc, "sound/weapons/slashmiss.ogg", 75, 1);

                foreach (dynamic _a in Lang13.IterateRange(1, Rand13.Int(2, 5)))
                {
                    i = _a;

                    Lang13.Call(this.material_drop, this);
                }

                foreach (dynamic _b in Lang13.Enumerate(this.contents, typeof(Ent_Dynamic)))
                {
                    AM = _b;

                    AM.forceMove(T);
                }
                GlobalFuncs.qdel(this);
            }
            else
            {
                base.attackby((object)(A), (object)(user), _params, silent, replace_spent);
            }
            return(null);
        }
Пример #16
0
        public override bool f_action(dynamic target = null)
        {
            Obj_Item_Weapon_ReagentContainers_Syringe S = null;
            dynamic           trg              = null;
            Ent_Dynamic       mechsyringe      = null;
            Ent_Static        originaloccupant = null;
            int?              i    = null;
            ByTable           mobs = null;
            Mob_Living_Carbon M    = null;
            dynamic           M2   = null;
            dynamic           R    = null;
            Reagent           A    = null;


            if (!this.action_checks(target))
            {
                return(false);
            }

            if (target is Obj_Item_Weapon_ReagentContainers_Syringe)
            {
                return(this.load_syringe(target));
            }

            if (target is Obj_Item_Weapon_Storage)
            {
                foreach (dynamic _a in Lang13.Enumerate(target.contents, typeof(Obj_Item_Weapon_ReagentContainers_Syringe)))
                {
                    S = _a;

                    this.load_syringe(S);
                }
                return(false);
            }

            if (this.mode)
            {
                return(this.analyze_reagents(target));
            }

            if (!(this.syringes.len != 0))
            {
                this.occupant_message("<span class=\"alert\">No syringes loaded.</span>");
                return(false);
            }

            if ((this.reagents.total_volume ?? 0) <= 0)
            {
                this.occupant_message("<span class=\"alert\">No available reagents to load syringe with.</span>");
                return(false);
            }
            trg         = GlobalFuncs.get_turf(target);
            mechsyringe = this.syringes[1];
            mechsyringe.forceMove(GlobalFuncs.get_turf(this.chassis));
            this.reagents.trans_to(mechsyringe, Num13.MinInt(Convert.ToInt32(((dynamic)mechsyringe).volume), ((int)(this.reagents.total_volume ?? 0))));
            this.syringes.Remove(mechsyringe);
            mechsyringe.icon       = "icons/obj/chemical.dmi";
            mechsyringe.icon_state = "syringeproj";
            GlobalFuncs.playsound(this.chassis, "sound/items/syringeproj.ogg", 50, 1);
            this.log_message("Launched " + mechsyringe + " from " + this + ", targeting " + target + ".");
            originaloccupant = this.chassis.occupant;
            Task13.Schedule(0, (Task13.Closure)(() => {
                Task13.Source = null;
                i             = null;
                i             = 0;

                while ((i ?? 0) < 6)
                {
                    if (!(mechsyringe != null))
                    {
                        break;
                    }
                    Map13.StepTowardsSimple(mechsyringe, trg);

                    if (!(mechsyringe != null))
                    {
                        mobs = new ByTable();

                        foreach (dynamic _b in Lang13.Enumerate(mechsyringe.loc, typeof(Mob_Living_Carbon)))
                        {
                            M = _b;

                            mobs.Add(M);
                        }
                        M2 = GlobalFuncs.safepick(mobs);

                        if (Lang13.Bool(M2))
                        {
                            R = null;
                            mechsyringe.visible_message("<span class=\"attack\"> " + M2 + " was hit by the syringe!</span>");

                            if (((Mob_Living)M2).can_inject(null, true))
                            {
                                if (mechsyringe.reagents != null)
                                {
                                    foreach (dynamic _c in Lang13.Enumerate(mechsyringe.reagents.reagent_list, typeof(Reagent)))
                                    {
                                        A = _c;

                                        R += A.id + " (";
                                        R += String13.NumberToString(A.volume) + "),";
                                    }
                                }
                                mechsyringe.icon_state = Lang13.Initial(mechsyringe, "icon_state");
                                mechsyringe.icon       = Lang13.Initial(mechsyringe, "icon");
                                mechsyringe.reagents.trans_to(M2, mechsyringe.reagents.total_volume);
                                ((Mob_Living)M2).take_organ_damage(2);
                                GlobalFuncs.add_logs(originaloccupant, M2, "shot", "syringegun");
                            }
                            break;
                        }
                        else if (mechsyringe.loc == trg)
                        {
                            mechsyringe.icon_state = Lang13.Initial(mechsyringe, "icon_state");
                            mechsyringe.icon       = Lang13.Initial(mechsyringe, "icon");
                            ((dynamic)mechsyringe).update_icon();
                            break;
                        }
                    }
                    else
                    {
                        mechsyringe.icon_state = Lang13.Initial(mechsyringe, "icon_state");
                        mechsyringe.icon       = Lang13.Initial(mechsyringe, "icon");
                        ((dynamic)mechsyringe).update_icon();
                        break;
                    }
                    Task13.Sleep(1);
                    i++;
                }
                return;
            }));
            return(true);
        }
Пример #17
0
        // Function from file: closets.dm
        public virtual int insert(Ent_Dynamic AM = null)
        {
            Ent_Dynamic L           = null;
            int         mobs_stored = 0;
            Mob_Living  M           = null;


            if (this.contents.len >= this.storage_capacity)
            {
                return(-1);
            }
            L = AM;

            if (L is Mob_Living)
            {
                if (Lang13.Bool(((dynamic)L).buckled) || Lang13.Bool(L.buckled_mob))
                {
                    return(0);
                }

                if (Convert.ToDouble(((dynamic)L).mob_size) > 0)
                {
                    if (this.horizontal && !Lang13.Bool(((dynamic)L).lying))
                    {
                        return(0);
                    }

                    if (Convert.ToDouble(((dynamic)L).mob_size) > this.max_mob_size)
                    {
                        return(0);
                    }
                    mobs_stored = 0;

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


                        if (++mobs_stored >= this.mob_storage_capacity)
                        {
                            return(0);
                        }
                    }
                }
                L.__CallVerb("Stop Pulling");
            }
            else if (AM is Obj_Structure_Closet)
            {
                return(0);
            }
            else if (AM is Obj)
            {
                if (!this.allow_objects && !(AM is Obj_Item) && !(AM is Obj_Effect_Dummy_Chameleon))
                {
                    return(0);
                }

                if (!this.allow_dense && AM.density)
                {
                    return(0);
                }

                if (Lang13.Bool(AM.anchored) || Lang13.Bool(AM.buckled_mob) || Lang13.Bool(AM.flags & 2))
                {
                    return(0);
                }
            }
            AM.forceMove(this);

            if (AM.pulledby != null)
            {
                AM.pulledby.__CallVerb("Stop Pulling");
            }
            return(1);
        }
Пример #18
0
        // Function from file: disposal-structures.dm
        public void expel(dynamic H = null, dynamic T = null, int?direction = null)
        {
            dynamic     target = null;
            dynamic     myturf = null;
            Ent_Dynamic AM     = null;
            Ent_Dynamic AM2    = null;


            if (T is Tile_Simulated_Floor)
            {
                myturf = T;

                if (Lang13.Bool(myturf.builtin_tile))
                {
                    myturf.builtin_tile.loc = T;
                    myturf.builtin_tile     = null;
                }
                ((Tile_Simulated_Floor)myturf).make_plating();
            }

            if (Lang13.Bool(direction))
            {
                if (T is Tile_Space)
                {
                    target = GlobalFuncs.get_edge_target_turf(T, direction);
                }
                else
                {
                    target = GlobalFuncs.get_ranged_target_turf(T, direction, 10);
                }
                GlobalFuncs.playsound(this, "sound/machines/hiss.ogg", 50, 0, 0);

                if (Lang13.Bool(H))
                {
                    foreach (dynamic _a in Lang13.Enumerate(H, typeof(Ent_Dynamic)))
                    {
                        AM = _a;

                        AM.forceMove(this.loc);
                        AM.pipe_eject(direction);
                        AM.throw_at_fast(target, 10, 1);
                    }
                }
            }
            else
            {
                GlobalFuncs.playsound(this, "sound/machines/hiss.ogg", 50, 0, 0);

                if (Lang13.Bool(H))
                {
                    foreach (dynamic _b in Lang13.Enumerate(H, typeof(Ent_Dynamic)))
                    {
                        AM2 = _b;

                        target = GlobalFuncs.get_offset_target_turf(T, Rand13.Int(5) - Rand13.Int(5), Rand13.Int(5) - Rand13.Int(5));
                        AM2.forceMove(this.loc);
                        AM2.pipe_eject(0);
                        AM2.throw_at_fast(target, 5, 1);
                    }
                }
            }
            ((Obj_Structure_Disposalholder)H).vent_gas(T);
            GlobalFuncs.qdel(H);
            return;
        }