Esempio n. 1
0
        // Function from file: species_types.dm
        public override void spec_life(Mob_Living H = null)
        {
            Reagent_Toxin_Slimejelly S = null;


            if (H.stat == 2)
            {
                return;
            }

            if (!H.reagents.get_reagent_amount("slimejelly"))
            {
                if (this.recently_changed)
                {
                    H.reagents.add_reagent("slimejelly", 80);
                    this.recently_changed = false;
                }
                else
                {
                    H.reagents.add_reagent("slimejelly", 5);
                    H.adjustBruteLoss(5);
                    H.WriteMsg("<span class='danger'>You feel empty!</span>");
                }
            }

            foreach (dynamic _a in Lang13.Enumerate(H.reagents.reagent_list, typeof(Reagent_Toxin_Slimejelly)))
            {
                S = _a;


                if (S.volume < 100)
                {
                    if (H.nutrition >= 150)
                    {
                        H.reagents.add_reagent("slimejelly", 0.5);
                        H.nutrition -= 2.5;
                    }
                }

                if (S.volume < 50)
                {
                    if (Rand13.PercentChance(5))
                    {
                        H.WriteMsg("<span class='danger'>You feel drained!</span>");
                    }
                }

                if (S.volume < 10)
                {
                    H.losebreath++;
                }
            }
            return;
        }
Esempio n. 2
0
        // Function from file: species_types.dm
        public override void Activate(int?forced_state = null)
        {
            dynamic H = null;
            Reagent_Toxin_Slimejelly S           = null;
            Mob_Living_Carbon_Human  spare       = null;
            Action_Innate_SwapBody   callforward = null;
            Action_Innate_SwapBody   callback    = null;

            H = this.owner;
            H.WriteMsg("<span class='notice'>You focus intently on moving your body while standing perfectly still...</span>");
            H.notransform = 1;

            foreach (dynamic _a in Lang13.Enumerate(H.reagents.reagent_list, typeof(Reagent_Toxin_Slimejelly)))
            {
                S = _a;


                if (S.volume >= 200)
                {
                    spare           = new Mob_Living_Carbon_Human(H.loc);
                    spare.underwear = "Nude";
                    new ByTable().Set(1, spare).Set("transfer_SE", 1).Apply(Lang13.BindFunc(H.dna, "transfer_identity"));
                    H.dna.features["mcolor"] = Rand13.Pick(new object [] { "FFFFFF", "7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F" });
                    spare.real_name          = spare.dna.real_name;
                    spare.name = spare.dna.real_name;
                    spare.updateappearance(null, true);
                    spare.domutcheck();
                    spare.Move(Map13.GetStep(H.loc, Convert.ToInt32(Rand13.Pick(new object [] { GlobalVars.NORTH, GlobalVars.SOUTH, GlobalVars.EAST, GlobalVars.WEST }))));
                    S.volume         = 80;
                    H.notransform    = 0;
                    callforward      = new Action_Innate_SwapBody();
                    callback         = new Action_Innate_SwapBody();
                    callforward.body = spare;
                    callforward.Grant(H);
                    callback.body = H;
                    callback.Grant(spare);
                    ((Mind)H.mind).transfer_to(spare);
                    spare.WriteMsg("<span class='notice'>...and after a moment of disorentation, you're besides yourself!</span>");
                    return;
                }
            }
            H.WriteMsg("<span class='warning'>...but there is not enough of you to go around! You must attain more mass to split!</span>");
            H.notransform = 0;
            return;
        }
Esempio n. 3
0
        // Function from file: species_types.dm
        public override void spec_life(Mob_Living H = null)
        {
            Action_Innate_SplitBody  S  = null;
            Reagent_Toxin_Slimejelly S2 = null;


            if (this.recently_changed)
            {
                S = new Action_Innate_SplitBody();
                S.Grant(H);
            }

            foreach (dynamic _a in Lang13.Enumerate(H.reagents.reagent_list, typeof(Reagent_Toxin_Slimejelly)))
            {
                S2 = _a;


                if (S2.volume >= 200)
                {
                    if (Rand13.PercentChance(5))
                    {
                        H.WriteMsg("<span class='notice'>You feel very bloated!</span>");
                    }
                }

                if (S2.volume < 200)
                {
                    if (H.nutrition >= 450)
                    {
                        H.reagents.add_reagent("slimejelly", 0.5);
                        H.nutrition -= 2.5;
                    }
                }
            }
            base.spec_life(H);
            return;
        }