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; } }
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); } } }
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()); }
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; } } }
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); }
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; } }
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; } } }
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; } } } }
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); } }
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); } } } }
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); } }
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); } } }
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); }
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); }
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); } }
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); }
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); }