NewGore() public static method

public static NewGore ( Vector2 Position, Vector2 Velocity, int Type, float Scale = 1f ) : int
Position Vector2
Velocity Vector2
Type int
Scale float
return int
Beispiel #1
0
        public void Update()
        {
            if (Main.netMode == 2 || !this.active)
            {
                return;
            }
            bool flag = this.type >= 1024 && this.type <= 1026;

            if (this.type >= 276 && this.type <= 282)
            {
                this.velocity.X *= 0.98f;
                this.velocity.Y *= 0.98f;
                if ((double)this.velocity.Y < (double)this.scale)
                {
                    this.velocity.Y += 0.05f;
                }
                if ((double)this.velocity.Y > 0.1)
                {
                    if ((double)this.velocity.X > 0.0)
                    {
                        this.rotation += 0.01f;
                    }
                    else
                    {
                        this.rotation -= 0.01f;
                    }
                }
            }
            if (this.type >= 570 && this.type <= 572)
            {
                this.scale -= 1f / 1000f;
                if ((double)this.scale <= 0.01)
                {
                    this.scale    = 0.01f;
                    Gore.goreTime = 0;
                }
                this.sticky   = false;
                this.rotation = this.velocity.X * 0.1f;
            }
            else if (this.type >= 706 && this.type <= 717 || this.type == 943)
            {
                this.alpha = (double)this.position.Y >= Main.worldSurface * 16.0 + 8.0 ? 100 : 0;
                int num1 = 4;
                ++this.frameCounter;
                if ((int)this.frame <= 4)
                {
                    int x = (int)((double)this.position.X / 16.0);
                    int y = (int)((double)this.position.Y / 16.0) - 1;
                    if (WorldGen.InWorld(x, y, 0) && !Main.tile[x, y].active())
                    {
                        this.active = false;
                    }
                    if ((int)this.frame == 0)
                    {
                        num1 = 24 + Main.rand.Next(256);
                    }
                    if ((int)this.frame == 1)
                    {
                        num1 = 24 + Main.rand.Next(256);
                    }
                    if ((int)this.frame == 2)
                    {
                        num1 = 24 + Main.rand.Next(256);
                    }
                    if ((int)this.frame == 3)
                    {
                        num1 = 24 + Main.rand.Next(96);
                    }
                    if ((int)this.frame == 5)
                    {
                        num1 = 16 + Main.rand.Next(64);
                    }
                    if (this.type == 716)
                    {
                        num1 *= 2;
                    }
                    if (this.type == 717)
                    {
                        num1 *= 4;
                    }
                    if (this.type == 943 && (int)this.frame < 6)
                    {
                        num1 = 4;
                    }
                    if ((int)this.frameCounter >= num1)
                    {
                        this.frameCounter = (byte)0;
                        ++this.frame;
                        if ((int)this.frame == 5)
                        {
                            int index = Gore.NewGore(this.position, this.velocity, this.type, 1f);
                            Main.gore[index].frame     = (byte)9;
                            Main.gore[index].velocity *= 0.0f;
                        }
                        if (this.type == 943 && (int)this.frame > 4)
                        {
                            if (Main.rand.Next(2) == 0)
                            {
                                Gore gore = Main.gore[Gore.NewGore(this.position, this.velocity, this.type, this.scale)];
                                gore.frameCounter = (byte)0;
                                gore.frame        = (byte)7;
                                gore.velocity     = Vector2.UnitY * 1f;
                            }
                            if (Main.rand.Next(2) == 0)
                            {
                                Gore gore = Main.gore[Gore.NewGore(this.position, this.velocity, this.type, this.scale)];
                                gore.frameCounter = (byte)0;
                                gore.frame        = (byte)7;
                                gore.velocity     = Vector2.UnitY * 2f;
                            }
                        }
                    }
                }
                else if ((int)this.frame <= 6)
                {
                    int num2 = 8;
                    if (this.type == 716)
                    {
                        num2 *= 2;
                    }
                    if (this.type == 717)
                    {
                        num2 *= 3;
                    }
                    if ((int)this.frameCounter >= num2)
                    {
                        this.frameCounter = (byte)0;
                        ++this.frame;
                        if ((int)this.frame == 7)
                        {
                            this.active = false;
                        }
                    }
                }
                else if ((int)this.frame <= 9)
                {
                    int num2 = 6;
                    if (this.type == 716)
                    {
                        num2             = (int)((double)num2 * 1.5);
                        this.velocity.Y += 0.175f;
                    }
                    else if (this.type == 717)
                    {
                        num2            *= 2;
                        this.velocity.Y += 0.15f;
                    }
                    else if (this.type == 943)
                    {
                        num2             = (int)((double)num2 * 1.5);
                        this.velocity.Y += 0.2f;
                    }
                    else
                    {
                        this.velocity.Y += 0.2f;
                    }
                    if ((double)this.velocity.Y < 0.5)
                    {
                        this.velocity.Y = 0.5f;
                    }
                    if ((double)this.velocity.Y > 12.0)
                    {
                        this.velocity.Y = 12f;
                    }
                    if ((int)this.frameCounter >= num2)
                    {
                        this.frameCounter = (byte)0;
                        ++this.frame;
                    }
                    if ((int)this.frame > 9)
                    {
                        this.frame = (byte)7;
                    }
                }
                else
                {
                    if (this.type == 716)
                    {
                        num1 *= 2;
                    }
                    else if (this.type == 717)
                    {
                        num1 *= 6;
                    }
                    this.velocity.Y += 0.1f;
                    if ((int)this.frameCounter >= num1)
                    {
                        this.frameCounter = (byte)0;
                        ++this.frame;
                    }
                    this.velocity *= 0.0f;
                    if ((int)this.frame > 14)
                    {
                        this.active = false;
                    }
                }
            }
            else if (this.type == 11 || this.type == 12 || (this.type == 13 || this.type == 61) || (this.type == 62 || this.type == 63 || (this.type == 99 || this.type == 220)) || (this.type == 221 || this.type == 222 || this.type >= 375 && this.type <= 377 || (this.type >= 435 && this.type <= 437 || this.type >= 861 && this.type <= 862)))
            {
                this.velocity.Y *= 0.98f;
                this.velocity.X *= 0.98f;
                this.scale      -= 0.007f;
                if ((double)this.scale < 0.1)
                {
                    this.scale = 0.1f;
                    this.alpha = (int)byte.MaxValue;
                }
            }
            else if (this.type == 16 || this.type == 17)
            {
                this.velocity.Y *= 0.98f;
                this.velocity.X *= 0.98f;
                this.scale      -= 0.01f;
                if ((double)this.scale < 0.1)
                {
                    this.scale = 0.1f;
                    this.alpha = (int)byte.MaxValue;
                }
            }
            else if (this.type == 331)
            {
                this.alpha      += 5;
                this.velocity.Y *= 0.95f;
                this.velocity.X *= 0.95f;
                this.rotation    = this.velocity.X * 0.1f;
            }
            else if (GoreID.Sets.SpecialAI[this.type] == 3)
            {
                if ((int)++this.frameCounter >= 8 && (double)this.velocity.Y > 0.200000002980232)
                {
                    this.frameCounter = (byte)0;
                    int num = (int)this.frame / 4;
                    if ((int)++this.frame >= 4 + num * 4)
                    {
                        this.frame = (byte)(num * 4);
                    }
                }
            }
            else if (GoreID.Sets.SpecialAI[this.type] != 1 && GoreID.Sets.SpecialAI[this.type] != 2)
            {
                if (this.type >= 907 && this.type <= 909)
                {
                    this.rotation    = 0.0f;
                    this.velocity.X *= 0.98f;
                    if ((double)this.velocity.Y > 0.0 && (double)this.velocity.Y < 1.0 / 1000.0)
                    {
                        this.velocity.Y = (float)((double)Main.rand.NextFloat() * -3.0 - 0.5);
                    }
                    if ((double)this.velocity.Y > -1.0)
                    {
                        this.velocity.Y -= 0.1f;
                    }
                    if ((double)this.scale < 1.0)
                    {
                        this.scale += 0.1f;
                    }
                    if ((int)++this.frameCounter >= 8)
                    {
                        this.frameCounter = (byte)0;
                        if ((int)++this.frame >= 3)
                        {
                            this.frame = (byte)0;
                        }
                    }
                }
                else if (this.type < 411 || this.type > 430)
                {
                    this.velocity.Y += 0.2f;
                }
            }
            this.rotation += this.velocity.X * 0.1f;
            if (this.type >= 580 && this.type <= 582)
            {
                this.rotation    = 0.0f;
                this.velocity.X *= 0.95f;
            }
            if (GoreID.Sets.SpecialAI[this.type] == 2)
            {
                if (this.timeLeft < 60)
                {
                    this.alpha += Main.rand.Next(1, 7);
                }
                else if (this.alpha > 100)
                {
                    this.alpha -= Main.rand.Next(1, 4);
                }
                if (this.alpha < 0)
                {
                    this.alpha = 0;
                }
                if (this.alpha > (int)byte.MaxValue)
                {
                    this.timeLeft = 0;
                }
                this.velocity.X = (float)(((double)this.velocity.X * 50.0 + (double)Main.windSpeed * 2.0 + (double)Main.rand.Next(-10, 11) * 0.100000001490116) / 51.0);
                float num1 = 0.0f;
                if ((double)this.velocity.X < 0.0)
                {
                    num1 = this.velocity.X * 0.2f;
                }
                this.velocity.Y = (float)(((double)this.velocity.Y * 50.0 - 0.349999994039536 + (double)num1 + (double)Main.rand.Next(-10, 11) * 0.200000002980232) / 51.0);
                this.rotation   = this.velocity.X * 0.6f;
                float num2 = -1f;
                if (Main.goreLoaded[this.type])
                {
                    Rectangle rectangle1 = new Rectangle((int)this.position.X, (int)this.position.Y, (int)((double)Main.goreTexture[this.type].Width * (double)this.scale), (int)((double)Main.goreTexture[this.type].Height * (double)this.scale));
                    for (int index = 0; index < (int)byte.MaxValue; ++index)
                    {
                        if (Main.player[index].active && !Main.player[index].dead)
                        {
                            Rectangle rectangle2 = new Rectangle((int)Main.player[index].position.X, (int)Main.player[index].position.Y, Main.player[index].width, Main.player[index].height);
                            if (rectangle1.Intersects(rectangle2))
                            {
                                this.timeLeft = 0;
                                num2          = Main.player[index].velocity.Length();
                                break;
                            }
                        }
                    }
                }
                if (this.timeLeft > 0)
                {
                    if (Main.rand.Next(2) == 0)
                    {
                        --this.timeLeft;
                    }
                    if (Main.rand.Next(50) == 0)
                    {
                        this.timeLeft -= 5;
                    }
                    if (Main.rand.Next(100) == 0)
                    {
                        this.timeLeft -= 10;
                    }
                }
                else
                {
                    this.alpha = (int)byte.MaxValue;
                    if (Main.goreLoaded[this.type] && (double)num2 != -1.0)
                    {
                        float num3 = (float)((double)Main.goreTexture[this.type].Width * (double)this.scale * 0.800000011920929);
                        float x    = this.position.X;
                        float y    = this.position.Y;
                        float num4 = (float)Main.goreTexture[this.type].Width * this.scale;
                        float num5 = (float)Main.goreTexture[this.type].Height * this.scale;
                        int   Type = 31;
                        for (int index1 = 0; (double)index1 < (double)num3; ++index1)
                        {
                            int index2 = Dust.NewDust(new Vector2(x, y), (int)num4, (int)num5, Type, 0.0f, 0.0f, 0, new Color(), 1f);
                            Main.dust[index2].velocity *= (float)((1.0 + (double)num2) / 3.0);
                            Main.dust[index2].noGravity = true;
                            Main.dust[index2].alpha     = 100;
                            Main.dust[index2].scale     = this.scale;
                        }
                    }
                }
            }
            if (this.type >= 411 && this.type <= 430)
            {
                this.alpha      = 50;
                this.velocity.X = (float)(((double)this.velocity.X * 50.0 + (double)Main.windSpeed * 2.0 + (double)Main.rand.Next(-10, 11) * 0.100000001490116) / 51.0);
                this.velocity.Y = (float)(((double)this.velocity.Y * 50.0 - 0.25 + (double)Main.rand.Next(-10, 11) * 0.200000002980232) / 51.0);
                this.rotation   = this.velocity.X * 0.3f;
                if (Main.goreLoaded[this.type])
                {
                    Rectangle rectangle1 = new Rectangle((int)this.position.X, (int)this.position.Y, (int)((double)Main.goreTexture[this.type].Width * (double)this.scale), (int)((double)Main.goreTexture[this.type].Height * (double)this.scale));
                    for (int index = 0; index < (int)byte.MaxValue; ++index)
                    {
                        if (Main.player[index].active && !Main.player[index].dead)
                        {
                            Rectangle rectangle2 = new Rectangle((int)Main.player[index].position.X, (int)Main.player[index].position.Y, Main.player[index].width, Main.player[index].height);
                            if (rectangle1.Intersects(rectangle2))
                            {
                                this.timeLeft = 0;
                            }
                        }
                    }
                    if (Collision.SolidCollision(this.position, (int)((double)Main.goreTexture[this.type].Width * (double)this.scale), (int)((double)Main.goreTexture[this.type].Height * (double)this.scale)))
                    {
                        this.timeLeft = 0;
                    }
                }
                if (this.timeLeft > 0)
                {
                    if (Main.rand.Next(2) == 0)
                    {
                        --this.timeLeft;
                    }
                    if (Main.rand.Next(50) == 0)
                    {
                        this.timeLeft -= 5;
                    }
                    if (Main.rand.Next(100) == 0)
                    {
                        this.timeLeft -= 10;
                    }
                }
                else
                {
                    this.alpha = (int)byte.MaxValue;
                    if (Main.goreLoaded[this.type])
                    {
                        float num1 = (float)((double)Main.goreTexture[this.type].Width * (double)this.scale * 0.800000011920929);
                        float x    = this.position.X;
                        float y    = this.position.Y;
                        float num2 = (float)Main.goreTexture[this.type].Width * this.scale;
                        float num3 = (float)Main.goreTexture[this.type].Height * this.scale;
                        int   Type = 176;
                        if (this.type >= 416 && this.type <= 420)
                        {
                            Type = 177;
                        }
                        if (this.type >= 421 && this.type <= 425)
                        {
                            Type = 178;
                        }
                        if (this.type >= 426 && this.type <= 430)
                        {
                            Type = 179;
                        }
                        for (int index1 = 0; (double)index1 < (double)num1; ++index1)
                        {
                            int index2 = Dust.NewDust(new Vector2(x, y), (int)num2, (int)num3, Type, 0.0f, 0.0f, 0, new Color(), 1f);
                            Main.dust[index2].noGravity = true;
                            Main.dust[index2].alpha     = 100;
                            Main.dust[index2].scale     = this.scale;
                        }
                    }
                }
            }
            else if (GoreID.Sets.SpecialAI[this.type] != 3 && GoreID.Sets.SpecialAI[this.type] != 1)
            {
                if (this.type >= 706 && this.type <= 717 || this.type == 943)
                {
                    if (this.type == 716)
                    {
                        float num1 = 0.6f;
                        float num2 = (int)this.frame != 0 ? ((int)this.frame != 1 ? ((int)this.frame != 2 ? ((int)this.frame != 3 ? ((int)this.frame != 4 ? ((int)this.frame != 5 ? ((int)this.frame != 6 ? ((int)this.frame > 9 ? ((int)this.frame != 10 ? ((int)this.frame != 11 ? ((int)this.frame != 12 ? ((int)this.frame != 13 ? ((int)this.frame != 14 ? 0.0f : num1 * 0.1f) : num1 * 0.2f) : num1 * 0.3f) : num1 * 0.4f) : num1 * 0.5f) : num1 * 0.5f) : num1 * 0.2f) : num1 * 0.4f) : num1 * 0.5f) : num1 * 0.4f) : num1 * 0.3f) : num1 * 0.2f) : num1 * 0.1f;
                        Lighting.AddLight(this.position + new Vector2(8f, 8f), 1f * num2, 0.5f * num2, 0.1f * num2);
                    }
                    Vector2 velocity = this.velocity;
                    this.velocity = Collision.TileCollision(this.position, this.velocity, 16, 14, false, false, 1);
                    if (this.velocity != velocity)
                    {
                        if ((int)this.frame < 10)
                        {
                            this.frame        = (byte)10;
                            this.frameCounter = (byte)0;
                            if (this.type != 716 && this.type != 717 && this.type != 943)
                            {
                                Main.PlaySound(39, (int)this.position.X + 8, (int)this.position.Y + 8, Main.rand.Next(2), 1f, 0.0f);
                            }
                        }
                    }
                    else if (Collision.WetCollision(this.position + this.velocity, 16, 14))
                    {
                        if ((int)this.frame < 10)
                        {
                            this.frame        = (byte)10;
                            this.frameCounter = (byte)0;
                            if (this.type != 716 && this.type != 717 && this.type != 943)
                            {
                                Main.PlaySound(39, (int)this.position.X + 8, (int)this.position.Y + 8, 2, 1f, 0.0f);
                            }
                            ((WaterShaderData)Filters.Scene["WaterDistortion"].GetShader()).QueueRipple(this.position + new Vector2(8f, 8f), 1f, RippleShape.Square, 0.0f);
                        }
                        int index1 = (int)((double)this.position.X + 8.0) / 16;
                        int index2 = (int)((double)this.position.Y + 14.0) / 16;
                        if (Main.tile[index1, index2] != null && (int)Main.tile[index1, index2].liquid > 0)
                        {
                            this.velocity  *= 0.0f;
                            this.position.Y = (float)(index2 * 16 - (int)Main.tile[index1, index2].liquid / 16);
                        }
                    }
                }
                else if (this.sticky)
                {
                    int num1 = 32;
                    if (Main.goreLoaded[this.type])
                    {
                        num1 = Main.goreTexture[this.type].Width;
                        if (Main.goreTexture[this.type].Height < num1)
                        {
                            num1 = Main.goreTexture[this.type].Height;
                        }
                    }
                    if (flag)
                    {
                        num1 = 4;
                    }
                    int num2 = (int)((double)num1 * 0.899999976158142);
                    this.velocity = Collision.TileCollision(this.position, this.velocity, (int)((double)num2 * (double)this.scale), (int)((double)num2 * (double)this.scale), false, false, 1);
                    if ((double)this.velocity.Y == 0.0)
                    {
                        if (flag)
                        {
                            this.velocity.X *= 0.94f;
                        }
                        else
                        {
                            this.velocity.X *= 0.97f;
                        }
                        if ((double)this.velocity.X > -0.01 && (double)this.velocity.X < 0.01)
                        {
                            this.velocity.X = 0.0f;
                        }
                    }
                    if (this.timeLeft > 0)
                    {
                        this.timeLeft -= GoreID.Sets.DisappearSpeed[this.type];
                    }
                    else
                    {
                        this.alpha += GoreID.Sets.DisappearSpeedAlpha[this.type];
                    }
                }
                else
                {
                    this.alpha += 2 * GoreID.Sets.DisappearSpeedAlpha[this.type];
                }
            }
            if (this.type >= 907 && this.type <= 909)
            {
                int num1 = 32;
                if (Main.goreLoaded[this.type])
                {
                    num1 = Main.goreTexture[this.type].Width;
                    if (Main.goreTexture[this.type].Height < num1)
                    {
                        num1 = Main.goreTexture[this.type].Height;
                    }
                }
                int     num2    = (int)((double)num1 * 0.899999976158142);
                Vector4 vector4 = Collision.SlopeCollision(this.position, this.velocity, num2, num2, 0.0f, true);
                this.position.X = vector4.X;
                this.position.Y = vector4.Y;
                this.velocity.X = vector4.Z;
                this.velocity.Y = vector4.W;
            }
            if (GoreID.Sets.SpecialAI[this.type] == 1)
            {
                if ((double)this.velocity.Y < 0.0)
                {
                    Vector2 Velocity = new Vector2(this.velocity.X, 0.6f);
                    int     num1     = 32;
                    if (Main.goreLoaded[this.type])
                    {
                        num1 = Main.goreTexture[this.type].Width;
                        if (Main.goreTexture[this.type].Height < num1)
                        {
                            num1 = Main.goreTexture[this.type].Height;
                        }
                    }
                    int     num2    = (int)((double)num1 * 0.899999976158142);
                    Vector2 vector2 = Collision.TileCollision(this.position, Velocity, (int)((double)num2 * (double)this.scale), (int)((double)num2 * (double)this.scale), false, false, 1);
                    vector2.X *= 0.97f;
                    if ((double)vector2.X > -0.01 && (double)vector2.X < 0.01)
                    {
                        vector2.X = 0.0f;
                    }
                    if (this.timeLeft > 0)
                    {
                        --this.timeLeft;
                    }
                    else
                    {
                        ++this.alpha;
                    }
                    this.velocity.X = vector2.X;
                }
                else
                {
                    this.velocity.Y += (float)Math.PI / 60f;
                    Vector2 Velocity = new Vector2(Vector2.UnitY.RotatedBy((double)this.velocity.Y, new Vector2()).X * 2f, Math.Abs(Vector2.UnitY.RotatedBy((double)this.velocity.Y, new Vector2()).Y) * 3f) * 2f;
                    int     num      = 32;
                    if (Main.goreLoaded[this.type])
                    {
                        num = Main.goreTexture[this.type].Width;
                        if (Main.goreTexture[this.type].Height < num)
                        {
                            num = Main.goreTexture[this.type].Height;
                        }
                    }
                    Vector2 vector2 = Velocity;
                    Vector2 v       = Collision.TileCollision(this.position, Velocity, (int)((double)num * (double)this.scale), (int)((double)num * (double)this.scale), false, false, 1);
                    if (v != vector2)
                    {
                        this.velocity.Y = -1f;
                    }
                    this.position += v;
                    this.rotation  = v.ToRotation() + 3.141593f;
                    if (this.timeLeft > 0)
                    {
                        --this.timeLeft;
                    }
                    else
                    {
                        ++this.alpha;
                    }
                }
            }
            else if (GoreID.Sets.SpecialAI[this.type] == 3)
            {
                if ((double)this.velocity.Y < 0.0)
                {
                    Vector2 Velocity = new Vector2(this.velocity.X, -0.2f);
                    int     num1     = 8;
                    if (Main.goreLoaded[this.type])
                    {
                        num1 = Main.goreTexture[this.type].Width;
                        if (Main.goreTexture[this.type].Height < num1)
                        {
                            num1 = Main.goreTexture[this.type].Height;
                        }
                    }
                    int     num2    = (int)((double)num1 * 0.899999976158142);
                    Vector2 vector2 = Collision.TileCollision(this.position, Velocity, (int)((double)num2 * (double)this.scale), (int)((double)num2 * (double)this.scale), false, false, 1);
                    vector2.X *= 0.94f;
                    if ((double)vector2.X > -0.01 && (double)vector2.X < 0.01)
                    {
                        vector2.X = 0.0f;
                    }
                    if (this.timeLeft > 0)
                    {
                        this.timeLeft -= GoreID.Sets.DisappearSpeed[this.type];
                    }
                    else
                    {
                        this.alpha += GoreID.Sets.DisappearSpeedAlpha[this.type];
                    }
                    this.velocity.X = vector2.X;
                }
                else
                {
                    this.velocity.Y += (float)Math.PI / 180f;
                    Vector2 Velocity = new Vector2(Vector2.UnitY.RotatedBy((double)this.velocity.Y, new Vector2()).X * 1f, Math.Abs(Vector2.UnitY.RotatedBy((double)this.velocity.Y, new Vector2()).Y) * 1f);
                    int     num      = 8;
                    if (Main.goreLoaded[this.type])
                    {
                        num = Main.goreTexture[this.type].Width;
                        if (Main.goreTexture[this.type].Height < num)
                        {
                            num = Main.goreTexture[this.type].Height;
                        }
                    }
                    Vector2 vector2 = Velocity;
                    Vector2 v       = Collision.TileCollision(this.position, Velocity, (int)((double)num * (double)this.scale), (int)((double)num * (double)this.scale), false, false, 1);
                    if (v != vector2)
                    {
                        this.velocity.Y = -1f;
                    }
                    this.position += v;
                    this.rotation  = v.ToRotation() + 1.570796f;
                    if (this.timeLeft > 0)
                    {
                        this.timeLeft -= GoreID.Sets.DisappearSpeed[this.type];
                    }
                    else
                    {
                        this.alpha += GoreID.Sets.DisappearSpeedAlpha[this.type];
                    }
                }
            }
            else
            {
                this.position += this.velocity;
            }
            if (this.alpha >= (int)byte.MaxValue)
            {
                this.active = false;
            }
            if ((double)this.light <= 0.0)
            {
                return;
            }
            float R = this.light * this.scale;
            float G = this.light * this.scale;
            float B = this.light * this.scale;

            if (this.type == 16)
            {
                B *= 0.3f;
                G *= 0.8f;
            }
            else if (this.type == 17)
            {
                G *= 0.6f;
                R *= 0.3f;
            }
            if (Main.goreLoaded[this.type])
            {
                Lighting.AddLight((int)(((double)this.position.X + (double)Main.goreTexture[this.type].Width * (double)this.scale / 2.0) / 16.0), (int)(((double)this.position.Y + (double)Main.goreTexture[this.type].Height * (double)this.scale / 2.0) / 16.0), R, G, B);
            }
            else
            {
                Lighting.AddLight((int)(((double)this.position.X + 32.0 * (double)this.scale / 2.0) / 16.0), (int)(((double)this.position.Y + 32.0 * (double)this.scale / 2.0) / 16.0), R, G, B);
            }
        }
Beispiel #2
0
 public static Gore NewGoreDirect(Vector2 Position, Vector2 Velocity, int Type, float Scale = 1f)
 {
     return(Main.gore[Gore.NewGore(Position, Velocity, Type, Scale)]);
 }
Beispiel #3
0
 public void SetMount(int m, Player mountedPlayer, bool faceLeft = false)
 {
     if (this._type == m || m <= -1 || m >= 7)
     {
         return;
     }
     if (m == 5 && mountedPlayer.wet)
     {
         return;
     }
     if (this._active)
     {
         mountedPlayer.ClearBuff(this._data.buff);
         if (this._type == 6)
         {
             mountedPlayer.ClearBuff(this._data.extraBuff);
             mountedPlayer.cartFlip           = false;
             mountedPlayer.fullRotation       = 0f;
             mountedPlayer.fullRotationOrigin = Vector2.Zero;
             mountedPlayer.lastBoost          = Vector2.Zero;
         }
     }
     else
     {
         this._active = true;
     }
     this._flyTime    = 0;
     this._type       = m;
     this._data       = Mount.mounts[m];
     this._fatigueMax = (float)this._data.fatigueMax;
     if (this._type == 6 && !faceLeft)
     {
         mountedPlayer.AddBuff(this._data.extraBuff, 3600, true);
         this._flipDraw = true;
     }
     else
     {
         mountedPlayer.AddBuff(this._data.buff, 3600, true);
         this._flipDraw = false;
     }
     mountedPlayer.position.Y = mountedPlayer.position.Y + (float)mountedPlayer.height;
     mountedPlayer.height     = 42 + this._data.heightBoost;
     mountedPlayer.position.Y = mountedPlayer.position.Y - (float)mountedPlayer.height;
     if (Main.netMode != 2)
     {
         for (int i = 0; i < 100; i++)
         {
             if (this._type == 6)
             {
                 if (i % 10 == 0)
                 {
                     int type = Main.rand.Next(61, 64);
                     int num  = Gore.NewGore(new Vector2(mountedPlayer.position.X - 20f, mountedPlayer.position.Y), Vector2.Zero, type, 1f);
                     Main.gore[num].alpha    = 100;
                     Main.gore[num].velocity = Vector2.Transform(new Vector2(1f, 0f), Matrix.CreateRotationZ((float)(Main.rand.NextDouble() * 6.2831854820251465)));
                 }
             }
             else
             {
                 int num2 = Dust.NewDust(new Vector2(mountedPlayer.position.X - 20f, mountedPlayer.position.Y), mountedPlayer.width + 40, mountedPlayer.height, this._data.spawnDust, 0f, 0f, 0, default(Color), 1f);
                 Main.dust[num2].scale += (float)Main.rand.Next(-10, 21) * 0.01f;
                 if (Main.rand.Next(2) == 0)
                 {
                     Main.dust[num2].scale    *= 1.3f;
                     Main.dust[num2].noGravity = true;
                 }
                 else
                 {
                     Main.dust[num2].velocity *= 0.5f;
                 }
                 Main.dust[num2].velocity += mountedPlayer.velocity * 0.8f;
             }
         }
     }
     if (mountedPlayer.whoAmi == Main.myPlayer)
     {
         NetMessage.SendData(13, -1, -1, "", mountedPlayer.whoAmi, 0f, 0f, 0f, 0);
     }
 }