// Function from file: spell.dm
        public bool los_check(dynamic A = null, Mob_Living B = null)
        {
            Obj         dummy = null;
            dynamic     turf  = null;
            Ent_Dynamic AM    = null;

            dummy             = new Obj(A.loc);
            dummy.pass_flags |= 1;

            foreach (dynamic _b in Lang13.Enumerate(GlobalFuncs.getline(A, B)))
            {
                turf = _b;


                foreach (dynamic _a in Lang13.Enumerate(turf, typeof(Ent_Dynamic)))
                {
                    AM = _a;


                    if (!AM.CanPass(dummy, turf, 1))
                    {
                        GlobalFuncs.qdel(dummy);
                        return(false);
                    }
                }
            }
            GlobalFuncs.qdel(dummy);
            return(true);
        }
示例#2
0
        // Function from file: singularity.dm
        public void toxmob(  )
        {
            int        toxrange     = 0;
            double     radiation    = 0;
            double     radiationmin = 0;
            Mob_Living M            = null;

            toxrange     = 10;
            radiation    = 15;
            radiationmin = 3;

            if ((this.energy ?? 0) > 200)
            {
                radiation   += Num13.Round(((this.energy ?? 0) - 150) / 10, 1);
                radiationmin = Num13.Round(radiation / 5, 1);
            }

            foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInView(this.loc, toxrange), typeof(Mob_Living)))
            {
                M = _a;

                M.rad_act(Rand13.Int(((int)(radiationmin)), ((int)(radiation))));
            }
            return;
        }
示例#3
0
        // Function from file: constructs.dm
        public override bool attack_animal(Mob_Living user = null)
        {
            if (user is Mob_Living_SimpleAnimal_Hostile_Construct_Builder)
            {
                if (Convert.ToDouble(this.health) < Convert.ToDouble(this.maxHealth))
                {
                    this.adjustHealth(-5);

                    if (this != user)
                    {
                        this.Beam(user, "sendbeam", "icons/effects/effects.dmi", 4);
                        user.visible_message(new Txt("<span class='danger'>").item(user).str(" repairs some of ").the(this).str("<b>").item().str("'s</b> dents.</span>").ToString(), "<span class='cult'>You repair some of <b>" + this + "'s</b> dents, leaving <b>" + this + "</b> at <b>" + this.health + "/" + this.maxHealth + "</b> health.</span>");
                    }
                    else
                    {
                        user.visible_message("<span class='danger'>" + user + " repairs some of its own dents.</span>", "<span class='cult'>You repair some of your own dents, leaving you at <b>" + user.health + "/" + user.maxHealth + "</b> health.</span>");
                    }
                }
                else if (this != user)
                {
                    user.WriteMsg("<span class='cult'>You cannot repair <b>" + this + "'s</b> dents, as it has none!</span>");
                }
                else
                {
                    user.WriteMsg("<span class='cult'>You cannot repair your own dents, as you have none!</span>");
                }
            }
            else if (this != user)
            {
                base.attack_animal(user);
            }
            return(false);
        }
        // Function from file: mining_mobs.dm
        public void Trip(  )
        {
            Mob_Living M = null;


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

                this.visible_message("<span class='danger'>The " + this.name + " grabs hold of " + M.name + "!</span>");
                M.Stun(5);
                M.adjustBruteLoss(Rand13.Int(10, 15));
                this.latched = true;
            }

            if (!this.latched)
            {
                GlobalFuncs.qdel(this);
            }
            else
            {
                Task13.Schedule(50, (Task13.Closure)(() => {
                    GlobalFuncs.qdel(this);
                    return;
                }));
            }
            return;
        }
示例#5
0
        // Function from file: shadowling.dm
        public override void spec_life(Mob_Living H = null)
        {
            double     light_amount = 0;
            Ent_Static T            = null;


            if (!H.weakeyes)
            {
                H.weakeyes = true;
            }
            light_amount = 0;
            H.nutrition  = 450;

            if (H.loc is Tile)
            {
                T            = H.loc;
                light_amount = ((Tile)T).get_lumcount();

                if (light_amount > 4 && !(H.incorporeal_move != 0))
                {
                    H.take_overall_damage(0, 3.5);
                }
                else if (light_amount < 2)
                {
                    H.heal_overall_damage(2, 2);
                    H.adjustToxLoss(-5);
                    H.adjustBrainLoss(-25);
                    H.adjustCloneLoss(-1);
                }
            }
            return;
        }
        // Function from file: tgstation.dme
        public override bool cast(dynamic targets = null, dynamic thearea = null, dynamic user = null)
        {
            thearea = thearea ?? Task13.User;

            Mob_Living target = null;
            Obj_Effect_ProcHolder_Spell spell  = null;
            Obj_Effect_ProcHolder_Spell spell2 = null;

            this.playMagSound();

            foreach (dynamic _c in Lang13.Enumerate(targets, typeof(Mob_Living)))
            {
                target = _c;


                foreach (dynamic _a in Lang13.Enumerate(this.contents, typeof(Obj_Effect_ProcHolder_Spell)))
                {
                    spell = _a;

                    spell.perform(new ByTable(new object [] { target }), false);
                }

                foreach (dynamic _b in Lang13.Enumerate(this.linked_spells, typeof(Obj_Effect_ProcHolder_Spell)))
                {
                    spell2 = _b;

                    spell2.perform(new ByTable(new object [] { target }), false);
                }
            }
            return(false);
        }
示例#7
0
        // Function from file: alien_powers.dm
        public override bool fire(Mob user = null)
        {
            ByTable    options = null;
            Mob_Living Ms      = null;
            dynamic    M       = null;
            string     msg     = null;

            options = new ByTable();

            foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInViewExcludeThis(null, user), typeof(Mob_Living)))
            {
                Ms = _a;

                options.Add(Ms);
            }
            M = Interface13.Input("Select who to whisper to:", "Whisper to?", null, null, options, InputType.Mob | InputType.Null);

            if (!Lang13.Bool(M))
            {
                return(false);
            }
            msg = GlobalFuncs.sanitize(Interface13.Input("Message:", "Alien Whisper", null, null, null, InputType.Str | InputType.Null));

            if (Lang13.Bool(msg))
            {
                GlobalFuncs.log_say("AlienWhisper: " + GlobalFuncs.key_name(user) + "->" + M.key + " : " + msg);
                M.WriteMsg("<span class='noticealien'>You hear a strange, alien voice in your head...</span>" + msg);
                user.WriteMsg("<span class='noticealien'>You said: \"" + msg + "\" to " + M + "</span>");
            }
            else
            {
                return(false);
            }
            return(true);
        }
        // Function from file: slaughter.dm
        public override bool death(bool?gibbed = null, bool?toast = null)
        {
            Obj_Effect_Decal_Cleanable_Blood innards = null;
            Mob_Living M = null;

            base.death(true, toast);
            new Obj_Effect_Decal_Cleanable_Blood(GlobalFuncs.get_turf(this));
            innards            = new Obj_Effect_Decal_Cleanable_Blood(GlobalFuncs.get_turf(this));
            innards.icon       = "icons/obj/surgery.dmi";
            innards.icon_state = "innards";
            innards.name       = "pile of viscera";
            innards.desc       = "A repulsive pile of guts and gore.";
            new Obj_Item_Organ_Internal_Heart_Demon(this.loc);
            GlobalFuncs.playsound(GlobalFuncs.get_turf(this), "sound/magic/demon_dies.ogg", 200, 1);
            this.visible_message("<span class='danger'>" + this + " screams in anger as it collapses into a puddle of viscera, its most recent meals spilling out of it.</span>");

            foreach (dynamic _a in Lang13.Enumerate(this.consumed_mobs, typeof(Mob_Living)))
            {
                M = _a;

                M.loc = GlobalFuncs.get_turf(this);
            }
            this.ghostize();
            GlobalFuncs.qdel(this);
            return(false);
        }
示例#9
0
 // Function from file: construct_spells.dm
 public override void jaunt_disappear(Dynamic_Overlay animation = null, Mob_Living target = null)
 {
     animation.icon_state = "phase_shift";
     animation.dir        = target.dir;
     Icon13.Flick("phase_shift", animation);
     return;
 }
示例#10
0
        // Function from file: armor.dm
        public override bool hit_reaction(Mob_Living_Carbon owner = null, string attack_text = null, int?final_block_chance = null, dynamic damage = null, int?attack_type = null)
        {
            Mob_Living M = null;


            if (!this.active)
            {
                return(false);
            }

            if (Rand13.PercentChance(this.hit_reaction_chance))
            {
                owner.visible_message("<span class='danger'>The " + this + " blocks the " + attack_text + ", sending out arcs of lightning!</span>");

                foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInView(owner, 6), typeof(Mob_Living)))
                {
                    M = _a;


                    if (M == owner)
                    {
                        continue;
                    }
                    owner.Beam(M, "lightning" + Rand13.Int(1, 12), "icons/effects/effects.dmi", 5);
                    M.adjustFireLoss(25);
                    GlobalFuncs.playsound(M, "sound/machines/defib_zap.ogg", 50, 1, -1);
                }
                return(true);
            }
            return(false);
        }
示例#11
0
        // Function from file: effects_foam.dm
        public void spread_foam(  )
        {
            dynamic    t_loc     = null;
            dynamic    T         = null;
            dynamic    foundfoam = null;
            Mob_Living L         = null;
            dynamic    F         = null;

            t_loc = GlobalFuncs.get_turf(this);

            foreach (dynamic _b in Lang13.Enumerate(((Tile)t_loc).GetAtmosAdjacentTurfs()))
            {
                T = _b;

                foundfoam = Lang13.FindIn(typeof(Obj_Effect_ParticleEffect_Foam), T);

                if (Lang13.Bool(foundfoam))
                {
                    continue;
                }

                foreach (dynamic _a in Lang13.Enumerate(T, typeof(Mob_Living)))
                {
                    L = _a;

                    this.foam_mob(L);
                }
                F        = GlobalFuncs.PoolOrNew(this.type, T);
                F.amount = this.amount;
                this.reagents.copy_to(F, this.reagents.total_volume);
                F.color = this.color;
                F.metal = this.metal;
            }
            return;
        }
示例#12
0
        // Function from file: venus_human_trap.dm
        public override bool handle_automated_action(  )
        {
            Mob_Living L  = null;
            dynamic    B  = null;
            Mob_Living L2 = null;


            if (base.handle_automated_action())
            {
                foreach (dynamic _a in Lang13.Enumerate(this.grasping, typeof(Mob_Living)))
                {
                    L = _a;


                    if (L.stat == 2)
                    {
                        B = this.grasping[L];

                        if (Lang13.Bool(B))
                        {
                            B.End();
                        }
                        this.grasping.Remove(L);
                    }

                    if (L.Adjacent(this))
                    {
                        L.attack_animal(this);
                    }
                    else if (Rand13.PercentChance(this.grasp_pull_chance))
                    {
                        this.dir = Map13.GetDistance(this, L);
                        Map13.Step(L, Map13.GetDistance(L, this));
                        L.Weaken(3);
                    }
                }

                if (this.grasping.len < this.max_grasps)
                {
                    foreach (dynamic _b in Lang13.Enumerate(Map13.FetchInRange(this, this.grasp_range), typeof(Mob_Living)))
                    {
                        L2 = _b;


                        if (L2 == this || this.faction_check(L2))
                        {
                            continue;
                        }

                        if (!this.grasping.Contains(L2) && L2 != this.target && Rand13.PercentChance(this.grasp_chance))
                        {
                            L2.WriteMsg(new Txt("<span class='userdanger'>").the(this).item().str(" has you entangled!</span>").ToString());
                            this.grasping[L2] = this.Beam(L2, "vine", "icons/effects/spacevines.dmi", Double.PositiveInfinity, 5, typeof(Obj_Effect_Ebeam_Vine));
                            break;
                        }
                    }
                }
            }
            return(false);
        }
示例#13
0
        // Function from file: snacks.dm
        public override bool attack_animal(Mob_Living user = null)
        {
            dynamic sattisfaction_text = null;


            if (user is Mob_Living_SimpleAnimal)
            {
                if (user is Mob_Living_SimpleAnimal_Pet_Dog_Corgi)
                {
                    if (this.bitecount == 0 || Rand13.PercentChance(50))
                    {
                        user.emote("me", 1, new Txt("nibbles away at ").the(this).item().ToString());
                    }
                    this.bitecount++;

                    if (this.bitecount >= 5)
                    {
                        sattisfaction_text = Rand13.Pick(new object [] { "burps from enjoyment", "yaps for more", "woofs twice", new Txt("looks at the area where ").the(this).item().str(" was").ToString() });

                        if (Lang13.Bool(sattisfaction_text))
                        {
                            user.emote("me", 1, "" + sattisfaction_text);
                        }
                        GlobalFuncs.qdel(this);
                    }
                }
            }
            return(false);
        }
示例#14
0
        // Function from file: Operating.dm
        public override dynamic interact(dynamic user = null, bool?flag1 = null)
        {
            string  dat   = null;
            Browser popup = null;

            dat = "";

            if (Lang13.Bool(this.table))
            {
                dat += "<B>Patient information:</B><BR>";

                if (((Obj_Structure_Table_Optable)this.table).check_patient())
                {
                    this.patient = this.table.patient;
                    dat         += this.get_patient_info();
                }
                else
                {
                    this.patient = null;
                    dat         += "<B>No patient detected</B>";
                }
            }
            else
            {
                dat += "<B>Operating table not found.</B>";
            }
            popup = new Browser(user, "op", "Operating Computer", 400, 500);
            popup.set_content(dat);
            popup.open();
            return(null);
        }
示例#15
0
        // Function from file: slime_extracts.dm
        public override void on_reaction(Reagents holder = null, double?created_volume = null)
        {
            dynamic    T = null;
            Mob_Living M = null;

            GlobalFuncs.feedback_add_details("slime_cores_used", "" + this.type);
            T = GlobalFuncs.get_turf(holder.my_atom);
            ((Ent_Static)T).visible_message("<span class='danger'>The slime extract begins to vibrate adorably !</span>");
            Task13.Schedule(50, (Task13.Closure)(() => {
                if (holder != null && Lang13.Bool(holder.my_atom))
                {
                    GlobalFuncs.playsound(GlobalFuncs.get_turf(holder.my_atom), "sound/effects/phasein.ogg", 100, 1);

                    foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInRange(7, GlobalFuncs.get_turf(holder.my_atom)), typeof(Mob_Living)))
                    {
                        M = _a;

                        M.bodytemperature -= 240;
                        M.WriteMsg("<span class='notice'>You feel a chill!</span>");
                    }
                }
                return;
            }));
            return;
        }
示例#16
0
        // Function from file: mutations.dm
        public override void on_life(Mob_Living owner = null)
        {
            ByTable dancetypes = null;
            dynamic dancemoves = null;


            dynamic _a = Rand13.Pick(new object [] { 1, 2 });             // Was a switch-case, sorry for the mess.

            if (_a == 1)
            {
                if (Rand13.PercentChance(15))
                {
                    dancetypes = new ByTable(new object [] { "swinging", "fancy", "stylish", "20'th century", "jivin'", "rock and roller", "cool", "salacious", "bashing", "smashing" });
                    dancemoves = Rand13.PickFromTable(dancetypes);
                    owner.visible_message("<b>" + owner + "</b> busts out some " + dancemoves + " moves!");
                }
            }
            else if (_a == 2)
            {
                if (Rand13.PercentChance(15))
                {
                    owner.visible_message("<b>" + owner + "</b> " + Rand13.Pick(new object [] { "jiggles their hips", "rotates their hips", "gyrates their hips", "taps their foot", "dances to an imaginary song", "jiggles their legs", "snaps their fingers" }) + "!");
                }
            }
            return;
        }
示例#17
0
        // Function from file: mutations.dm
        public override void on_life(Mob_Living owner = null)
        {
            int x_offset_old = 0;
            int y_offset_old = 0;
            int x_offset     = 0;
            int y_offset     = 0;


            if (Rand13.PercentChance(10) && owner.paralysis <= 1)
            {
                owner.Stun(10);

                dynamic _a = Rand13.Int(1, 3);                   // Was a switch-case, sorry for the mess.
                if (2 <= _a && _a <= 3)
                {
                    owner.say("" + (Rand13.PercentChance(50) ? ";" : "") + Rand13.Pick(new object [] { "SHIT", "PISS", "F**K", "C**T", "C********R", "M**********R", "T**S" }));
                }
                else if (_a == 1)
                {
                    owner.emote("twitch");
                }
                x_offset_old = owner.pixel_x;
                y_offset_old = owner.pixel_y;
                x_offset     = owner.pixel_x + Rand13.Int(-2, 2);
                y_offset     = owner.pixel_y + Rand13.Int(-1, 1);
                Icon13.Animate(new ByTable().Set(1, owner).Set("pixel_x", x_offset).Set("pixel_y", y_offset).Set("time", 1));
                Icon13.Animate(new ByTable().Set(1, owner).Set("pixel_x", x_offset_old).Set("pixel_y", y_offset_old).Set("time", 1));
            }
            return;
        }
        // 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;
        }
示例#19
0
        // Function from file: effects_smoke.dm
        public override bool smoke_mob(Mob_Living C = null)
        {
            Mob_Living C2       = null;
            double?    fraction = null;


            if (this.lifetime < 1)
            {
                return(false);
            }

            if (!(C is Mob_Living_Carbon))
            {
                return(false);
            }
            C2 = C;

            if (((dynamic)C2).v_internal != null || Lang13.Bool(((dynamic)C2).has_smoke_protection()))
            {
                return(false);
            }
            fraction = 1 / Convert.ToDouble(Lang13.Initial(this, "lifetime"));
            this.reagents.copy_to(C2, (fraction ?? 0) * (this.reagents.total_volume ?? 0));
            this.reagents.reaction(C, GlobalVars.INGEST, fraction);
            return(true);
        }
示例#20
0
        // Function from file: shapeshift.dm
        public void Shapeshift(Mob_Living caster = null)
        {
            Mob_Living M     = null;
            dynamic    shape = null;


            foreach (dynamic _a in Lang13.Enumerate(caster, typeof(Mob_Living)))
            {
                M = _a;


                if ((M.status_flags & 4096) != 0)
                {
                    caster.WriteMsg("<span class='warning'>You're already shapeshifted!</span>");
                    return;
                }
            }
            shape                = Lang13.Call(this.shapeshift_type, caster.loc);
            caster.loc           = shape;
            caster.status_flags |= 4096;
            this.current_shapes.Or(shape);
            this.current_casters.Or(caster);
            this.clothes_req = 0;
            this.human_req   = 0;
            caster.mind.transfer_to(shape);
            return;
        }
示例#21
0
        // Function from file: revenant_abilities.dm
        public override bool cast(dynamic targets = null, dynamic thearea = null, dynamic user = null)
        {
            thearea = thearea ?? Task13.User;

            Mob_Living M   = null;
            string     msg = null;


            foreach (dynamic _a in Lang13.Enumerate(targets, typeof(Mob_Living)))
            {
                M = _a;

                Task13.Schedule(0, (Task13.Closure)(() => {
                    msg = GlobalFuncs.stripped_input(Task13.User, "What do you wish to tell " + M + "?", null, "");

                    if (!Lang13.Bool(msg))
                    {
                        this.charge_counter = this.charge_max;
                        return;
                    }
                    GlobalFuncs.log_say("RevenantTransmit: " + GlobalFuncs.key_name(thearea) + "->" + GlobalFuncs.key_name(M) + " : " + msg);
                    thearea.WriteMsg("<span class='revennotice'><b>You transmit to " + M + ":</b> " + msg + "</span>");
                    M.WriteMsg("<span class='revennotice'><b>An alien voice resonates from all around...</b></span><i> " + msg + "</I>");
                    return;
                }));
            }
            return(false);
        }
示例#22
0
        public void smite(  )
        {
            bool       has_smitten = false;
            Mob_Living L           = null;


            if (!this.ability_cost(40, false, true))
            {
                return;
            }

            if (!(Map13.FetchInRange(this.god_nexus, 7) != null))
            {
                this.WriteMsg("You lack the strength to smite this far from your nexus.");
                return;
            }
            has_smitten = false;

            foreach (dynamic _a in Lang13.Enumerate(GlobalFuncs.get_turf(this), typeof(Mob_Living)))
            {
                L = _a;

                L.adjustFireLoss(20);
                L.adjustBruteLoss(20);
                L.WriteMsg("<span class='danger'><B>You feel the wrath of " + this.name + "!<B></span>");
                has_smitten = true;
            }

            if (has_smitten)
            {
                this.add_faith(-40);
            }
            return;
        }
示例#23
0
        // Function from file: pad.dm
        public void PadToLoc(Ent_Static place = null)
        {
            Obj_Effect_TeleportAbductor F = null;
            EffectSystem_SparkSpread    S = null;
            Mob_Living target             = null;

            F = new Obj_Effect_TeleportAbductor(place);
            S = new EffectSystem_SparkSpread();
            S.set_up(10, 0, place);
            S.start();
            Task13.Sleep(80);
            GlobalFuncs.qdel(F);
            Icon13.Flick("alien-pad", this);

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

                target.forceMove(place);
                Task13.Schedule(0, (Task13.Closure)(() => {
                    GlobalFuncs.anim(target.loc, target, "icons/mob/mob.dmi", null, "uncloak", null, target.dir);
                    return;
                }));
            }
            return;
        }
示例#24
0
        // Function from file: turf.dm
        public void phase_damage_creatures(int damage = 0, dynamic U = null)
        {
            Mob_Living M  = null;
            Obj_Mecha  M2 = null;


            foreach (dynamic _a in Lang13.Enumerate(this, typeof(Mob_Living)))
            {
                M = _a;


                if (M == U)
                {
                    continue;
                }
                M.adjustBruteLoss(damage);
                M.Paralyse(damage / 5);
            }

            foreach (dynamic _b in Lang13.Enumerate(this, typeof(Obj_Mecha)))
            {
                M2 = _b;

                M2.take_damage(damage * 2, "brute");
            }
            return;
        }
示例#25
0
        // Function from file: alien.dm
        public void AddInfectionImages(  )
        {
            Mob_Living C = null;
            dynamic    A = null;
            Image      I = null;


            if (this.client != null)
            {
                foreach (dynamic _a in Lang13.Enumerate(GlobalVars.mob_list, typeof(Mob_Living)))
                {
                    C = _a;


                    if ((C.status_flags & 32768) != 0)
                    {
                        A = C.getorgan(typeof(Obj_Item_Organ_Internal_BodyEgg_AlienEmbryo));

                        if (Lang13.Bool(A))
                        {
                            I = new Image("icons/mob/alien.dmi", C, "infected" + A.stage);
                            this.client.images.Add(I);
                        }
                    }
                }
            }
            return;
        }
示例#26
0
        // Function from file: effects_smoke.dm
        public virtual bool smoke_mob(Mob_Living C = null)
        {
            if (!(C is Mob_Living_Carbon))
            {
                return(false);
            }

            if (this.lifetime < 1)
            {
                return(false);
            }

            if (((dynamic)C).v_internal != null || Lang13.Bool(((dynamic)C).has_smoke_protection()))
            {
                return(false);
            }

            if (C.smoke_delay != 0)
            {
                return(false);
            }
            C.smoke_delay++;
            Task13.Schedule(10, (Task13.Closure)(() => {
                if (C != null)
                {
                    C.smoke_delay = 0;
                }
                return;
            }));
            return(true);
        }
示例#27
0
        // Function from file: objective.dm
        public override int check_completion(  )
        {
            dynamic    A      = null;
            Mob_Living player = null;
            Mob_Living H      = null;


            if (GlobalVars.SSshuttle.emergency.mode < 6)
            {
                return(1);
            }
            A = GlobalVars.SSshuttle.emergency.areaInstance;

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


                if (GlobalFuncs.get_area(player) == A && player.mind != null && player.stat != 2 && player is Mob_Living_Carbon_Human)
                {
                    H = player;

                    if (((dynamic)H).dna.species.id != "human")
                    {
                        return(0);
                    }
                }
            }
            return(1);
        }
示例#28
0
        // Function from file: mirror.dm
        public override bool attack_animal(Mob_Living user = null)
        {
            Mob_Living M = null;


            if (!(user is Mob_Living_SimpleAnimal))
            {
                return(false);
            }
            M = user;

            if (Convert.ToDouble(((dynamic)M).melee_damage_upper) <= 0)
            {
                return(false);
            }
            user.changeNext_move(8);
            M.do_attack_animation(this);

            if (this.shattered)
            {
                GlobalFuncs.playsound(this.loc, "sound/effects/hit_on_shattered_glass.ogg", 70, 1);
                return(false);
            }
            user.visible_message("<span class='danger'>" + user + " smashes " + this + "!</span>");
            this.shatter();
            return(false);
        }
示例#29
0
        // Function from file: mineral_doors.dm
        public virtual void Close(  )
        {
            dynamic    T = null;
            Mob_Living L = null;

            T = GlobalFuncs.get_turf(this);

            foreach (dynamic _a in Lang13.Enumerate(T, typeof(Mob_Living)))
            {
                L = _a;

                return;
            }
            this.isSwitchingStates = true;
            GlobalFuncs.playsound(this.loc, this.closeSound, 100, 1);
            Icon13.Flick("" + this.mineralType + "closing", this);
            Task13.Sleep(10);
            this.density = true;
            this.opacity = true;
            this.state   = false;
            this.air_update_turf(true);
            this.update_icon();
            this.isSwitchingStates = false;
            return;
        }
示例#30
0
        // Function from file: mushroom.dm
        public override bool attack_animal(Mob_Living user = null)
        {
            Mob_Living M          = null;
            double     level_gain = 0;


            if (user is Mob_Living_SimpleAnimal_Hostile_Mushroom && this.stat == 2)
            {
                M = user;

                if (this.faint_ticker < 2)
                {
                    M.visible_message("" + M + " chews a bit on " + this + ".");
                    this.faint_ticker++;
                    return(false);
                }
                M.visible_message("<span class='warning'>" + M + " devours " + this + "!</span>");
                level_gain = (this.powerlevel ?? 0) - Convert.ToDouble(((dynamic)M).powerlevel);

                if (level_gain >= -1 && !this.bruised && !Lang13.Bool(M.ckey))
                {
                    if (level_gain < 1)
                    {
                        level_gain = 1;
                    }
                    ((Mob_Living_SimpleAnimal_Hostile_Mushroom)M).LevelUp(level_gain);
                }
                M.adjustBruteLoss(-M.maxHealth);
                GlobalFuncs.qdel(this);
            }
            base.attack_animal(user);
            return(false);
        }
示例#31
0
		// Range: -1 Access: 0 Flags: ( 0, 4, 255 )
		public static bool is_handofgod_redprophet( Mob_Living A = null ) {
			Mob_Living H = null;
			if ( A is Mob_Living_Carbon_Human ) {
				H = A;
				if ( Lang13.Bool( H.mind ) ) {
					if ( Lang13.Bool( ((dynamic)GlobalVars.ticker.mode.red_deity_prophets).contains( H.mind ) ) ) {
						return true;
					}
				}
			}
			return false;
		}
示例#32
0
		// Range: -1 Access: 0 Flags: ( 0, 4, 255 )
		public static Image getLetterImage( Mob_Living A = null, string letter = null, int? uppercase = null ) {
			Icon atom_icon = null;
			Image text_image = null;
			if ( letter == null ) {
				letter = "";
			}
			if ( uppercase == null ) {
				uppercase = 0;
			}
			if ( !( A != null ) ) {
				return null;
			}
			atom_icon = new Icon( ((dynamic)A).icon, ((dynamic)A).icon_state );
			if ( !Lang13.Bool( letter ) ) {
				letter = String13.substr( ((dynamic)A).name, 1, 2 );
				if ( uppercase == 1 ) {
					letter = String13.toUpper( letter );
				} else if ( uppercase == -1 ) {
					letter = String13.toLower( letter );
				}
			}
			text_image = new Image( null, A );
			((dynamic)text_image).maptext = "<font size = 4>" + letter + "</font>";
			((dynamic)text_image).color = GlobalFuncs.AverageColour( atom_icon );
			((dynamic)text_image).pixel_x = 7;
			((dynamic)text_image).pixel_y = 5;
			Lang13.delete( atom_icon );
			atom_icon = null;
			return text_image;
		}
示例#33
0
		// Range: -1 Access: 0 Flags: ( 0, 4, 255 )
		public static void randomize_human( Mob_Living H = null ) {
			((dynamic)H).gender = Rand13.pick(new object [] { GlobalVars.MALE, GlobalVars.FEMALE });
			H.real_name = GlobalFuncs.random_unique_name( ((dynamic)H).gender );
			((dynamic)H).name = H.real_name;
			((dynamic)H).underwear = GlobalFuncs.random_underwear( ((dynamic)H).gender );
			((dynamic)H).skin_tone = GlobalFuncs.random_skin_tone();
			((dynamic)H).hair_style = GlobalFuncs.random_hair_style( ((dynamic)H).gender );
			((dynamic)H).facial_hair_style = GlobalFuncs.random_facial_hair_style( ((dynamic)H).gender );
			((dynamic)H).hair_color = GlobalFuncs.random_short_color();
			((dynamic)H).facial_hair_color = ((dynamic)H).hair_color;
			((dynamic)H).eye_color = GlobalFuncs.random_eye_color();
			((dynamic)H).dna.blood_type = GlobalFuncs.random_blood_type();
			((Mob_Living_Carbon_Human)H).update_body();
			H.update_hair();
			return;
		}