コード例 #1
0
        // Function from file: ninja_stealth.dm
        public void toggle_stealth(  )
        {
            dynamic U = null;

            U = this.affecting;

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

            if (this.s_active)
            {
                this.cancel_stealth();
            }
            else
            {
                if (Convert.ToDouble(this.cell.charge) <= 0)
                {
                    U.WriteMsg("<span class='warning'>You don't have enough power to enable Stealth!</span>");
                    return;
                }
                this.s_active = !this.s_active;
                Icon13.Animate(new ByTable().Set(1, U).Set("alpha", 0).Set("time", 15));
                ((Ent_Static)U).visible_message("<span class='warning'>" + U.name + " vanishes into thin air!</span>", "<span class='notice'>You are now invisible to normal detection.</span>");
            }
            return;
        }
コード例 #2
0
        // Function from file: door.dm
        public virtual void do_animate(string animation = null)
        {
            switch ((string)(animation))
            {
            case "opening":

                if (this.p_open)
                {
                    Icon13.Flick("o_doorc0", this);
                }
                else
                {
                    Icon13.Flick("doorc0", this);
                }
                break;

            case "closing":

                if (this.p_open)
                {
                    Icon13.Flick("o_doorc1", this);
                }
                else
                {
                    Icon13.Flick("doorc1", this);
                }
                break;

            case "deny":
                Icon13.Flick("door_deny", this);
                break;
            }
            return;
        }
コード例 #3
0
        // Function from file: portable_turret.dm
        public void popUp(  )
        {
            if (this.disabled)
            {
                return;
            }

            if (this.raising || this.raised)
            {
                return;
            }

            if ((this.stat & 1) != 0)
            {
                return;
            }
            this.invisibility = 0;
            this.raising      = true;

            if (this.cover != null)
            {
                Icon13.Flick("popup", this.cover);
            }
            Task13.Sleep(10);
            this.raising = false;

            if (this.cover != null)
            {
                this.cover.icon_state = "openTurretCover";
            }
            this.raised = true;
            this.layer  = 4;
            return;
        }
コード例 #4
0
        // Function from file: portable_turret.dm
        public void popDown(  )
        {
            if (this.disabled)
            {
                return;
            }

            if (this.raising || !this.raised)
            {
                return;
            }

            if ((this.stat & 1) != 0)
            {
                return;
            }
            this.layer   = 3;
            this.raising = true;

            if (this.cover != null)
            {
                Icon13.Flick("popdown", this.cover);
            }
            Task13.Sleep(10);
            this.raising = false;

            if (this.cover != null)
            {
                this.cover.icon_state = "turretCover";
            }
            this.raised       = false;
            this.invisibility = 2;
            this.icon_state   = "" + this.base_icon_state + this.off_state;
            return;
        }
コード例 #5
0
        // Function from file: traitordevices.dm
        public override int?process(dynamic seconds = null)
        {
            dynamic T        = null;
            dynamic lumcount = null;


            if (this.user.get_item_by_slot(6) != this)
            {
                this.Deactivate();
                return(null);
            }
            T = GlobalFuncs.get_turf(this);

            if (this.on)
            {
                lumcount = ((Tile)T).get_lumcount();

                if (Convert.ToDouble(lumcount) > 3)
                {
                    this.charge = Num13.MaxInt(0, this.charge - 25);
                }
                else
                {
                    this.charge = Num13.MinInt(this.max_charge, this.charge + 50);
                }
                Icon13.Animate(new ByTable().Set(1, this.user).Set("alpha", Num13.MaxInt(0, Num13.MinInt(255 - this.charge, 255))).Set("time", 10));
            }
            return(null);
        }
コード例 #6
0
ファイル: Icon.cs プロジェクト: Somnium13/SS13
        public void Blend(dynamic icon = null, int?f = null, double?x = null, double?y = null)
        {
            x = x ?? 1;
            y = y ?? 1;

            Icon13.oper_blend(this.icon, icon, f, ((int?)(x)), ((int?)(y)));
        }
コード例 #7
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;
        }
コード例 #8
0
        // Function from file: mineral_doors.dm
        public void Open(  )
        {
            this.isSwitchingStates = true;
            GlobalFuncs.playsound(this.loc, this.openSound, 100, 1);
            Icon13.Flick("" + this.mineralType + "opening", this);
            Task13.Sleep(10);
            this.density = false;
            this.opacity = false;
            this.state   = true;
            this.air_update_turf(true);
            this.update_icon();
            this.isSwitchingStates = false;

            if (this.close_delay != -1)
            {
                Task13.Schedule(this.close_delay, (Task13.Closure)(() => {
                    if (!this.isSwitchingStates && this.state)
                    {
                        this.Close();
                    }
                    return;
                }));
            }
            return;
        }
コード例 #9
0
        // Function from file: factory.dm
        public override bool Be_Pulsed(  )
        {
            bool _default = false;

            Mob_Living_SimpleAnimal_Hostile_Blob_Blobspore BS = null;

            _default = base.Be_Pulsed();

            if (this.spores.len >= this.max_spores)
            {
                return(_default);
            }

            if (this.spore_delay > Game13.time)
            {
                return(_default);
            }
            Icon13.Flick("blob_factory_glow", this);
            this.spore_delay = Game13.time + 100;
            BS = new Mob_Living_SimpleAnimal_Hostile_Blob_Blobspore(this.loc, this);

            if (this.overmind != null)
            {
                BS.overmind = this.overmind;
                BS.update_icons();
                this.overmind.blob_mobs.Add(BS);
            }
            return(_default);
        }
コード例 #10
0
        // Function from file: tgstation.dme
        public void place_poster(dynamic P = null, dynamic user = null)
        {
            int stuff_on_wall           = 0;
            Obj O                       = null;
            Obj_Structure_Sign_Poster D = null;
            Ent_Static temp_loc         = null;


            if (!(P.resulting_poster != null))
            {
                return;
            }
            stuff_on_wall = 0;

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


                if (O is Obj_Structure_Sign_Poster)
                {
                    user.WriteMsg("<span class='warning'>The wall is far too cluttered to place a poster!</span>");
                    return;
                }
                stuff_on_wall++;

                if (stuff_on_wall == 3)
                {
                    user.WriteMsg("<span class='warning'>The wall is far too cluttered to place a poster!</span>");
                    return;
                }
            }
            user.WriteMsg("<span class='notice'>You start placing the poster on the wall...</span>");
            D        = P.resulting_poster;
            temp_loc = user.loc;
            Icon13.Flick("poster_being_set", D);
            D.loc      = this;
            D.official = Lang13.BoolNullable(P.official);
            GlobalFuncs.qdel(P);
            GlobalFuncs.playsound(D.loc, "sound/items/poster_being_created.ogg", 100, 1);

            if (GlobalFuncs.do_after(user, D.placespeed, null, this))
            {
                if (!(D != null))
                {
                    return;
                }

                if (this is Tile_Simulated_Wall && Lang13.Bool(user) && user.loc == temp_loc)
                {
                    user.WriteMsg("<span class='notice'>You place the poster!</span>");
                }
                else
                {
                    D.roll_and_drop(temp_loc, D.official);
                }
                return;
            }
            return;
        }
コード例 #11
0
ファイル: Icon.cs プロジェクト: Somnium13/SS13
        public void SetIntensity(int r = 0, int?g = null, int?b = null)
        {
            g = g ?? -1;
            b = b ?? -1;

            Icon13.oper_set_intensity(this.icon, r, g ?? 0, b ?? 0);
        }
コード例 #12
0
        // Function from file: igniter.dm
        public bool ignite(  )
        {
            Ent_Static location = null;


            if (!Lang13.Bool(this.powered()))
            {
                return(false);
            }

            if (this.disable || this.last_spark != 0 && Game13.time < this.last_spark + 50)
            {
                return(false);
            }
            Icon13.Flick("" + this.base_state + "-spark", this);
            this.spark_system.start();
            this.last_spark = Game13.time;
            this.f_use_power(1000);
            location = this.loc;

            if (location is Tile)
            {
                ((dynamic)location).hotspot_expose(1000, 500, 1);
            }
            return(true);
        }
コード例 #13
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;
 }
コード例 #14
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;
        }
コード例 #15
0
        // Function from file: simple_animal.dm
        public override dynamic gib(dynamic animation = null)
        {
            animation = animation ?? 0;

            dynamic path = null;
            int?    i    = null;


            if (Lang13.Bool(this.icon_gib))
            {
                Icon13.Flick(this.icon_gib, this);
            }

            if (this.butcher_results != null)
            {
                foreach (dynamic _a in Lang13.Enumerate(this.butcher_results))
                {
                    path = _a;

                    i = null;
                    i = 1;

                    while ((i ?? 0) <= Convert.ToDouble(this.butcher_results[path]))
                    {
                        Lang13.Call(path, this.loc);
                        i++;
                    }
                }
            }
            base.gib((object)(animation));
            return(null);
        }
コード例 #16
0
        // Function from file: tgstation.dme
        public void Dispense(Type item = null, int?cost = null)
        {
            cost = cost ?? 1;


            if (this.experiment != null && (this.experiment.points ?? 0) >= (cost ?? 0))
            {
                this.experiment.points -= cost ?? 0;
                this.say("Incoming supply!");

                if (this.pad != null)
                {
                    Icon13.Flick("alien-pad", this.pad);
                    Lang13.Call(item, this.pad.loc);
                }
                else
                {
                    Lang13.Call(item, this.loc);
                }
            }
            else
            {
                this.say("Insufficent data!");
            }
            return;
        }
コード例 #17
0
        // Function from file: disposal-structures.dm
        public void expel(Obj_Structure_Disposalholder H = null)
        {
            dynamic     T  = null;
            Ent_Dynamic AM = null;

            T = GlobalFuncs.get_turf(this);
            Icon13.Flick("outlet-open", this);

            if (this.start_eject + 30 < Game13.time)
            {
                this.start_eject = Game13.time;
                GlobalFuncs.playsound(this, "sound/machines/warning-buzzer.ogg", 50, 0, 0);
                Task13.Sleep(20);
                GlobalFuncs.playsound(this, "sound/machines/hiss.ogg", 50, 0, 0);
            }
            else
            {
                Task13.Sleep(20);
            }

            if (H != null)
            {
                foreach (dynamic _a in Lang13.Enumerate(H, typeof(Ent_Dynamic)))
                {
                    AM = _a;

                    AM.forceMove(T);
                    AM.pipe_eject(this.dir);
                    AM.throw_at_fast(this.target, this.eject_range, 1);
                }
                H.vent_gas(T);
                GlobalFuncs.qdel(H);
            }
            return;
        }
コード例 #18
0
        // Function from file: ores_coins.dm
        public override dynamic attack_self(dynamic user = null, dynamic flag = null, bool?emp = null)
        {
            dynamic    coinflip = null;
            Ent_Static oldloc   = null;


            if (this.cooldown < Game13.time - 15)
            {
                if (this.string_attached == true)
                {
                    user.WriteMsg("<span class='warning'>The coin won't flip very well with something attached!</span>");
                    return(null);
                }
                coinflip      = Rand13.PickFromTable(this.sideslist);
                this.cooldown = Game13.time;
                Icon13.Flick("coin_" + this.cmineral + "_flip", this);
                this.icon_state = "coin_" + this.cmineral + "_" + coinflip;
                GlobalFuncs.playsound(user.loc, "sound/items/coinflip.ogg", 50, 1);
                oldloc = this.loc;
                Task13.Sleep(15);

                if (this.loc == oldloc && Lang13.Bool(user) && !((Mob)user).incapacitated())
                {
                    ((Ent_Static)user).visible_message("" + user + " has flipped " + this + ". It lands on " + coinflip + ".", "<span class='notice'>You flip " + this + ". It lands on " + coinflip + ".</span>", "<span class='italics'>You hear the clattering of loose change.</span>");
                }
            }
            return(null);
        }
コード例 #19
0
        // Function from file: mass_driver.dm
        public void drive(dynamic amount = null)
        {
            int         O_limit = 0;
            dynamic     target  = null;
            Ent_Dynamic O       = null;


            if ((this.stat & 3) != 0)
            {
                return;
            }
            this.f_use_power(500);
            target = GlobalFuncs.get_edge_target_turf(this, this.dir);

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


                if (!Lang13.Bool(O.anchored) || O is Obj_Mecha)
                {
                    O_limit++;

                    if (O_limit >= 20)
                    {
                        this.audible_message("<span class='notice'>" + this + " lets out a screech, it doesn't seem to be able to handle the load.</span>");
                        break;
                    }
                    this.f_use_power(500);
                    O.throw_at_fast(target, this.drive_range * (this.power ?? 0), this.power);
                }
            }
            Icon13.Flick("mass_driver1", this);
            return;
        }
コード例 #20
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;
        }
コード例 #21
0
        // Function from file: poddoor.dm
        public override bool close(int?surpress_send = null)
        {
            surpress_send = surpress_send ?? 0;


            if (this.operating)
            {
                return(false);
            }

            if (this.density)
            {
                return(false);
            }

            if (!Lang13.Bool(surpress_send) && (this.stat & 2) != 0)
            {
                return(false);
            }
            this.operating = true;
            Icon13.Flick("closing", this);
            this.icon_state = "closed";
            this.SetOpacity(1);
            Task13.Sleep(5);
            this.density = true;
            Task13.Sleep(5);
            this.air_update_turf(true);
            this.update_freelook_sight();
            Task13.Sleep(5);
            this.crush();
            Task13.Sleep(5);
            this.operating = false;
            return(false);
        }
コード例 #22
0
ファイル: Icon.cs プロジェクト: Somnium13/SS13
 public void Turn(dynamic angle = null, dynamic antialias = null)
 {
     if (Lang13.Bool(antialias))
     {
         Icon13.oper(9, this.icon, angle);
     }
     Icon13.oper(5, this.icon, angle);
 }
コード例 #23
0
		// Function from file: reagentgrinder.dm
		public void juice(  ) {
			int offset = 0;
			Obj_Item_Weapon_ReagentContainers_Food_Snacks O = null;
			dynamic allowed = null;
			dynamic r_id = null;
			dynamic space = null;
			int amount = 0;

			this.power_change();

			if ( ( this.stat & 3 ) != 0 ) {
				return;
			}

			if ( !Lang13.Bool( this.beaker ) || Lang13.Bool( this.beaker ) && ( this.beaker.reagents.total_volume ??0) >= Convert.ToDouble( this.beaker.reagents.maximum_volume ) ) {
				return;
			}
			GlobalFuncs.playsound( this.loc, "sound/machines/juicer.ogg", 20, 1 );
			offset = ( Rand13.PercentChance( 50 ) ? -2 : 2 );
			Icon13.Animate( new ByTable().Set( 1, this ).Set( "pixel_x", this.pixel_x + offset ).Set( "time", 0.2 ).Set( "loop", 250 ) );
			this.operating = true;
			this.updateUsrDialog();
			Task13.Schedule( 50, (Task13.Closure)(() => {
				this.pixel_x = Convert.ToInt32( Lang13.Initial( this, "pixel_x" ) );
				this.operating = false;
				this.updateUsrDialog();
				return;
			}));

			foreach (dynamic _b in Lang13.Enumerate( this.holdingitems, typeof(Obj_Item_Weapon_ReagentContainers_Food_Snacks) )) {
				O = _b;
				

				if ( ( this.beaker.reagents.total_volume ??0) >= Convert.ToDouble( this.beaker.reagents.maximum_volume ) ) {
					break;
				}
				allowed = this.get_allowed_juice_by_id( O );

				if ( allowed == null ) {
					break;
				}

				foreach (dynamic _a in Lang13.Enumerate( allowed )) {
					r_id = _a;
					
					space = this.beaker.reagents.maximum_volume - this.beaker.reagents.total_volume;
					amount = this.get_juice_amount( O );
					this.beaker.reagents.add_reagent( r_id, Num13.MinInt( amount, Convert.ToInt32( space ) ) );

					if ( ( this.beaker.reagents.total_volume ??0) >= Convert.ToDouble( this.beaker.reagents.maximum_volume ) ) {
						break;
					}
				}
				this.remove_object( O );
			}
			return;
		}
コード例 #24
0
ファイル: Obj_Item_NukeCore.cs プロジェクト: Somnium13/SS13
 // Function from file: nuke_tools.dm
 public override int?process(dynamic seconds = null)
 {
     if (this.cooldown < Game13.time - 60)
     {
         this.cooldown = Game13.time;
         Icon13.Flick("plutonium_core_pulse", this);
         GlobalFuncs.radiation_pulse(GlobalFuncs.get_turf(this), 1, 4, 40, true);
     }
     return(null);
 }
コード例 #25
0
 // Function from file: pad.dm
 public void Retrieve(dynamic target = null)
 {
     Icon13.Flick("alien-pad", this);
     Task13.Schedule(0, (Task13.Closure)(() => {
         GlobalFuncs.anim(target.loc, target, "icons/mob/mob.dmi", null, "uncloak", null, Convert.ToInt32(target.dir));
         return;
     }));
     this.Warp(target);
     return;
 }
コード例 #26
0
        // Function from file: lighting_system.dm
        public void redraw_lighting(bool?instantly = null)
        {
            instantly = instantly ?? false;

            int newalpha = 0;
            int num      = 0;


            if (Lang13.Bool(this.lighting_object))
            {
                if (this.lighting_lumcount <= 0)
                {
                    newalpha = 255;
                }
                else
                {
                    this.lighting_object.luminosity = 1;

                    if (this.lighting_lumcount < 10)
                    {
                        num      = Num13.MaxInt(0, Num13.MinInt(((int)(this.lighting_lumcount * 25.5)), 255));
                        newalpha = 255 - num;
                    }
                    else
                    {
                        newalpha = 0;
                    }
                }

                if (newalpha >= 250)
                {
                    newalpha = 255;
                }

                if (Convert.ToInt32(this.lighting_object.alpha) != newalpha)
                {
                    if (instantly == true)
                    {
                        this.lighting_object.alpha = newalpha;
                    }
                    else
                    {
                        Icon13.Animate(new ByTable().Set(1, this.lighting_object).Set("alpha", newalpha).Set("time", 2));
                    }

                    if (newalpha >= 250)
                    {
                        this.luminosity = 0;
                        this.lighting_object.luminosity = 0;
                    }
                }
            }
            this.lighting_changed = false;
            return;
        }
コード例 #27
0
 // Function from file: narsie.dm
 public void narsie_spawn_animation(  )
 {
     this.icon      = "icons/obj/narsie_spawn_anim.dmi";
     this.dir       = ((int)(GlobalVars.SOUTH));
     this.move_self = false;
     Icon13.Flick("narsie_spawn_anim", this);
     Task13.Sleep(11);
     this.move_self = true;
     this.icon      = Lang13.Initial(this, "icon");
     return;
 }
コード例 #28
0
        // Function from file: kitchen_spike.dm
        public override dynamic user_unbuckle_mob(dynamic user = null)
        {
            dynamic M    = null;
            Matrix  m180 = null;


            if (Lang13.Bool(this.buckled_mob) && this.buckled_mob.buckled == this)
            {
                M = this.buckled_mob;

                if (M != user)
                {
                    ((Ent_Static)M).visible_message("" + user.name + " tries to pull " + M.name + " free of the " + this + "!", "<span class='notice'>" + user.name + " is trying to pull you off the " + this + ", opening up fresh wounds!</span>", "<span class='italics'>You hear a squishy wet noise.</span>");

                    if (!GlobalFuncs.do_after(user, 300, null, this))
                    {
                        if (Lang13.Bool(M) && M.buckled != null)
                        {
                            ((Ent_Static)M).visible_message("" + user.name + " fails to free " + M.name + "!", "<span class='notice'>" + user.name + " fails to pull you off of the " + this + ".</span>");
                        }
                        return(null);
                    }
                }
                else
                {
                    ((Ent_Static)M).visible_message("<span class='warning'>" + M.name + " struggles to break free from the " + this + "!</span>", "<span class='notice'>You struggle to break free from the " + this + ", exacerbating your wounds! (Stay still for two minutes.)</span>", "<span class='italics'>You hear a wet squishing noise..</span>");
                    ((Mob_Living)M).adjustBruteLoss(30);

                    if (!GlobalFuncs.do_after(M, 1200, null, this))
                    {
                        if (Lang13.Bool(M) && M.buckled != null)
                        {
                            M.WriteMsg("<span class='warning'>You fail to free yourself!</span>");
                        }
                        return(null);
                    }
                }

                if (!(M.buckled != null))
                {
                    return(null);
                }
                m180 = Num13.Matrix(M.transform);
                m180.Turn(180);
                Icon13.Animate(new ByTable().Set(1, M).Set("transform", m180).Set("time", 3));
                M.pixel_y = ((Mob_Living)M).get_standard_pixel_y_offset(180);
                ((Mob_Living)M).adjustBruteLoss(30);
                this.visible_message("<span class='danger'>" + M + " falls free of the " + this + "!</span>");
                this.unbuckle_mob();
                ((Mob)M).emote("scream");
                ((Mob)M).AdjustWeakened(10);
            }
            return(null);
        }
コード例 #29
0
 // Function from file: bins.dm
 public void do_animate(  )
 {
     GlobalFuncs.playsound(this.loc, this.open_sound, 15, 1, -3);
     Icon13.Flick("animate_largebins", this);
     Task13.Schedule(13, (Task13.Closure)(() => {
         GlobalFuncs.playsound(this.loc, this.close_sound, 15, 1, -3);
         this.update_icon();
         return;
     }));
     return;
 }
コード例 #30
0
        // Function from file: observer.dm
        public override dynamic orbit(dynamic A = null, double?radius = null, int?clockwise = null, double?rotation_speed = null, int?rotation_segments = null, int?pre_rotation = null, int?lockinorbit = null)
        {
            base.orbit((object)(A), radius, clockwise, rotation_speed, rotation_segments, pre_rotation, lockinorbit);
            Task13.Sleep(2);

            if (!Lang13.Bool(this.orbiting))
            {
                this.pixel_y = 0;
                Icon13.Animate(new ByTable().Set(1, this).Set("pixel_y", 2).Set("time", 10).Set("loop", -1));
            }
            return(null);
        }