コード例 #1
0
        // Function from file: flashbang.dm
        public override void prime(  )
        {
            dynamic         flashbang_turf = null;
            Mob_Living      M      = null;
            Obj_Effect_Blob B      = null;
            double          damage = 0;

            this.update_mob();
            flashbang_turf = GlobalFuncs.get_turf(this);

            if (!Lang13.Bool(flashbang_turf))
            {
                return;
            }

            foreach (dynamic _a in Lang13.Enumerate(GlobalFuncs.get_hearers_in_view(7, flashbang_turf), typeof(Mob_Living)))
            {
                M = _a;

                this.bang(GlobalFuncs.get_turf(M), M);
            }

            foreach (dynamic _b in Lang13.Enumerate(GlobalFuncs.get_hear(8, flashbang_turf), typeof(Obj_Effect_Blob)))
            {
                B = _b;

                damage = Num13.Floor(40 / (Map13.GetDistance(B, GlobalFuncs.get_turf(this)) + 1));
                B.take_damage(damage, "fire");
            }
            GlobalFuncs.qdel(this);
            return;
        }
コード例 #2
0
        // Function from file: powers.dm
        public void set_chemical(  )
        {
            dynamic         BC = null;
            Obj_Effect_Blob BL = null;
            Mob_Living_SimpleAnimal_Hostile_Blob BLO = null;

            BC = Rand13.PickFromTable(Lang13.GetTypes(typeof(Reagent_Blob)) - typeof(Reagent_Blob) - this.blob_reagent_datum.type);
            this.blob_reagent_datum = Lang13.Call(BC);

            foreach (dynamic _a in Lang13.Enumerate(GlobalVars.blobs, typeof(Obj_Effect_Blob)))
            {
                BL = _a;

                BL.update_icon();
            }

            foreach (dynamic _b in Lang13.Enumerate(typeof(Game13), typeof(Mob_Living_SimpleAnimal_Hostile_Blob)))
            {
                BLO = _b;

                BLO.update_icons();
            }
            this.WriteMsg("Your reagent is now: <b><font color=\"" + this.blob_reagent_datum.color + "\">" + this.blob_reagent_datum.name + "</b></font>!");
            this.WriteMsg("The <b><font color=\"" + this.blob_reagent_datum.color + "\">" + this.blob_reagent_datum.name + "</b></font> reagent " + this.blob_reagent_datum.description);
            return;
        }
コード例 #3
0
        // Function from file: blob_reagents.dm
        public override double reaction_mob(dynamic M = null, int?method = null, double?reac_volume = null, bool?show_message = null, dynamic touch_protection = null, Mob_Camera_Blob O = null)
        {
            method = method ?? GlobalVars.TOUCH;

            Obj_Effect_Blob B = null;

            reac_volume = base.reaction_mob((object)(M), method, reac_volume, show_message, (object)(touch_protection), O);
            ((Mob_Living)M).apply_damage((reac_volume ?? 0) * 0.1, "brute");

            if (Lang13.Bool(M))
            {
                foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInRange(M, 1), typeof(Obj_Effect_Blob)))
                {
                    B = _a;


                    if (Lang13.Bool(M))
                    {
                        B.blob_attack_animation(M);
                        ((Mob_Living)M).apply_damage((reac_volume ?? 0) * 0.3, "brute");
                    }
                }
            }
            return(0);
        }
コード例 #4
0
 // Function from file: blob_reagents.dm
 public override void expand_reaction(Obj_Effect_Blob B = null, Obj_Effect_Blob_Normal newB = null, dynamic T = null)
 {
     if (Rand13.PercentChance(50))
     {
         newB.expand();
     }
     return;
 }
コード例 #5
0
 // Function from file: blob_reagents.dm
 public override void death_reaction(Obj_Effect_Blob B = null, dynamic cause = null)
 {
     if (!(cause == null))
     {
         GlobalFuncs.empulse(B.loc, 2, 3);
     }
     return;
 }
コード例 #6
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)
 {
     if (cause == null && damage_type == "brute")
     {
         return(0);
     }
     return(base.damage_reaction(B, original_health, (object)(damage), (object)(damage_type), (object)(cause)));
 }
コード例 #7
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)
 {
     if (damage_type == "stamina")
     {
         B.visible_message("<span class='warning'><b>The blob abruptly regenerates!</b></span>");
         B.health = B.maxhealth;
     }
     return(base.damage_reaction(B, original_health, (object)(damage), (object)(damage_type), (object)(cause)));
 }
コード例 #8
0
        // Function from file: theblob.dm
        public void Pulse_Area(Mob_Camera_Blob pulsing_overmind = null, int?claim_range = null, int?pulse_range = null, int?expand_range = null)
        {
            pulsing_overmind = pulsing_overmind ?? this.overmind;
            claim_range      = claim_range ?? 10;
            pulse_range      = pulse_range ?? 3;
            expand_range     = expand_range ?? 2;

            Obj_Effect_Blob B  = null;
            Obj_Effect_Blob B2 = null;
            Obj_Effect_Blob B3 = null;

            this.Be_Pulsed();

            if (Lang13.Bool(claim_range))
            {
                foreach (dynamic _a in Lang13.Enumerate(GlobalFuncs.ultra_range(claim_range, this, true), typeof(Obj_Effect_Blob)))
                {
                    B = _a;


                    if (!(B.overmind != null) && !(B is Obj_Effect_Blob_Core) && Rand13.PercentChance(30))
                    {
                        B.overmind = pulsing_overmind;
                        B.update_icon();
                    }
                }
            }

            if (Lang13.Bool(pulse_range))
            {
                foreach (dynamic _b in Lang13.Enumerate(Map13.FetchInRangeExcludeThis(this, pulse_range), typeof(Obj_Effect_Blob)))
                {
                    B2 = _b;

                    B2.Be_Pulsed();
                }
            }

            if (Lang13.Bool(expand_range))
            {
                this.expand();

                foreach (dynamic _c in Lang13.Enumerate(Map13.FetchInRangeExcludeThis(this, expand_range), typeof(Obj_Effect_Blob)))
                {
                    B3 = _c;


                    if (Rand13.PercentChance(Num13.MaxInt(13 - Map13.GetDistance(GlobalFuncs.get_turf(this), GlobalFuncs.get_turf(B3)) * 4, 1)))
                    {
                        B3.expand();
                    }
                }
            }
            return;
        }
コード例 #9
0
        // Function from file: blob_reagents.dm
        public override void expand_reaction(Obj_Effect_Blob B = null, Obj_Effect_Blob_Normal newB = null, dynamic T = null)
        {
            Mob_Living_SimpleAnimal_Hostile_Blob_Blobspore_Weak BS = null;


            if (Rand13.PercentChance(10))
            {
                BS          = new Mob_Living_SimpleAnimal_Hostile_Blob_Blobspore_Weak(T);
                BS.overmind = B.overmind;
                BS.update_icons();
                newB.overmind.blob_mobs.Add(BS);
            }
            return;
        }
コード例 #10
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)
        {
            Mob_Living_SimpleAnimal_Hostile_Blob_Blobspore_Weak BS = null;


            if (!(cause == null) && Convert.ToDouble(damage) <= 20 && original_health - Convert.ToDouble(damage) <= 0 && Rand13.PercentChance(50))
            {
                B.visible_message("<span class='warning'><b>A spore floats free of the blob!</b></span>");
                BS          = new Mob_Living_SimpleAnimal_Hostile_Blob_Blobspore_Weak(B.loc);
                BS.overmind = B.overmind;
                BS.update_icons();
                B.overmind.blob_mobs.Add(BS);
            }
            return(base.damage_reaction(B, original_health, (object)(damage), (object)(damage_type), (object)(cause)));
        }
コード例 #11
0
        // Function from file: powers.dm
        public dynamic createSpecial(double?price = null, Type blobType = null, int nearEquals = 0, dynamic T = null)
        {
            dynamic         B = null;
            Obj_Effect_Blob L = null;
            dynamic         N = null;


            if (!Lang13.Bool(T))
            {
                T = GlobalFuncs.get_turf(this);
            }
            B = Lang13.FindIn(typeof(Obj_Effect_Blob), T);

            if (!Lang13.Bool(B))
            {
                this.WriteMsg("<span class='warning'>There is no blob here!</span>");
                return(null);
            }

            if (!(B is Obj_Effect_Blob_Normal))
            {
                this.WriteMsg("<span class='warning'>Unable to use this blob, find a normal one.</span>");
                return(null);
            }

            if (nearEquals != 0)
            {
                foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInRangeExcludeThis(T, nearEquals), typeof(Obj_Effect_Blob)))
                {
                    L = _a;


                    if (L.type == blobType)
                    {
                        this.WriteMsg("<span class='warning'>There is a similar blob nearby, move more than " + nearEquals + " tiles away from it!</span>");
                        return(null);
                    }
                }
            }

            if (!this.can_buy(price))
            {
                return(null);
            }
            N = ((Obj_Effect_Blob)B).change_to(blobType, this);
            return(N);
        }
コード例 #12
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)
        {
            Tile_Simulated T = null;


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


                if (Rand13.PercentChance(Convert.ToInt32(damage)))
                {
                    T.MakeSlippery(1);
                }
            }
            return(base.damage_reaction(B, original_health, (object)(damage), (object)(damage_type), (object)(cause)));
        }
コード例 #13
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)
        {
            dynamic newB = null;


            if (Convert.ToDouble(damage) > 0 && original_health - Convert.ToDouble(damage) > 0)
            {
                newB = B.expand();

                if (Lang13.Bool(newB))
                {
                    newB.health = original_health - Convert.ToDouble(damage);
                    ((Obj_Effect_Blob)newB).check_health(cause);
                    newB.update_icon();
                }
            }
            return(base.damage_reaction(B, original_health, (object)(damage), (object)(damage_type), (object)(cause)));
        }
コード例 #14
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)));
        }
コード例 #15
0
        // Function from file: smokebomb.dm
        public override void prime(  )
        {
            Obj_Effect_Blob B      = null;
            int             damage = 0;

            this.update_mob();
            GlobalFuncs.playsound(this.loc, "sound/effects/smoke.ogg", 50, 1, -3);
            this.smoke.set_up(4, Task13.User.loc);
            this.smoke.start();

            foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInView(this, 8), typeof(Obj_Effect_Blob)))
            {
                B = _a;

                damage    = Num13.Floor(30 / (Map13.GetDistance(B, this) + 1));
                B.health -= damage;
                B.update_icon();
            }
            Task13.Sleep(80);
            GlobalFuncs.qdel(this);
            return;
        }
コード例 #16
0
        // Function from file: blob_reagents.dm
        public override void death_reaction(Obj_Effect_Blob B = null, dynamic cause = null)
        {
            Tile_Simulated T = null;


            if (!(cause == null))
            {
                B.visible_message("<span class='warning'><b>The blob ruptures, spraying the area with liquid!</b></span>");
            }

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


                if (Rand13.PercentChance(50))
                {
                    T.MakeSlippery(1);
                }
            }
            return;
        }
コード例 #17
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)
        {
            double          damagesplit = 0;
            Obj_Effect_Blob C           = null;
            Obj_Effect_Blob C2          = null;


            if (!(cause == null))
            {
                damagesplit = 0.8;

                foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInRangeExcludeThis(B, 1), typeof(Obj_Effect_Blob)))
                {
                    C = _a;


                    if (C.overmind != null && C.overmind.blob_reagent_datum == B.overmind.blob_reagent_datum)
                    {
                        damagesplit += 0.8;
                    }
                }

                foreach (dynamic _b in Lang13.Enumerate(Map13.FetchInRangeExcludeThis(B, 1), typeof(Obj_Effect_Blob)))
                {
                    C2 = _b;


                    if (C2.overmind != null && C2.overmind.blob_reagent_datum == B.overmind.blob_reagent_datum && !(C2 is Obj_Effect_Blob_Core))
                    {
                        C2.take_damage(damage / damagesplit, "clone", B, false);
                    }
                }
                return(damage / damagesplit);
            }
            else
            {
                return(damage * 1.25);
            }
        }
コード例 #18
0
ファイル: Reagent_Blob.cs プロジェクト: Somnium13/SS13
 // Function from file: blob_reagents.dm
 public virtual void expand_reaction(Obj_Effect_Blob B = null, Obj_Effect_Blob_Normal newB = null, dynamic T = null)
 {
     return;
 }
コード例 #19
0
ファイル: Reagent_Blob.cs プロジェクト: Somnium13/SS13
 // Function from file: blob_reagents.dm
 public virtual dynamic damage_reaction(Obj_Effect_Blob B = null, double original_health = 0, dynamic damage = null, dynamic damage_type = null, dynamic cause = null)
 {
     return(damage);
 }
コード例 #20
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)
 {
     return(damage * 1.2);
 }
コード例 #21
0
ファイル: Reagent_Blob.cs プロジェクト: Somnium13/SS13
 // Function from file: blob_reagents.dm
 public virtual void death_reaction(Obj_Effect_Blob B = null, dynamic cause = null)
 {
     return;
 }