Пример #1
0
        public override void GuardianPostDrawScript(TerraGuardian guardian, Vector2 DrawPosition, Color color, Color armorColor, float Rotation, Vector2 Origin, float Scale, SpriteEffects seffect)
        {
            CilleData data = (CilleData)guardian.Data;

            if (data.InBeastState)
            {
                GuardianDrawData gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, sprites.GetExtraTexture(MurderFaceID), DrawPosition, guardian.GetAnimationFrameRectangle(guardian.BodyAnimationFrame), Color.White, Rotation, Origin, Scale, seffect);
                InjectTextureAfter(GuardianDrawData.TextureType.TGBody, gdd);
            }
            switch (guardian.OutfitID)
            {
            case DefaultOutfitID:
            {
                Texture2D OutfitTexture    = sprites.GetExtraTexture(DefaultOutfitBodyID),
                          LeftArmTexture   = sprites.GetExtraTexture(DefaultOutfitLeftArmID),
                          RightArmTexture  = sprites.GetExtraTexture(DefaultOutfitRightArmID),
                          BodyFrontTexture = sprites.GetExtraTexture(DefaultOutfitBodyFrontID);
                GuardianDrawData gdd       = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, OutfitTexture, DrawPosition, guardian.GetAnimationFrameRectangle(guardian.BodyAnimationFrame), color, Rotation, Origin, Scale, seffect);
                InjectTextureAfter(GuardianDrawData.TextureType.TGBody, gdd);
                if (guardian.Base.BodyFrontFrameSwap.ContainsKey(guardian.BodyAnimationFrame))
                {
                    gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, BodyFrontTexture, DrawPosition, guardian.GetAnimationFrameRectangle(BodyFrontFrameSwap[guardian.BodyAnimationFrame]), color, Rotation, Origin, Scale, seffect);
                    InjectTextureAfter(GuardianDrawData.TextureType.TGBodyFront, gdd);
                }
                gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, LeftArmTexture, DrawPosition, guardian.GetAnimationFrameRectangle(guardian.LeftArmAnimationFrame), color, Rotation, Origin, Scale, seffect);
                InjectTextureAfter(GuardianDrawData.TextureType.TGLeftArm, gdd);
                gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, RightArmTexture, DrawPosition, guardian.GetAnimationFrameRectangle(guardian.RightArmAnimationFrame), color, Rotation, Origin, Scale, seffect);
                InjectTextureAfter(GuardianDrawData.TextureType.TGRightArm, gdd);
            }
            break;
            }
        }
Пример #2
0
 public override void Draw(TerraGuardian guardian)
 {
     if (Step == 2 && guardian.Inventory[ItemSlot].type > 0)
     {
         Vector2 ItemSpawnPosition = guardian.GetRightHandPosition(guardian.Base.ItemUseFrames[0]);
         if (Formally)
         {
             GuardianDrawData gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, Main.itemTexture[guardian.Inventory[ItemSlot].type], ItemSpawnPosition - Main.screenPosition, null, Color.White);
             TerraGuardian.DrawBehind.Add(gdd);
         }
         else
         {
             float   AnimationPercentage = Time * (1f / 60);
             Vector2 Destination         = Vector2.Zero;
             if (player != null)
             {
                 Destination = player.Center;
             }
             else
             {
                 Destination = tg.CenterPosition;
             }
             ItemSpawnPosition = ItemSpawnPosition + (Destination - ItemSpawnPosition) * AnimationPercentage - Main.screenPosition;
             GuardianDrawData gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, Main.itemTexture[guardian.Inventory[ItemSlot].type], ItemSpawnPosition, null, Color.White);
             TerraGuardian.DrawBehind.Add(gdd);
         }
     }
 }
Пример #3
0
        public GuardianDrawData[] DrawIntestine(TerraGuardian Guardian, Vector2 ChainEndPosition)
        {
            Vector2 ChainStartPosition = Guardian.CenterPosition;

            ChainStartPosition.X -= 8 * Guardian.Direction;
            ChainStartPosition.Y -= 8;
            float DifX = ChainStartPosition.X - ChainEndPosition.X, DifY = ChainStartPosition.Y - ChainEndPosition.Y;
            bool  DrawMoreChain          = true;
            float Rotation               = (float)Math.Atan2(DifY, DifX) - 1.57f;
            List <GuardianDrawData> gdds = new List <GuardianDrawData>();

            while (DrawMoreChain)
            {
                float sqrt = (float)Math.Sqrt(DifX * DifX + DifY * DifY);
                if (sqrt < 40)
                {
                    DrawMoreChain = false;
                }
                else
                {
                    sqrt  = (float)Main.chain12Texture.Height / sqrt;
                    DifX *= sqrt;
                    DifY *= sqrt;
                    ChainEndPosition.X += DifX;
                    ChainEndPosition.Y += DifY;
                    DifX = ChainStartPosition.X - ChainEndPosition.X;
                    DifY = ChainStartPosition.Y - ChainEndPosition.Y;
                    Color            color = Lighting.GetColor((int)ChainEndPosition.X / 16, (int)ChainEndPosition.Y / 16);
                    GuardianDrawData gdd   = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, Main.chain12Texture, ChainEndPosition - Main.screenPosition, null, color, Rotation, new Vector2(Main.chain12Texture.Width * 0.5f, Main.chain12Texture.Height * 0.5f), 1f, Microsoft.Xna.Framework.Graphics.SpriteEffects.None);
                    gdds.Add(gdd);
                    //Main.spriteBatch.Draw(Main.chain12Texture, ChainEndPosition - Main.screenPosition, null, color, Rotation, new Vector2(Main.chain12Texture.Width * 0.5f, Main.chain12Texture.Height * 0.5f), 1f, Microsoft.Xna.Framework.Graphics.SpriteEffects.None, 0f);
                }
            }
            return(gdds.ToArray());
        }
Пример #4
0
        public override void ModifyDrawDatas(List <GuardianDrawData> dds, Vector2 Position, Rectangle BodyRect, Rectangle LArmRect, Rectangle RArmRect, Vector2 Origin, Color color, SpriteEffects seffects)
        {
            GuardianDrawData outfitbody = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, Base.sprites.GetExtraTexture(Companions.CilleBase.DefaultOutfitBodyID),
                                                               Position, BodyRect, color, npc.rotation, Origin, npc.scale, seffects);
            GuardianDrawData outfitleftarm = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, Base.sprites.GetExtraTexture(Companions.CilleBase.DefaultOutfitLeftArmID),
                                                                  Position, LArmRect, color, npc.rotation, Origin, npc.scale, seffects);
            GuardianDrawData outfitrightarm = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, Base.sprites.GetExtraTexture(Companions.CilleBase.DefaultOutfitRightArmID),
                                                                   Position, RArmRect, color, npc.rotation, Origin, npc.scale, seffects);

            for (int i = dds.Count - 1; i >= 0; i--)
            {
                switch (dds[i].textureType)
                {
                case GuardianDrawData.TextureType.TGLeftArm:
                    dds.Insert(i + 1, outfitleftarm);
                    break;

                case GuardianDrawData.TextureType.TGRightArm:
                    dds.Insert(i + 1, outfitrightarm);
                    break;

                case GuardianDrawData.TextureType.TGBody:
                    dds.Insert(i + 1, outfitbody);
                    break;
                }
            }
        }
Пример #5
0
        public override void GuardianPostDrawScript(TerraGuardian guardian, Vector2 DrawPosition, Color color, Color armorColor, float Rotation, Vector2 Origin, float Scale, SpriteEffects seffect)
        {
            Rectangle rect      = new Rectangle(0, 0, 40, 58);
            Vector2   Position  = new Vector2(DrawPosition.X, DrawPosition.Y);
            Vector2   NewOrigin = new Vector2(Origin.X, Origin.Y);

            Position.Y -= 2 * guardian.GravityDirection;
            //Position.X += 2 * guardian.Direction;
            byte SkinID = guardian.SkinID;

            if (TerraGuardian.HeadSlot > 0)
            {
                SkinID = 1;
            }
            if (guardian.ItemAnimationTime == 0 &&
                ((guardian.LeftArmAnimationFrame >= 7 && guardian.LeftArmAnimationFrame < 10) ||
                 (guardian.LeftArmAnimationFrame >= 14 && guardian.LeftArmAnimationFrame < 17)))
            {
                Position.Y -= 2 * guardian.GravityDirection;
            }
            rect.Y = rect.Height * (SkinID == 1 ? 2 : 1);
            Texture2D        texture = sprites.GetExtraTexture(HeadTextureID);
            GuardianDrawData gdd     = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, texture, Position, rect,
                                                            color, Rotation, NewOrigin, Scale, seffect);

            InjectTextureAfter(GuardianDrawData.TextureType.PlHead, gdd);
            rect.Y = 0;
            gdd    = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, texture, Position, rect,
                                          color, Rotation, NewOrigin, Scale, seffect);
            InjectTextureAfter(GuardianDrawData.TextureType.PlHead, gdd);
            RemoveTextureDrawData(GuardianDrawData.TextureType.PlEye);
            RemoveTextureDrawData(GuardianDrawData.TextureType.PlEyeWhite);
        }
Пример #6
0
        public override void ModifyDrawing(TerraGuardian tg, GuardianSpecialAttackData d)
        {
            CaptainStenchBase.CaptainStenchData data =
                (CaptainStenchBase.CaptainStenchData)tg.Data;
            switch (data.SwordID)
            {
            case CaptainStenchBase.RubyFalchion:
            {
                if (d.Step >= 4)
                {
                    int       WhipFrame = d.Step - 4;
                    Texture2D texture   = tg.GetExtraTexture(CaptainStenchBase.RubyGPTextureID);
                    if (WhipFrame >= 0 && WhipFrame < 6)
                    {
                        Vector2 WhipPos = tg.CenterPosition - Main.screenPosition;
                        WhipPos.X += 40 * tg.Direction;
                        GuardianDrawData gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, texture, WhipPos,
                                                                    new Rectangle(160 * WhipFrame, 0, 160, 160), Color.White, 0f, new Vector2(80, 80), tg.Scale,
                                                                    (tg.LookingLeft ? SpriteEffects.FlipHorizontally : SpriteEffects.None));
                        TerraGuardian.DrawFront.Add(gdd);
                    }
                    if (tg.HasBuff(Terraria.ModLoader.ModContent.BuffType <Buffs.DrainingHealth>()))
                    {
                        int SiphonFrame = d.Step - 5;
                        if (SiphonFrame >= 0 && SiphonFrame < 7)
                        {
                            GuardianDrawData gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, texture, tg.Position - Main.screenPosition,
                                                                        new Rectangle(160 * SiphonFrame, 160, 160, 160), Color.White, 0f, new Vector2(80, 160), tg.Scale,
                                                                        (tg.LookingLeft ? SpriteEffects.FlipHorizontally : SpriteEffects.None));
                            TerraGuardian.DrawFront.Add(gdd);
                        }
                    }
                }
            }
            break;

            case CaptainStenchBase.DiamondFalchion:
            {
                int FlashFrame = (int)(((d.Step - 4) * AnimationTime + d.Time) * (1f / AnimationTime) * 0.5f);
                if (FlashFrame >= 0 && FlashFrame < 8)
                {
                    Texture2D        texture = tg.GetExtraTexture(CaptainStenchBase.DiamondGPTextureID);
                    GuardianDrawData gdd     = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, texture, tg.CenterPosition - Main.screenPosition,
                                                                    new Rectangle(200 * FlashFrame, 0, 200, 200), Color.White, 0f, new Vector2(100, 100), tg.Scale,
                                                                    (tg.LookingLeft ? SpriteEffects.FlipHorizontally : SpriteEffects.None));
                    TerraGuardian.DrawFront.Add(gdd);
                    FlashFrame++;
                    gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, texture, tg.CenterPosition - Main.screenPosition,
                                               new Rectangle(200 * FlashFrame, 200, 200, 200), Color.White, 0f, new Vector2(100, 100), tg.Scale,
                                               (tg.LookingLeft ? SpriteEffects.FlipHorizontally : SpriteEffects.None));
                    TerraGuardian.DrawFront.Add(gdd);
                }
            }
            break;
            }
        }
Пример #7
0
        public override void ModifyDrawDatas(List <GuardianDrawData> dds, Vector2 Position, Rectangle BodyRect, Rectangle LArmRect, Rectangle RArmRect, Vector2 Origin, Color color, SpriteEffects seffects)
        {
            float PlasmaOpacity = 1f - (float)(color.R + color.G + color.B) / (255 * 3);
            bool  RightArmPlaced = false, BodyPlaced = false, LeftArmPlaced = false;

            for (int i = 0; i < dds.Count; i++)
            {
                switch (dds[i].textureType)
                {
                case GuardianDrawData.TextureType.TGRightArm:
                    if (!RightArmPlaced)
                    {
                        dds[i].color *= PlasmaOpacity;
                        GuardianDrawData gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra,
                                                                    Base.sprites.GetExtraTexture(Companions.LiebreBase.SkeletonRightArmID), Position,
                                                                    RArmRect, color, npc.rotation, Origin, npc.scale, seffects);
                        dds.Insert(i, gdd);
                        RightArmPlaced = true;
                        gdd            = DrawEquippedScythe(Position, color, 0, Origin, npc.scale, seffects);
                        dds.Insert(i, gdd);
                        RightArmPlaced = true;
                    }
                    break;

                case GuardianDrawData.TextureType.TGBody:
                    if (!BodyPlaced)
                    {
                        dds[i].color *= PlasmaOpacity;
                        GuardianDrawData gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra,
                                                                    Base.sprites.GetExtraTexture(Companions.LiebreBase.SkeletonBodyID), Position,
                                                                    BodyRect, color, npc.rotation, Origin, npc.scale, seffects);
                        dds.Insert(i, gdd);
                        BodyPlaced = true;
                    }
                    break;

                case GuardianDrawData.TextureType.TGLeftArm:
                    if (!LeftArmPlaced)
                    {
                        dds[i].color *= PlasmaOpacity;
                        GuardianDrawData gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra,
                                                                    Base.sprites.GetExtraTexture(Companions.LiebreBase.SkeletonLeftArmID), Position,
                                                                    LArmRect, color, npc.rotation, Origin, npc.scale, seffects);
                        dds.Insert(i, gdd);
                        LeftArmPlaced = true;
                    }
                    break;
                }
            }
        }
Пример #8
0
 public override void ModifyDrawDatas(List <GuardianDrawData> dds, Vector2 Position, Rectangle BodyRect, Rectangle LArmRect, Rectangle RArmRect, Vector2 Origin, Color color, SpriteEffects seffects)
 {
     if (npc.direction > -1)
     {
         GuardianDrawData Scouter = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, Base.sprites.GetExtraTexture(Companions.CaptainStenchBase.ScouterTextureID), Position, BodyRect, color, npc.rotation, Origin, npc.scale, seffects);
         for (int i = 0; i < dds.Count; i++)
         {
             if (dds[i].textureType == GuardianDrawData.TextureType.TGBody)
             {
                 dds.Insert(i + 1, Scouter);
                 break;
             }
         }
     }
 }
Пример #9
0
        public override void ModifyDrawing(TerraGuardian tg, GuardianSpecialAttackData data)
        {
            if (data.Step == 1)
            {
                Texture2D blade = tg.Base.sprites.GetExtraTexture(BaphaBase.HellSplitterTextureID);
                Vector2   Pivot = new Vector2(10, 102);
                if (tg.LookingLeft)
                {
                    Pivot.X = 88 - Pivot.X;
                }
                float Rotation = (MathHelper.ToRadians(-90) + (float)(FrameTime + Frame * 6) * (1f / (6 * 6)) * (MathHelper.ToRadians(210f))) * tg.Direction;

                GuardianDrawData gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, blade, tg.GetGuardianLeftHandPosition - Main.screenPosition, new Rectangle(Frame * 88, AwakenedVersion ? 100 : 0, 88, 100), Color.White, Rotation, Pivot, tg.Scale, tg.LookingLeft ? SpriteEffects.FlipHorizontally : SpriteEffects.None);
                tg.Base.InjectTextureAfter(GuardianDrawData.TextureType.TGRightArm, gdd);
            }
        }
Пример #10
0
        public override void GuardianModifyDrawHeadScript(TerraGuardian guardian, Vector2 DrawPosition, Color color, float Scale, SpriteEffects seffect, Vector2 Origin, ref List <GuardianDrawData> gdds)
        {
            Texture2D texture  = sprites.GetExtraTexture(HeadTextureID);
            Vector2   Position = DrawPosition;

            Position.Y -= 2;
            byte SkinID = guardian.SkinID;

            if (TerraGuardian.HeadSlot > 0)
            {
                SkinID = 1;
            }
            for (int i = gdds.Count - 1; i >= 0; i--)
            {
                if (gdds[i].textureType == GuardianDrawData.TextureType.PlEye ||
                    gdds[i].textureType == GuardianDrawData.TextureType.PlEyeWhite)
                {
                    gdds.RemoveAt(i);
                }
                if (gdds[i].textureType == GuardianDrawData.TextureType.PlHead)
                {
                    Rectangle        rect = new Rectangle(0, 0, 40, 58);
                    GuardianDrawData gdd  = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, texture, Position, rect,
                                                                 Color.White, 0f, Origin, Scale, seffect);
                    if (i + 1 >= gdds.Count)
                    {
                        gdds.Add(gdd);
                    }
                    else
                    {
                        gdds.Insert(i + 1, gdd);
                    }
                    rect.Y = rect.Height * (SkinID == 1 ? 2 : 1);
                    gdd    = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, texture, Position, rect,
                                                  Color.White, 0f, Origin, Scale, seffect);
                    if (i + 2 >= gdds.Count)
                    {
                        gdds.Add(gdd);
                    }
                    else
                    {
                        gdds.Insert(i + 2, gdd);
                    }
                }
            }
        }
Пример #11
0
        public override void GuardianPostDrawScript(TerraGuardian guardian, Vector2 DrawPosition, Color color, Color armorColor, float Rotation, Vector2 Origin, float Scale, SpriteEffects seffect)
        {
            Vector2 HaloDrawPosition = Vector2.Zero;

            switch (guardian.BodyAnimationFrame)
            {
            default:
                HaloDrawPosition = new Vector2(37, 15);
                break;

            case 15:
            case 16:
            case 17:
            case 18:
                HaloDrawPosition = new Vector2(24, 10);
                break;

            case 19:
            case 20:
                HaloDrawPosition = new Vector2(39, 35);
                break;
            }
            HaloDrawPosition.Y -= 7;
            HaloDrawPosition.X -= guardian.Base.SpriteWidth * 0.25f - 1;
            if (guardian.LookingLeft)
            {
                HaloDrawPosition.X *= -1;
            }
            HaloDrawPosition.Y -= guardian.Base.SpriteHeight * 0.5f;
            HaloDrawPosition    = HaloDrawPosition * 2 * guardian.Scale + DrawPosition;
            GuardianDrawData gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, sprites.GetExtraTexture(HaloTextureID), HaloDrawPosition, new Rectangle(0, 0, 26, 12), Color.White, Rotation, new Vector2(13, 6), Scale, SpriteEffects.None);

            TerraGuardian.DrawFront.Add(gdd);
            if (MainMod.NemesisFadeEffect > 0)
            {
                float TransparencyValue = (float)MainMod.NemesisFadeEffect / (MainMod.NemesisFadingTime * 0.5f);
                if (TransparencyValue > 1f)
                {
                    TransparencyValue = 1f - TransparencyValue + 1f;
                }
                gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, sprites.GetExtraTexture(HaloTextureID), HaloDrawPosition, new Rectangle(26, 0, 26, 12), Color.White * TransparencyValue, Rotation, new Vector2(13, 6), Scale, SpriteEffects.None);
                TerraGuardian.DrawFront.Add(gdd);
            }
        }
Пример #12
0
        public override void ModifyDrawDatas(List <GuardianDrawData> dds, Vector2 Position, Rectangle BodyRect, Rectangle LArmRect, Rectangle RArmRect, Vector2 Origin, Color color, Microsoft.Xna.Framework.Graphics.SpriteEffects seffects)
        {
            Microsoft.Xna.Framework.Graphics.Texture2D BagTexture = Base.sprites.GetExtraTexture(Companions.BreeBase.BagTextureID);
            Rectangle backrect  = BodyRect,
                      frontrect = BodyRect;

            backrect.Y += backrect.Height;
            GuardianDrawData bagback  = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, BagTexture, Position, backrect, color, npc.rotation, Origin, npc.scale, seffects),
                             bagfront = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, BagTexture, Position, frontrect, color, npc.rotation, Origin, npc.scale, seffects);

            for (int i = dds.Count - 1; i >= 0; i--)
            {
                if (dds[i].textureType == GuardianDrawData.TextureType.TGBody)
                {
                    dds.Insert(i + 1, bagfront);
                    dds.Insert(i, bagback);
                }
            }
        }
Пример #13
0
        public override GuardianDrawData DrawItem(Color drawColor)
        {
            if (AiStage != 0)
            {
                return(null);
            }
            Vector2 Origin = new Vector2(3, 6);
            int     StickPositionX, StickPositionY;

            Base.GetBetweenHandsPosition(Base.ItemUseFrames[2], out StickPositionX, out StickPositionY);
            if (npc.direction < 0)
            {
                StickPositionX = Base.SpriteWidth - StickPositionX;
                Origin.X       = Main.itemTexture[Terraria.ID.ItemID.MarshmallowonaStick].Width - Origin.X;
            }
            StickPositionX -= (int)(Base.SpriteWidth * 0.5f);
            StickPositionY -= Base.SpriteHeight;
            GuardianDrawData dd = new GuardianDrawData(GuardianDrawData.TextureType.MainHandItem, Main.itemTexture[Terraria.ID.ItemID.MarshmallowonaStick], npc.Bottom + new Vector2(StickPositionX, StickPositionY) - Main.screenPosition, null, drawColor, 0f, Origin, 1f, (npc.direction < 0 ? Microsoft.Xna.Framework.Graphics.SpriteEffects.FlipHorizontally : Microsoft.Xna.Framework.Graphics.SpriteEffects.None));

            return(dd);
        }
Пример #14
0
        private List <GuardianDrawData> GetTerrarianDrawData(Vector2 DrawPos, SpriteEffects seffects, Color drawColor, bool FrontPart)
        {
            GuardianBase.TerrarianCompanionInfos ci = Base.TerrarianInfo;
            List <GuardianDrawData> dds             = new List <GuardianDrawData>();
            Rectangle legrect  = new Rectangle(0, 56 * BodyAnimationFrame, 40, 56),
                      bodyrect = new Rectangle(0, 56 * LeftArmAnimationFrame, 40, 56),
                      hairrect = new Rectangle(0, 56 * LeftArmAnimationFrame - 336, 40, 56),
                      eyerect  = new Rectangle(0, 0, hairrect.Width, hairrect.Height);

            if (hairrect.Y < 0)
            {
                hairrect.Y = 0;
            }
            int     SkinVariant     = ci.GetSkinVariant(Base.Male);
            Vector2 Origin          = new Vector2(20, 56);
            Color   HairColor       = ci.HairColor,
                    EyesColor       = ci.EyeColor,
                    EyesWhiteColor  = Color.White,
                    SkinColor       = ci.SkinColor,
                    UndershirtColor = ci.UnderShirtColor,
                    ShirtColor      = ci.ShirtColor,
                    PantsColor      = ci.PantsColor,
                    ShoesColor      = ci.ShoeColor,
                    ArmorColoring   = Color.White;
            //Lighting Change
            int TileX = (int)((npc.position.X + npc.width * 0.5f) * (1f / 16)),
                TileY = (int)((npc.position.Y + npc.height * 0.5f) * (1f / 16));

            HairColor       = Lighting.GetColor(TileX, TileY, HairColor);
            EyesColor       = Lighting.GetColor(TileX, TileY, EyesColor);
            EyesWhiteColor  = Lighting.GetColor(TileX, TileY, EyesWhiteColor);
            SkinColor       = Lighting.GetColor(TileX, TileY, SkinColor);
            UndershirtColor = Lighting.GetColor(TileX, TileY, UndershirtColor);
            ShirtColor      = Lighting.GetColor(TileX, TileY, ShirtColor);
            PantsColor      = Lighting.GetColor(TileX, TileY, PantsColor);
            ShoesColor      = Lighting.GetColor(TileX, TileY, ShoesColor);
            ArmorColoring   = Lighting.GetColor(TileX, TileY, ArmorColoring);
            int  LegSlot = ci.DefaultLeggings, BodySlot = ci.DefaultArmor, HeadSlot = ci.DefaultHelmet;
            bool IsTransformed  = HeadSlot >= 38 && HeadSlot <= 39;
            bool DrawNormalHair = HeadSlot == 0 || HeadSlot == 10 || HeadSlot == 12 || HeadSlot == 28 || HeadSlot == 62 || HeadSlot == 97 || HeadSlot == 106 || HeadSlot == 113 || HeadSlot == 116 || HeadSlot == 119 || HeadSlot == 133 || HeadSlot == 138 || HeadSlot == 139 || HeadSlot == 163 || HeadSlot == 178 || HeadSlot == 181 || HeadSlot == 191 || HeadSlot == 198,
                 DrawAltHair    = HeadSlot == 161 || HeadSlot == 14 || HeadSlot == 15 || HeadSlot == 16 || HeadSlot == 18 || HeadSlot == 21 || HeadSlot == 24 || HeadSlot == 25 || HeadSlot == 26 || HeadSlot == 40 || HeadSlot == 44 || HeadSlot == 51 || HeadSlot == 56 || HeadSlot == 59 || HeadSlot == 60 || HeadSlot == 67 || HeadSlot == 68 || HeadSlot == 69 || HeadSlot == 114 || HeadSlot == 121 || HeadSlot == 126 || HeadSlot == 130 || HeadSlot == 136 || HeadSlot == 140 || HeadSlot == 145 || HeadSlot == 158 || HeadSlot == 159 || HeadSlot == 184 || HeadSlot == 190 || HeadSlot == 92 || HeadSlot == 195;
            bool HideLegs       = LegSlot == 143 || LegSlot == 106 || LegSlot == 140;
            bool ShowHair       = HeadSlot != 202 && HeadSlot != 201;

            if (!DrawNormalHair && HeadSlot != 23 && HeadSlot != 14 && HeadSlot != 56 && HeadSlot != 158 && HeadSlot != 28 && HeadSlot != 201)
            {
                DrawNormalHair = true;
            }
            if (IsTransformed)
            {
                ArmorColoring = SkinColor;
            }
            GuardianDrawData dd;

            if (!HideLegs)
            {
                dd = new GuardianDrawData(GuardianDrawData.TextureType.PlLegSkin, Main.playerTextures[SkinVariant, Terraria.ID.PlayerTextureID.LegSkin], DrawPos, legrect, SkinColor, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
            }
            dd = new GuardianDrawData(GuardianDrawData.TextureType.PlBodySkin, Main.playerTextures[SkinVariant, Terraria.ID.PlayerTextureID.TorsoSkin], DrawPos, bodyrect, SkinColor, npc.rotation, Origin, npc.scale, seffects);
            dds.Add(dd);
            if (LegSlot > 0)
            {
                dd = new GuardianDrawData(GuardianDrawData.TextureType.PlArmorLegs, Main.armorLegTexture[LegSlot], DrawPos, legrect, ArmorColoring, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
            }
            else
            {
                dd = new GuardianDrawData(GuardianDrawData.TextureType.PlDefaultPants, Main.playerTextures[SkinVariant, Terraria.ID.PlayerTextureID.Pants], DrawPos, legrect, PantsColor, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
                dd = new GuardianDrawData(GuardianDrawData.TextureType.PlDefaultShoes, Main.playerTextures[SkinVariant, Terraria.ID.PlayerTextureID.Shoes], DrawPos, legrect, ShoesColor, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
            }
            if (BodySlot > 0)
            {
                dd = new GuardianDrawData(GuardianDrawData.TextureType.PlArmorBody, Main.armorBodyTexture[BodySlot], DrawPos, bodyrect, ArmorColoring, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
            }
            else
            {
                dd = new GuardianDrawData(GuardianDrawData.TextureType.PlDefaultUndershirt, Main.playerTextures[SkinVariant, Terraria.ID.PlayerTextureID.Undershirt], DrawPos, bodyrect, UndershirtColor, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
                dd = new GuardianDrawData(GuardianDrawData.TextureType.PlDefaultShirt, Main.playerTextures[SkinVariant, Terraria.ID.PlayerTextureID.Shirt], DrawPos, bodyrect, ShirtColor, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
            }
            dd = new GuardianDrawData(GuardianDrawData.TextureType.PlHead, Main.playerTextures[SkinVariant, Terraria.ID.PlayerTextureID.Head], DrawPos, bodyrect, SkinColor, npc.rotation, Origin, npc.scale, seffects);
            dds.Add(dd);
            float EyePositionBonus = 0;

            if ((hairrect.Y + 336 >= 7 * hairrect.Height && hairrect.Y + 336 < 10 * hairrect.Height) ||
                hairrect.Y + 336 >= 14 * hairrect.Height && hairrect.Y + 336 < 17 * hairrect.Height)
            {
                EyePositionBonus -= 2;
            }
            DrawPos.Y += EyePositionBonus;
            dd         = new GuardianDrawData(GuardianDrawData.TextureType.PlEye, MainMod.EyeTexture, DrawPos, new Rectangle(40 * 0, 56, 40, 56), EyesColor, npc.rotation, Origin, npc.scale, seffects);
            dds.Add(dd);
            dd = new GuardianDrawData(GuardianDrawData.TextureType.PlEyeWhite, MainMod.EyeTexture, DrawPos, new Rectangle(40 * 0, 0, 40, 56), EyesWhiteColor, npc.rotation, Origin, npc.scale, seffects);
            dds.Add(dd);
            DrawPos.Y -= EyePositionBonus;
            //hair
            if (ShowHair && ci.HairStyle >= 0)
            {
                if (DrawNormalHair)
                {
                    dd = new GuardianDrawData(GuardianDrawData.TextureType.PlHair, Main.playerHairTexture[ci.HairStyle], DrawPos, hairrect, HairColor, npc.rotation, Origin, npc.scale, seffects);
                    dds.Add(dd);
                }
                else if (DrawAltHair)
                {
                    dd = new GuardianDrawData(GuardianDrawData.TextureType.PlHair, Main.playerHairAltTexture[ci.HairStyle], DrawPos, hairrect, HairColor, npc.rotation, Origin, npc.scale, seffects);
                    dds.Add(dd);
                }
            }
            if (HeadSlot > 0)
            {
                dd = new GuardianDrawData(GuardianDrawData.TextureType.PlArmorHead, Main.armorHeadTexture[HeadSlot], DrawPos, bodyrect, ArmorColoring, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
            }
            if (BodySlot > 0)
            {
                dd = new GuardianDrawData(GuardianDrawData.TextureType.PlArmorArm, Main.armorArmTexture[BodySlot], DrawPos, bodyrect, ArmorColoring, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
            }
            else
            {
                dd = new GuardianDrawData(GuardianDrawData.TextureType.PlBodyArmSkin, Main.playerTextures[SkinVariant, Terraria.ID.PlayerTextureID.ArmSkin], DrawPos, bodyrect, SkinColor, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
                dd = new GuardianDrawData(GuardianDrawData.TextureType.PlDefaultUndershirtArm, Main.playerTextures[SkinVariant, Terraria.ID.PlayerTextureID.ArmUndershirt], DrawPos, bodyrect, UndershirtColor, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
                dd = new GuardianDrawData(GuardianDrawData.TextureType.PlDefaultShirtArm, Main.playerTextures[SkinVariant, Terraria.ID.PlayerTextureID.ArmShirt], DrawPos, bodyrect, ShirtColor, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
                dd = new GuardianDrawData(GuardianDrawData.TextureType.PlHand, Main.playerTextures[SkinVariant, Terraria.ID.PlayerTextureID.ArmHand], DrawPos, bodyrect, SkinColor, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
            }
            return(dds);
        }
Пример #15
0
        public override void GuardianPostDrawScript(TerraGuardian guardian, Vector2 DrawPosition, Color color, Color armorColor, float Rotation, Vector2 Origin, float Scale, SpriteEffects seffect)
        {
            GuardianDrawData gdd;

            /*if (guardian.BodyAnimationFrame >= 22 && guardian.BodyAnimationFrame <= 28)
             * {
             *  if(guardian.AnimationTime >= HellGateAnimationFrameTime * 6)
             *  {
             *      TerraGuardian.DrawFront.Clear();
             *      TerraGuardian.DrawBehind.Clear();
             *  }
             *  if(guardian.AnimationTime < HellGateAnimationFrameTime * 13)
             *  {
             *      int Frame = (int)(guardian.AnimationTime / HellGateAnimationFrameTime);
             *      if(Frame > 6)
             *      {
             *          Frame = 6 - (Frame + 6); //6 - 12 + 6 = 0, 6 - 7 + 6 = 5
             *      }
             *      gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, sprites.GetExtraTexture(HellGateSpriteID), DrawPosition,
             *          new Rectangle(SpriteWidth * Frame, 0, SpriteWidth, SpriteHeight), Color.White, Rotation, Origin, Scale, SpriteEffects.None);
             *      TerraGuardian.DrawFront.Add(gdd);
             *  }
             * }*/
            bool Awakened = false;

            if (Awakened)
            {
                ReplaceTexture(GuardianDrawData.TextureType.TGBody, sprites.GetExtraTexture(AwakenedBodyTextureID));
                gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, sprites.GetExtraTexture(AwakenedBodyGlowTextureID), DrawPosition,
                                           guardian.GetAnimationFrameRectangle(guardian.BodyAnimationFrame), Color.White, Rotation, Origin, Scale, seffect);
                InjectTextureAfter(GuardianDrawData.TextureType.TGBody, gdd);
                gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, sprites.GetExtraTexture(AwakenedLeftArmGlowTextureID), DrawPosition,
                                           guardian.GetAnimationFrameRectangle(guardian.LeftArmAnimationFrame), Color.White, Rotation, Origin, Scale, seffect);
                InjectTextureAfter(GuardianDrawData.TextureType.TGLeftArm, gdd);
                gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, sprites.GetExtraTexture(AwakenedRightArmGlowTextureID), DrawPosition,
                                           guardian.GetAnimationFrameRectangle(guardian.RightArmAnimationFrame), Color.White, Rotation, Origin, Scale, seffect);
                InjectTextureAfter(GuardianDrawData.TextureType.TGRightArm, gdd);
                if (guardian.Base.BodyFrontFrameSwap.ContainsKey(guardian.BodyAnimationFrame))
                {
                    gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, sprites.GetExtraTexture(AwakenedBodyFrontGlowTextureID), DrawPosition,
                                               guardian.GetAnimationFrameRectangle(guardian.Base.BodyFrontFrameSwap[guardian.BodyAnimationFrame]), Color.White, Rotation, Origin, Scale, seffect);
                    InjectTextureAfter(GuardianDrawData.TextureType.TGBodyFront, gdd);
                }
                if (guardian.Base.RightArmFrontFrameSwap.ContainsKey(guardian.RightArmAnimationFrame))
                {
                    gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, sprites.GetExtraTexture(AwakenedRightArmFrontGlowTextureID), DrawPosition,
                                               guardian.GetAnimationFrameRectangle(guardian.Base.RightArmFrontFrameSwap[guardian.RightArmAnimationFrame]), Color.White, Rotation, Origin, Scale, seffect);
                    InjectTextureAfter(GuardianDrawData.TextureType.TGRightArmFront, gdd);
                }
                gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, sprites.GetExtraTexture(AwakenedWingRightTextureID), DrawPosition, guardian.GetAnimationFrameRectangle(guardian.BodyAnimationFrame),
                                           Color.White, Rotation, Origin, Scale, seffect);
                TerraGuardian.DrawBehind.Insert(0, gdd);
            }
            else
            {
                gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, sprites.GetExtraTexture(RightWingTextureID), DrawPosition, guardian.GetAnimationFrameRectangle(guardian.BodyAnimationFrame),
                                           color, Rotation, Origin, Scale, seffect);
                TerraGuardian.DrawBehind.Insert(0, gdd);
            }
            byte FlamesEffect = 255;

            if (guardian.KnockedOut && guardian.BodyAnimationFrame == 28)
            {
                TerraGuardian.DrawFront.Clear();
                TerraGuardian.DrawBehind.Clear();
                return;
            }
            if (guardian.LeftArmAnimationFrame >= 14 && guardian.LeftArmAnimationFrame < 17)
            {
                FlamesEffect = (byte)(guardian.LeftArmAnimationFrame - 14);
            }
            else if (guardian.LeftArmAnimationFrame >= 28 && guardian.LeftArmAnimationFrame < 32)
            {
                FlamesEffect = (byte)(guardian.LeftArmAnimationFrame - 28 + 10);
            }
            else if (guardian.BodyAnimationFrame >= 21 && guardian.BodyAnimationFrame < 28)
            {
                FlamesEffect = (byte)(guardian.BodyAnimationFrame - 21 + 3);
            }
            if (FlamesEffect < 255)
            {
                gdd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, sprites.GetExtraTexture(Awakened && FlamesEffect < 4 ? CrimsonFireEffectsTextureID : FireEffectsTextureID), DrawPosition,
                                           guardian.GetAnimationFrameRectangle(FlamesEffect), Color.White, Rotation, Origin, Scale, seffect);
                InjectTextureAfter(GuardianDrawData.TextureType.TGLeftArm, gdd);
            }
        }
Пример #16
0
        private List <GuardianDrawData> GetTerraGuardianDrawData(Vector2 DrawPos, SpriteEffects seffects, Color drawColor, bool FrontPart)
        {
            List <GuardianDrawData> dds = new List <GuardianDrawData>();
            Rectangle bodyrect          = new Rectangle(BodyAnimationFrame, 0, Base.SpriteWidth, Base.SpriteHeight),
                      bodyfrontrect     = new Rectangle(BodyAnimationFrame, 0, Base.SpriteWidth, Base.SpriteHeight),
                      leftarmrect       = new Rectangle(LeftArmAnimationFrame, 0, Base.SpriteWidth, Base.SpriteHeight),
                      rightarmrect      = new Rectangle(RightArmAnimationFrame, 0, Base.SpriteWidth, Base.SpriteHeight),
                      rightarmfrontrect = new Rectangle(RightArmAnimationFrame, 0, Base.SpriteWidth, Base.SpriteHeight);

            if (Base.SpecificBodyFrontFramePositions)
            {
                bodyfrontrect.X = Base.GetBodyFrontSprite(bodyfrontrect.X);
            }
            else
            {
                bodyfrontrect.X = -1;
            }
            if (Base.RightArmFrontFrameSwap.ContainsKey(RightArmAnimationFrame))
            {
                rightarmfrontrect.X = Base.RightArmFrontFrameSwap[RightArmAnimationFrame];
            }
            else
            {
                rightarmfrontrect.X = -1;
            }
            if (bodyfrontrect.X >= Base.FramesInRows)
            {
                bodyfrontrect.Y += bodyfrontrect.X / Base.FramesInRows;
                bodyfrontrect.X -= bodyfrontrect.Y * Base.FramesInRows;
            }
            if (bodyrect.X >= Base.FramesInRows)
            {
                bodyrect.Y += bodyrect.X / Base.FramesInRows;
                bodyrect.X -= bodyrect.Y * Base.FramesInRows;
            }
            if (leftarmrect.X >= Base.FramesInRows)
            {
                leftarmrect.Y += leftarmrect.X / Base.FramesInRows;
                leftarmrect.X -= leftarmrect.Y * Base.FramesInRows;
            }
            if (rightarmrect.X >= Base.FramesInRows)
            {
                rightarmrect.Y += rightarmrect.X / Base.FramesInRows;
                rightarmrect.X -= rightarmrect.Y * Base.FramesInRows;
            }
            if (rightarmfrontrect.X >= Base.FramesInRows)
            {
                rightarmfrontrect.Y += rightarmfrontrect.X / Base.FramesInRows;
                rightarmfrontrect.X -= rightarmfrontrect.Y * Base.FramesInRows;
            }
            bodyrect.X *= bodyrect.Width;
            bodyrect.Y *= bodyrect.Height;

            leftarmrect.X *= leftarmrect.Width;
            leftarmrect.Y *= leftarmrect.Height;

            rightarmrect.X *= rightarmrect.Width;
            rightarmrect.Y *= rightarmrect.Height;

            bodyfrontrect.X *= bodyfrontrect.Width;
            bodyfrontrect.Y *= bodyfrontrect.Height;

            rightarmfrontrect.X *= rightarmfrontrect.Width;
            rightarmfrontrect.Y *= rightarmfrontrect.Height;
            GuardianDrawData dd;
            Vector2          Origin = new Vector2(Base.SpriteWidth * 0.5f, Base.SpriteHeight);

            if (!FrontPart)
            {
                dd = new GuardianDrawData(GuardianDrawData.TextureType.TGRightArm, Base.sprites.RightArmSprite, DrawPos, rightarmrect, drawColor, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
                dd = new GuardianDrawData(GuardianDrawData.TextureType.TGBody, Base.sprites.BodySprite, DrawPos, bodyrect, drawColor, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
            }
            {
                GuardianDrawData dd2 = DrawItem(drawColor);
                if (dd2 != null)
                {
                    dds.Add(dd2);
                }
            }
            if (bodyfrontrect.X > -1 && Base.sprites.BodyFrontSprite != null)
            {
                dd = new GuardianDrawData(GuardianDrawData.TextureType.TGBodyFront, Base.sprites.BodyFrontSprite, DrawPos, bodyfrontrect, drawColor, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
            }
            if (rightarmfrontrect.X > -1 && Base.sprites.RightArmFrontSprite != null)
            {
                dd = new GuardianDrawData(GuardianDrawData.TextureType.TGRightArmFront, Base.sprites.RightArmFrontSprite, DrawPos, rightarmfrontrect, drawColor, npc.rotation, Origin, npc.scale, seffects);
                dds.Add(dd);
            }
            dd = new GuardianDrawData(GuardianDrawData.TextureType.TGLeftArm, Base.sprites.LeftArmSprite, DrawPos, leftarmrect, drawColor, npc.rotation, Origin, npc.scale, seffects);
            dds.Add(dd);
            ModifyDrawDatas(dds, DrawPos, bodyrect, leftarmrect, rightarmrect, Origin, drawColor, seffects);
            XOffSet = YOffset = 0f;
            return(dds);
        }
Пример #17
0
        public override void  ModifyDrawDatas(List <GuardianDrawData> dds, Vector2 Position, Rectangle BodyRect, Rectangle LArmRect, Rectangle RArmRect, Vector2 Origin, Color color, Microsoft.Xna.Framework.Graphics.SpriteEffects seffects)
        {
            GuardianDrawData dd = new GuardianDrawData(GuardianDrawData.TextureType.TGExtra, Base.sprites.GetExtraTexture("tails"), Position, BodyRect, color, 0f, Origin, 1f, seffects);

            dds.Insert(0, dd);
        }