Example #1
0
        // Function from file: ethereal_jaunt.dm
        public virtual void jaunt_steam(dynamic mobloc = null)
        {
            EffectSystem_SteamSpread steam = null;

            steam = new EffectSystem_SteamSpread();
            steam.set_up(10, 0, mobloc);
            steam.start();
            return;
        }
        // Function from file: chem_grenade.dm
        public override void prime(  )
        {
            bool     has_reagents          = false;
            Obj_Item I                     = null;
            dynamic  M                     = null;
            dynamic  last                  = null;
            dynamic  T                     = null;
            dynamic  A                     = null;
            dynamic  DT                    = null;
            dynamic  DA                    = null;
            EffectSystem_SteamSpread steam = null;
            ByTable    viewable            = null;
            ByTable    accessible          = null;
            ByTable    reactable           = null;
            ByTable    mycontents          = null;
            dynamic    T2                  = null;
            Ent_Static A2                  = null;
            double?    fraction            = null;
            Ent_Static A3                  = null;


            if (this.stage != 3 || !(this.reagents != null))
            {
                return;
            }

            foreach (dynamic _a in Lang13.Enumerate(this.beakers, typeof(Obj_Item)))
            {
                I = _a;


                if (Lang13.Bool(I.reagents.total_volume))
                {
                    has_reagents = true;
                }
            }

            if (!has_reagents)
            {
                GlobalFuncs.playsound(this.loc, "sound/items/Screwdriver2.ogg", 50, 1);
                return;
            }

            if (Lang13.Bool(this.nadeassembly))
            {
                M    = GlobalFuncs.get_mob_by_ckey(this.assemblyattacher);
                last = GlobalFuncs.get_mob_by_ckey(this.nadeassembly.fingerprintslast);
                T    = GlobalFuncs.get_turf(this);
                A    = GlobalFuncs.get_area(T);
                GlobalFuncs.message_admins(new Txt("grenade primed by an assembly, attached by ").item(GlobalFuncs.key_name_admin(M)).str("<A HREF='?_src_=holder;adminmoreinfo=").Ref(M).str("'>(?)</A> (<A HREF='?_src_=holder;adminplayerobservefollow=").Ref(M).str("'>FLW</A>) and last touched by ").item(GlobalFuncs.key_name_admin(last)).str("<A HREF='?_src_=holder;adminmoreinfo=").Ref(last).str("'>(?)</A> (<A HREF='?_src_=holder;adminplayerobservefollow=").Ref(last).str("'>FLW</A>) (").item(this.nadeassembly.a_left.name).str(" and ").item(this.nadeassembly.a_right.name).str(") at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=").item(T.x).str(";Y=").item(T.y).str(";Z=").item(T.z).str("'>").item(A.name).str(" (JMP)</a>.").ToString());
                GlobalFuncs.log_game("grenade primed by an assembly, attached by " + GlobalFuncs.key_name(M) + " and last touched by " + GlobalFuncs.key_name(last) + " (" + this.nadeassembly.a_left.name + " and " + this.nadeassembly.a_right.name + ") at " + A.name + " (" + T.x + ", " + T.y + ", " + T.z + ")");
            }
            GlobalFuncs.playsound(this.loc, "sound/effects/bamf.ogg", 50, 1);
            DT = GlobalFuncs.get_turf(this);
            DA = GlobalFuncs.get_area(DT);
            GlobalFuncs.log_game("A grenade detonated at " + DA.name + " (" + DT.x + ", " + DT.y + ", " + DT.z + ")");
            this.update_mob();
            this.mix_reagents();

            if (Lang13.Bool(this.reagents.total_volume))
            {
                steam = new EffectSystem_SteamSpread();
                steam.set_up(10, 0, GlobalFuncs.get_turf(this));
                steam.attach(this);
                steam.start();
                viewable   = Map13.FetchInView(this.loc, this.affected_area);
                accessible = this.can_flood_from(this.loc, this.affected_area);
                reactable  = accessible;
                mycontents = this.GetAllContents();

                foreach (dynamic _c in Lang13.Enumerate(accessible))
                {
                    T2 = _c;


                    foreach (dynamic _b in Lang13.Enumerate(((Ent_Static)T2).GetAllContents(), typeof(Ent_Static)))
                    {
                        A2 = _b;


                        if (mycontents.Contains(A2))
                        {
                            continue;
                        }

                        if (!viewable.Contains(A2))
                        {
                            continue;
                        }
                        reactable.Or(A2);
                    }
                }

                if (!(reactable.len != 0))
                {
                    GlobalFuncs.qdel(this);
                    return;
                }
                fraction = 1 / reactable.len;

                foreach (dynamic _d in Lang13.Enumerate(reactable, typeof(Ent_Static)))
                {
                    A3 = _d;

                    this.reagents.reaction(A3, GlobalVars.TOUCH, fraction);
                }
            }
            GlobalFuncs.qdel(this);
            return;
        }