Пример #1
0
        public override void AfterMove()
        {
            Color DestPixel = RetroApplication.Raster[this.x, this.y];

            if (DestPixel.ToArgb() != Color.Black.ToArgb())
            {
                if (DestPixel.R == 255 && DestPixel.B == 0)
                {
                    RetroApplication.FillFlood(this.x, this.y, Color.Black);

                    if (this.playerNr == 1)
                    {
                        BinaryOutput Output = new BinaryOutput();
                        int          Gift   = RetroApplication.Random(0, 31);

                        Output.WriteByte(7);
                        Output.WriteInt(Gift);

                        this.GetGift(1, Gift, Output, null);

                        if (Program.NrPlayers > 1)
                        {
                            Program.MPE.SendUdpToAll(Output.GetPacket(), 3);
                        }
                    }
                }
                else if (!this.immortal)
                {
                    this.Die();
                    return;
                }
            }

            if (!this.invisible || this.playerNr == 2)
            {
                RetroApplication.Raster[this.x, this.y] = this.headColor;
            }

            if (this.immortal)
            {
                int SecondsLeft = 10 - (int)(DateTime.Now - this.immortalStart).TotalSeconds;

                if (SecondsLeft != this.immortalSecondsLeft)
                {
                    if (SecondsLeft < 0)
                    {
                        this.immortal = false;
                        Program.PlayerMsg(this.playerNr, string.Empty);
                    }
                    else
                    {
                        this.immortalSecondsLeft = SecondsLeft;
                        Program.PlayerMsg(this.playerNr, "Immortal " + SecondsLeft.ToString());
                    }
                }
            }
        }
Пример #2
0
        public void GetGift(int PlayerIndex, int GiftIndex, BinaryOutput Output, BinaryInput Input)
        {
            switch (GiftIndex)
            {
            case 0:
                this.framesPerPixel = 4;
                this.stepsPerFrame  = 1;
                Program.PlayerMsg(this.playerNr, "Slow speed");
                break;

            case 1:
                this.framesPerPixel = 5;
                this.stepsPerFrame  = 1;
                Program.PlayerMsg(this.playerNr, "Slower speed");
                break;

            case 2:
                this.framesPerPixel = 6;
                this.stepsPerFrame  = 1;
                Program.PlayerMsg(this.playerNr, "Slowest speed");
                break;

            case 3:
                this.framesPerPixel = 2;
                this.stepsPerFrame  = 1;
                Program.PlayerMsg(this.playerNr, "Fast speed");
                break;

            case 4:
                this.framesPerPixel = 1;
                this.stepsPerFrame  = 1;
                Program.PlayerMsg(this.playerNr, "Faster speed");
                break;

            case 5:
                this.framesPerPixel = 1;
                this.stepsPerFrame  = 2;
                if (this.shotSpeed < 2)
                {
                    this.shotSpeed = 2;
                }
                Program.PlayerMsg(this.playerNr, "Fastest speed");
                break;

            case 6:
                this.framesPerPixel = 3;
                this.stepsPerFrame  = 1;
                Program.PlayerMsg(this.playerNr, "Normal speed");
                break;

            case 7:
                this.shotPower = 5;
                Program.PlayerMsg(this.playerNr, "Tiny bullets");
                break;

            case 8:
                this.shotPower = 10;
                Program.PlayerMsg(this.playerNr, "Small bullets");
                break;

            case 9:
                this.shotPower = 15;
                Program.PlayerMsg(this.playerNr, "Normal bullets");
                break;

            case 10:
                this.shotPower = 20;
                Program.PlayerMsg(this.playerNr, "Large bullets");
                break;

            case 11:
                this.shotPower = 25;
                Program.PlayerMsg(this.playerNr, "Huge bullets");
                break;

            case 12:
                this.shotPower = 30;
                Program.PlayerMsg(this.playerNr, "Humongous bullets");
                break;

            case 13:
                this.shotPower = 50;
                Program.PlayerMsg(this.playerNr, "Peace-maker bullets");
                break;

            case 14:
                this.tail = false;
                Program.PlayerMsg(this.playerNr, "No tail");
                break;

            case 15:
                this.tail = true;
                Program.PlayerMsg(this.playerNr, "Tail");
                break;

            case 16:
                this.shotSpeed = Math.Max(1, this.stepsPerFrame);
                Program.PlayerMsg(this.playerNr, "Slow bullets");
                break;

            case 17:
                this.shotSpeed = Math.Max(2, this.stepsPerFrame);
                Program.PlayerMsg(this.playerNr, "Fast bullets");
                break;

            case 18:
                this.shotSpeed = Math.Max(3, this.stepsPerFrame);
                Program.PlayerMsg(this.playerNr, "Faster bullets");
                break;

            case 19:
                this.shotSpeed = Math.Max(4, this.stepsPerFrame);
                Program.PlayerMsg(this.playerNr, "Fastest bullets");
                break;

            case 20:
                int  X, Y;
                int  dx, dy;
                bool Ok;
                int  TriesLeft = 100;
                int  Black     = Color.Black.ToArgb();

                if (!(Input is null))
                {
                    this.x = 319 - (int)Input.ReadInt();
                    this.y = 207 - (int)Input.ReadInt();
                }
                else
                {
                    Ok = false;

                    while (TriesLeft-- > 0 && !Ok)
                    {
                        X  = RetroApplication.Random(30, 290);
                        Y  = RetroApplication.Random(38, 170);
                        Ok = true;
                        for (dy = -5; dy < 5; dy++)
                        {
                            for (dx = -5; dx < 5; dx++)
                            {
                                if (RetroApplication.Raster[X + dx, Y + dy].ToArgb() != Black)
                                {
                                    Ok = false;
                                    dy = 5;
                                    break;
                                }
                            }
                        }

                        if (Ok)
                        {
                            Output.WriteInt(X);
                            Output.WriteInt(Y);

                            this.x = X;
                            this.y = Y;
                        }
                    }

                    if (!Ok && !(Output is null))
                    {
                        Output.WriteInt(this.x);
                        Output.WriteInt(this.y);
                    }
                }

                Program.PlayerMsg(this.playerNr, "Teleport");
                break;