Пример #1
0
        // Function from file: theblob.dm
        public void ConsumeTile(  )
        {
            Ent_Static A = null;


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

                A.blob_act();
            }

            if (this.loc is Tile_Simulated_Wall)
            {
                this.loc.blob_act();
            }
            return;
        }
Пример #2
0
        // Function from file: blob_reagents.dm
        public override dynamic damage_reaction(Obj_Effect_Blob B = null, double original_health = 0, dynamic damage = null, dynamic damage_type = null, dynamic cause = null)
        {
            Ent_Static A = null;


            if (Lang13.Bool(damage) && damage_type == "brute" && original_health - Convert.ToDouble(damage) > 0)
            {
                if (cause is Mob_Living)
                {
                    B.visible_message("<span class='warning'><b>The blob retaliates, lashing out!</b></span>");
                }

                foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInRange(B, 1), typeof(Ent_Static)))
                {
                    A = _a;

                    A.blob_act();
                }
            }
            return(base.damage_reaction(B, original_health, (object)(damage), (object)(damage_type), (object)(cause)));
        }
Пример #3
0
        // Function from file: theblob.dm
        public dynamic expand(dynamic T = null, Mob_Camera_Blob controller = null)
        {
            ByTable                dirs      = null;
            double                 i         = 0;
            dynamic                dirn      = null;
            int?                   make_blob = null;
            Ent_Static             A         = null;
            Obj_Effect_Blob_Normal B         = null;


            if (!Lang13.Bool(T))
            {
                dirs = new ByTable(new object [] { 1, 2, 4, 8 });

                foreach (dynamic _a in Lang13.IterateRange(1, 4))
                {
                    i = _a;

                    dirn = Rand13.PickFromTable(dirs);
                    dirs.Remove(dirn);
                    T = Map13.GetStep(this, Convert.ToInt32(dirn));

                    if (!Lang13.Bool(Lang13.FindIn(typeof(Obj_Effect_Blob), T)))
                    {
                        break;
                    }
                    else
                    {
                        T = null;
                    }
                }
            }

            if (!Lang13.Bool(T))
            {
                return(0);
            }
            make_blob = GlobalVars.TRUE;

            if (T is Tile_Space && !Lang13.Bool(Lang13.FindIn(typeof(Obj_Structure_Lattice), T)) && Rand13.PercentChance(80))
            {
                make_blob = GlobalVars.FALSE;
                GlobalFuncs.playsound(this.loc, "sound/effects/splat.ogg", 50, 1);
            }
            this.ConsumeTile();

            if (!((Ent_Static)T).CanPass(this, T, 5))
            {
                make_blob = GlobalVars.FALSE;
                ((Ent_Static)T).blob_act();
            }

            foreach (dynamic _b in Lang13.Enumerate(T, typeof(Ent_Static)))
            {
                A = _b;


                if (!A.CanPass(this, T, 5))
                {
                    make_blob = GlobalVars.FALSE;
                }
                A.blob_act();
            }

            if (Lang13.Bool(make_blob))
            {
                B = new Obj_Effect_Blob_Normal(this.loc);

                if (controller != null)
                {
                    B.overmind = controller;
                }
                else
                {
                    B.overmind = this.overmind;
                }
                B.density = true;

                if (((Base_Static)T).Enter(B, this))
                {
                    B.density = Lang13.Bool(Lang13.Initial(B, "density"));
                    B.loc     = T;
                    B.update_icon();

                    if (B.overmind != null)
                    {
                        ((Reagent_Blob)B.overmind.blob_reagent_datum).expand_reaction(this, B, T);
                    }
                    return(B);
                }
                else
                {
                    this.blob_attack_animation(T, controller);
                    ((Ent_Static)T).blob_act();
                    GlobalFuncs.qdel(B);
                    return(null);
                }
            }
            else
            {
                this.blob_attack_animation(T, controller);
            }
            return(null);
        }