Example #1
0
        // Function from file: ghost.dm
        public override bool start(  )
        {
            Mob_Dead_Observer G = null;


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

                G.invisibility = 0;
                G.WriteMsg("You suddenly feel extremely obvious...");
            }
            return(false);
        }
Example #2
0
        // Function from file: ghost.dm
        public override bool start(  )
        {
            Mob_Dead_Observer G = null;


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

                G.verbs.Add(typeof(Mob_Dead_Observer).GetMethod("boo"));
                G.verbs.Add(typeof(Mob_Dead_Observer).GetMethod("possess"));
                G.WriteMsg("You suddenly feel a welling of new spooky powers...");
            }
            return(false);
        }
Example #3
0
        public void jumptomob(  )
        {
            ByTable           dest   = null;
            dynamic           target = null;
            dynamic           M      = null;
            Mob_Dead_Observer A      = null;
            dynamic           T      = null;


            if (Task13.User is Mob_Dead_Observer)
            {
                dest   = new ByTable();
                target = null;
                dest.Add(GlobalFuncs.getpois(true));
                target = Interface13.Input("Please, select a player!", "Jump to Mob", null, null, dest, InputType.Null | InputType.Any);

                if (!Lang13.Bool(target))
                {
                    return;
                }
                else
                {
                    M = dest[target];
                    A = this;
                    T = GlobalFuncs.get_turf(M);

                    if (Lang13.Bool(T) && T is Tile)
                    {
                        A.loc = T;
                    }
                    else
                    {
                        A.WriteMsg("This mob is not located in the game world.");
                    }
                }
            }
            return;
        }
Example #4
0
        // Function from file: runes.dm
        public override void invoke(dynamic user = null)
        {
            dynamic           T  = null;
            Mob_Dead_Observer G  = null;
            Mob_Dead_Observer G2 = null;


            if (this.rune_in_use)
            {
                user.WriteMsg("<span class='cultitalic'>" + this + " cannot support more than one body!</span>");
                this.fail_invoke();
                GlobalFuncs.log_game("Astral Communion rune failed - more than one user");
                return;
            }
            T = GlobalFuncs.get_turf(this);

            if (T.contents.Contains(!Lang13.Bool(user)))
            {
                user.WriteMsg("<span class='cultitalic'>You must be standing on top of " + this + "!</span>");
                this.fail_invoke();
                GlobalFuncs.log_game("Astral Communion rune failed - user not standing on rune");
                return;
            }
            this.rune_in_use = true;
            this.affecting   = user;
            user.color       = "#7e1717";
            ((Ent_Static)user).visible_message("<span class='warning'>" + user + " freezes statue-still, glowing an unearthly red.</span>", "<span class='cult'>You see what lies beyond. All is revealed. While this is a wondrous experience, your physical form will waste away in this state. Hurry...</span>");
            ((Mob)user).ghostize(true);

            while (Lang13.Bool(user))
            {
                if (!Lang13.Bool(this.affecting))
                {
                    this.visible_message("<span class='warning'>" + this + " pulses gently before falling dark.</span>");
                    this.affecting   = null;
                    this.rune_in_use = false;
                    return;
                }
                this.affecting.apply_damage(1, "brute");

                if (!T.contents.Contains(user))
                {
                    ((Ent_Static)user).visible_message("<span class='warning'>A spectral tendril wraps around " + user + " and pulls them back to the rune!</span>");
                    this.Beam(user, "drainbeam", "icons/effects/effects.dmi", 2);
                    ((Ent_Dynamic)user).forceMove(GlobalFuncs.get_turf(this));
                }

                if (Lang13.Bool(user.key))
                {
                    ((Ent_Static)user).visible_message("<span class='warning'>" + user + " slowly relaxes, the glow around them dimming.</span>", "<span class='danger'>You are re-united with your physical form. " + this + " releases its hold over you.</span>");
                    user.color = Lang13.Initial(user, "color");
                    ((Mob)user).Weaken(3);
                    this.rune_in_use = false;
                    this.affecting   = null;
                    return;
                }

                if (Lang13.Bool(user.stat) == true)
                {
                    if (Rand13.PercentChance(10))
                    {
                        G = ((Mob)user).get_ghost();

                        if (G != null)
                        {
                            G.WriteMsg("<span class='cultitalic'>You feel the link between you and your body weakening... you must hurry!</span>");
                        }
                    }
                }

                if (Convert.ToInt32(user.stat) == 2)
                {
                    user.color       = Lang13.Initial(user, "color");
                    this.rune_in_use = false;
                    this.affecting   = null;
                    G2 = ((Mob)user).get_ghost();

                    if (G2 != null)
                    {
                        G2.WriteMsg("<span class='cultitalic'><b>You suddenly feel your physical form pass on. " + this + "'s exertion has killed you!</b></span>");
                    }
                    return;
                }
                Task13.Sleep(10);
            }
            this.rune_in_use = false;
            return;
        }