// Function from file: shadowling_abilities.dm
        public override bool cast(dynamic targets = null, dynamic thearea = null, dynamic user = null)
        {
            thearea = thearea ?? Task13.User;

            dynamic           T = null;
            Mob_Living_Carbon M = null;


            if (!this.shadowling_check(thearea))
            {
                this.revert_cast();
                return(false);
            }
            thearea.WriteMsg("<span class='shadowling'>You freeze the nearby air.</span>");

            foreach (dynamic _b in Lang13.Enumerate(targets))
            {
                T = _b;


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


                    if (GlobalFuncs.is_shadow_or_thrall(M))
                    {
                        if (M == thearea)
                        {
                            continue;
                        }
                        else
                        {
                            M.WriteMsg("<span class='danger'>You feel a blast of paralyzingly cold air wrap around you and flow past, but you are unaffected!</span>");
                            continue;
                        }
                    }
                    M.WriteMsg("<span class='userdanger'>A wave of shockingly cold air engulfs you!</span>");
                    M.Stun(2);
                    M.apply_damage(10, "fire");

                    if (Lang13.Bool(M.bodytemperature))
                    {
                        M.bodytemperature -= 200;
                    }

                    if (M.reagents != null)
                    {
                        M.reagents.add_reagent("frostoil", 15);
                    }
                }
            }
            return(false);
        }
示例#2
0
        // Function from file: runes.dm
        public override void invoke(dynamic user = null)
        {
            Mob_Living_Carbon C = null;
            dynamic           N = null;
            Mob_Living_Carbon M = null;

            this.visible_message("<span class='warning'>" + this + " briefly bubbles before exploding!</span>");

            foreach (dynamic _a in Lang13.Enumerate(Map13.FetchViewers(null, this), typeof(Mob_Living_Carbon)))
            {
                C = _a;


                if (!GlobalFuncs.iscultist(C))
                {
                    N = C.null_rod_check();

                    if (Lang13.Bool(N))
                    {
                        C.WriteMsg(new Txt("<span class='userdanger'>").The(N).item().str(" suddenly burns hotly before returning to normal!</span>").ToString());
                        continue;
                    }
                    C.WriteMsg("<span class='cultlarge'>Your blood boils in your veins!</span>");
                    C.take_overall_damage(51, 51);
                }
            }

            foreach (dynamic _b in Lang13.Enumerate(Map13.FetchInRange(this, 1), typeof(Mob_Living_Carbon)))
            {
                M = _b;


                if (GlobalFuncs.iscultist(M))
                {
                    M.apply_damage(15, "brute", Rand13.Pick(new object [] { "l_arm", "r_arm" }));
                    M.WriteMsg("<span class='cultitalic'>" + this + " saps your strength!</span>");
                }
            }
            GlobalFuncs.explosion(GlobalFuncs.get_turf(this), -1, 0, 1, 5);
            GlobalFuncs.qdel(this);
            return;
        }
示例#3
0
        // Function from file: runes.dm
        public override void invoke(dynamic user = null)
        {
            Mob_Living_Carbon M = null;

            this.visible_message("<span class='warning'>" + this + " flares up for a moment, and then disappears into itself!</span>");
            new Obj_Effect_Timestop_Cult(GlobalFuncs.get_turf(this));

            foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInRange(this, 1), typeof(Mob_Living_Carbon)))
            {
                M = _a;


                if (GlobalFuncs.iscultist(M))
                {
                    M.apply_damage(20, "brute", "chest");
                    M.WriteMsg("<span class='cultitalic'>" + this + " temporarily stops your heart from beating!</span>");
                }
            }
            GlobalFuncs.qdel(this);
            return;
        }
示例#4
0
        // Function from file: turf.dm
        public override bool handle_slip(Mob_Living_Carbon C = null, int s_amount = 0, int w_amount = 0, dynamic O = null, dynamic lube = null)
        {
            Ent_Dynamic buckled_obj = null;
            int?        oldlying    = null;
            int         olddir      = 0;
            int?        i           = null;
            dynamic     dam_zone    = null;


            if (GlobalFuncs.has_gravity(this))
            {
                oldlying = C.lying;

                if (C.buckled != null)
                {
                    buckled_obj = C.buckled;

                    if (!Lang13.Bool(lube & 4))
                    {
                        return(false);
                    }
                }
                else
                {
                    if (Lang13.Bool(C.lying) || !((C.status_flags & 2) != 0))
                    {
                        return(false);
                    }

                    if (C.m_intent == "walk" && Lang13.Bool(lube & 1))
                    {
                        return(false);
                    }
                }
                C.WriteMsg("<span class='notice'>You slipped" + (Lang13.Bool(O) ? " on the " + O.name : "") + "!</span>");
                C.attack_log.Add("[" + GlobalFuncs.time_stamp() + "] <font color='orange'>Slipped" + (Lang13.Bool(O) ? " on the " + O.name : "") + (Lang13.Bool(lube & 2) ? " (LUBE)" : "") + "!</font>");
                GlobalFuncs.playsound(C.loc, "sound/misc/slip.ogg", 50, 1, -3);
                C.accident(C.l_hand);
                C.accident(C.r_hand);
                olddir = C.dir;
                C.Stun(s_amount);
                C.Weaken(w_amount);
                C.__CallVerb("Stop Pulling");

                if (buckled_obj != null)
                {
                    buckled_obj.unbuckle_mob();
                    Map13.Step(buckled_obj, olddir);
                }
                else if (Lang13.Bool(lube & 2))
                {
                    i = null;
                    i = 1;

                    while ((i ?? 0) < 5)
                    {
                        Task13.Schedule(i ?? 0, (Task13.Closure)(() => {
                            Map13.Step(C, olddir);
                            C.spin(1, 1);
                            return;
                        }));
                        i++;
                    }
                }

                if (C.lying != oldlying && Lang13.Bool(lube))
                {
                    dam_zone = Rand13.Pick(new object [] { "chest", "l_hand", "r_hand", "l_leg", "r_leg" });
                    C.apply_damage(5, "brute", dam_zone);
                }
                return(true);
            }
            return(false);
        }