Exemplo n.º 1
0
        // Function from file: glass.dm
        public override dynamic Crossed(Ent_Dynamic O = null, dynamic X = null)
        {
            Ent_Dynamic H = null;


            if (O is Mob && GlobalFuncs.has_gravity(this.loc))
            {
                GlobalFuncs.playsound(this.loc, "sound/effects/glass_step.ogg", 50, 1);

                if (O is Mob_Living_Carbon_Human)
                {
                    H = O;

                    if (((dynamic)H).dna.species.specflags.Contains(8192))
                    {
                        return(0);
                    }

                    if (!Lang13.Bool(((dynamic)H).shoes))
                    {
                        ((dynamic)H).apply_damage(5, "brute", Rand13.Pick(new object [] { "l_leg", "r_leg" }));
                        ((dynamic)H).Weaken(3);

                        if (this.cooldown < Game13.time - 10)
                        {
                            H.visible_message("<span class='danger'>" + H + " steps in the broken glass!</span>", "<span class='userdanger'>You step in the broken glass!</span>");
                            this.cooldown = Game13.time;
                        }
                    }
                }
            }
            return(null);
        }
Exemplo n.º 2
0
        // Function from file: mousetrap.dm
        public override dynamic Crossed(Ent_Dynamic O = null, dynamic X = null)
        {
            Ent_Dynamic H  = null;
            Ent_Dynamic SA = null;


            if (this.armed)
            {
                if (O is Mob_Living_Carbon_Human)
                {
                    H = O;

                    if (((dynamic)H).m_intent == "run")
                    {
                        this.triggered(H);
                        H.visible_message("<span class='warning'>" + H + " accidentally steps on " + this + ".</span>", "<span class='warning'>You accidentally step on " + this + "</span>");
                    }
                }
                else if (O is Mob_Living_SimpleAnimal)
                {
                    SA = O;

                    if (!Lang13.Bool(((dynamic)SA).flying))
                    {
                        this.triggered(O);
                    }
                }
                else if (O.density)
                {
                    this.triggered(O);
                }
            }
            base.Crossed(O, (object)(X));
            return(null);
        }
        // Function from file: cockroach.dm
        public override dynamic Crossed(Ent_Dynamic O = null, dynamic X = null)
        {
            Ent_Dynamic A = null;


            if (O is Mob)
            {
                if (O is Mob_Living)
                {
                    A = O;

                    if (Convert.ToDouble(((dynamic)A).mob_size) > 0)
                    {
                        if (Rand13.PercentChance(this.squish_chance))
                        {
                            A.visible_message(new Txt("<span class='notice'>").The(A).item().str(" squashed ").the(this.name).item().str(".</span>").ToString(), new Txt("<span class='notice'>You squashed ").the(this.name).item().str(".</span>").ToString());
                            this.death();
                        }
                        else
                        {
                            this.visible_message(new Txt("<span class='notice'>").The(this.name).item().str(" avoids getting crushed.</span>").ToString());
                        }
                    }
                }
            }
            else if (O is Obj)
            {
                if (O is Obj_Structure)
                {
                    this.visible_message(new Txt("<span class='notice'>As ").the(O).item().str(" moved over ").the(this.name).item().str(", it was crushed.</span>").ToString());
                    this.death();
                }
            }
            return(null);
        }
        // Function from file: handcuffs.dm
        public override dynamic Crossed(Ent_Dynamic O = null, dynamic X = null)
        {
            Ent_Dynamic L        = null;
            bool        snap     = false;
            string      def_zone = null;
            Ent_Dynamic C        = null;
            Ent_Dynamic SA       = null;


            if (this.armed && this.loc is Tile)
            {
                if (O is Mob_Living)
                {
                    L        = O;
                    snap     = false;
                    def_zone = "chest";

                    if (L is Mob_Living_Carbon)
                    {
                        C    = L;
                        snap = true;

                        if (!Lang13.Bool(((dynamic)C).lying))
                        {
                            def_zone = Rand13.Pick(new object [] { "l_leg", "r_leg" });

                            if (!Lang13.Bool(((dynamic)C).legcuffed))
                            {
                                ((dynamic)C).legcuffed = this;
                                this.loc = C;
                                ((dynamic)C).update_inv_legcuffed();
                                GlobalFuncs.feedback_add_details("handcuffs", "B");
                            }
                        }
                    }
                    else if (L is Mob_Living_SimpleAnimal)
                    {
                        SA = L;

                        if (!Lang13.Bool(((dynamic)SA).flying) && Convert.ToDouble(((dynamic)SA).mob_size) > 0)
                        {
                            snap = true;
                        }
                    }

                    if (snap)
                    {
                        this.armed      = false;
                        this.icon_state = "" + Lang13.Initial(this, "icon_state") + this.armed;
                        GlobalFuncs.playsound(this.loc, "sound/effects/snap.ogg", 50, 1);
                        L.visible_message(new Txt("<span class='danger'>").item(L).str(" triggers ").the(this).item().str(".</span>").ToString(), new Txt("<span class='userdanger'>You trigger ").the(this).item().str("!</span>").ToString());
                        ((dynamic)L).apply_damage(this.trap_damage, "brute", def_zone);
                    }
                }
            }
            base.Crossed(O, (object)(X));
            return(null);
        }
Exemplo n.º 5
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;
        }
Exemplo n.º 6
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;
        }
Exemplo n.º 7
0
        // Function from file: secbot.dm
        public override dynamic Crossed(Ent_Dynamic O = null, dynamic X = null)
        {
            Ent_Dynamic C = null;


            if (O is Mob && Lang13.Bool(this.target))
            {
                C = O;

                if (!(C is Mob_Living_Carbon) || !(C != null) || Map13.GetDistance(this, this.target) <= 1)
                {
                    return(null);
                }
                C.visible_message("<span class='warning'>" + Rand13.Pick(new object [] { "" + C + " dives out of " + this + "'s way!", "" + C + " stumbles over " + this + "!", "" + C + " jumps out of " + this + "'s path!", "" + C + " trips over " + this + " and falls!", "" + C + " topples over " + this + "!", "" + C + " leaps out of " + this + "'s way!" }) + "</span>");
                ((dynamic)C).Weaken(2);
                return(null);
            }
            base.Crossed(O, (object)(X));
            return(null);
        }
Exemplo n.º 8
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);
        }