// Decompiled with JetBrains decompiler // Type: Terraria.Mount // Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null // MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83 // Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using ReLogic.Content; using System; using System.Collections.Generic; using Terraria.Audio; using Terraria.DataStructures; using Terraria.GameContent; using Terraria.GameContent.Achievements; using Terraria.GameContent.Drawing; using Terraria.Graphics.Shaders; using Terraria.ID; namespace Terraria { public class Mount { public static int currentShader = 0; public const int FrameStanding = 0; public const int FrameRunning = 1; public const int FrameInAir = 2; public const int FrameFlying = 3; public const int FrameSwimming = 4; public const int FrameDashing = 5; public const int DrawBack = 0; public const int DrawBackExtra = 1; public const int DrawFront = 2; public const int DrawFrontExtra = 3; private static Mount.MountData[] mounts; private static Vector2[] scutlixEyePositions; private static Vector2 scutlixTextureSize; public const int scutlixBaseDamage = 50; public static Vector2 drillDiodePoint1 = new Vector2(36f, -6f); public static Vector2 drillDiodePoint2 = new Vector2(36f, 8f); public static Vector2 drillTextureSize; public const int drillTextureWidth = 80; public const float drillRotationChange = 0.05235988f; public static int drillPickPower = 210; public static int drillPickTime = 6; public static int drillBeamCooldownMax = 1; public const float maxDrillLength = 48f; private static Vector2 santankTextureSize; private Mount.MountData _data; private int _type; private bool _flipDraw; private int _frame; private float _frameCounter; private int _frameExtra; private float _frameExtraCounter; private int _frameState; private int _flyTime; private int _idleTime; private int _idleTimeNext; private float _fatigue; private float _fatigueMax; private bool _abilityCharging; private int _abilityCharge; private int _abilityCooldown; private int _abilityDuration; private bool _abilityActive; private bool _aiming; public List _debugDraw; private object _mountSpecificData; private bool _active; private Mount.MountDelegatesData _defaultDelegatesData = new Mount.MountDelegatesData(); private static void MeowcartLandingSound(Vector2 Position, int Width, int Height) => SoundEngine.PlaySound(37, (int) Position.X + Width / 2, (int) Position.Y + Height / 2, 5); private static void MeowcartBumperSound(Vector2 Position, int Width, int Height) => SoundEngine.PlaySound(37, (int) Position.X + Width / 2, (int) Position.Y + Height / 2, 3); public Mount() { this._debugDraw = new List(); this.Reset(); } public void Reset() { this._active = false; this._type = -1; this._flipDraw = false; this._frame = 0; this._frameCounter = 0.0f; this._frameExtra = 0; this._frameExtraCounter = 0.0f; this._frameState = 0; this._flyTime = 0; this._idleTime = 0; this._idleTimeNext = -1; this._fatigueMax = 0.0f; this._abilityCharging = false; this._abilityCharge = 0; this._aiming = false; } public static void Initialize() { Mount.mounts = new Mount.MountData[MountID.Count]; Mount.MountData mountData1 = new Mount.MountData(); Mount.mounts[0] = mountData1; mountData1.spawnDust = 57; mountData1.spawnDustNoGravity = false; mountData1.buff = 90; mountData1.heightBoost = 20; mountData1.flightTimeMax = 160; mountData1.runSpeed = 5.5f; mountData1.dashSpeed = 12f; mountData1.acceleration = 0.09f; mountData1.jumpHeight = 17; mountData1.jumpSpeed = 5.31f; mountData1.totalFrames = 12; int[] numArray1 = new int[mountData1.totalFrames]; for (int index = 0; index < numArray1.Length; ++index) numArray1[index] = 30; numArray1[1] += 2; numArray1[11] += 2; mountData1.playerYOffsets = numArray1; mountData1.xOffset = 13; mountData1.bodyFrame = 3; mountData1.yOffset = -7; mountData1.playerHeadOffset = 22; mountData1.standingFrameCount = 1; mountData1.standingFrameDelay = 12; mountData1.standingFrameStart = 0; mountData1.runningFrameCount = 6; mountData1.runningFrameDelay = 12; mountData1.runningFrameStart = 6; mountData1.flyingFrameCount = 6; mountData1.flyingFrameDelay = 6; mountData1.flyingFrameStart = 6; mountData1.inAirFrameCount = 1; mountData1.inAirFrameDelay = 12; mountData1.inAirFrameStart = 1; mountData1.idleFrameCount = 4; mountData1.idleFrameDelay = 30; mountData1.idleFrameStart = 2; mountData1.idleFrameLoop = true; mountData1.swimFrameCount = mountData1.inAirFrameCount; mountData1.swimFrameDelay = mountData1.inAirFrameDelay; mountData1.swimFrameStart = mountData1.inAirFrameStart; if (Main.netMode != 2) { mountData1.backTexture = TextureAssets.RudolphMount[0]; mountData1.backTextureExtra = (Asset) Asset.Empty; mountData1.frontTexture = TextureAssets.RudolphMount[1]; mountData1.frontTextureExtra = TextureAssets.RudolphMount[2]; mountData1.textureWidth = mountData1.backTexture.Width(); mountData1.textureHeight = mountData1.backTexture.Height(); } Mount.MountData mountData2 = new Mount.MountData(); Mount.mounts[2] = mountData2; mountData2.spawnDust = 58; mountData2.buff = 129; mountData2.heightBoost = 20; mountData2.flightTimeMax = 160; mountData2.runSpeed = 5f; mountData2.dashSpeed = 9f; mountData2.acceleration = 0.08f; mountData2.jumpHeight = 10; mountData2.jumpSpeed = 6.01f; mountData2.totalFrames = 16; int[] numArray2 = new int[mountData2.totalFrames]; for (int index = 0; index < numArray2.Length; ++index) numArray2[index] = 22; numArray2[12] += 2; numArray2[13] += 4; numArray2[14] += 2; mountData2.playerYOffsets = numArray2; mountData2.xOffset = 1; mountData2.bodyFrame = 3; mountData2.yOffset = 8; mountData2.playerHeadOffset = 22; mountData2.standingFrameCount = 1; mountData2.standingFrameDelay = 12; mountData2.standingFrameStart = 7; mountData2.runningFrameCount = 5; mountData2.runningFrameDelay = 12; mountData2.runningFrameStart = 11; mountData2.flyingFrameCount = 6; mountData2.flyingFrameDelay = 6; mountData2.flyingFrameStart = 1; mountData2.inAirFrameCount = 1; mountData2.inAirFrameDelay = 12; mountData2.inAirFrameStart = 0; mountData2.idleFrameCount = 3; mountData2.idleFrameDelay = 30; mountData2.idleFrameStart = 8; mountData2.idleFrameLoop = false; mountData2.swimFrameCount = mountData2.inAirFrameCount; mountData2.swimFrameDelay = mountData2.inAirFrameDelay; mountData2.swimFrameStart = mountData2.inAirFrameStart; if (Main.netMode != 2) { mountData2.backTexture = TextureAssets.PigronMount; mountData2.backTextureExtra = (Asset) Asset.Empty; mountData2.frontTexture = (Asset) Asset.Empty; mountData2.frontTextureExtra = (Asset) Asset.Empty; mountData2.textureWidth = mountData2.backTexture.Width(); mountData2.textureHeight = mountData2.backTexture.Height(); } Mount.MountData mountData3 = new Mount.MountData(); Mount.mounts[1] = mountData3; mountData3.spawnDust = 15; mountData3.buff = 128; mountData3.heightBoost = 20; mountData3.flightTimeMax = 0; mountData3.fallDamage = 0.8f; mountData3.runSpeed = 4f; mountData3.dashSpeed = 7.8f; mountData3.acceleration = 0.13f; mountData3.jumpHeight = 15; mountData3.jumpSpeed = 5.01f; mountData3.totalFrames = 7; int[] numArray3 = new int[mountData3.totalFrames]; for (int index = 0; index < numArray3.Length; ++index) numArray3[index] = 14; numArray3[2] += 2; numArray3[3] += 4; numArray3[4] += 8; numArray3[5] += 8; mountData3.playerYOffsets = numArray3; mountData3.xOffset = 1; mountData3.bodyFrame = 3; mountData3.yOffset = 4; mountData3.playerHeadOffset = 22; mountData3.standingFrameCount = 1; mountData3.standingFrameDelay = 12; mountData3.standingFrameStart = 0; mountData3.runningFrameCount = 7; mountData3.runningFrameDelay = 12; mountData3.runningFrameStart = 0; mountData3.flyingFrameCount = 6; mountData3.flyingFrameDelay = 6; mountData3.flyingFrameStart = 1; mountData3.inAirFrameCount = 1; mountData3.inAirFrameDelay = 12; mountData3.inAirFrameStart = 5; mountData3.idleFrameCount = 0; mountData3.idleFrameDelay = 0; mountData3.idleFrameStart = 0; mountData3.idleFrameLoop = false; mountData3.swimFrameCount = mountData3.inAirFrameCount; mountData3.swimFrameDelay = mountData3.inAirFrameDelay; mountData3.swimFrameStart = mountData3.inAirFrameStart; if (Main.netMode != 2) { mountData3.backTexture = TextureAssets.BunnyMount; mountData3.backTextureExtra = (Asset) Asset.Empty; mountData3.frontTexture = (Asset) Asset.Empty; mountData3.frontTextureExtra = (Asset) Asset.Empty; mountData3.textureWidth = mountData3.backTexture.Width(); mountData3.textureHeight = mountData3.backTexture.Height(); } Mount.MountData mountData4 = new Mount.MountData(); Mount.mounts[3] = mountData4; mountData4.spawnDust = 56; mountData4.buff = 130; mountData4.heightBoost = 20; mountData4.flightTimeMax = 0; mountData4.fallDamage = 0.5f; mountData4.runSpeed = 4f; mountData4.dashSpeed = 4f; mountData4.acceleration = 0.18f; mountData4.jumpHeight = 12; mountData4.jumpSpeed = 8.25f; mountData4.constantJump = true; mountData4.totalFrames = 4; int[] numArray4 = new int[mountData4.totalFrames]; for (int index = 0; index < numArray4.Length; ++index) numArray4[index] = 20; numArray4[1] += 2; numArray4[3] -= 2; mountData4.playerYOffsets = numArray4; mountData4.xOffset = 1; mountData4.bodyFrame = 3; mountData4.yOffset = 11; mountData4.playerHeadOffset = 22; mountData4.standingFrameCount = 1; mountData4.standingFrameDelay = 12; mountData4.standingFrameStart = 0; mountData4.runningFrameCount = 4; mountData4.runningFrameDelay = 12; mountData4.runningFrameStart = 0; mountData4.flyingFrameCount = 0; mountData4.flyingFrameDelay = 0; mountData4.flyingFrameStart = 0; mountData4.inAirFrameCount = 1; mountData4.inAirFrameDelay = 12; mountData4.inAirFrameStart = 1; mountData4.idleFrameCount = 0; mountData4.idleFrameDelay = 0; mountData4.idleFrameStart = 0; mountData4.idleFrameLoop = false; if (Main.netMode != 2) { mountData4.backTexture = TextureAssets.SlimeMount; mountData4.backTextureExtra = (Asset) Asset.Empty; mountData4.frontTexture = (Asset) Asset.Empty; mountData4.frontTextureExtra = (Asset) Asset.Empty; mountData4.textureWidth = mountData4.backTexture.Width(); mountData4.textureHeight = mountData4.backTexture.Height(); } Mount.MountData mountData5 = new Mount.MountData(); Mount.mounts[6] = mountData5; mountData5.Minecart = true; mountData5.MinecartDirectional = true; mountData5.delegations = new Mount.MountDelegatesData(); mountData5.delegations.MinecartDust = new Action(DelegateMethods.Minecart.Sparks); mountData5.spawnDust = 213; mountData5.buff = 118; mountData5.extraBuff = 138; mountData5.heightBoost = 10; mountData5.flightTimeMax = 0; mountData5.fallDamage = 1f; mountData5.runSpeed = 13f; mountData5.dashSpeed = 13f; mountData5.acceleration = 0.04f; mountData5.jumpHeight = 15; mountData5.jumpSpeed = 5.15f; mountData5.blockExtraJumps = true; mountData5.totalFrames = 3; int[] numArray5 = new int[mountData5.totalFrames]; for (int index = 0; index < numArray5.Length; ++index) numArray5[index] = 8; mountData5.playerYOffsets = numArray5; mountData5.xOffset = 1; mountData5.bodyFrame = 3; mountData5.yOffset = 13; mountData5.playerHeadOffset = 14; mountData5.standingFrameCount = 1; mountData5.standingFrameDelay = 12; mountData5.standingFrameStart = 0; mountData5.runningFrameCount = 3; mountData5.runningFrameDelay = 12; mountData5.runningFrameStart = 0; mountData5.flyingFrameCount = 0; mountData5.flyingFrameDelay = 0; mountData5.flyingFrameStart = 0; mountData5.inAirFrameCount = 0; mountData5.inAirFrameDelay = 0; mountData5.inAirFrameStart = 0; mountData5.idleFrameCount = 0; mountData5.idleFrameDelay = 0; mountData5.idleFrameStart = 0; mountData5.idleFrameLoop = false; if (Main.netMode != 2) { mountData5.backTexture = (Asset) Asset.Empty; mountData5.backTextureExtra = (Asset) Asset.Empty; mountData5.frontTexture = TextureAssets.MinecartMount; mountData5.frontTextureExtra = (Asset) Asset.Empty; mountData5.textureWidth = mountData5.frontTexture.Width(); mountData5.textureHeight = mountData5.frontTexture.Height(); } Mount.MountData newMount1 = new Mount.MountData(); Mount.mounts[15] = newMount1; Mount.SetAsMinecart(newMount1, 209, 208, TextureAssets.DesertMinecartMount); Mount.MountData newMount2 = new Mount.MountData(); Mount.mounts[18] = newMount2; Mount.SetAsMinecart(newMount2, 221, 220, TextureAssets.Extra[108]); Mount.MountData newMount3 = new Mount.MountData(); Mount.mounts[19] = newMount3; Mount.SetAsMinecart(newMount3, 223, 222, TextureAssets.Extra[109]); Mount.MountData newMount4 = new Mount.MountData(); Mount.mounts[20] = newMount4; Mount.SetAsMinecart(newMount4, 225, 224, TextureAssets.Extra[110]); Mount.MountData newMount5 = new Mount.MountData(); Mount.mounts[21] = newMount5; Mount.SetAsMinecart(newMount5, 227, 226, TextureAssets.Extra[111]); Mount.MountData newMount6 = new Mount.MountData(); Mount.mounts[22] = newMount6; Mount.SetAsMinecart(newMount6, 229, 228, TextureAssets.Extra[112]); Mount.MountData newMount7 = new Mount.MountData(); Mount.mounts[24] = newMount7; Mount.SetAsMinecart(newMount7, 232, 231, TextureAssets.Extra[115]); newMount7.frontTextureGlow = TextureAssets.Extra[116]; Mount.MountData newMount8 = new Mount.MountData(); Mount.mounts[25] = newMount8; Mount.SetAsMinecart(newMount8, 234, 233, TextureAssets.Extra[117]); Mount.MountData newMount9 = new Mount.MountData(); Mount.mounts[26] = newMount9; Mount.SetAsMinecart(newMount9, 236, 235, TextureAssets.Extra[118]); Mount.MountData newMount10 = new Mount.MountData(); Mount.mounts[27] = newMount10; Mount.SetAsMinecart(newMount10, 238, 237, TextureAssets.Extra[119]); Mount.MountData newMount11 = new Mount.MountData(); Mount.mounts[28] = newMount11; Mount.SetAsMinecart(newMount11, 240, 239, TextureAssets.Extra[120]); Mount.MountData newMount12 = new Mount.MountData(); Mount.mounts[29] = newMount12; Mount.SetAsMinecart(newMount12, 242, 241, TextureAssets.Extra[121]); Mount.MountData newMount13 = new Mount.MountData(); Mount.mounts[30] = newMount13; Mount.SetAsMinecart(newMount13, 244, 243, TextureAssets.Extra[122]); Mount.MountData newMount14 = new Mount.MountData(); Mount.mounts[31] = newMount14; Mount.SetAsMinecart(newMount14, 246, 245, TextureAssets.Extra[123]); Mount.MountData newMount15 = new Mount.MountData(); Mount.mounts[32] = newMount15; Mount.SetAsMinecart(newMount15, 248, 247, TextureAssets.Extra[124]); Mount.MountData newMount16 = new Mount.MountData(); Mount.mounts[33] = newMount16; Mount.SetAsMinecart(newMount16, 250, 249, TextureAssets.Extra[125]); newMount16.delegations.MinecartDust = new Action(DelegateMethods.Minecart.SparksMeow); newMount16.delegations.MinecartLandingSound = new Action(Mount.MeowcartLandingSound); newMount16.delegations.MinecartBumperSound = new Action(Mount.MeowcartBumperSound); Mount.MountData newMount17 = new Mount.MountData(); Mount.mounts[34] = newMount17; Mount.SetAsMinecart(newMount17, 252, 251, TextureAssets.Extra[126]); Mount.MountData newMount18 = new Mount.MountData(); Mount.mounts[35] = newMount18; Mount.SetAsMinecart(newMount18, 254, 253, TextureAssets.Extra[(int) sbyte.MaxValue]); Mount.MountData newMount19 = new Mount.MountData(); Mount.mounts[36] = newMount19; Mount.SetAsMinecart(newMount19, 256, (int) byte.MaxValue, TextureAssets.Extra[128]); Mount.MountData newMount20 = new Mount.MountData(); Mount.mounts[38] = newMount20; Mount.SetAsMinecart(newMount20, 270, 269, TextureAssets.Extra[150]); if (Main.netMode != 2) newMount20.backTexture = newMount20.frontTexture; Mount.MountData newMount21 = new Mount.MountData(); Mount.mounts[39] = newMount21; Mount.SetAsMinecart(newMount21, 273, 272, TextureAssets.Extra[155]); newMount21.yOffset -= 2; if (Main.netMode != 2) newMount21.frontTextureExtra = TextureAssets.Extra[165]; newMount21.runSpeed = 6f; newMount21.dashSpeed = 6f; newMount21.acceleration = 0.02f; Mount.MountData mountData6 = new Mount.MountData(); Mount.mounts[16] = mountData6; mountData6.Minecart = true; mountData6.delegations = new Mount.MountDelegatesData(); mountData6.delegations.MinecartDust = new Action(DelegateMethods.Minecart.Sparks); mountData6.spawnDust = 213; mountData6.buff = 211; mountData6.extraBuff = 210; mountData6.heightBoost = 10; mountData6.flightTimeMax = 0; mountData6.fallDamage = 1f; mountData6.runSpeed = 13f; mountData6.dashSpeed = 13f; mountData6.acceleration = 0.04f; mountData6.jumpHeight = 15; mountData6.jumpSpeed = 5.15f; mountData6.blockExtraJumps = true; mountData6.totalFrames = 3; int[] numArray6 = new int[mountData6.totalFrames]; for (int index = 0; index < numArray6.Length; ++index) numArray6[index] = 8; mountData6.playerYOffsets = numArray6; mountData6.xOffset = 1; mountData6.bodyFrame = 3; mountData6.yOffset = 13; mountData6.playerHeadOffset = 14; mountData6.standingFrameCount = 1; mountData6.standingFrameDelay = 12; mountData6.standingFrameStart = 0; mountData6.runningFrameCount = 3; mountData6.runningFrameDelay = 12; mountData6.runningFrameStart = 0; mountData6.flyingFrameCount = 0; mountData6.flyingFrameDelay = 0; mountData6.flyingFrameStart = 0; mountData6.inAirFrameCount = 0; mountData6.inAirFrameDelay = 0; mountData6.inAirFrameStart = 0; mountData6.idleFrameCount = 0; mountData6.idleFrameDelay = 0; mountData6.idleFrameStart = 0; mountData6.idleFrameLoop = false; if (Main.netMode != 2) { mountData6.backTexture = (Asset) Asset.Empty; mountData6.backTextureExtra = (Asset) Asset.Empty; mountData6.frontTexture = TextureAssets.FishMinecartMount; mountData6.frontTextureExtra = (Asset) Asset.Empty; mountData6.textureWidth = mountData6.frontTexture.Width(); mountData6.textureHeight = mountData6.frontTexture.Height(); } Mount.MountData mountData7 = new Mount.MountData(); Mount.mounts[4] = mountData7; mountData7.spawnDust = 56; mountData7.buff = 131; mountData7.heightBoost = 26; mountData7.flightTimeMax = 0; mountData7.fallDamage = 1f; mountData7.runSpeed = 2f; mountData7.dashSpeed = 2f; mountData7.swimSpeed = 6f; mountData7.acceleration = 0.08f; mountData7.jumpHeight = 10; mountData7.jumpSpeed = 3.15f; mountData7.totalFrames = 12; int[] numArray7 = new int[mountData7.totalFrames]; for (int index = 0; index < numArray7.Length; ++index) numArray7[index] = 26; mountData7.playerYOffsets = numArray7; mountData7.xOffset = 1; mountData7.bodyFrame = 3; mountData7.yOffset = 13; mountData7.playerHeadOffset = 28; mountData7.standingFrameCount = 1; mountData7.standingFrameDelay = 12; mountData7.standingFrameStart = 0; mountData7.runningFrameCount = 6; mountData7.runningFrameDelay = 12; mountData7.runningFrameStart = 0; mountData7.flyingFrameCount = 0; mountData7.flyingFrameDelay = 0; mountData7.flyingFrameStart = 0; mountData7.inAirFrameCount = 1; mountData7.inAirFrameDelay = 12; mountData7.inAirFrameStart = 3; mountData7.idleFrameCount = 0; mountData7.idleFrameDelay = 0; mountData7.idleFrameStart = 0; mountData7.idleFrameLoop = false; mountData7.swimFrameCount = 6; mountData7.swimFrameDelay = 12; mountData7.swimFrameStart = 6; if (Main.netMode != 2) { mountData7.backTexture = TextureAssets.TurtleMount; mountData7.backTextureExtra = (Asset) Asset.Empty; mountData7.frontTexture = (Asset) Asset.Empty; mountData7.frontTextureExtra = (Asset) Asset.Empty; mountData7.textureWidth = mountData7.backTexture.Width(); mountData7.textureHeight = mountData7.backTexture.Height(); } Mount.MountData mountData8 = new Mount.MountData(); Mount.mounts[5] = mountData8; mountData8.spawnDust = 152; mountData8.buff = 132; mountData8.heightBoost = 16; mountData8.flightTimeMax = 320; mountData8.fatigueMax = 320; mountData8.fallDamage = 0.0f; mountData8.usesHover = true; mountData8.runSpeed = 2f; mountData8.dashSpeed = 2f; mountData8.acceleration = 0.16f; mountData8.jumpHeight = 10; mountData8.jumpSpeed = 4f; mountData8.blockExtraJumps = true; mountData8.totalFrames = 12; int[] numArray8 = new int[mountData8.totalFrames]; for (int index = 0; index < numArray8.Length; ++index) numArray8[index] = 16; numArray8[8] = 18; mountData8.playerYOffsets = numArray8; mountData8.xOffset = 1; mountData8.bodyFrame = 3; mountData8.yOffset = 4; mountData8.playerHeadOffset = 18; mountData8.standingFrameCount = 1; mountData8.standingFrameDelay = 12; mountData8.standingFrameStart = 0; mountData8.runningFrameCount = 5; mountData8.runningFrameDelay = 12; mountData8.runningFrameStart = 0; mountData8.flyingFrameCount = 3; mountData8.flyingFrameDelay = 12; mountData8.flyingFrameStart = 5; mountData8.inAirFrameCount = 3; mountData8.inAirFrameDelay = 12; mountData8.inAirFrameStart = 5; mountData8.idleFrameCount = 4; mountData8.idleFrameDelay = 12; mountData8.idleFrameStart = 8; mountData8.idleFrameLoop = true; mountData8.swimFrameCount = 0; mountData8.swimFrameDelay = 12; mountData8.swimFrameStart = 0; if (Main.netMode != 2) { mountData8.backTexture = TextureAssets.BeeMount[0]; mountData8.backTextureExtra = TextureAssets.BeeMount[1]; mountData8.frontTexture = (Asset) Asset.Empty; mountData8.frontTextureExtra = (Asset) Asset.Empty; mountData8.textureWidth = mountData8.backTexture.Width(); mountData8.textureHeight = mountData8.backTexture.Height(); } Mount.MountData mountData9 = new Mount.MountData(); Mount.mounts[7] = mountData9; mountData9.spawnDust = 226; mountData9.spawnDustNoGravity = true; mountData9.buff = 141; mountData9.heightBoost = 16; mountData9.flightTimeMax = 320; mountData9.fatigueMax = 320; mountData9.fallDamage = 0.0f; mountData9.usesHover = true; mountData9.runSpeed = 8f; mountData9.dashSpeed = 8f; mountData9.acceleration = 0.16f; mountData9.jumpHeight = 10; mountData9.jumpSpeed = 4f; mountData9.blockExtraJumps = true; mountData9.totalFrames = 8; int[] numArray9 = new int[mountData9.totalFrames]; for (int index = 0; index < numArray9.Length; ++index) numArray9[index] = 16; mountData9.playerYOffsets = numArray9; mountData9.xOffset = 1; mountData9.bodyFrame = 3; mountData9.yOffset = 4; mountData9.playerHeadOffset = 18; mountData9.standingFrameCount = 8; mountData9.standingFrameDelay = 4; mountData9.standingFrameStart = 0; mountData9.runningFrameCount = 8; mountData9.runningFrameDelay = 4; mountData9.runningFrameStart = 0; mountData9.flyingFrameCount = 8; mountData9.flyingFrameDelay = 4; mountData9.flyingFrameStart = 0; mountData9.inAirFrameCount = 8; mountData9.inAirFrameDelay = 4; mountData9.inAirFrameStart = 0; mountData9.idleFrameCount = 0; mountData9.idleFrameDelay = 12; mountData9.idleFrameStart = 0; mountData9.idleFrameLoop = true; mountData9.swimFrameCount = 0; mountData9.swimFrameDelay = 12; mountData9.swimFrameStart = 0; if (Main.netMode != 2) { mountData9.backTexture = (Asset) Asset.Empty; mountData9.backTextureExtra = (Asset) Asset.Empty; mountData9.frontTexture = TextureAssets.UfoMount[0]; mountData9.frontTextureExtra = TextureAssets.UfoMount[1]; mountData9.textureWidth = mountData9.frontTexture.Width(); mountData9.textureHeight = mountData9.frontTexture.Height(); } Mount.MountData mountData10 = new Mount.MountData(); Mount.mounts[8] = mountData10; mountData10.spawnDust = 226; mountData10.buff = 142; mountData10.heightBoost = 16; mountData10.flightTimeMax = 320; mountData10.fatigueMax = 320; mountData10.fallDamage = 1f; mountData10.usesHover = true; mountData10.swimSpeed = 4f; mountData10.runSpeed = 6f; mountData10.dashSpeed = 4f; mountData10.acceleration = 0.16f; mountData10.jumpHeight = 10; mountData10.jumpSpeed = 4f; mountData10.blockExtraJumps = true; mountData10.emitsLight = true; mountData10.lightColor = new Vector3(0.3f, 0.3f, 0.4f); mountData10.totalFrames = 1; int[] numArray10 = new int[mountData10.totalFrames]; for (int index = 0; index < numArray10.Length; ++index) numArray10[index] = 4; mountData10.playerYOffsets = numArray10; mountData10.xOffset = 1; mountData10.bodyFrame = 3; mountData10.yOffset = 4; mountData10.playerHeadOffset = 18; mountData10.standingFrameCount = 1; mountData10.standingFrameDelay = 12; mountData10.standingFrameStart = 0; mountData10.runningFrameCount = 1; mountData10.runningFrameDelay = 12; mountData10.runningFrameStart = 0; mountData10.flyingFrameCount = 1; mountData10.flyingFrameDelay = 12; mountData10.flyingFrameStart = 0; mountData10.inAirFrameCount = 1; mountData10.inAirFrameDelay = 12; mountData10.inAirFrameStart = 0; mountData10.idleFrameCount = 0; mountData10.idleFrameDelay = 12; mountData10.idleFrameStart = 8; mountData10.swimFrameCount = 0; mountData10.swimFrameDelay = 12; mountData10.swimFrameStart = 0; if (Main.netMode != 2) { mountData10.backTexture = TextureAssets.DrillMount[0]; mountData10.backTextureGlow = TextureAssets.DrillMount[3]; mountData10.backTextureExtra = (Asset) Asset.Empty; mountData10.backTextureExtraGlow = (Asset) Asset.Empty; mountData10.frontTexture = TextureAssets.DrillMount[1]; mountData10.frontTextureGlow = TextureAssets.DrillMount[4]; mountData10.frontTextureExtra = TextureAssets.DrillMount[2]; mountData10.frontTextureExtraGlow = TextureAssets.DrillMount[5]; mountData10.textureWidth = mountData10.frontTexture.Width(); mountData10.textureHeight = mountData10.frontTexture.Height(); } Mount.drillTextureSize = new Vector2(80f, 80f); Vector2 vector2_1 = new Vector2((float) mountData10.textureWidth, (float) (mountData10.textureHeight / mountData10.totalFrames)); if (Mount.drillTextureSize != vector2_1) throw new Exception("Be sure to update the Drill texture origin to match the actual texture size of " + (object) mountData10.textureWidth + ", " + (object) mountData10.textureHeight + "."); Mount.MountData mountData11 = new Mount.MountData(); Mount.mounts[9] = mountData11; mountData11.spawnDust = 15; mountData11.buff = 143; mountData11.heightBoost = 16; mountData11.flightTimeMax = 0; mountData11.fatigueMax = 0; mountData11.fallDamage = 0.0f; mountData11.abilityChargeMax = 40; mountData11.abilityCooldown = 20; mountData11.abilityDuration = 0; mountData11.runSpeed = 8f; mountData11.dashSpeed = 8f; mountData11.acceleration = 0.4f; mountData11.jumpHeight = 22; mountData11.jumpSpeed = 10.01f; mountData11.blockExtraJumps = false; mountData11.totalFrames = 12; int[] numArray11 = new int[mountData11.totalFrames]; for (int index = 0; index < numArray11.Length; ++index) numArray11[index] = 16; mountData11.playerYOffsets = numArray11; mountData11.xOffset = 1; mountData11.bodyFrame = 3; mountData11.yOffset = 6; mountData11.playerHeadOffset = 18; mountData11.standingFrameCount = 6; mountData11.standingFrameDelay = 12; mountData11.standingFrameStart = 6; mountData11.runningFrameCount = 6; mountData11.runningFrameDelay = 12; mountData11.runningFrameStart = 0; mountData11.flyingFrameCount = 0; mountData11.flyingFrameDelay = 12; mountData11.flyingFrameStart = 0; mountData11.inAirFrameCount = 1; mountData11.inAirFrameDelay = 12; mountData11.inAirFrameStart = 1; mountData11.idleFrameCount = 0; mountData11.idleFrameDelay = 12; mountData11.idleFrameStart = 6; mountData11.idleFrameLoop = true; mountData11.swimFrameCount = 0; mountData11.swimFrameDelay = 12; mountData11.swimFrameStart = 0; if (Main.netMode != 2) { mountData11.backTexture = TextureAssets.ScutlixMount[0]; mountData11.backTextureExtra = (Asset) Asset.Empty; mountData11.frontTexture = TextureAssets.ScutlixMount[1]; mountData11.frontTextureExtra = TextureAssets.ScutlixMount[2]; mountData11.textureWidth = mountData11.backTexture.Width(); mountData11.textureHeight = mountData11.backTexture.Height(); } Mount.scutlixEyePositions = new Vector2[10]; Mount.scutlixEyePositions[0] = new Vector2(60f, 2f); Mount.scutlixEyePositions[1] = new Vector2(70f, 6f); Mount.scutlixEyePositions[2] = new Vector2(68f, 6f); Mount.scutlixEyePositions[3] = new Vector2(76f, 12f); Mount.scutlixEyePositions[4] = new Vector2(80f, 10f); Mount.scutlixEyePositions[5] = new Vector2(84f, 18f); Mount.scutlixEyePositions[6] = new Vector2(74f, 20f); Mount.scutlixEyePositions[7] = new Vector2(76f, 24f); Mount.scutlixEyePositions[8] = new Vector2(70f, 34f); Mount.scutlixEyePositions[9] = new Vector2(76f, 34f); Mount.scutlixTextureSize = new Vector2(45f, 54f); Vector2 vector2_2 = new Vector2((float) (mountData11.textureWidth / 2), (float) (mountData11.textureHeight / mountData11.totalFrames)); if (Mount.scutlixTextureSize != vector2_2) throw new Exception("Be sure to update the Scutlix texture origin to match the actual texture size of " + (object) mountData11.textureWidth + ", " + (object) mountData11.textureHeight + "."); for (int index = 0; index < Mount.scutlixEyePositions.Length; ++index) Mount.scutlixEyePositions[index] -= Mount.scutlixTextureSize; Mount.MountData mountData12 = new Mount.MountData(); Mount.mounts[10] = mountData12; mountData12.spawnDust = 15; mountData12.buff = 162; mountData12.heightBoost = 34; mountData12.flightTimeMax = 0; mountData12.fallDamage = 0.2f; mountData12.runSpeed = 4f; mountData12.dashSpeed = 12f; mountData12.acceleration = 0.3f; mountData12.jumpHeight = 10; mountData12.jumpSpeed = 8.01f; mountData12.totalFrames = 16; int[] numArray12 = new int[mountData12.totalFrames]; for (int index = 0; index < numArray12.Length; ++index) numArray12[index] = 28; numArray12[3] += 2; numArray12[4] += 2; numArray12[7] += 2; numArray12[8] += 2; numArray12[12] += 2; numArray12[13] += 2; numArray12[15] += 4; mountData12.playerYOffsets = numArray12; mountData12.xOffset = 5; mountData12.bodyFrame = 3; mountData12.yOffset = 1; mountData12.playerHeadOffset = 34; mountData12.standingFrameCount = 1; mountData12.standingFrameDelay = 12; mountData12.standingFrameStart = 0; mountData12.runningFrameCount = 7; mountData12.runningFrameDelay = 15; mountData12.runningFrameStart = 1; mountData12.dashingFrameCount = 6; mountData12.dashingFrameDelay = 40; mountData12.dashingFrameStart = 9; mountData12.flyingFrameCount = 6; mountData12.flyingFrameDelay = 6; mountData12.flyingFrameStart = 1; mountData12.inAirFrameCount = 1; mountData12.inAirFrameDelay = 12; mountData12.inAirFrameStart = 15; mountData12.idleFrameCount = 0; mountData12.idleFrameDelay = 0; mountData12.idleFrameStart = 0; mountData12.idleFrameLoop = false; mountData12.swimFrameCount = mountData12.inAirFrameCount; mountData12.swimFrameDelay = mountData12.inAirFrameDelay; mountData12.swimFrameStart = mountData12.inAirFrameStart; if (Main.netMode != 2) { mountData12.backTexture = TextureAssets.UnicornMount; mountData12.backTextureExtra = (Asset) Asset.Empty; mountData12.frontTexture = (Asset) Asset.Empty; mountData12.frontTextureExtra = (Asset) Asset.Empty; mountData12.textureWidth = mountData12.backTexture.Width(); mountData12.textureHeight = mountData12.backTexture.Height(); } Mount.MountData mountData13 = new Mount.MountData(); Mount.mounts[11] = mountData13; mountData13.Minecart = true; mountData13.delegations = new Mount.MountDelegatesData(); mountData13.delegations.MinecartDust = new Action(DelegateMethods.Minecart.SparksMech); mountData13.spawnDust = 213; mountData13.buff = 167; mountData13.extraBuff = 166; mountData13.heightBoost = 12; mountData13.flightTimeMax = 0; mountData13.fallDamage = 1f; mountData13.runSpeed = 20f; mountData13.dashSpeed = 20f; mountData13.acceleration = 0.1f; mountData13.jumpHeight = 15; mountData13.jumpSpeed = 5.15f; mountData13.blockExtraJumps = true; mountData13.totalFrames = 3; int[] numArray13 = new int[mountData13.totalFrames]; for (int index = 0; index < numArray13.Length; ++index) numArray13[index] = 9; mountData13.playerYOffsets = numArray13; mountData13.xOffset = -1; mountData13.bodyFrame = 3; mountData13.yOffset = 11; mountData13.playerHeadOffset = 14; mountData13.standingFrameCount = 1; mountData13.standingFrameDelay = 12; mountData13.standingFrameStart = 0; mountData13.runningFrameCount = 3; mountData13.runningFrameDelay = 12; mountData13.runningFrameStart = 0; mountData13.flyingFrameCount = 0; mountData13.flyingFrameDelay = 0; mountData13.flyingFrameStart = 0; mountData13.inAirFrameCount = 0; mountData13.inAirFrameDelay = 0; mountData13.inAirFrameStart = 0; mountData13.idleFrameCount = 0; mountData13.idleFrameDelay = 0; mountData13.idleFrameStart = 0; mountData13.idleFrameLoop = false; if (Main.netMode != 2) { mountData13.backTexture = (Asset) Asset.Empty; mountData13.backTextureExtra = (Asset) Asset.Empty; mountData13.frontTexture = TextureAssets.MinecartMechMount[0]; mountData13.frontTextureGlow = TextureAssets.MinecartMechMount[1]; mountData13.frontTextureExtra = (Asset) Asset.Empty; mountData13.textureWidth = mountData13.frontTexture.Width(); mountData13.textureHeight = mountData13.frontTexture.Height(); } Mount.MountData mountData14 = new Mount.MountData(); Mount.mounts[12] = mountData14; mountData14.spawnDust = 15; mountData14.buff = 168; mountData14.heightBoost = 14; mountData14.flightTimeMax = 320; mountData14.fatigueMax = 320; mountData14.fallDamage = 0.0f; mountData14.usesHover = true; mountData14.runSpeed = 2f; mountData14.dashSpeed = 1f; mountData14.acceleration = 0.2f; mountData14.jumpHeight = 4; mountData14.jumpSpeed = 3f; mountData14.swimSpeed = 16f; mountData14.blockExtraJumps = true; mountData14.totalFrames = 23; int[] numArray14 = new int[mountData14.totalFrames]; for (int index = 0; index < numArray14.Length; ++index) numArray14[index] = 12; mountData14.playerYOffsets = numArray14; mountData14.xOffset = 2; mountData14.bodyFrame = 3; mountData14.yOffset = 16; mountData14.playerHeadOffset = 16; mountData14.standingFrameCount = 1; mountData14.standingFrameDelay = 12; mountData14.standingFrameStart = 8; mountData14.runningFrameCount = 7; mountData14.runningFrameDelay = 14; mountData14.runningFrameStart = 8; mountData14.flyingFrameCount = 8; mountData14.flyingFrameDelay = 16; mountData14.flyingFrameStart = 0; mountData14.inAirFrameCount = 8; mountData14.inAirFrameDelay = 6; mountData14.inAirFrameStart = 0; mountData14.idleFrameCount = 0; mountData14.idleFrameDelay = 0; mountData14.idleFrameStart = 0; mountData14.idleFrameLoop = false; mountData14.swimFrameCount = 8; mountData14.swimFrameDelay = 4; mountData14.swimFrameStart = 15; if (Main.netMode != 2) { mountData14.backTexture = TextureAssets.CuteFishronMount[0]; mountData14.backTextureGlow = TextureAssets.CuteFishronMount[1]; mountData14.frontTexture = (Asset) Asset.Empty; mountData14.frontTextureExtra = (Asset) Asset.Empty; mountData14.textureWidth = mountData14.backTexture.Width(); mountData14.textureHeight = mountData14.backTexture.Height(); } Mount.MountData mountData15 = new Mount.MountData(); Mount.mounts[13] = mountData15; mountData15.Minecart = true; mountData15.MinecartDirectional = true; mountData15.delegations = new Mount.MountDelegatesData(); mountData15.delegations.MinecartDust = new Action(DelegateMethods.Minecart.Sparks); mountData15.spawnDust = 213; mountData15.buff = 184; mountData15.extraBuff = 185; mountData15.heightBoost = 10; mountData15.flightTimeMax = 0; mountData15.fallDamage = 1f; mountData15.runSpeed = 10f; mountData15.dashSpeed = 10f; mountData15.acceleration = 0.03f; mountData15.jumpHeight = 12; mountData15.jumpSpeed = 5.15f; mountData15.blockExtraJumps = true; mountData15.totalFrames = 3; int[] numArray15 = new int[mountData15.totalFrames]; for (int index = 0; index < numArray15.Length; ++index) numArray15[index] = 8; mountData15.playerYOffsets = numArray15; mountData15.xOffset = 1; mountData15.bodyFrame = 3; mountData15.yOffset = 13; mountData15.playerHeadOffset = 14; mountData15.standingFrameCount = 1; mountData15.standingFrameDelay = 12; mountData15.standingFrameStart = 0; mountData15.runningFrameCount = 3; mountData15.runningFrameDelay = 12; mountData15.runningFrameStart = 0; mountData15.flyingFrameCount = 0; mountData15.flyingFrameDelay = 0; mountData15.flyingFrameStart = 0; mountData15.inAirFrameCount = 0; mountData15.inAirFrameDelay = 0; mountData15.inAirFrameStart = 0; mountData15.idleFrameCount = 0; mountData15.idleFrameDelay = 0; mountData15.idleFrameStart = 0; mountData15.idleFrameLoop = false; if (Main.netMode != 2) { mountData15.backTexture = (Asset) Asset.Empty; mountData15.backTextureExtra = (Asset) Asset.Empty; mountData15.frontTexture = TextureAssets.MinecartWoodMount; mountData15.frontTextureExtra = (Asset) Asset.Empty; mountData15.textureWidth = mountData15.frontTexture.Width(); mountData15.textureHeight = mountData15.frontTexture.Height(); } Mount.MountData mountData16 = new Mount.MountData(); Mount.mounts[14] = mountData16; mountData16.spawnDust = 15; mountData16.buff = 193; mountData16.heightBoost = 8; mountData16.flightTimeMax = 0; mountData16.fallDamage = 0.2f; mountData16.runSpeed = 8f; mountData16.acceleration = 0.25f; mountData16.jumpHeight = 20; mountData16.jumpSpeed = 8.01f; mountData16.totalFrames = 8; int[] numArray16 = new int[mountData16.totalFrames]; for (int index = 0; index < numArray16.Length; ++index) numArray16[index] = 8; numArray16[1] += 2; numArray16[3] += 2; numArray16[6] += 2; mountData16.playerYOffsets = numArray16; mountData16.xOffset = 4; mountData16.bodyFrame = 3; mountData16.yOffset = 9; mountData16.playerHeadOffset = 10; mountData16.standingFrameCount = 1; mountData16.standingFrameDelay = 12; mountData16.standingFrameStart = 0; mountData16.runningFrameCount = 6; mountData16.runningFrameDelay = 30; mountData16.runningFrameStart = 2; mountData16.inAirFrameCount = 1; mountData16.inAirFrameDelay = 12; mountData16.inAirFrameStart = 1; mountData16.idleFrameCount = 0; mountData16.idleFrameDelay = 0; mountData16.idleFrameStart = 0; mountData16.idleFrameLoop = false; mountData16.swimFrameCount = mountData16.inAirFrameCount; mountData16.swimFrameDelay = mountData16.inAirFrameDelay; mountData16.swimFrameStart = mountData16.inAirFrameStart; if (Main.netMode != 2) { mountData16.backTexture = TextureAssets.BasiliskMount; mountData16.backTextureExtra = (Asset) Asset.Empty; mountData16.frontTexture = (Asset) Asset.Empty; mountData16.frontTextureExtra = (Asset) Asset.Empty; mountData16.textureWidth = mountData16.backTexture.Width(); mountData16.textureHeight = mountData16.backTexture.Height(); } Mount.MountData mountData17 = new Mount.MountData(); Mount.mounts[17] = mountData17; mountData17.spawnDust = 15; mountData17.buff = 212; mountData17.heightBoost = 16; mountData17.flightTimeMax = 0; mountData17.fallDamage = 0.2f; mountData17.runSpeed = 8f; mountData17.acceleration = 0.25f; mountData17.jumpHeight = 20; mountData17.jumpSpeed = 8.01f; mountData17.totalFrames = 4; int[] numArray17 = new int[mountData17.totalFrames]; for (int index = 0; index < numArray17.Length; ++index) numArray17[index] = 8; mountData17.playerYOffsets = numArray17; mountData17.xOffset = 2; mountData17.bodyFrame = 3; mountData17.yOffset = 17 - mountData17.heightBoost; mountData17.playerHeadOffset = 18; mountData17.standingFrameCount = 1; mountData17.standingFrameDelay = 12; mountData17.standingFrameStart = 0; mountData17.runningFrameCount = 4; mountData17.runningFrameDelay = 12; mountData17.runningFrameStart = 0; mountData17.inAirFrameCount = 1; mountData17.inAirFrameDelay = 12; mountData17.inAirFrameStart = 1; mountData17.idleFrameCount = 0; mountData17.idleFrameDelay = 0; mountData17.idleFrameStart = 0; mountData17.idleFrameLoop = false; mountData17.swimFrameCount = mountData17.inAirFrameCount; mountData17.swimFrameDelay = mountData17.inAirFrameDelay; mountData17.swimFrameStart = mountData17.inAirFrameStart; if (Main.netMode != 2) { mountData17.backTexture = TextureAssets.Extra[97]; mountData17.backTextureExtra = TextureAssets.Extra[96]; mountData17.frontTexture = (Asset) Asset.Empty; mountData17.frontTextureExtra = (Asset) Asset.Empty; mountData17.textureWidth = mountData17.backTextureExtra.Width(); mountData17.textureHeight = mountData17.backTextureExtra.Height(); } Mount.MountData mountData18 = new Mount.MountData(); Mount.mounts[23] = mountData18; mountData18.spawnDust = 43; mountData18.spawnDustNoGravity = true; mountData18.buff = 230; mountData18.heightBoost = 0; mountData18.flightTimeMax = 320; mountData18.fatigueMax = 320; mountData18.fallDamage = 0.0f; mountData18.usesHover = true; mountData18.runSpeed = 8f; mountData18.dashSpeed = 8f; mountData18.acceleration = 0.16f; mountData18.jumpHeight = 10; mountData18.jumpSpeed = 4f; mountData18.blockExtraJumps = true; mountData18.totalFrames = 6; int[] numArray18 = new int[mountData18.totalFrames]; for (int index = 0; index < numArray18.Length; ++index) numArray18[index] = 6; mountData18.playerYOffsets = numArray18; mountData18.xOffset = -2; mountData18.bodyFrame = 0; mountData18.yOffset = 8; mountData18.playerHeadOffset = 0; mountData18.standingFrameCount = 1; mountData18.standingFrameDelay = 0; mountData18.standingFrameStart = 0; mountData18.runningFrameCount = 1; mountData18.runningFrameDelay = 0; mountData18.runningFrameStart = 0; mountData18.flyingFrameCount = 1; mountData18.flyingFrameDelay = 0; mountData18.flyingFrameStart = 0; mountData18.inAirFrameCount = 6; mountData18.inAirFrameDelay = 8; mountData18.inAirFrameStart = 0; mountData18.idleFrameCount = 0; mountData18.idleFrameDelay = 0; mountData18.idleFrameStart = 0; mountData18.idleFrameLoop = true; mountData18.swimFrameCount = 0; mountData18.swimFrameDelay = 0; mountData18.swimFrameStart = 0; if (Main.netMode != 2) { mountData18.backTexture = TextureAssets.Extra[113]; mountData18.backTextureExtra = (Asset) Asset.Empty; mountData18.frontTexture = (Asset) Asset.Empty; mountData18.frontTextureExtra = (Asset) Asset.Empty; mountData18.textureWidth = mountData18.backTexture.Width(); mountData18.textureHeight = mountData18.backTexture.Height(); } Mount.MountData mountData19 = new Mount.MountData(); Mount.mounts[37] = mountData19; mountData19.spawnDust = 282; mountData19.buff = 265; mountData19.heightBoost = 12; mountData19.flightTimeMax = 0; mountData19.fallDamage = 0.2f; mountData19.runSpeed = 7.5f; mountData19.acceleration = 0.15f; mountData19.jumpHeight = 14; mountData19.jumpSpeed = 6.01f; mountData19.totalFrames = 10; int[] numArray19 = new int[mountData19.totalFrames]; for (int index = 0; index < numArray19.Length; ++index) numArray19[index] = 20; mountData19.playerYOffsets = numArray19; mountData19.xOffset = 5; mountData19.bodyFrame = 4; mountData19.yOffset = 1; mountData19.playerHeadOffset = 20; mountData19.standingFrameCount = 1; mountData19.standingFrameDelay = 12; mountData19.standingFrameStart = 0; mountData19.runningFrameCount = 7; mountData19.runningFrameDelay = 20; mountData19.runningFrameStart = 2; mountData19.inAirFrameCount = 1; mountData19.inAirFrameDelay = 12; mountData19.inAirFrameStart = 1; mountData19.idleFrameCount = 0; mountData19.idleFrameDelay = 0; mountData19.idleFrameStart = 0; mountData19.idleFrameLoop = false; mountData19.swimFrameCount = mountData19.runningFrameCount; mountData19.swimFrameDelay = 10; mountData19.swimFrameStart = mountData19.runningFrameStart; if (Main.netMode != 2) { mountData19.backTexture = TextureAssets.Extra[149]; mountData19.backTextureExtra = (Asset) Asset.Empty; mountData19.frontTexture = (Asset) Asset.Empty; mountData19.frontTextureExtra = (Asset) Asset.Empty; mountData19.textureWidth = mountData19.backTexture.Width(); mountData19.textureHeight = mountData19.backTexture.Height(); } Mount.MountData newMount22 = new Mount.MountData(); Mount.mounts[40] = newMount22; Mount.SetAsHorse(newMount22, 275, TextureAssets.Extra[161]); Mount.MountData newMount23 = new Mount.MountData(); Mount.mounts[41] = newMount23; Mount.SetAsHorse(newMount23, 276, TextureAssets.Extra[162]); Mount.MountData newMount24 = new Mount.MountData(); Mount.mounts[42] = newMount24; Mount.SetAsHorse(newMount24, 277, TextureAssets.Extra[163]); Mount.MountData mountData20 = new Mount.MountData(); Mount.mounts[43] = mountData20; mountData20.spawnDust = 15; mountData20.buff = 278; mountData20.heightBoost = 12; mountData20.flightTimeMax = 0; mountData20.fallDamage = 0.4f; mountData20.runSpeed = 5f; mountData20.acceleration = 0.1f; mountData20.jumpHeight = 8; mountData20.jumpSpeed = 8f; mountData20.constantJump = true; mountData20.totalFrames = 4; int[] numArray20 = new int[mountData20.totalFrames]; for (int index = 0; index < numArray20.Length; ++index) numArray20[index] = 14; mountData20.playerYOffsets = numArray20; mountData20.xOffset = 5; mountData20.bodyFrame = 4; mountData20.yOffset = 10; mountData20.playerHeadOffset = 10; mountData20.standingFrameCount = 1; mountData20.standingFrameDelay = 5; mountData20.standingFrameStart = 0; mountData20.runningFrameCount = 4; mountData20.runningFrameDelay = 5; mountData20.runningFrameStart = 0; mountData20.inAirFrameCount = 1; mountData20.inAirFrameDelay = 5; mountData20.inAirFrameStart = 0; mountData20.idleFrameCount = 0; mountData20.idleFrameDelay = 0; mountData20.idleFrameStart = 0; mountData20.idleFrameLoop = false; mountData20.swimFrameCount = 1; mountData20.swimFrameDelay = 5; mountData20.swimFrameStart = 0; if (Main.netMode != 2) { mountData20.backTexture = (Asset) Asset.Empty; mountData20.backTextureExtra = (Asset) Asset.Empty; mountData20.frontTexture = TextureAssets.Extra[164]; mountData20.frontTextureExtra = (Asset) Asset.Empty; mountData20.textureWidth = mountData20.frontTexture.Width(); mountData20.textureHeight = mountData20.frontTexture.Height(); } Mount.MountData mountData21 = new Mount.MountData(); Mount.mounts[44] = mountData21; mountData21.spawnDust = 228; mountData21.buff = 279; mountData21.heightBoost = 24; mountData21.flightTimeMax = 320; mountData21.fatigueMax = 320; mountData21.fallDamage = 0.0f; mountData21.usesHover = true; mountData21.runSpeed = 8f; mountData21.dashSpeed = 16f; mountData21.acceleration = 0.1f; mountData21.jumpHeight = 3; mountData21.jumpSpeed = 1f; mountData21.swimSpeed = mountData21.runSpeed; mountData21.blockExtraJumps = true; mountData21.totalFrames = 10; int[] numArray21 = new int[mountData21.totalFrames]; for (int index = 0; index < numArray21.Length; ++index) numArray21[index] = 9; mountData21.playerYOffsets = numArray21; mountData21.xOffset = 0; mountData21.bodyFrame = 3; mountData21.yOffset = 8; mountData21.playerHeadOffset = 16; mountData21.runningFrameCount = 10; mountData21.runningFrameDelay = 8; mountData21.runningFrameStart = 0; if (Main.netMode != 2) { mountData21.backTexture = (Asset) Asset.Empty; mountData21.backTextureExtra = (Asset) Asset.Empty; mountData21.frontTexture = TextureAssets.Extra[166]; mountData21.frontTextureExtra = (Asset) Asset.Empty; mountData21.textureWidth = mountData21.frontTexture.Width(); mountData21.textureHeight = mountData21.frontTexture.Height(); } Mount.MountData mountData22 = new Mount.MountData(); Mount.mounts[45] = mountData22; mountData22.spawnDust = 6; mountData22.buff = 280; mountData22.heightBoost = 25; mountData22.flightTimeMax = 0; mountData22.fallDamage = 0.1f; mountData22.runSpeed = 12f; mountData22.dashSpeed = 16f; mountData22.acceleration = 0.5f; mountData22.jumpHeight = 14; mountData22.jumpSpeed = 7f; mountData22.emitsLight = true; mountData22.lightColor = new Vector3(0.6f, 0.4f, 0.35f); mountData22.totalFrames = 8; int[] numArray22 = new int[mountData22.totalFrames]; for (int index = 0; index < numArray22.Length; ++index) numArray22[index] = 30; mountData22.playerYOffsets = numArray22; mountData22.xOffset = 0; mountData22.bodyFrame = 0; mountData22.xOffset = 2; mountData22.yOffset = 1; mountData22.playerHeadOffset = 20; mountData22.standingFrameCount = 1; mountData22.standingFrameDelay = 20; mountData22.standingFrameStart = 0; mountData22.runningFrameCount = 6; mountData22.runningFrameDelay = 20; mountData22.runningFrameStart = 2; mountData22.inAirFrameCount = 1; mountData22.inAirFrameDelay = 20; mountData22.inAirFrameStart = 1; mountData22.swimFrameCount = mountData22.runningFrameCount; mountData22.swimFrameDelay = 20; mountData22.swimFrameStart = mountData22.runningFrameStart; if (Main.netMode != 2) { mountData22.backTexture = TextureAssets.Extra[167]; mountData22.backTextureGlow = TextureAssets.GlowMask[283]; mountData22.frontTexture = (Asset) Asset.Empty; mountData22.frontTextureExtra = (Asset) Asset.Empty; mountData22.textureWidth = mountData22.backTexture.Width(); mountData22.textureHeight = mountData22.backTexture.Height(); } Mount.MountData mountData23 = new Mount.MountData(); Mount.mounts[46] = mountData23; mountData23.spawnDust = 15; mountData23.buff = 281; mountData23.heightBoost = 0; mountData23.flightTimeMax = 0; mountData23.fatigueMax = 0; mountData23.fallDamage = 0.0f; mountData23.abilityChargeMax = 40; mountData23.abilityCooldown = 40; mountData23.abilityDuration = 0; mountData23.runSpeed = 8f; mountData23.dashSpeed = 8f; mountData23.acceleration = 0.4f; mountData23.jumpHeight = 8; mountData23.jumpSpeed = 9.01f; mountData23.blockExtraJumps = false; mountData23.totalFrames = 27; int[] numArray23 = new int[mountData23.totalFrames]; for (int index = 0; index < numArray23.Length; ++index) { numArray23[index] = 4; if (index == 1 || index == 2 || index == 7 || index == 8) numArray23[index] += 2; } mountData23.playerYOffsets = numArray23; mountData23.xOffset = 1; mountData23.bodyFrame = 3; mountData23.yOffset = 1; mountData23.playerHeadOffset = 2; mountData23.standingFrameCount = 1; mountData23.standingFrameDelay = 12; mountData23.standingFrameStart = 0; mountData23.runningFrameCount = 11; mountData23.runningFrameDelay = 12; mountData23.runningFrameStart = 0; mountData23.inAirFrameCount = 11; mountData23.inAirFrameDelay = 12; mountData23.inAirFrameStart = 1; mountData23.swimFrameCount = mountData23.runningFrameCount; mountData23.swimFrameDelay = mountData23.runningFrameDelay; mountData23.swimFrameStart = mountData23.runningFrameStart; Mount.santankTextureSize = new Vector2(23f, 2f); if (Main.netMode != 2) { mountData23.backTexture = (Asset) Asset.Empty; mountData23.backTextureExtra = (Asset) Asset.Empty; mountData23.frontTexture = TextureAssets.Extra[168]; mountData23.frontTextureExtra = TextureAssets.Extra[168]; mountData23.textureWidth = mountData23.frontTexture.Width(); mountData23.textureHeight = mountData23.frontTexture.Height(); } Mount.MountData mountData24 = new Mount.MountData(); Mount.mounts[47] = mountData24; mountData24.spawnDust = 5; mountData24.buff = 282; mountData24.heightBoost = 34; mountData24.flightTimeMax = 0; mountData24.fallDamage = 0.2f; mountData24.runSpeed = 4f; mountData24.dashSpeed = 12f; mountData24.acceleration = 0.3f; mountData24.jumpHeight = 10; mountData24.jumpSpeed = 8.01f; mountData24.totalFrames = 16; int[] numArray24 = new int[mountData24.totalFrames]; for (int index = 0; index < numArray24.Length; ++index) numArray24[index] = 30; numArray24[3] += 2; numArray24[4] += 2; numArray24[7] += 2; numArray24[8] += 2; numArray24[12] += 2; numArray24[13] += 2; numArray24[15] += 4; mountData24.playerYOffsets = numArray24; mountData24.xOffset = 5; mountData24.bodyFrame = 3; mountData24.yOffset = -1; mountData24.playerHeadOffset = 34; mountData24.standingFrameCount = 1; mountData24.standingFrameDelay = 12; mountData24.standingFrameStart = 0; mountData24.runningFrameCount = 7; mountData24.runningFrameDelay = 15; mountData24.runningFrameStart = 1; mountData24.dashingFrameCount = 6; mountData24.dashingFrameDelay = 40; mountData24.dashingFrameStart = 9; mountData24.flyingFrameCount = 6; mountData24.flyingFrameDelay = 6; mountData24.flyingFrameStart = 1; mountData24.inAirFrameCount = 1; mountData24.inAirFrameDelay = 12; mountData24.inAirFrameStart = 15; mountData24.idleFrameCount = 0; mountData24.idleFrameDelay = 0; mountData24.idleFrameStart = 0; mountData24.idleFrameLoop = false; mountData24.swimFrameCount = mountData24.inAirFrameCount; mountData24.swimFrameDelay = mountData24.inAirFrameDelay; mountData24.swimFrameStart = mountData24.inAirFrameStart; if (Main.netMode != 2) { mountData24.backTexture = TextureAssets.Extra[169]; mountData24.backTextureGlow = TextureAssets.GlowMask[284]; mountData24.frontTexture = (Asset) Asset.Empty; mountData24.frontTextureExtra = (Asset) Asset.Empty; mountData24.textureWidth = mountData24.backTexture.Width(); mountData24.textureHeight = mountData24.backTexture.Height(); } Mount.MountData mountData25 = new Mount.MountData(); Mount.mounts[48] = mountData25; mountData25.spawnDust = 62; mountData25.buff = 283; mountData25.heightBoost = 14; mountData25.flightTimeMax = 320; mountData25.fallDamage = 0.0f; mountData25.usesHover = true; mountData25.runSpeed = 8f; mountData25.dashSpeed = 8f; mountData25.acceleration = 0.2f; mountData25.jumpHeight = 5; mountData25.jumpSpeed = 6f; mountData25.swimSpeed = mountData25.runSpeed; mountData25.totalFrames = 6; int[] numArray25 = new int[mountData25.totalFrames]; for (int index = 0; index < numArray25.Length; ++index) numArray25[index] = 9; numArray25[0] += 6; numArray25[1] += 6; numArray25[2] += 4; numArray25[3] += 4; numArray25[4] += 4; numArray25[5] += 6; mountData25.playerYOffsets = numArray25; mountData25.xOffset = 1; mountData25.bodyFrame = 0; mountData25.yOffset = 16; mountData25.playerHeadOffset = 16; mountData25.runningFrameCount = 6; mountData25.runningFrameDelay = 8; mountData25.runningFrameStart = 0; if (Main.netMode != 2) { mountData25.backTexture = TextureAssets.Extra[170]; mountData25.backTextureExtra = (Asset) Asset.Empty; mountData25.frontTexture = (Asset) Asset.Empty; mountData25.frontTextureExtra = (Asset) Asset.Empty; mountData25.textureWidth = mountData25.backTexture.Width(); mountData25.textureHeight = mountData25.backTexture.Height(); } Mount.MountData mountData26 = new Mount.MountData(); Mount.mounts[49] = mountData26; mountData26.spawnDust = 35; mountData26.buff = 305; mountData26.heightBoost = 8; mountData26.runSpeed = 2f; mountData26.dashSpeed = 1f; mountData26.acceleration = 0.4f; mountData26.jumpHeight = 4; mountData26.jumpSpeed = 3f; mountData26.swimSpeed = 14f; mountData26.blockExtraJumps = true; mountData26.flightTimeMax = 0; mountData26.fatigueMax = 320; mountData26.usesHover = true; mountData26.emitsLight = true; mountData26.lightColor = new Vector3(0.3f, 0.15f, 0.1f); mountData26.totalFrames = 8; int[] numArray26 = new int[mountData26.totalFrames]; for (int index = 0; index < numArray26.Length; ++index) numArray26[index] = 10; mountData26.playerYOffsets = numArray26; mountData26.xOffset = 2; mountData26.bodyFrame = 3; mountData26.yOffset = 1; mountData26.playerHeadOffset = 16; mountData26.standingFrameCount = 1; mountData26.standingFrameDelay = 12; mountData26.standingFrameStart = 4; mountData26.runningFrameCount = 4; mountData26.runningFrameDelay = 14; mountData26.runningFrameStart = 4; mountData26.inAirFrameCount = 1; mountData26.inAirFrameDelay = 6; mountData26.inAirFrameStart = 4; mountData26.swimFrameCount = 4; mountData26.swimFrameDelay = 16; mountData26.swimFrameStart = 0; if (Main.netMode != 2) { mountData26.backTexture = TextureAssets.Extra[172]; mountData26.backTextureGlow = TextureAssets.GlowMask[285]; mountData26.frontTexture = (Asset) Asset.Empty; mountData26.frontTextureExtra = (Asset) Asset.Empty; mountData26.textureWidth = mountData26.backTexture.Width(); mountData26.textureHeight = mountData26.backTexture.Height(); } Mount.MountData mountData27 = new Mount.MountData(); Mount.mounts[50] = mountData27; mountData27.spawnDust = 243; mountData27.buff = 318; mountData27.heightBoost = 20; mountData27.flightTimeMax = 160; mountData27.fallDamage = 0.5f; mountData27.runSpeed = 6.5f; mountData27.dashSpeed = 6.5f; mountData27.acceleration = 0.2f; mountData27.jumpHeight = 10; mountData27.jumpSpeed = 7.25f; mountData27.constantJump = true; mountData27.totalFrames = 8; int[] numArray27 = new int[mountData27.totalFrames]; for (int index = 0; index < numArray27.Length; ++index) numArray27[index] = 20; numArray27[1] += 2; numArray27[4] += 2; numArray27[5] += 2; mountData27.playerYOffsets = numArray27; mountData27.xOffset = 1; mountData27.bodyFrame = 3; mountData27.yOffset = -1; mountData27.playerHeadOffset = 22; mountData27.standingFrameCount = 1; mountData27.standingFrameDelay = 12; mountData27.standingFrameStart = 0; mountData27.runningFrameCount = 5; mountData27.runningFrameDelay = 16; mountData27.runningFrameStart = 0; mountData27.flyingFrameCount = 0; mountData27.flyingFrameDelay = 0; mountData27.flyingFrameStart = 0; mountData27.inAirFrameCount = 1; mountData27.inAirFrameDelay = 12; mountData27.inAirFrameStart = 5; mountData27.idleFrameCount = 0; mountData27.idleFrameDelay = 0; mountData27.idleFrameStart = 0; mountData27.idleFrameLoop = false; if (Main.netMode == 2) return; mountData27.backTexture = TextureAssets.Extra[204]; mountData27.backTextureExtra = (Asset) Asset.Empty; mountData27.frontTexture = (Asset) Asset.Empty; mountData27.frontTextureExtra = (Asset) Asset.Empty; mountData27.textureWidth = mountData27.backTexture.Width(); mountData27.textureHeight = mountData27.backTexture.Height(); } private static void SetAsHorse(Mount.MountData newMount, int buff, Asset texture) { newMount.spawnDust = 3; newMount.buff = buff; newMount.heightBoost = 34; newMount.flightTimeMax = 0; newMount.fallDamage = 0.5f; newMount.runSpeed = 3f; newMount.dashSpeed = 8f; newMount.acceleration = 0.25f; newMount.jumpHeight = 6; newMount.jumpSpeed = 7.01f; newMount.totalFrames = 16; int[] numArray = new int[newMount.totalFrames]; for (int index = 0; index < numArray.Length; ++index) numArray[index] = 28; numArray[3] += 2; numArray[4] += 2; numArray[7] += 2; numArray[8] += 2; numArray[12] += 2; numArray[13] += 2; numArray[15] += 4; newMount.playerYOffsets = numArray; newMount.xOffset = 5; newMount.bodyFrame = 3; newMount.yOffset = 1; newMount.playerHeadOffset = 34; newMount.standingFrameCount = 1; newMount.standingFrameDelay = 12; newMount.standingFrameStart = 0; newMount.runningFrameCount = 7; newMount.runningFrameDelay = 15; newMount.runningFrameStart = 1; newMount.dashingFrameCount = 6; newMount.dashingFrameDelay = 40; newMount.dashingFrameStart = 9; newMount.flyingFrameCount = 6; newMount.flyingFrameDelay = 6; newMount.flyingFrameStart = 1; newMount.inAirFrameCount = 1; newMount.inAirFrameDelay = 12; newMount.inAirFrameStart = 15; newMount.idleFrameCount = 0; newMount.idleFrameDelay = 0; newMount.idleFrameStart = 0; newMount.idleFrameLoop = false; newMount.swimFrameCount = newMount.inAirFrameCount; newMount.swimFrameDelay = newMount.inAirFrameDelay; newMount.swimFrameStart = newMount.inAirFrameStart; if (Main.netMode == 2) return; newMount.backTexture = texture; newMount.backTextureExtra = (Asset) Asset.Empty; newMount.frontTexture = (Asset) Asset.Empty; newMount.frontTextureExtra = (Asset) Asset.Empty; newMount.textureWidth = newMount.backTexture.Width(); newMount.textureHeight = newMount.backTexture.Height(); } private static void SetAsMinecart( Mount.MountData newMount, int buffToLeft, int buffToRight, Asset texture) { newMount.Minecart = true; newMount.delegations = new Mount.MountDelegatesData(); newMount.delegations.MinecartDust = new Action(DelegateMethods.Minecart.Sparks); newMount.spawnDust = 213; newMount.buff = buffToLeft; newMount.extraBuff = buffToRight; newMount.heightBoost = 10; newMount.flightTimeMax = 0; newMount.fallDamage = 1f; newMount.runSpeed = 13f; newMount.dashSpeed = 13f; newMount.acceleration = 0.04f; newMount.jumpHeight = 15; newMount.jumpSpeed = 5.15f; newMount.blockExtraJumps = true; newMount.totalFrames = 3; int[] numArray = new int[newMount.totalFrames]; for (int index = 0; index < numArray.Length; ++index) numArray[index] = 8; newMount.playerYOffsets = numArray; newMount.xOffset = 1; newMount.bodyFrame = 3; newMount.yOffset = 13; newMount.playerHeadOffset = 14; newMount.standingFrameCount = 1; newMount.standingFrameDelay = 12; newMount.standingFrameStart = 0; newMount.runningFrameCount = 3; newMount.runningFrameDelay = 12; newMount.runningFrameStart = 0; newMount.flyingFrameCount = 0; newMount.flyingFrameDelay = 0; newMount.flyingFrameStart = 0; newMount.inAirFrameCount = 0; newMount.inAirFrameDelay = 0; newMount.inAirFrameStart = 0; newMount.idleFrameCount = 0; newMount.idleFrameDelay = 0; newMount.idleFrameStart = 0; newMount.idleFrameLoop = false; if (Main.netMode == 2) return; newMount.backTexture = (Asset) Asset.Empty; newMount.backTextureExtra = (Asset) Asset.Empty; newMount.frontTexture = texture; newMount.frontTextureExtra = (Asset) Asset.Empty; newMount.textureWidth = newMount.frontTexture.Width(); newMount.textureHeight = newMount.frontTexture.Height(); } public bool Active => this._active; public int Type => this._type; public int FlyTime => this._flyTime; public int BuffType => this._data.buff; public int BodyFrame => this._data.bodyFrame; public int XOffset => this._data.xOffset; public int YOffset => this._data.yOffset; public int PlayerOffset => !this._active ? 0 : this._data.playerYOffsets[this._frame]; public int PlayerOffsetHitbox => !this._active ? 0 : -this.PlayerOffset + this._data.heightBoost; public int PlayerHeadOffset => !this._active ? 0 : this._data.playerHeadOffset; public int HeightBoost => this._data.heightBoost; public static int GetHeightBoost(int MountType) => MountType <= -1 || MountType >= MountID.Count ? 0 : Mount.mounts[MountType].heightBoost; public float RunSpeed { get { if (this._type == 4 && this._frameState == 4 || (this._type == 12 || this._type == 44 || this._type == 49) && this._frameState == 4) return this._data.swimSpeed; if (this._type == 12 && this._frameState == 2) return this._data.runSpeed + 13.5f; if (this._type == 44 && this._frameState == 2) return this._data.runSpeed + 4f; if (this._type == 5 && this._frameState == 2) return this._data.runSpeed + (float) (4.0 * (1.0 - (double) (this._fatigue / this._fatigueMax))); return this._type == 50 && this._frameState == 2 ? this._data.runSpeed + 4f : this._data.runSpeed; } } public float DashSpeed => this._data.dashSpeed; public float Acceleration => this._data.acceleration; public float FallDamage => this._data.fallDamage; public int JumpHeight(float xVelocity) { int jumpHeight = this._data.jumpHeight; switch (this._type) { case 0: jumpHeight += (int) ((double) Math.Abs(xVelocity) / 4.0); break; case 1: jumpHeight += (int) ((double) Math.Abs(xVelocity) / 2.5); break; case 4: case 49: if (this._frameState == 4) { jumpHeight += 5; break; } break; } return jumpHeight; } public float JumpSpeed(float xVelocity) { float jumpSpeed = this._data.jumpSpeed; switch (this._type) { case 0: case 1: jumpSpeed += Math.Abs(xVelocity) / 7f; break; case 4: case 49: if (this._frameState == 4) { jumpSpeed += 2.5f; break; } break; } return jumpSpeed; } public bool AutoJump => this._data.constantJump; public bool BlockExtraJumps => this._data.blockExtraJumps; public bool IsConsideredASlimeMount => this._type == 3 || this._type == 50; public bool Cart => this._data != null && this._active && this._data.Minecart; public bool Directional => this._data == null || this._data.MinecartDirectional; public Mount.MountDelegatesData Delegations => this._data == null ? this._defaultDelegatesData : this._data.delegations; public Vector2 Origin => new Vector2((float) this._data.textureWidth / 2f, (float) this._data.textureHeight / (2f * (float) this._data.totalFrames)); public bool CanFly() => this._active && this._data.flightTimeMax != 0 && this._type != 48; public bool CanHover() { if (!this._active || !this._data.usesHover) return false; if (this._type == 49) return this._frameState == 4; return this._data.usesHover; } public bool AbilityCharging => this._abilityCharging; public bool AbilityActive => this._abilityActive; public float AbilityCharge => (float) this._abilityCharge / (float) this._data.abilityChargeMax; public void StartAbilityCharge(Player mountedPlayer) { if (Main.myPlayer == mountedPlayer.whoAmI) { if (this._type != 9) return; int Type = 441; double num = (double) Main.screenPosition.X + (double) Main.mouseX; float Y = Main.screenPosition.Y + (float) Main.mouseY; float ai0 = (float) num - mountedPlayer.position.X; float ai1 = Y - mountedPlayer.position.Y; Projectile.NewProjectile((float) num, Y, 0.0f, 0.0f, Type, 0, 0.0f, mountedPlayer.whoAmI, ai0, ai1); this._abilityCharging = true; } else { if (this._type != 9) return; this._abilityCharging = true; } } public void StopAbilityCharge() { switch (this._type) { case 9: case 46: this._abilityCharging = false; this._abilityCooldown = this._data.abilityCooldown; this._abilityDuration = this._data.abilityDuration; break; } } public bool CheckBuff(int buffID) => this._data.buff == buffID || this._data.extraBuff == buffID; public void AbilityRecovery() { if (this._abilityCharging) { if (this._abilityCharge < this._data.abilityChargeMax) ++this._abilityCharge; } else if (this._abilityCharge > 0) --this._abilityCharge; if (this._abilityCooldown > 0) --this._abilityCooldown; if (this._abilityDuration <= 0) return; --this._abilityDuration; } public void FatigueRecovery() { if ((double) this._fatigue > 2.0) this._fatigue -= 2f; else this._fatigue = 0.0f; } public bool Flight() { if (this._flyTime <= 0) return false; --this._flyTime; return true; } public bool AllowDirectionChange => this._type != 9 || this._abilityCooldown < this._data.abilityCooldown / 2; public void UpdateDrill(Player mountedPlayer, bool controlUp, bool controlDown) { Mount.DrillMountData mountSpecificData = (Mount.DrillMountData) this._mountSpecificData; for (int index = 0; index < mountSpecificData.beams.Length; ++index) { Mount.DrillBeam beam = mountSpecificData.beams[index]; if (beam.cooldown > 1) --beam.cooldown; else if (beam.cooldown == 1) { beam.cooldown = 0; beam.curTileTarget = Point16.NegativeOne; } } mountSpecificData.diodeRotation = (float) ((double) mountSpecificData.diodeRotation * 0.850000023841858 + 0.150000005960464 * (double) mountSpecificData.diodeRotationTarget); if (mountSpecificData.beamCooldown <= 0) return; --mountSpecificData.beamCooldown; } public void UseDrill(Player mountedPlayer) { if (this._type != 8 || !this._abilityActive) return; Mount.DrillMountData mountSpecificData = (Mount.DrillMountData) this._mountSpecificData; if (mountSpecificData.beamCooldown != 0) return; for (int index1 = 0; index1 < mountSpecificData.beams.Length; ++index1) { Mount.DrillBeam beam = mountSpecificData.beams[index1]; if (beam.cooldown == 0) { Point16 point16 = this.DrillSmartCursor(mountedPlayer, mountSpecificData); if (point16 != Point16.NegativeOne) { beam.curTileTarget = point16; int drillPickPower = Mount.drillPickPower; bool flag1 = mountedPlayer.whoAmI == Main.myPlayer; if (flag1) { bool flag2 = true; if (WorldGen.InWorld((int) point16.X, (int) point16.Y) && Main.tile[(int) point16.X, (int) point16.Y] != null && Main.tile[(int) point16.X, (int) point16.Y].type == (ushort) 26 && !Main.hardMode) { flag2 = false; mountedPlayer.Hurt(PlayerDeathReason.ByOther(4), mountedPlayer.statLife / 2, -mountedPlayer.direction); } if (mountedPlayer.noBuilding) flag2 = false; if (flag2) mountedPlayer.PickTile((int) point16.X, (int) point16.Y, drillPickPower); } Vector2 Position = new Vector2((float) ((int) point16.X << 4) + 8f, (float) ((int) point16.Y << 4) + 8f); float rotation = (Position - mountedPlayer.Center).ToRotation(); for (int index2 = 0; index2 < 2; ++index2) { float num1 = rotation + (float) ((Main.rand.Next(2) == 1 ? -1.0 : 1.0) * 1.57079637050629); float num2 = (float) (Main.rand.NextDouble() * 2.0 + 2.0); Vector2 vector2 = new Vector2((float) Math.Cos((double) num1) * num2, (float) Math.Sin((double) num1) * num2); int index3 = Dust.NewDust(Position, 0, 0, 230, vector2.X, vector2.Y); Main.dust[index3].noGravity = true; Main.dust[index3].customData = (object) mountedPlayer; } if (flag1) Tile.SmoothSlope((int) point16.X, (int) point16.Y, sync: true); beam.cooldown = Mount.drillPickTime; break; } break; } } mountSpecificData.beamCooldown = Mount.drillBeamCooldownMax; } private Point16 DrillSmartCursor(Player mountedPlayer, Mount.DrillMountData data) { Vector2 vector2_1 = mountedPlayer.whoAmI != Main.myPlayer ? data.crosshairPosition : Main.screenPosition + new Vector2((float) Main.mouseX, (float) Main.mouseY); Vector2 center = mountedPlayer.Center; Vector2 vector2_2 = vector2_1 - center; float num1 = vector2_2.Length(); if ((double) num1 > 224.0) num1 = 224f; float num2 = num1 + 32f; vector2_2.Normalize(); Vector2 start = center; Vector2 vector2_3 = center + vector2_2 * num2; Point16 tilePoint = new Point16(-1, -1); Vector2 end = vector2_3; Utils.TileActionAttempt plot = (Utils.TileActionAttempt) ((x, y) => { tilePoint = new Point16(x, y); for (int index = 0; index < data.beams.Length; ++index) { if (data.beams[index].curTileTarget == tilePoint) return true; } return !WorldGen.CanKillTile(x, y) || Main.tile[x, y] == null || Main.tile[x, y].inActive() || !Main.tile[x, y].active(); }); return !Utils.PlotTileLine(start, end, 65.6f, plot) ? tilePoint : new Point16(-1, -1); } public void UseAbility(Player mountedPlayer, Vector2 mousePosition, bool toggleOn) { switch (this._type) { case 8: if (Main.myPlayer == mountedPlayer.whoAmI) { if (!toggleOn) { this._abilityActive = false; break; } if (this._abilityActive) break; if (mountedPlayer.whoAmI == Main.myPlayer) { double num = (double) Main.screenPosition.X + (double) Main.mouseX; float Y = Main.screenPosition.Y + (float) Main.mouseY; float ai0 = (float) num - mountedPlayer.position.X; float ai1 = Y - mountedPlayer.position.Y; Projectile.NewProjectile((float) num, Y, 0.0f, 0.0f, 453, 0, 0.0f, mountedPlayer.whoAmI, ai0, ai1); } this._abilityActive = true; break; } this._abilityActive = toggleOn; break; case 9: if (Main.myPlayer != mountedPlayer.whoAmI) break; int Type1 = 606; mousePosition = this.ClampToDeadZone(mountedPlayer, mousePosition); Vector2 vector2_1; vector2_1.X = mountedPlayer.position.X + (float) (mountedPlayer.width / 2); vector2_1.Y = mountedPlayer.position.Y + (float) mountedPlayer.height; int num1 = (this._frameExtra - 6) * 2; for (int index = 0; index < 2; ++index) { Vector2 vector2_2; vector2_2.Y = vector2_1.Y + Mount.scutlixEyePositions[num1 + index].Y + (float) this._data.yOffset; vector2_2.X = mountedPlayer.direction != -1 ? vector2_1.X + Mount.scutlixEyePositions[num1 + index].X + (float) this._data.xOffset : vector2_1.X - Mount.scutlixEyePositions[num1 + index].X - (float) this._data.xOffset; Vector2 vector2_3 = mousePosition - vector2_2; vector2_3.Normalize(); Vector2 vector2_4 = vector2_3 * 14f; int Damage = 100; vector2_2 += vector2_4; Projectile.NewProjectile(vector2_2.X, vector2_2.Y, vector2_4.X, vector2_4.Y, Type1, Damage, 0.0f, Main.myPlayer); } break; case 46: if (Main.myPlayer != mountedPlayer.whoAmI) break; if (this._abilityCooldown <= 10) { int Damage = 120; Vector2 vector2_5 = mountedPlayer.Center + new Vector2((float) (mountedPlayer.width * -mountedPlayer.direction), 26f); Vector2 vector2_6 = new Vector2(0.0f, -4f).RotatedByRandom(0.100000001490116); Projectile.NewProjectile(vector2_5.X, vector2_5.Y, vector2_6.X, vector2_6.Y, 930, Damage, 0.0f, Main.myPlayer); SoundEngine.PlaySound(SoundID.Item89.SoundId, (int) vector2_5.X, (int) vector2_5.Y, SoundID.Item89.Style, 0.2f); } int Type2 = 14; int Damage1 = 100; mousePosition = this.ClampToDeadZone(mountedPlayer, mousePosition); Vector2 vector2_7; vector2_7.X = mountedPlayer.position.X + (float) (mountedPlayer.width / 2); vector2_7.Y = mountedPlayer.position.Y + (float) mountedPlayer.height; Vector2 vector2_8 = new Vector2(vector2_7.X + (float) (mountedPlayer.width * mountedPlayer.direction), vector2_7.Y - 12f); Vector2 vector2_9 = ((mousePosition - vector2_8).SafeNormalize(Vector2.Zero) * 12f).RotatedByRandom(0.200000002980232); Projectile.NewProjectile(vector2_8.X, vector2_8.Y, vector2_9.X, vector2_9.Y, Type2, Damage1, 0.0f, Main.myPlayer); SoundEngine.PlaySound(SoundID.Item11.SoundId, (int) vector2_8.X, (int) vector2_8.Y, SoundID.Item11.Style, 0.2f); break; } } public bool Hover(Player mountedPlayer) { bool flag1 = this.DoesHoverIgnoresFatigue(); bool flag2 = this._frameState == 2 || this._frameState == 4; if (this._type == 49) flag2 = this._frameState == 4; if (flag2) { bool flag3 = true; float num1 = 1f; float num2 = mountedPlayer.gravity / Player.defaultGravity; if (mountedPlayer.slowFall) num2 /= 3f; if ((double) num2 < 0.25) num2 = 0.25f; if (!flag1) { if (this._flyTime > 0) --this._flyTime; else if ((double) this._fatigue < (double) this._fatigueMax) this._fatigue += num2; else flag3 = false; } if (this._type == 12 && !mountedPlayer.MountFishronSpecial) num1 = 0.5f; float num3 = this._fatigue / this._fatigueMax; if (flag1) num3 = 0.0f; bool flag4 = true; if (this._type == 48) flag4 = false; float num4 = 4f * num3; float num5 = 4f * num3; bool flag5 = false; if (this._type == 48) { num4 = 0.0f; num5 = 0.0f; if (!flag3) flag5 = true; if (mountedPlayer.controlDown) num5 = 8f; } if ((double) num4 == 0.0) num4 = -1f / 1000f; if ((double) num5 == 0.0) num5 = -1f / 1000f; float num6 = mountedPlayer.velocity.Y; if (((!flag4 ? 0 : (mountedPlayer.controlUp ? 1 : (mountedPlayer.controlJump ? 1 : 0))) & (flag3 ? 1 : 0)) != 0) { num4 = (float) (-2.0 - 6.0 * (1.0 - (double) num3)); if (this._type == 48) num4 /= 3f; num6 -= this._data.acceleration * num1; } else if (mountedPlayer.controlDown) { num6 += this._data.acceleration * num1; num5 = 8f; } else if (flag5) { float num7 = mountedPlayer.gravity * mountedPlayer.gravDir; num6 += num7; num5 = 4f; } else { int jump = mountedPlayer.jump; } if ((double) num6 < (double) num4) { if ((double) num4 - (double) num6 < (double) this._data.acceleration) num6 = num4; else num6 += this._data.acceleration * num1; } else if ((double) num6 > (double) num5) { if ((double) num6 - (double) num5 < (double) this._data.acceleration) num6 = num5; else num6 -= this._data.acceleration * num1; } mountedPlayer.velocity.Y = num6; if ((double) num4 == -1.0 / 1000.0 && (double) num5 == -1.0 / 1000.0 && (double) num6 == -1.0 / 1000.0) mountedPlayer.position.Y -= -1f / 1000f; mountedPlayer.fallStart = (int) ((double) mountedPlayer.position.Y / 16.0); } else if (!flag1) mountedPlayer.velocity.Y += mountedPlayer.gravity * mountedPlayer.gravDir; else if ((double) mountedPlayer.velocity.Y == 0.0) { Vector2 Velocity = Vector2.UnitY * mountedPlayer.gravDir * 1f; if ((double) Collision.TileCollision(mountedPlayer.position, Velocity, mountedPlayer.width, mountedPlayer.height, gravDir: ((int) mountedPlayer.gravDir)).Y != 0.0 || mountedPlayer.controlDown) mountedPlayer.velocity.Y = 1f / 1000f; } else if ((double) mountedPlayer.velocity.Y == -1.0 / 1000.0) mountedPlayer.velocity.Y -= -1f / 1000f; if (this._type == 7) { float num8 = mountedPlayer.velocity.X / this._data.dashSpeed; if ((double) num8 > 0.95) num8 = 0.95f; if ((double) num8 < -0.95) num8 = -0.95f; float num9 = (float) (0.785398185253143 * (double) num8 / 2.0); float num10 = Math.Abs((float) (2.0 - (double) this._frame / 2.0)) / 2f; Lighting.AddLight((int) ((double) mountedPlayer.position.X + (double) (mountedPlayer.width / 2)) / 16, (int) ((double) mountedPlayer.position.Y + (double) (mountedPlayer.height / 2)) / 16, 0.4f, 0.2f * num10, 0.0f); mountedPlayer.fullRotation = num9; } else if (this._type == 8) { float num11 = mountedPlayer.velocity.X / this._data.dashSpeed; if ((double) num11 > 0.95) num11 = 0.95f; if ((double) num11 < -0.95) num11 = -0.95f; float num12 = (float) (0.785398185253143 * (double) num11 / 2.0); mountedPlayer.fullRotation = num12; Mount.DrillMountData mountSpecificData = (Mount.DrillMountData) this._mountSpecificData; float num13 = mountSpecificData.outerRingRotation + mountedPlayer.velocity.X / 80f; if ((double) num13 > 3.14159274101257) num13 -= 6.283185f; else if ((double) num13 < -3.14159274101257) num13 += 6.283185f; mountSpecificData.outerRingRotation = num13; } else if (this._type == 23) { float num14 = MathHelper.Clamp(-mountedPlayer.velocity.Y / this._data.dashSpeed, -1f, 1f); float num15 = MathHelper.Clamp(mountedPlayer.velocity.X / this._data.dashSpeed, -1f, 1f); float num16 = -0.1963495f * num14 * (float) mountedPlayer.direction + 0.1963495f * num15; mountedPlayer.fullRotation = num16; mountedPlayer.fullRotationOrigin = new Vector2((float) (mountedPlayer.width / 2), (float) mountedPlayer.height); } return true; } private bool DoesHoverIgnoresFatigue() => this._type == 7 || this._type == 8 || this._type == 12 || this._type == 23 || this._type == 44 || this._type == 49; private float GetWitchBroomTrinketRotation(Player player) { float num1 = Utils.Clamp(player.velocity.X / 10f, -1f, 1f); Point tileCoordinates = player.Center.ToTileCoordinates(); float num2 = 0.5f; if (WorldGen.InAPlaceWithWind(tileCoordinates.X, tileCoordinates.Y, 1, 1)) num2 = 1f; float num3 = (float) (Math.Sin((double) player.miscCounter / 300.0 * 6.28318548202515 * 3.0) * 0.785398185253143 * (double) Math.Abs(Main.WindForVisuals) * 0.5 + 0.785398185253143 * -(double) Main.WindForVisuals * 0.5) * num2; return (float) ((double) num1 * Math.Sin((double) player.miscCounter / 150.0 * 6.28318548202515 * 3.0) * 0.785398185253143 * 0.5 + (double) num1 * 0.785398185253143 * 0.5) + num3; } private Vector2 GetWitchBroomTrinketOriginOffset(Player player) => new Vector2((float) (27 * player.direction), 5f); public void UpdateFrame(Player mountedPlayer, int state, Vector2 velocity) { if (this._frameState != state) { this._frameState = state; this._frameCounter = 0.0f; } if (state != 0) this._idleTime = 0; if (this._data.emitsLight) { Point tileCoordinates = mountedPlayer.Center.ToTileCoordinates(); Lighting.AddLight(tileCoordinates.X, tileCoordinates.Y, this._data.lightColor.X, this._data.lightColor.Y, this._data.lightColor.Z); } switch (this._type) { case 5: if (state != 2) { this._frameExtra = 0; this._frameExtraCounter = 0.0f; break; } break; case 7: state = 2; break; case 8: if (state == 0 || state == 1) { Vector2 position; position.X = mountedPlayer.position.X; position.Y = mountedPlayer.position.Y + (float) mountedPlayer.height; int num1 = (int) ((double) position.X / 16.0); double num2 = (double) position.Y / 16.0; float num3 = 0.0f; float width = (float) mountedPlayer.width; while ((double) width > 0.0) { float num4 = (float) ((num1 + 1) * 16) - position.X; if ((double) num4 > (double) width) num4 = width; num3 += Collision.GetTileRotation(position) * num4; width -= num4; position.X += num4; ++num1; } float num5 = num3 / (float) mountedPlayer.width - mountedPlayer.fullRotation; float num6 = 0.0f; float num7 = 0.1570796f; if ((double) num5 < 0.0) num6 = (double) num5 <= -(double) num7 ? -num7 : num5; else if ((double) num5 > 0.0) num6 = (double) num5 >= (double) num7 ? num7 : num5; if ((double) num6 != 0.0) { mountedPlayer.fullRotation += num6; if ((double) mountedPlayer.fullRotation > 0.785398185253143) mountedPlayer.fullRotation = 0.7853982f; if ((double) mountedPlayer.fullRotation < -0.785398185253143) { mountedPlayer.fullRotation = -0.7853982f; break; } break; } break; } break; case 9: if (!this._aiming) { ++this._frameExtraCounter; if ((double) this._frameExtraCounter >= 12.0) { this._frameExtraCounter = 0.0f; ++this._frameExtra; if (this._frameExtra >= 6) { this._frameExtra = 0; break; } break; } break; } break; case 10: case 40: case 41: case 42: case 47: bool flag1 = (double) Math.Abs(velocity.X) > (double) this.DashSpeed - (double) this.RunSpeed / 2.0; if (state == 1) { bool flag2 = false; if (flag1) { state = 5; if (this._frameExtra < 6) flag2 = true; ++this._frameExtra; } else this._frameExtra = 0; if (((this._type == 10 ? 1 : (this._type == 47 ? 1 : 0)) & (flag2 ? 1 : 0)) != 0) { int Type = 6; if (this._type == 10) Type = Utils.SelectRandom(Main.rand, 176, 177, 179); Vector2 Position = mountedPlayer.Center + new Vector2((float) (mountedPlayer.width * mountedPlayer.direction), 0.0f); Vector2 vector2_1 = new Vector2(40f, 30f); float num8 = 6.283185f * Main.rand.NextFloat(); for (float num9 = 0.0f; (double) num9 < 14.0; ++num9) { Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, Type)]; Vector2 vector2_2 = Vector2.UnitY.RotatedBy((double) num9 * 6.28318548202515 / 14.0 + (double) num8) * (0.2f * (float) this._frameExtra); dust.position = Position + vector2_2 * vector2_1; dust.velocity = vector2_2 + new Vector2(this.RunSpeed - (float) (Math.Sign(velocity.X) * this._frameExtra * 2), 0.0f); dust.noGravity = true; if (this._type == 47) dust.noLightEmittence = true; dust.scale = (float) (1.0 + (double) Main.rand.NextFloat() * 0.800000011920929); dust.fadeIn = Main.rand.NextFloat() * 2f; dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); } } } if (this._type == 10 & flag1) { Dust dust = Main.dust[Dust.NewDust(mountedPlayer.position, mountedPlayer.width, mountedPlayer.height, Utils.SelectRandom(Main.rand, 176, 177, 179))]; dust.velocity = Vector2.Zero; dust.noGravity = true; dust.scale = (float) (0.5 + (double) Main.rand.NextFloat() * 0.800000011920929); dust.fadeIn = (float) (1.0 + (double) Main.rand.NextFloat() * 2.0); dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); } if (this._type == 47 & flag1 && (double) velocity.Y == 0.0) { int i = (int) mountedPlayer.Center.X / 16; int num = (int) ((double) mountedPlayer.position.Y + (double) mountedPlayer.height - 1.0) / 16; Tile tile = Main.tile[i, num + 1]; if (tile != null && tile.active() && tile.liquid == (byte) 0 && WorldGen.SolidTileAllowBottomSlope(i, num + 1)) { ParticleOrchestrator.RequestParticleSpawn(true, ParticleOrchestraType.WallOfFleshGoatMountFlames, new ParticleOrchestraSettings() { PositionInWorld = new Vector2((float) (i * 16 + 8), (float) (num * 16 + 16)) }, new int?(mountedPlayer.whoAmI)); break; } break; } break; case 14: int num10 = (double) Math.Abs(velocity.X) > (double) this.RunSpeed / 2.0 ? 1 : 0; float num11 = (float) Math.Sign(mountedPlayer.velocity.X); float y = 12f; float num12 = 40f; mountedPlayer.basiliskCharge = num10 != 0 ? Utils.Clamp(mountedPlayer.basiliskCharge + 0.005555556f, 0.0f, 1f) : 0.0f; if ((double) mountedPlayer.position.Y > Main.worldSurface * 16.0 + 160.0) Lighting.AddLight(mountedPlayer.Center, 0.5f, 0.1f, 0.1f); if (num10 != 0 && (double) velocity.Y == 0.0) { for (int index = 0; index < 2; ++index) { Dust dust = Main.dust[Dust.NewDust(mountedPlayer.BottomLeft, mountedPlayer.width, 6, 31)]; dust.velocity = new Vector2(velocity.X * 0.15f, Main.rand.NextFloat() * -2f); dust.noLight = true; dust.scale = (float) (0.5 + (double) Main.rand.NextFloat() * 0.800000011920929); dust.fadeIn = (float) (0.5 + (double) Main.rand.NextFloat() * 1.0); dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); } if (mountedPlayer.cMount == 0) { Player player1 = mountedPlayer; player1.position = player1.position + new Vector2(num11 * 24f, 0.0f); mountedPlayer.FloorVisuals(true); Player player2 = mountedPlayer; player2.position = player2.position - new Vector2(num11 * 24f, 0.0f); } } if ((double) num11 == (double) mountedPlayer.direction) { for (int index = 0; index < (int) (3.0 * (double) mountedPlayer.basiliskCharge); ++index) { Dust dust = Main.dust[Dust.NewDust(mountedPlayer.BottomLeft, mountedPlayer.width, 6, 6)]; Vector2 vector2 = mountedPlayer.Center + new Vector2(num11 * num12, y); dust.position = mountedPlayer.Center + new Vector2(num11 * (num12 - 2f), (float) ((double) y - 6.0 + (double) Main.rand.NextFloat() * 12.0)); dust.velocity = (dust.position - vector2).SafeNormalize(Vector2.Zero) * (float) (3.5 + (double) Main.rand.NextFloat() * 0.5); if ((double) dust.velocity.Y < 0.0) dust.velocity.Y *= (float) (1.0 + 2.0 * (double) Main.rand.NextFloat()); dust.velocity += mountedPlayer.velocity * 0.55f; dust.velocity *= mountedPlayer.velocity.Length() / this.RunSpeed; dust.velocity *= mountedPlayer.basiliskCharge; dust.noGravity = true; dust.noLight = true; dust.scale = (float) (0.5 + (double) Main.rand.NextFloat() * 0.800000011920929); dust.fadeIn = (float) (0.5 + (double) Main.rand.NextFloat() * 1.0); dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); } break; } break; case 17: this.UpdateFrame_GolfCart(mountedPlayer, state, velocity); break; case 39: ++this._frameExtraCounter; if ((double) this._frameExtraCounter > 6.0) { this._frameExtraCounter = 0.0f; ++this._frameExtra; if (this._frameExtra > 5) { this._frameExtra = 0; break; } break; } break; case 43: if ((double) mountedPlayer.velocity.Y == 0.0) mountedPlayer.isPerformingPogostickTricks = false; if (mountedPlayer.isPerformingPogostickTricks) mountedPlayer.fullRotation += (float) ((double) mountedPlayer.direction * 6.28318548202515 / 30.0); else mountedPlayer.fullRotation = (float) ((double) Math.Sign(mountedPlayer.velocity.X) * (double) Utils.GetLerpValue(0.0f, this.RunSpeed - 0.2f, Math.Abs(mountedPlayer.velocity.X), true) * 0.400000005960464); mountedPlayer.fullRotationOrigin = new Vector2((float) (mountedPlayer.width / 2), (float) mountedPlayer.height * 0.8f); break; case 44: state = 1; bool flag3 = (double) Math.Abs(velocity.X) > (double) this.DashSpeed - (double) this.RunSpeed / 4.0; if (this._mountSpecificData == null) this._mountSpecificData = (object) false; bool mountSpecificData1 = (bool) this._mountSpecificData; if (mountSpecificData1 && !flag3) this._mountSpecificData = (object) false; else if (!mountSpecificData1 & flag3) { this._mountSpecificData = (object) true; Vector2 Position = mountedPlayer.Center + new Vector2((float) (mountedPlayer.width * mountedPlayer.direction), 0.0f); Vector2 vector2_3 = new Vector2(40f, 30f); float num13 = 6.283185f * Main.rand.NextFloat(); for (float num14 = 0.0f; (double) num14 < 20.0; ++num14) { Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, 228)]; Vector2 vector2_4 = Vector2.UnitY.RotatedBy((double) num14 * 6.28318548202515 / 20.0 + (double) num13) * 0.8f; dust.position = Position + vector2_4 * vector2_3; dust.velocity = vector2_4 + new Vector2(this.RunSpeed - (float) Math.Sign(velocity.Length()), 0.0f); if ((double) velocity.X > 0.0) dust.velocity.X *= -1f; if (Main.rand.Next(2) == 0) dust.velocity *= 0.5f; dust.noGravity = true; dust.scale = (float) (1.5 + (double) Main.rand.NextFloat() * 0.800000011920929); dust.fadeIn = 0.0f; dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); } } int maxValue = (int) this.RunSpeed - (int) Math.Abs(velocity.X); if (maxValue <= 0) maxValue = 1; if (Main.rand.Next(maxValue) == 0) { int Height = 22; int num15 = mountedPlayer.width / 2 + 10; Vector2 bottom = mountedPlayer.Bottom; bottom.X -= (float) num15; bottom.Y -= (float) (Height - 6); Dust dust = Main.dust[Dust.NewDust(bottom, num15 * 2, Height, 228)]; dust.velocity = Vector2.Zero; dust.noGravity = true; dust.noLight = true; dust.scale = (float) (0.25 + (double) Main.rand.NextFloat() * 0.800000011920929); dust.fadeIn = (float) (0.5 + (double) Main.rand.NextFloat() * 2.0); dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); break; } break; case 45: bool flag4 = (double) Math.Abs(velocity.X) > (double) this.DashSpeed * 0.899999976158142; if (this._mountSpecificData == null) this._mountSpecificData = (object) false; bool mountSpecificData2 = (bool) this._mountSpecificData; if (mountSpecificData2 && !flag4) this._mountSpecificData = (object) false; else if (!mountSpecificData2 & flag4) { this._mountSpecificData = (object) true; Vector2 Position = mountedPlayer.Center + new Vector2((float) (mountedPlayer.width * mountedPlayer.direction), 0.0f); Vector2 vector2_5 = new Vector2(40f, 30f); float num16 = 6.283185f * Main.rand.NextFloat(); for (float num17 = 0.0f; (double) num17 < 20.0; ++num17) { Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, 6)]; Vector2 vector2_6 = Vector2.UnitY.RotatedBy((double) num17 * 6.28318548202515 / 20.0 + (double) num16) * 0.8f; dust.position = Position + vector2_6 * vector2_5; dust.velocity = vector2_6 + new Vector2(this.RunSpeed - (float) Math.Sign(velocity.Length()), 0.0f); if ((double) velocity.X > 0.0) dust.velocity.X *= -1f; if (Main.rand.Next(2) == 0) dust.velocity *= 0.5f; dust.noGravity = true; dust.scale = (float) (1.5 + (double) Main.rand.NextFloat() * 0.800000011920929); dust.fadeIn = 0.0f; dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); } } if (flag4) { int Type = (int) Utils.SelectRandom(Main.rand, (short) 6, (short) 6, (short) 31); int num18 = 6; Dust dust = Main.dust[Dust.NewDust(mountedPlayer.Center - new Vector2((float) num18, (float) (num18 - 12)), num18 * 2, num18 * 2, Type)]; dust.velocity = mountedPlayer.velocity * 0.1f; if (Main.rand.Next(2) == 0) dust.noGravity = true; dust.scale = (float) (0.699999988079071 + (double) Main.rand.NextFloat() * 0.800000011920929); if (Main.rand.Next(3) == 0) dust.fadeIn = 0.1f; if (Type == 31) { dust.noGravity = true; dust.scale *= 1.5f; dust.fadeIn = 0.2f; } dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); break; } break; case 46: if (state != 0) state = 1; if (!this._aiming) { if (state == 0) { this._frameExtra = 12; this._frameExtraCounter = 0.0f; break; } if (this._frameExtra < 12) this._frameExtra = 12; this._frameExtraCounter += Math.Abs(velocity.X); if ((double) this._frameExtraCounter >= 8.0) { this._frameExtraCounter = 0.0f; ++this._frameExtra; if (this._frameExtra >= 24) { this._frameExtra = 12; break; } break; } break; } if (this._frameExtra < 24) this._frameExtra = 24; ++this._frameExtraCounter; if ((double) this._frameExtraCounter >= 3.0) { this._frameExtraCounter = 0.0f; ++this._frameExtra; if (this._frameExtra >= 27) { this._frameExtra = 24; break; } break; } break; case 48: state = 1; break; case 49: if (state != 4 && mountedPlayer.wet) this._frameState = state = 4; double num19 = (double) velocity.Length(); float num20 = mountedPlayer.velocity.Y * 0.05f; if (mountedPlayer.direction < 0) num20 *= -1f; mountedPlayer.fullRotation = num20; mountedPlayer.fullRotationOrigin = new Vector2((float) (mountedPlayer.width / 2), (float) (mountedPlayer.height / 2)); break; case 50: if ((double) mountedPlayer.velocity.Y == 0.0) { this._frameExtraCounter = 0.0f; this._frameExtra = 3; break; } ++this._frameExtraCounter; if (this.Flight()) ++this._frameExtraCounter; if ((double) this._frameExtraCounter > 7.0) { this._frameExtraCounter = 0.0f; ++this._frameExtra; if (this._frameExtra > 3) { this._frameExtra = 0; break; } break; } break; } switch (state) { case 0: if (this._data.idleFrameCount != 0) { if (this._type == 5) { if ((double) this._fatigue != 0.0) { if (this._idleTime == 0) this._idleTimeNext = this._idleTime + 1; } else { this._idleTime = 0; this._idleTimeNext = 2; } } else if (this._idleTime == 0) { this._idleTimeNext = Main.rand.Next(900, 1500); if (this._type == 17) this._idleTimeNext = Main.rand.Next(120, 300); } ++this._idleTime; } ++this._frameCounter; if (this._data.idleFrameCount != 0 && this._idleTime >= this._idleTimeNext) { float idleFrameDelay = (float) this._data.idleFrameDelay; if (this._type == 5) idleFrameDelay *= (float) (2.0 - 1.0 * (double) this._fatigue / (double) this._fatigueMax); int num21 = (int) ((double) (this._idleTime - this._idleTimeNext) / (double) idleFrameDelay); int idleFrameCount = this._data.idleFrameCount; if (num21 >= idleFrameCount) { if (this._data.idleFrameLoop) { this._idleTime = this._idleTimeNext; this._frame = this._data.idleFrameStart; } else { this._frameCounter = 0.0f; this._frame = this._data.standingFrameStart; this._idleTime = 0; } } else this._frame = this._data.idleFrameStart + num21; if (this._type == 5) this._frameExtra = this._frame; if (this._type != 17) break; this._frameExtra = this._frame; this._frame = 0; break; } if ((double) this._frameCounter > (double) this._data.standingFrameDelay) { this._frameCounter -= (float) this._data.standingFrameDelay; ++this._frame; } if (this._frame >= this._data.standingFrameStart && this._frame < this._data.standingFrameStart + this._data.standingFrameCount) break; this._frame = this._data.standingFrameStart; break; case 1: float num22; switch (this._type) { case 6: num22 = this._flipDraw ? velocity.X : -velocity.X; break; case 9: case 46: num22 = !this._flipDraw ? Math.Abs(velocity.X) : -Math.Abs(velocity.X); break; case 13: num22 = this._flipDraw ? velocity.X : -velocity.X; break; case 44: num22 = Math.Max(1f, Math.Abs(velocity.X) * 0.25f); break; case 48: num22 = Math.Max(0.5f, velocity.Length() * 0.125f); break; case 50: num22 = Math.Abs(velocity.X) * 0.5f; break; default: num22 = Math.Abs(velocity.X); break; } this._frameCounter += num22; if ((double) num22 >= 0.0) { if ((double) this._frameCounter > (double) this._data.runningFrameDelay) { this._frameCounter -= (float) this._data.runningFrameDelay; ++this._frame; } if (this._frame >= this._data.runningFrameStart && this._frame < this._data.runningFrameStart + this._data.runningFrameCount) break; this._frame = this._data.runningFrameStart; break; } if ((double) this._frameCounter < 0.0) { this._frameCounter += (float) this._data.runningFrameDelay; --this._frame; } if (this._frame >= this._data.runningFrameStart && this._frame < this._data.runningFrameStart + this._data.runningFrameCount) break; this._frame = this._data.runningFrameStart + this._data.runningFrameCount - 1; break; case 2: ++this._frameCounter; if ((double) this._frameCounter > (double) this._data.inAirFrameDelay) { this._frameCounter -= (float) this._data.inAirFrameDelay; ++this._frame; } if (this._frame < this._data.inAirFrameStart || this._frame >= this._data.inAirFrameStart + this._data.inAirFrameCount) this._frame = this._data.inAirFrameStart; if (this._type == 4) { if ((double) velocity.Y < 0.0) { this._frame = 3; break; } this._frame = 6; break; } if (this._type == 5) { this._frameExtraCounter += (float) (6.0 - 4.0 * (double) (this._fatigue / this._fatigueMax)); if ((double) this._frameExtraCounter > (double) this._data.flyingFrameDelay) { ++this._frameExtra; this._frameExtraCounter -= (float) this._data.flyingFrameDelay; } if (this._frameExtra >= this._data.flyingFrameStart && this._frameExtra < this._data.flyingFrameStart + this._data.flyingFrameCount) break; this._frameExtra = this._data.flyingFrameStart; break; } if (this._type != 23) break; float num23 = mountedPlayer.velocity.Length(); if ((double) num23 < 1.0) { this._frame = 0; this._frameCounter = 0.0f; break; } if ((double) num23 <= 5.0) break; ++this._frameCounter; break; case 3: ++this._frameCounter; if ((double) this._frameCounter > (double) this._data.flyingFrameDelay) { this._frameCounter -= (float) this._data.flyingFrameDelay; ++this._frame; } if (this._frame >= this._data.flyingFrameStart && this._frame < this._data.flyingFrameStart + this._data.flyingFrameCount) break; this._frame = this._data.flyingFrameStart; break; case 4: this._frameCounter += (float) (int) (((double) Math.Abs(velocity.X) + (double) Math.Abs(velocity.Y)) / 2.0); if ((double) this._frameCounter > (double) this._data.swimFrameDelay) { this._frameCounter -= (float) this._data.swimFrameDelay; ++this._frame; } if (this._frame < this._data.swimFrameStart || this._frame >= this._data.swimFrameStart + this._data.swimFrameCount) this._frame = this._data.swimFrameStart; if (this.Type != 37 || (double) velocity.X != 0.0) break; this._frame = 4; break; case 5: float num24; switch (this._type) { case 6: num24 = this._flipDraw ? velocity.X : -velocity.X; break; case 9: num24 = !this._flipDraw ? Math.Abs(velocity.X) : -Math.Abs(velocity.X); break; case 13: num24 = this._flipDraw ? velocity.X : -velocity.X; break; default: num24 = Math.Abs(velocity.X); break; } this._frameCounter += num24; if ((double) num24 >= 0.0) { if ((double) this._frameCounter > (double) this._data.dashingFrameDelay) { this._frameCounter -= (float) this._data.dashingFrameDelay; ++this._frame; } if (this._frame >= this._data.dashingFrameStart && this._frame < this._data.dashingFrameStart + this._data.dashingFrameCount) break; this._frame = this._data.dashingFrameStart; break; } if ((double) this._frameCounter < 0.0) { this._frameCounter += (float) this._data.dashingFrameDelay; --this._frame; } if (this._frame >= this._data.dashingFrameStart && this._frame < this._data.dashingFrameStart + this._data.dashingFrameCount) break; this._frame = this._data.dashingFrameStart + this._data.dashingFrameCount - 1; break; } } public void TryBeginningFlight(Player mountedPlayer, int state) { if (this._frameState == state || (state == 2 ? 1 : (state == 3 ? 1 : 0)) == 0 || !this.CanHover() || mountedPlayer.controlUp || mountedPlayer.controlDown || mountedPlayer.controlJump) return; Vector2 Velocity = Vector2.UnitY * mountedPlayer.gravDir; if ((double) Collision.TileCollision(mountedPlayer.position + new Vector2(0.0f, -1f / 1000f), Velocity, mountedPlayer.width, mountedPlayer.height, gravDir: ((int) mountedPlayer.gravDir)).Y == 0.0) return; if (this.DoesHoverIgnoresFatigue()) { mountedPlayer.position.Y += -1f / 1000f; } else { float num = mountedPlayer.gravity * mountedPlayer.gravDir; mountedPlayer.position.Y -= mountedPlayer.velocity.Y; mountedPlayer.velocity.Y -= num; } } public int GetIntendedGroundedFrame(Player mountedPlayer) => ((double) mountedPlayer.velocity.X == 0.0 ? 1 : (!mountedPlayer.slippy && !mountedPlayer.slippy2 && !mountedPlayer.windPushed || mountedPlayer.controlLeft ? 0 : (!mountedPlayer.controlRight ? 1 : 0))) != 0 ? 0 : 1; public void TryLanding(Player mountedPlayer) { if ((this._frameState == 3 ? 1 : (this._frameState == 2 ? 1 : 0)) == 0 || mountedPlayer.controlUp || mountedPlayer.controlDown || mountedPlayer.controlJump) return; Vector2 Velocity = Vector2.UnitY * mountedPlayer.gravDir * 4f; if ((double) Collision.TileCollision(mountedPlayer.position, Velocity, mountedPlayer.width, mountedPlayer.height, gravDir: ((int) mountedPlayer.gravDir)).Y != 0.0) return; this.UpdateFrame(mountedPlayer, this.GetIntendedGroundedFrame(mountedPlayer), mountedPlayer.velocity); } private void UpdateFrame_GolfCart(Player mountedPlayer, int state, Vector2 velocity) { if (state != 2) { if ((double) this._frameExtraCounter != 0.0 || this._frameExtra != 0) { if ((double) this._frameExtraCounter == -1.0) { this._frameExtraCounter = 0.0f; this._frameExtra = 1; } if ((double) ++this._frameExtraCounter >= 6.0) { this._frameExtraCounter = 0.0f; if (this._frameExtra > 0) --this._frameExtra; } } else { this._frameExtra = 0; this._frameExtraCounter = 0.0f; } } else if ((double) velocity.Y >= 0.0) { if (this._frameExtra < 1) this._frameExtra = 1; if (this._frameExtra == 2) this._frameExtraCounter = -1f; else if ((double) ++this._frameExtraCounter >= 6.0) { this._frameExtraCounter = 0.0f; if (this._frameExtra < 2) ++this._frameExtra; } } if ((state == 2 || state == 0 || state == 3 ? 0 : (state != 4 ? 1 : 0)) != 0) { Mount.EmitGolfCartWheelDust(mountedPlayer, mountedPlayer.Bottom + new Vector2((float) (mountedPlayer.direction * -20), 0.0f)); Mount.EmitGolfCartWheelDust(mountedPlayer, mountedPlayer.Bottom + new Vector2((float) (mountedPlayer.direction * 20), 0.0f)); } Mount.EmitGolfCartlight(mountedPlayer.Bottom + new Vector2((float) (mountedPlayer.direction * 40), -20f), mountedPlayer.direction); } private static void EmitGolfCartSmoke(Player mountedPlayer, bool rushing) { Vector2 Position = mountedPlayer.Bottom + new Vector2((float) (-mountedPlayer.direction * 34), (float) (-(double) mountedPlayer.gravDir * 12.0)); Dust dust = Dust.NewDustDirect(Position, 0, 0, 31, (float) -mountedPlayer.direction, (float) (-(double) mountedPlayer.gravDir * 0.239999994635582), 100); dust.position = Position; dust.velocity *= 0.1f; dust.velocity += new Vector2((float) -mountedPlayer.direction, (float) (-(double) mountedPlayer.gravDir * 0.25)); dust.scale = 0.5f; if ((double) mountedPlayer.velocity.X != 0.0) dust.velocity += new Vector2((float) Math.Sign(mountedPlayer.velocity.X) * 1.3f, 0.0f); if (!rushing) return; dust.fadeIn = 0.8f; } private static void EmitGolfCartlight(Vector2 worldLocation, int playerDirection) { float num1 = 0.0f; if (playerDirection == -1) num1 = 3.141593f; float num2 = (float) Math.PI / 32f; int num3 = 5; float num4 = 200f; DelegateMethods.v2_1 = worldLocation.ToTileCoordinates().ToVector2(); DelegateMethods.f_1 = num4 / 16f; DelegateMethods.v3_1 = new Vector3(0.7f, 0.7f, 0.7f); for (float num5 = 0.0f; (double) num5 < (double) num3; ++num5) { Vector2 rotationVector2 = (num1 + num2 * (num5 - (float) (num3 / 2))).ToRotationVector2(); Utils.PlotTileLine(worldLocation, worldLocation + rotationVector2 * num4, 8f, new Utils.TileActionAttempt(DelegateMethods.CastLightOpen_StopForSolids_ScaleWithDistance)); } } private static bool ShouldGolfCartEmitLight() => true; private static void EmitGolfCartWheelDust(Player mountedPlayer, Vector2 legSpot) { if (Main.rand.Next(5) != 0) return; Point tileCoordinates = (legSpot + new Vector2(0.0f, mountedPlayer.gravDir * 2f)).ToTileCoordinates(); if (!WorldGen.InWorld(tileCoordinates.X, tileCoordinates.Y, 10)) return; Tile tileSafely = Framing.GetTileSafely(tileCoordinates.X, tileCoordinates.Y); if (!WorldGen.SolidTile(tileCoordinates)) return; int num = WorldGen.KillTile_GetTileDustAmount(true, tileSafely); if (num > 1) num = 1; Vector2 vector2 = new Vector2((float) -mountedPlayer.direction, (float) (-(double) mountedPlayer.gravDir * 1.0)); for (int index = 0; index < num; ++index) { Dust dust = Main.dust[WorldGen.KillTile_MakeTileDust(tileCoordinates.X, tileCoordinates.Y, tileSafely)]; dust.velocity *= 0.2f; dust.velocity += vector2; dust.position = legSpot; dust.scale *= 0.8f; dust.fadeIn *= 0.8f; } } private void DoGemMinecartEffect(Player mountedPlayer, int dustType) { if (Main.rand.Next(10) != 0) return; Vector2 vector2_1 = Main.rand.NextVector2Square(-1f, 1f) * new Vector2(22f, 10f); Vector2 vector2_2 = new Vector2(0.0f, 10f) * mountedPlayer.Directions; Vector2 pos = mountedPlayer.Center + vector2_2 + vector2_1; Dust dust = Dust.NewDustPerfect(mountedPlayer.RotatedRelativePoint(pos), dustType); dust.noGravity = true; dust.fadeIn = 0.6f; dust.scale = 0.4f; dust.velocity *= 0.25f; dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); } private void DoSteamMinecartEffect(Player mountedPlayer, int dustType) { float num = Math.Abs(mountedPlayer.velocity.X); if ((double) num < 1.0 || (double) num < 6.0 && this._frame != 0) return; Vector2 vector2_1 = Main.rand.NextVector2Square(-1f, 1f) * new Vector2(3f, 3f); Vector2 vector2_2 = new Vector2(-10f, -4f) * mountedPlayer.Directions; Vector2 pos = mountedPlayer.Center + vector2_2 + vector2_1; Dust dust = Dust.NewDustPerfect(mountedPlayer.RotatedRelativePoint(pos), dustType); dust.noGravity = true; dust.fadeIn = 0.6f; dust.scale = 1.8f; dust.velocity *= 0.25f; dust.velocity.Y -= 2f; dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); } private void DoExhaustMinecartEffect(Player mountedPlayer, int dustType) { float num1 = mountedPlayer.velocity.Length(); if ((double) num1 < 1.0 && Main.rand.Next(4) != 0) return; int num2 = 1 + (int) num1 / 6; while (num2 > 0) { --num2; Vector2 vector2_1 = Main.rand.NextVector2Square(-1f, 1f) * new Vector2(3f, 3f); Vector2 vector2_2 = new Vector2(-18f, 20f) * mountedPlayer.Directions; if ((double) num1 > 6.0) vector2_2.X += (float) (4 * mountedPlayer.direction); if (num2 > 0) vector2_2 += mountedPlayer.velocity * (float) (num2 / 3); Vector2 pos = mountedPlayer.Center + vector2_2 + vector2_1; Dust dust = Dust.NewDustPerfect(mountedPlayer.RotatedRelativePoint(pos), dustType); dust.noGravity = true; dust.fadeIn = 0.6f; dust.scale = 1.2f; dust.velocity *= 0.2f; if ((double) num1 < 1.0) dust.velocity.X -= 0.5f * (float) mountedPlayer.direction; dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); } } private void DoConfettiMinecartEffect(Player mountedPlayer) { float num1 = mountedPlayer.velocity.Length(); if ((double) num1 < 1.0 && Main.rand.Next(6) != 0 || (double) num1 < 3.0 && Main.rand.Next(3) != 0) return; int num2 = 1 + (int) num1 / 6; while (num2 > 0) { --num2; float num3 = Main.rand.NextFloat() * 2f; Vector2 vector2_1 = Main.rand.NextVector2Square(-1f, 1f) * new Vector2(3f, 8f); Vector2 vector2_2 = new Vector2(-18f, 4f) * mountedPlayer.Directions; vector2_2.X += (float) ((double) num1 * (double) mountedPlayer.direction * 0.5 + (double) (mountedPlayer.direction * num2) * (double) num3); if (num2 > 0) vector2_2 += mountedPlayer.velocity * (float) (num2 / 3); Vector2 pos = mountedPlayer.Center + vector2_2 + vector2_1; Dust dust = Dust.NewDustPerfect(mountedPlayer.RotatedRelativePoint(pos), 139 + Main.rand.Next(4)); dust.noGravity = true; dust.fadeIn = 0.6f; dust.scale = (float) (0.5 + (double) num3 / 2.0); dust.velocity *= 0.2f; if ((double) num1 < 1.0) dust.velocity.X -= 0.5f * (float) mountedPlayer.direction; dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); } } public void UpdateEffects(Player mountedPlayer) { mountedPlayer.autoJump = this.AutoJump; switch (this._type) { case 8: if (mountedPlayer.ownedProjectileCounts[453] >= 1) break; this._abilityActive = false; break; case 9: case 46: if (this._type == 46) mountedPlayer.hasJumpOption_Santank = true; Vector2 center = mountedPlayer.Center; Vector2 mousePosition = center; bool flag1 = false; float num1 = 1500f; float num2 = 500f; for (int index = 0; index < 200; ++index) { NPC npc = Main.npc[index]; if (npc.CanBeChasedBy((object) this)) { Vector2 v = npc.Center - center; float num3 = v.Length(); if ((double) num3 < (double) num2 && ((double) Vector2.Distance(mousePosition, center) > (double) num3 && (double) num3 < (double) num1 || !flag1)) { bool flag2 = true; float num4 = Math.Abs(v.ToRotation()); if (mountedPlayer.direction == 1 && (double) num4 > 1.04719759490799) flag2 = false; else if (mountedPlayer.direction == -1 && (double) num4 < 2.09439514610459) flag2 = false; if (Collision.CanHitLine(center, 0, 0, npc.position, npc.width, npc.height) & flag2) { num1 = num3; mousePosition = npc.Center; flag1 = true; } } } } if (flag1) { bool flag3 = this._abilityCooldown == 0; if (this._type == 46) flag3 = this._abilityCooldown % 10 == 0; if (flag3 && mountedPlayer.whoAmI == Main.myPlayer) { this.AimAbility(mountedPlayer, mousePosition); if (this._abilityCooldown == 0) this.StopAbilityCharge(); this.UseAbility(mountedPlayer, mousePosition, false); break; } this.AimAbility(mountedPlayer, mousePosition); this._abilityCharging = true; break; } this._abilityCharging = false; this.ResetHeadPosition(); break; case 10: mountedPlayer.hasJumpOption_Unicorn = true; if ((double) Math.Abs(mountedPlayer.velocity.X) > (double) mountedPlayer.mount.DashSpeed - (double) mountedPlayer.mount.RunSpeed / 2.0) mountedPlayer.noKnockback = true; if (mountedPlayer.itemAnimation <= 0 || mountedPlayer.inventory[mountedPlayer.selectedItem].type != 1260) break; AchievementsHelper.HandleSpecialEvent(mountedPlayer, 5); break; case 11: Vector3 vector3_1 = new Vector3(0.4f, 0.12f, 0.15f); float num5 = (float) (1.0 + (double) Math.Abs(mountedPlayer.velocity.X) / (double) this.RunSpeed * 2.5); mountedPlayer.statDefense += (int) (2.0 * (double) num5); int num6 = Math.Sign(mountedPlayer.velocity.X); if (num6 == 0) num6 = mountedPlayer.direction; if (Main.netMode != 2) { Vector3 vector3_2 = vector3_1 * num5; Lighting.AddLight(mountedPlayer.Center, vector3_2.X, vector3_2.Y, vector3_2.Z); Lighting.AddLight(mountedPlayer.Top, vector3_2.X, vector3_2.Y, vector3_2.Z); Lighting.AddLight(mountedPlayer.Bottom, vector3_2.X, vector3_2.Y, vector3_2.Z); Lighting.AddLight(mountedPlayer.Left, vector3_2.X, vector3_2.Y, vector3_2.Z); Lighting.AddLight(mountedPlayer.Right, vector3_2.X, vector3_2.Y, vector3_2.Z); float num7 = -24f; if (mountedPlayer.direction != num6) num7 = -22f; if (num6 == -1) ++num7; Vector2 vector2_1 = new Vector2(num7 * (float) num6, -19f).RotatedBy((double) mountedPlayer.fullRotation); Vector2 vector2_2 = new Vector2(MathHelper.Lerp(0.0f, -8f, mountedPlayer.fullRotation / 0.7853982f), MathHelper.Lerp(0.0f, 2f, Math.Abs(mountedPlayer.fullRotation / 0.7853982f))).RotatedBy((double) mountedPlayer.fullRotation); if (num6 == Math.Sign(mountedPlayer.fullRotation)) vector2_2 *= MathHelper.Lerp(1f, 0.6f, Math.Abs(mountedPlayer.fullRotation / 0.7853982f)); Vector2 vector2_3 = mountedPlayer.Bottom + vector2_1 + vector2_2; Vector2 vector2_4 = mountedPlayer.oldPosition + mountedPlayer.Size * new Vector2(0.5f, 1f) + vector2_1 + vector2_2; if ((double) Vector2.Distance(vector2_3, vector2_4) > 3.0) { int num8 = (int) Vector2.Distance(vector2_3, vector2_4) / 3; if ((double) Vector2.Distance(vector2_3, vector2_4) % 3.0 != 0.0) ++num8; for (float num9 = 1f; (double) num9 <= (double) num8; ++num9) { Dust dust = Main.dust[Dust.NewDust(mountedPlayer.Center, 0, 0, 182)]; dust.position = Vector2.Lerp(vector2_4, vector2_3, num9 / (float) num8); dust.noGravity = true; dust.velocity = Vector2.Zero; dust.customData = (object) mountedPlayer; dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMinecart, mountedPlayer); } } else { Dust dust = Main.dust[Dust.NewDust(mountedPlayer.Center, 0, 0, 182)]; dust.position = vector2_3; dust.noGravity = true; dust.velocity = Vector2.Zero; dust.customData = (object) mountedPlayer; dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMinecart, mountedPlayer); } } if (mountedPlayer.whoAmI != Main.myPlayer || (double) mountedPlayer.velocity.X == 0.0) break; Vector2 minecartMechPoint = Mount.GetMinecartMechPoint(mountedPlayer, 20, -19); int num10 = 60; int num11 = 0; float num12 = 0.0f; for (int index1 = 0; index1 < 200; ++index1) { NPC npc = Main.npc[index1]; if (npc.active && npc.immune[mountedPlayer.whoAmI] <= 0 && !npc.dontTakeDamage && (double) npc.Distance(minecartMechPoint) < 300.0 && npc.CanBeChasedBy((object) mountedPlayer) && Collision.CanHitLine(npc.position, npc.width, npc.height, minecartMechPoint, 0, 0) && (double) Math.Abs(MathHelper.WrapAngle(MathHelper.WrapAngle(npc.AngleFrom(minecartMechPoint)) - MathHelper.WrapAngle((double) mountedPlayer.fullRotation + (double) num6 == -1.0 ? 3.141593f : 0.0f))) < 0.785398185253143) { Vector2 v = npc.position + npc.Size * Utils.RandomVector2(Main.rand, 0.0f, 1f) - minecartMechPoint; num12 += v.ToRotation(); ++num11; int index2 = Projectile.NewProjectile(minecartMechPoint.X, minecartMechPoint.Y, v.X, v.Y, 591, 0, 0.0f, mountedPlayer.whoAmI, (float) mountedPlayer.whoAmI); Main.projectile[index2].Center = npc.Center; Main.projectile[index2].damage = num10; Main.projectile[index2].Damage(); Main.projectile[index2].damage = 0; Main.projectile[index2].Center = minecartMechPoint; } } break; case 12: if (mountedPlayer.MountFishronSpecial) { Vector3 vector3_3 = Colors.CurrentLiquidColor.ToVector3() * 0.4f; Point tileCoordinates = (mountedPlayer.Center + Vector2.UnitX * (float) mountedPlayer.direction * 20f + mountedPlayer.velocity * 10f).ToTileCoordinates(); if (!WorldGen.SolidTile(tileCoordinates.X, tileCoordinates.Y)) Lighting.AddLight(tileCoordinates.X, tileCoordinates.Y, vector3_3.X, vector3_3.Y, vector3_3.Z); else Lighting.AddLight(mountedPlayer.Center + Vector2.UnitX * (float) mountedPlayer.direction * 20f, vector3_3.X, vector3_3.Y, vector3_3.Z); mountedPlayer.meleeDamage += 0.15f; mountedPlayer.rangedDamage += 0.15f; mountedPlayer.magicDamage += 0.15f; mountedPlayer.minionDamage += 0.15f; } if (mountedPlayer.statLife <= mountedPlayer.statLifeMax2 / 2) mountedPlayer.MountFishronSpecialCounter = 60f; if (!mountedPlayer.wet && (!Main.raining || !WorldGen.InAPlaceWithWind(mountedPlayer.position, mountedPlayer.width, mountedPlayer.height))) break; mountedPlayer.MountFishronSpecialCounter = 420f; break; case 14: mountedPlayer.hasJumpOption_Basilisk = true; if ((double) Math.Abs(mountedPlayer.velocity.X) <= (double) mountedPlayer.mount.DashSpeed - (double) mountedPlayer.mount.RunSpeed / 2.0) break; mountedPlayer.noKnockback = true; break; case 16: mountedPlayer.ignoreWater = true; break; case 22: mountedPlayer.lavaMax += 420; Vector2 pos1 = mountedPlayer.Center + new Vector2(20f, 10f) * mountedPlayer.Directions; Vector2 pos2 = pos1 + mountedPlayer.velocity; Vector2 pos3 = pos1 + new Vector2(-1f, -0.5f) * mountedPlayer.Directions; Vector2 vector2_5 = mountedPlayer.RotatedRelativePoint(pos1); Vector2 vector2_6 = mountedPlayer.RotatedRelativePoint(pos2); Vector2 vector2_7 = mountedPlayer.RotatedRelativePoint(pos3); Vector2 vector2_8 = mountedPlayer.shadowPos[2] - mountedPlayer.position + vector2_5; Vector2 vector2_9 = vector2_6 - vector2_5; Vector2 vector2_10 = vector2_5 + vector2_9; Vector2 vector2_11 = vector2_8 + vector2_9; Vector2 vector2_12 = vector2_6 - vector2_7; float num13 = MathHelper.Clamp(mountedPlayer.velocity.Length() / 5f, 0.0f, 1f); for (float amount = 0.0f; (double) amount <= 1.0; amount += 0.1f) { if ((double) Main.rand.NextFloat() >= (double) num13) { Dust dust = Dust.NewDustPerfect(Vector2.Lerp(vector2_11, vector2_10, amount), 65, new Vector2?(Main.rand.NextVector2Circular(0.5f, 0.5f) * num13)); dust.scale = 0.6f; dust.fadeIn = 0.0f; dust.customData = (object) mountedPlayer; dust.velocity *= -1f; dust.noGravity = true; dust.velocity -= vector2_12; if (Main.rand.Next(10) == 0) { dust.fadeIn = 1.3f; dust.velocity = Main.rand.NextVector2Circular(3f, 3f) * num13; } } } break; case 23: Vector2 pos4 = mountedPlayer.Center + this.GetWitchBroomTrinketOriginOffset(mountedPlayer) + (this.GetWitchBroomTrinketRotation(mountedPlayer) + 1.570796f).ToRotationVector2() * 11f; Vector3 rgb = new Vector3(1f, 0.75f, 0.5f) * 0.85f; Vector2 vector2_13 = mountedPlayer.RotatedRelativePoint(pos4); Lighting.AddLight(vector2_13, rgb); if (Main.rand.Next(45) == 0) { Vector2 vector2_14 = Main.rand.NextVector2Circular(4f, 4f); Dust dust = Dust.NewDustPerfect(vector2_13 + vector2_14, 43, new Vector2?(Vector2.Zero), 254, new Color((int) byte.MaxValue, (int) byte.MaxValue, 0, (int) byte.MaxValue), 0.3f); if (vector2_14 != Vector2.Zero) dust.velocity = vector2_13.DirectionTo(dust.position) * 0.2f; dust.fadeIn = 0.3f; dust.noLightEmittence = true; dust.customData = (object) mountedPlayer; dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); } float num14 = 0.1f + mountedPlayer.velocity.Length() / 30f; Vector2 pos5 = mountedPlayer.Center + new Vector2((float) (18.0 - 20.0 * (double) Main.rand.NextFloat() * (double) mountedPlayer.direction), 12f); Vector2 pos6 = mountedPlayer.Center + new Vector2((float) (52 * mountedPlayer.direction), -6f); Vector2 vector2_15 = mountedPlayer.RotatedRelativePoint(pos5); Vector2 Origin = mountedPlayer.RotatedRelativePoint(pos6); if ((double) Main.rand.NextFloat() > (double) num14) break; float num15 = Main.rand.NextFloat(); for (float num16 = 0.0f; (double) num16 < 1.0; num16 += 0.125f) { if (Main.rand.Next(15) == 0) { Vector2 vector2_16 = ((6.283185f * num16 + num15).ToRotationVector2() * new Vector2(0.5f, 1f) * 4f).RotatedBy((double) mountedPlayer.fullRotation); Dust dust = Dust.NewDustPerfect(vector2_15 + vector2_16, 43, new Vector2?(Vector2.Zero), 254, new Color((int) byte.MaxValue, (int) byte.MaxValue, 0, (int) byte.MaxValue), 0.3f); dust.velocity = vector2_16 * 0.025f + Origin.DirectionTo(dust.position) * 0.5f; dust.fadeIn = 0.3f; dust.noLightEmittence = true; dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer); } } break; case 24: DelegateMethods.v3_1 = new Vector3(0.1f, 0.3f, 1f) * 0.4f; Utils.PlotTileLine(mountedPlayer.MountedCenter, mountedPlayer.MountedCenter + mountedPlayer.velocity * 6f, 40f, new Utils.TileActionAttempt(DelegateMethods.CastLightOpen)); Utils.PlotTileLine(mountedPlayer.Left, mountedPlayer.Right, 40f, new Utils.TileActionAttempt(DelegateMethods.CastLightOpen)); break; case 25: this.DoGemMinecartEffect(mountedPlayer, 86); break; case 26: this.DoGemMinecartEffect(mountedPlayer, 87); break; case 27: this.DoGemMinecartEffect(mountedPlayer, 88); break; case 28: this.DoGemMinecartEffect(mountedPlayer, 89); break; case 29: this.DoGemMinecartEffect(mountedPlayer, 90); break; case 30: this.DoGemMinecartEffect(mountedPlayer, 91); break; case 31: this.DoGemMinecartEffect(mountedPlayer, 262); break; case 32: this.DoExhaustMinecartEffect(mountedPlayer, 31); break; case 34: this.DoConfettiMinecartEffect(mountedPlayer); break; case 36: this.DoSteamMinecartEffect(mountedPlayer, 303); break; case 37: mountedPlayer.canFloatInWater = true; mountedPlayer.accFlipper = true; break; case 40: case 41: case 42: if ((double) Math.Abs(mountedPlayer.velocity.X) <= (double) mountedPlayer.mount.DashSpeed - (double) mountedPlayer.mount.RunSpeed / 2.0) break; mountedPlayer.noKnockback = true; break; case 47: mountedPlayer.hasJumpOption_WallOfFleshGoat = true; if ((double) Math.Abs(mountedPlayer.velocity.X) <= (double) mountedPlayer.mount.DashSpeed - (double) mountedPlayer.mount.RunSpeed / 2.0) break; mountedPlayer.noKnockback = true; break; } } public static Vector2 GetMinecartMechPoint(Player mountedPlayer, int offX, int offY) { int num1 = Math.Sign(mountedPlayer.velocity.X); if (num1 == 0) num1 = mountedPlayer.direction; float num2 = (float) offX; int num3 = Math.Sign(offX); if (mountedPlayer.direction != num1) num2 -= (float) num3; if (num1 == -1) num2 -= (float) num3; Vector2 vector2_1 = new Vector2(num2 * (float) num1, (float) offY).RotatedBy((double) mountedPlayer.fullRotation); Vector2 vector2_2 = new Vector2(MathHelper.Lerp(0.0f, -8f, mountedPlayer.fullRotation / 0.7853982f), MathHelper.Lerp(0.0f, 2f, Math.Abs(mountedPlayer.fullRotation / 0.7853982f))).RotatedBy((double) mountedPlayer.fullRotation); if (num1 == Math.Sign(mountedPlayer.fullRotation)) vector2_2 *= MathHelper.Lerp(1f, 0.6f, Math.Abs(mountedPlayer.fullRotation / 0.7853982f)); return mountedPlayer.Bottom + vector2_1 + vector2_2; } public void ResetFlightTime(float xVelocity) { this._flyTime = this._active ? this._data.flightTimeMax : 0; if (this._type != 0) return; this._flyTime += (int) ((double) Math.Abs(xVelocity) * 20.0); } public void CheckMountBuff(Player mountedPlayer) { if (this._type == -1) return; for (int index = 0; index < 22; ++index) { if (mountedPlayer.buffType[index] == this._data.buff || this.Cart && mountedPlayer.buffType[index] == this._data.extraBuff) return; } this.Dismount(mountedPlayer); } public void ResetHeadPosition() { if (!this._aiming) return; this._aiming = false; if (this._type != 46) this._frameExtra = 0; this._flipDraw = false; } private Vector2 ClampToDeadZone(Player mountedPlayer, Vector2 position) { int y; int x; switch (this._type) { case 8: y = (int) Mount.drillTextureSize.Y; x = (int) Mount.drillTextureSize.X; break; case 9: y = (int) Mount.scutlixTextureSize.Y; x = (int) Mount.scutlixTextureSize.X; break; case 46: y = (int) Mount.santankTextureSize.Y; x = (int) Mount.santankTextureSize.X; break; default: return position; } Vector2 center = mountedPlayer.Center; position -= center; if ((double) position.X > (double) -x && (double) position.X < (double) x && (double) position.Y > (double) -y && (double) position.Y < (double) y) { float num1 = (float) x / Math.Abs(position.X); float num2 = (float) y / Math.Abs(position.Y); if ((double) num1 > (double) num2) position *= num2; else position *= num1; } return position + center; } public bool AimAbility(Player mountedPlayer, Vector2 mousePosition) { this._aiming = true; switch (this._type) { case 8: Vector2 v = this.ClampToDeadZone(mountedPlayer, mousePosition) - mountedPlayer.Center; Mount.DrillMountData mountSpecificData = (Mount.DrillMountData) this._mountSpecificData; float rotation = v.ToRotation(); if ((double) rotation < 0.0) rotation += 6.283185f; mountSpecificData.diodeRotationTarget = rotation; float num1 = mountSpecificData.diodeRotation % 6.283185f; if ((double) num1 < 0.0) num1 += 6.283185f; if ((double) num1 < (double) rotation) { if ((double) rotation - (double) num1 > 3.14159274101257) num1 += 6.283185f; } else if ((double) num1 - (double) rotation > 3.14159274101257) num1 -= 6.283185f; mountSpecificData.diodeRotation = num1; mountSpecificData.crosshairPosition = mousePosition; return true; case 9: int frameExtra1 = this._frameExtra; int direction1 = mountedPlayer.direction; float num2 = MathHelper.ToDegrees((this.ClampToDeadZone(mountedPlayer, mousePosition) - mountedPlayer.Center).ToRotation()); if ((double) num2 > 90.0) { mountedPlayer.direction = -1; num2 = 180f - num2; } else if ((double) num2 < -90.0) { mountedPlayer.direction = -1; num2 = -180f - num2; } else mountedPlayer.direction = 1; this._flipDraw = mountedPlayer.direction > 0 && (double) mountedPlayer.velocity.X < 0.0 || mountedPlayer.direction < 0 && (double) mountedPlayer.velocity.X > 0.0; if ((double) num2 >= 0.0) { if ((double) num2 < 22.5) this._frameExtra = 8; else if ((double) num2 < 67.5) this._frameExtra = 9; else if ((double) num2 < 112.5) this._frameExtra = 10; } else if ((double) num2 > -22.5) this._frameExtra = 8; else if ((double) num2 > -67.5) this._frameExtra = 7; else if ((double) num2 > -112.5) this._frameExtra = 6; float abilityCharge = this.AbilityCharge; if ((double) abilityCharge > 0.0) { Vector2 vector2_1; vector2_1.X = mountedPlayer.position.X + (float) (mountedPlayer.width / 2); vector2_1.Y = mountedPlayer.position.Y + (float) mountedPlayer.height; int num3 = (this._frameExtra - 6) * 2; for (int index = 0; index < 2; ++index) { Vector2 vector2_2; vector2_2.Y = vector2_1.Y + Mount.scutlixEyePositions[num3 + index].Y; vector2_2.X = mountedPlayer.direction != -1 ? vector2_1.X + Mount.scutlixEyePositions[num3 + index].X + (float) this._data.xOffset : vector2_1.X - Mount.scutlixEyePositions[num3 + index].X - (float) this._data.xOffset; Lighting.AddLight((int) ((double) vector2_2.X / 16.0), (int) ((double) vector2_2.Y / 16.0), 1f * abilityCharge, 0.0f, 0.0f); } } return this._frameExtra != frameExtra1 || mountedPlayer.direction != direction1; case 46: int frameExtra2 = this._frameExtra; int direction2 = mountedPlayer.direction; float degrees = MathHelper.ToDegrees((this.ClampToDeadZone(mountedPlayer, mousePosition) - mountedPlayer.Center).ToRotation()); float num4; if ((double) degrees > 90.0) { mountedPlayer.direction = -1; num4 = 180f - degrees; } else if ((double) degrees < -90.0) { mountedPlayer.direction = -1; num4 = -180f - degrees; } else mountedPlayer.direction = 1; this._flipDraw = mountedPlayer.direction > 0 && (double) mountedPlayer.velocity.X < 0.0 || mountedPlayer.direction < 0 && (double) mountedPlayer.velocity.X > 0.0; if ((double) this.AbilityCharge > 0.0) { Vector2 vector2_3; vector2_3.X = mountedPlayer.position.X + (float) (mountedPlayer.width / 2); vector2_3.Y = mountedPlayer.position.Y + (float) mountedPlayer.height; for (int index = 0; index < 2; ++index) { Vector2 vector2_4 = new Vector2(vector2_3.X + (float) (mountedPlayer.width * mountedPlayer.direction), vector2_3.Y - 12f); Lighting.AddLight((int) ((double) vector2_4.X / 16.0), (int) ((double) vector2_4.Y / 16.0), 0.7f, 0.4f, 0.4f); } } return this._frameExtra != frameExtra2 || mountedPlayer.direction != direction2; default: return false; } } public void Draw( List playerDrawData, int drawType, Player drawPlayer, Vector2 Position, Color drawColor, SpriteEffects playerEffect, float shadow) { if (playerDrawData == null) return; Texture2D texture1; Texture2D texture2; switch (drawType) { case 0: texture1 = this._data.backTexture.Value; texture2 = this._data.backTextureGlow.Value; break; case 1: texture1 = this._data.backTextureExtra.Value; texture2 = this._data.backTextureExtraGlow.Value; break; case 2: if (this._type == 0 && this._idleTime >= this._idleTimeNext) return; texture1 = this._data.frontTexture.Value; texture2 = this._data.frontTextureGlow.Value; break; case 3: texture1 = this._data.frontTextureExtra.Value; texture2 = this._data.frontTextureExtraGlow.Value; break; default: texture1 = (Texture2D) null; texture2 = (Texture2D) null; break; } if (this._type == 50 && texture1 != null) { PlayerQueenSlimeMountTextureContent queenSlimeMount = TextureAssets.RenderTargets.QueenSlimeMount; queenSlimeMount.Request(); if (queenSlimeMount.IsReady) texture1 = (Texture2D) queenSlimeMount.GetTarget(); } if (texture1 == null) return; switch (this._type) { case 0: case 9: if (drawType == 3 && (double) shadow != 0.0) return; break; } int xoffset = this.XOffset; int num1 = this.YOffset + this.PlayerOffset; if (drawPlayer.direction <= 0 && (!this.Cart || !this.Directional)) xoffset *= -1; Position.X = (float) (int) ((double) Position.X - (double) Main.screenPosition.X + (double) (drawPlayer.width / 2) + (double) xoffset); Position.Y = (float) (int) ((double) Position.Y - (double) Main.screenPosition.Y + (double) (drawPlayer.height / 2) + (double) num1); bool flag1 = true; int num2 = this._data.totalFrames; int num3 = this._data.textureHeight; int num4; switch (this._type) { case 5: switch (drawType) { case 0: num4 = this._frame; break; case 1: num4 = this._frameExtra; break; default: num4 = 0; break; } break; case 9: switch (drawType) { case 0: num4 = this._frame; break; case 2: num4 = this._frameExtra; break; case 3: num4 = this._frameExtra; break; default: num4 = 0; break; } break; case 17: num3 = texture1.Height; switch (drawType) { case 0: num4 = this._frame; num2 = 4; break; case 1: num4 = this._frameExtra; num2 = 4; break; default: num4 = 0; break; } break; case 23: num4 = this._frame; break; case 39: num3 = texture1.Height; switch (drawType) { case 2: num4 = this._frame; num2 = 3; break; case 3: num4 = this._frameExtra; num2 = 6; break; default: num4 = 0; break; } break; case 46: switch (drawType) { case 2: num4 = this._frame; break; case 3: num4 = this._frameExtra; break; default: num4 = 0; break; } break; default: num4 = this._frame; break; } int height = num3 / num2; Rectangle rectangle1 = new Rectangle(0, height * num4, this._data.textureWidth, height); if (flag1) rectangle1.Height -= 2; switch (this._type) { case 0: if (drawType == 3) { drawColor = Color.White; break; } break; case 7: if (drawType == 3) { drawColor = new Color(250, 250, 250, (int) byte.MaxValue) * drawPlayer.stealth * (1f - shadow); break; } break; case 9: if (drawType == 3) { if (this._abilityCharge == 0) return; drawColor = Color.Multiply(Color.White, (float) this._abilityCharge / (float) this._data.abilityChargeMax); drawColor.A = (byte) 0; break; } break; } Color color1 = new Color(drawColor.ToVector4() * 0.25f + new Vector4(0.75f)); switch (this._type) { case 11: if (drawType == 2) { color1 = Color.White; color1.A = (byte) 127; break; } break; case 12: if (drawType == 0) { float num5 = MathHelper.Clamp(drawPlayer.MountFishronSpecialCounter / 60f, 0.0f, 1f); Color color2 = Colors.CurrentLiquidColor; if (color2 == Color.Transparent) color2 = Color.White; color2.A = (byte) 127; color1 = color2 * num5; break; } break; case 24: if (drawType == 2) { color1 = Color.SkyBlue * 0.5f; color1.A = (byte) 20; break; } break; case 45: if (drawType == 2) { color1 = new Color(150, 110, 110, 100); break; } break; } float rotation1 = 0.0f; switch (this._type) { case 7: rotation1 = drawPlayer.fullRotation; break; case 8: Mount.DrillMountData mountSpecificData1 = (Mount.DrillMountData) this._mountSpecificData; switch (drawType) { case 0: rotation1 = mountSpecificData1.outerRingRotation - rotation1; break; case 3: rotation1 = mountSpecificData1.diodeRotation - rotation1 - drawPlayer.fullRotation; break; } break; } Vector2 origin = this.Origin; int type = this._type; float scale1 = 1f; SpriteEffects effect; switch (this._type) { case 6: case 13: effect = this._flipDraw ? SpriteEffects.FlipHorizontally : SpriteEffects.None; break; case 7: effect = SpriteEffects.None; break; case 8: effect = drawPlayer.direction != 1 || drawType != 2 ? SpriteEffects.None : SpriteEffects.FlipHorizontally; break; default: effect = playerEffect; break; } if (MountID.Sets.FacePlayersVelocity[this._type]) effect = Math.Sign(drawPlayer.velocity.X) == -drawPlayer.direction ? playerEffect ^ SpriteEffects.FlipHorizontally : playerEffect; bool flag2 = false; DrawData drawData; switch (this._type) { case 35: if (drawType == 2) { Mount.ExtraFrameMountData mountSpecificData2 = (Mount.ExtraFrameMountData) this._mountSpecificData; int num6 = -36; if (effect.HasFlag((Enum) SpriteEffects.FlipHorizontally)) num6 *= -1; Vector2 vector2 = new Vector2((float) num6, -26f); if ((double) shadow == 0.0) { if ((double) Math.Abs(drawPlayer.velocity.X) > 1.0) { mountSpecificData2.frameCounter += Math.Min(2f, Math.Abs(drawPlayer.velocity.X * 0.4f)); while ((double) mountSpecificData2.frameCounter > 6.0) { mountSpecificData2.frameCounter -= 6f; ++mountSpecificData2.frame; if (mountSpecificData2.frame > 2 && mountSpecificData2.frame < 5 || mountSpecificData2.frame > 7) mountSpecificData2.frame = 0; } } else { ++mountSpecificData2.frameCounter; while ((double) mountSpecificData2.frameCounter > 6.0) { mountSpecificData2.frameCounter -= 6f; ++mountSpecificData2.frame; if (mountSpecificData2.frame > 5) mountSpecificData2.frame = 5; } } } Texture2D texture2D = TextureAssets.Extra[142].Value; Rectangle rectangle2 = texture2D.Frame(verticalFrames: 8, frameY: mountSpecificData2.frame); if (flag1) rectangle2.Height -= 2; drawData = new DrawData(texture2D, Position + vector2, new Rectangle?(rectangle2), drawColor, rotation1, origin, scale1, effect, 0); drawData.shader = Mount.currentShader; playerDrawData.Add(drawData); break; } break; case 38: if (drawType == 0) { int num7 = 0; if (effect.HasFlag((Enum) SpriteEffects.FlipHorizontally)) num7 = 22; Vector2 vector2 = new Vector2((float) num7, -10f); Texture2D texture2D = TextureAssets.Extra[151].Value; Rectangle rectangle3 = texture2D.Frame(); drawData = new DrawData(texture2D, Position + vector2, new Rectangle?(rectangle3), drawColor, rotation1, origin, scale1, effect, 0); drawData.shader = Mount.currentShader; playerDrawData.Add(drawData); flag2 = true; break; } break; case 50: if (drawType == 0) { Vector2 position = Position + new Vector2(0.0f, (float) (8 - this.PlayerOffset + 20)); Rectangle rectangle4 = new Rectangle(0, height * this._frameExtra, this._data.textureWidth, height); if (flag1) rectangle4.Height -= 2; drawData = new DrawData(TextureAssets.Extra[207].Value, position, new Rectangle?(rectangle4), drawColor, rotation1, origin, scale1, effect, 0); drawData.shader = Mount.currentShader; playerDrawData.Add(drawData); break; } break; } if (!flag2) { drawData = new DrawData(texture1, Position, new Rectangle?(rectangle1), drawColor, rotation1, origin, scale1, effect, 0); drawData.shader = Mount.currentShader; playerDrawData.Add(drawData); if (texture2 != null) { drawData = new DrawData(texture2, Position, new Rectangle?(rectangle1), color1 * ((float) drawColor.A / (float) byte.MaxValue), rotation1, origin, scale1, effect, 0); drawData.shader = Mount.currentShader; } playerDrawData.Add(drawData); } switch (this._type) { case 8: if (drawType != 3) break; Mount.DrillMountData mountSpecificData3 = (Mount.DrillMountData) this._mountSpecificData; Rectangle rectangle5 = new Rectangle(0, 0, 1, 1); Vector2 vector2_1 = Mount.drillDiodePoint1.RotatedBy((double) mountSpecificData3.diodeRotation); Vector2 vector2_2 = Mount.drillDiodePoint2.RotatedBy((double) mountSpecificData3.diodeRotation); for (int index1 = 0; index1 < mountSpecificData3.beams.Length; ++index1) { Mount.DrillBeam beam = mountSpecificData3.beams[index1]; if (!(beam.curTileTarget == Point16.NegativeOne)) { for (int index2 = 0; index2 < 2; ++index2) { Vector2 vector2_3 = new Vector2((float) ((int) beam.curTileTarget.X * 16 + 8), (float) ((int) beam.curTileTarget.Y * 16 + 8)) - Main.screenPosition - Position; Vector2 vector2_4; Color color3; if (index2 == 0) { vector2_4 = vector2_1; color3 = Color.CornflowerBlue; } else { vector2_4 = vector2_2; color3 = Color.LightGreen; } color3.A = (byte) 128; Color color4 = color3 * 0.5f; Vector2 vector2_5 = vector2_4; Vector2 v = vector2_3 - vector2_5; float rotation2 = v.ToRotation(); Vector2 scale2 = new Vector2(2f, v.Length()); drawData = new DrawData(TextureAssets.MagicPixel.Value, vector2_4 + Position, new Rectangle?(rectangle5), color4, rotation2 - 1.570796f, Vector2.Zero, scale2, SpriteEffects.None, 0); drawData.ignorePlayerRotation = true; drawData.shader = Mount.currentShader; playerDrawData.Add(drawData); } } } break; case 17: if (drawType != 1 || !Mount.ShouldGolfCartEmitLight()) break; rectangle1 = new Rectangle(0, height * 3, this._data.textureWidth, height); if (flag1) rectangle1.Height -= 2; drawColor = Color.White * 1f; drawColor.A = (byte) 0; drawData = new DrawData(texture1, Position, new Rectangle?(rectangle1), drawColor, rotation1, origin, scale1, effect, 0); drawData.shader = Mount.currentShader; playerDrawData.Add(drawData); break; case 23: if (drawType != 0) break; Texture2D texture2D1 = TextureAssets.Extra[114].Value; rectangle1 = texture2D1.Frame(2); int width = rectangle1.Width; rectangle1.Width -= 2; double broomTrinketRotation = (double) this.GetWitchBroomTrinketRotation(drawPlayer); Position = drawPlayer.Center + this.GetWitchBroomTrinketOriginOffset(drawPlayer) - Main.screenPosition; float rotation3 = (float) broomTrinketRotation; origin = new Vector2((float) (rectangle1.Width / 2), 0.0f); drawData = new DrawData(texture2D1, Position.Floor(), new Rectangle?(rectangle1), drawColor, rotation3, origin, scale1, effect, 0); drawData.shader = Mount.currentShader; playerDrawData.Add(drawData); new Color(new Vector3(0.9f, 0.85f, 0.0f)).A /= (byte) 2; float num8 = ((float) ((double) drawPlayer.miscCounter / 75.0 * 6.28318548202515)).ToRotationVector2().X * 1f; Color color5 = new Color(80, 70, 40, 0) * (float) ((double) num8 / 8.0 + 0.5) * 0.8f; rectangle1.X += width; for (int index = 0; index < 4; ++index) { drawData = new DrawData(texture2D1, (Position + ((float) index * 1.570796f).ToRotationVector2() * num8).Floor(), new Rectangle?(rectangle1), color5, rotation3, origin, scale1, effect, 0); drawData.shader = Mount.currentShader; playerDrawData.Add(drawData); } break; case 45: if (drawType != 0 || (double) shadow != 0.0) break; if ((double) Math.Abs(drawPlayer.velocity.X) > (double) this.DashSpeed * 0.899999976158142) { color1 = new Color((int) byte.MaxValue, 220, 220, 200); scale1 = 1.1f; } for (int index = 0; index < 2; ++index) { Vector2 position = Position + new Vector2((float) Main.rand.Next(-10, 11) * 0.1f, (float) Main.rand.Next(-10, 11) * 0.1f); rectangle1 = new Rectangle(0, height * 3, this._data.textureWidth, height); if (flag1) rectangle1.Height -= 2; drawData = new DrawData(texture2, position, new Rectangle?(rectangle1), color1, rotation1, origin, scale1, effect, 0); drawData.shader = Mount.currentShader; playerDrawData.Add(drawData); } break; case 50: if (drawType != 0) break; drawData = new DrawData(TextureAssets.Extra[205].Value, Position, new Rectangle?(rectangle1), drawColor, rotation1, origin, scale1, effect, 0); drawData.shader = Mount.currentShader; playerDrawData.Add(drawData); Vector2 position1 = Position + new Vector2(0.0f, (float) (8 - this.PlayerOffset + 20)); Rectangle rectangle6 = new Rectangle(0, height * this._frameExtra, this._data.textureWidth, height); if (flag1) rectangle6.Height -= 2; drawData = new DrawData(TextureAssets.Extra[206].Value, position1, new Rectangle?(rectangle6), drawColor, rotation1, origin, scale1, effect, 0); drawData.shader = Mount.currentShader; playerDrawData.Add(drawData); break; } } public void Dismount(Player mountedPlayer) { if (!this._active) return; bool cart = this.Cart; this._active = false; mountedPlayer.ClearBuff(this._data.buff); this._mountSpecificData = (object) null; int type = this._type; if (cart) { mountedPlayer.ClearBuff(this._data.extraBuff); mountedPlayer.cartFlip = false; mountedPlayer.lastBoost = Vector2.Zero; } mountedPlayer.fullRotation = 0.0f; mountedPlayer.fullRotationOrigin = Vector2.Zero; this.DoSpawnDust(mountedPlayer, true); this.Reset(); mountedPlayer.position.Y += (float) mountedPlayer.height; mountedPlayer.height = 42; mountedPlayer.position.Y -= (float) mountedPlayer.height; if (mountedPlayer.whoAmI != Main.myPlayer) return; NetMessage.SendData(13, number: mountedPlayer.whoAmI); } public void SetMount(int m, Player mountedPlayer, bool faceLeft = false) { if (this._type == m || m <= -1 || m >= MountID.Count || m == 5 && mountedPlayer.wet) return; if (this._active) { mountedPlayer.ClearBuff(this._data.buff); if (this.Cart) { mountedPlayer.ClearBuff(this._data.extraBuff); mountedPlayer.cartFlip = false; mountedPlayer.lastBoost = Vector2.Zero; } mountedPlayer.fullRotation = 0.0f; mountedPlayer.fullRotationOrigin = Vector2.Zero; this._mountSpecificData = (object) null; } else this._active = true; this._flyTime = 0; this._type = m; this._data = Mount.mounts[m]; this._fatigueMax = (float) this._data.fatigueMax; if (this.Cart && !faceLeft && !this.Directional) { mountedPlayer.AddBuff(this._data.extraBuff, 3600); this._flipDraw = true; } else { mountedPlayer.AddBuff(this._data.buff, 3600); this._flipDraw = false; } if (this._type == 9 && this._abilityCooldown < 20) this._abilityCooldown = 20; if (this._type == 46 && this._abilityCooldown < 40) this._abilityCooldown = 40; mountedPlayer.position.Y += (float) mountedPlayer.height; for (int index = 0; index < mountedPlayer.shadowPos.Length; ++index) mountedPlayer.shadowPos[index].Y += (float) mountedPlayer.height; mountedPlayer.height = 42 + this._data.heightBoost; mountedPlayer.position.Y -= (float) mountedPlayer.height; for (int index = 0; index < mountedPlayer.shadowPos.Length; ++index) mountedPlayer.shadowPos[index].Y -= (float) mountedPlayer.height; mountedPlayer.ResetAdvancedShadows(); if (this._type == 7 || this._type == 8) mountedPlayer.fullRotationOrigin = new Vector2((float) (mountedPlayer.width / 2), (float) (mountedPlayer.height / 2)); if (this._type == 8) this._mountSpecificData = (object) new Mount.DrillMountData(); if (this._type == 35) this._mountSpecificData = (object) new Mount.ExtraFrameMountData(); this.DoSpawnDust(mountedPlayer, false); if (mountedPlayer.whoAmI != Main.myPlayer) return; NetMessage.SendData(13, number: mountedPlayer.whoAmI); } private void DoSpawnDust(Player mountedPlayer, bool isDismounting) { if (Main.netMode == 2) return; Color newColor = Color.Transparent; if (this._type == 23) newColor = new Color((int) byte.MaxValue, (int) byte.MaxValue, 0, (int) byte.MaxValue); for (int index1 = 0; index1 < 100; ++index1) { if (MountID.Sets.Cart[this._type]) { if (index1 % 10 == 0) { int Type = Main.rand.Next(61, 64); int index2 = Gore.NewGore(new Vector2(mountedPlayer.position.X - 20f, mountedPlayer.position.Y), Vector2.Zero, Type); Main.gore[index2].alpha = 100; Main.gore[index2].velocity = Vector2.Transform(new Vector2(1f, 0.0f), Matrix.CreateRotationZ((float) (Main.rand.NextDouble() * 6.28318548202515))); } } else { int Type = this._data.spawnDust; float Scale = 1f; int Alpha = 0; if (this._type == 40 || this._type == 41 || this._type == 42) { Type = Main.rand.Next(2) != 0 ? 16 : 31; Scale = 0.9f; Alpha = 50; if (this._type == 42) Type = 31; if (this._type == 41) Type = 16; } int index3 = Dust.NewDust(new Vector2(mountedPlayer.position.X - 20f, mountedPlayer.position.Y), mountedPlayer.width + 40, mountedPlayer.height, Type, Alpha: Alpha, newColor: newColor, Scale: Scale); Main.dust[index3].scale += (float) Main.rand.Next(-10, 21) * 0.01f; if (this._data.spawnDustNoGravity) Main.dust[index3].noGravity = true; else if (Main.rand.Next(2) == 0) { Main.dust[index3].scale *= 1.3f; Main.dust[index3].noGravity = true; } else Main.dust[index3].velocity *= 0.5f; Main.dust[index3].velocity += mountedPlayer.velocity * 0.8f; if (this._type == 40 || this._type == 41 || this._type == 42) Main.dust[index3].velocity *= Main.rand.NextFloat(); } } if (this._type == 40 || this._type == 41 || this._type == 42) { for (int index4 = 0; index4 < 5; ++index4) { int Type = Main.rand.Next(61, 64); if (this._type == 41 || this._type == 40 && Main.rand.Next(2) == 0) Type = Main.rand.Next(11, 14); int index5 = Gore.NewGore(new Vector2(mountedPlayer.position.X + (float) (mountedPlayer.direction * 8), mountedPlayer.position.Y + 20f), Vector2.Zero, Type); Main.gore[index5].alpha = 100; Main.gore[index5].velocity = Vector2.Transform(new Vector2(1f, 0.0f), Matrix.CreateRotationZ((float) (Main.rand.NextDouble() * 6.28318548202515))) * 1.4f; } } if (this._type != 23) return; for (int index6 = 0; index6 < 4; ++index6) { int Type = Main.rand.Next(61, 64); int index7 = Gore.NewGore(new Vector2(mountedPlayer.position.X - 20f, mountedPlayer.position.Y), Vector2.Zero, Type); Main.gore[index7].alpha = 100; Main.gore[index7].velocity = Vector2.Transform(new Vector2(1f, 0.0f), Matrix.CreateRotationZ((float) (Main.rand.NextDouble() * 6.28318548202515))); } } public bool CanMount(int m, Player mountingPlayer) => mountingPlayer.CanFitSpace(Mount.mounts[m].heightBoost); public bool FindTileHeight(Vector2 position, int maxTilesDown, out float tileHeight) { int index1 = (int) ((double) position.X / 16.0); int index2 = (int) ((double) position.Y / 16.0); for (int index3 = 0; index3 <= maxTilesDown; ++index3) { Tile tile = Main.tile[index1, index2]; bool flag1 = Main.tileSolid[(int) tile.type]; bool flag2 = Main.tileSolidTop[(int) tile.type]; if (tile.active()) { if (flag1) { if (!flag2) ; } else { int num = flag2 ? 1 : 0; } } ++index2; } tileHeight = 0.0f; return true; } private class DrillBeam { public Point16 curTileTarget; public int cooldown; public DrillBeam() { this.curTileTarget = Point16.NegativeOne; this.cooldown = 0; } } private class DrillMountData { public float diodeRotationTarget; public float diodeRotation; public float outerRingRotation; public Mount.DrillBeam[] beams; public int beamCooldown; public Vector2 crosshairPosition; public DrillMountData() { this.beams = new Mount.DrillBeam[4]; for (int index = 0; index < this.beams.Length; ++index) this.beams[index] = new Mount.DrillBeam(); } } private class BooleanMountData { public bool boolean; public BooleanMountData() => this.boolean = false; } private class ExtraFrameMountData { public int frame; public float frameCounter; public ExtraFrameMountData() { this.frame = 0; this.frameCounter = 0.0f; } } public class MountDelegatesData { public Action MinecartDust; public Action MinecartLandingSound; public Action MinecartBumperSound; public MountDelegatesData() { this.MinecartDust = new Action(DelegateMethods.Minecart.Sparks); this.MinecartLandingSound = new Action(DelegateMethods.Minecart.LandingSound); this.MinecartBumperSound = new Action(DelegateMethods.Minecart.BumperSound); } } private class MountData { public Asset backTexture = (Asset) Asset.Empty; public Asset backTextureGlow = (Asset) Asset.Empty; public Asset backTextureExtra = (Asset) Asset.Empty; public Asset backTextureExtraGlow = (Asset) Asset.Empty; public Asset frontTexture = (Asset) Asset.Empty; public Asset frontTextureGlow = (Asset) Asset.Empty; public Asset frontTextureExtra = (Asset) Asset.Empty; public Asset frontTextureExtraGlow = (Asset) Asset.Empty; public int textureWidth; public int textureHeight; public int xOffset; public int yOffset; public int[] playerYOffsets; public int bodyFrame; public int playerHeadOffset; public int heightBoost; public int buff; public int extraBuff; public int flightTimeMax; public bool usesHover; public float runSpeed; public float dashSpeed; public float swimSpeed; public float acceleration; public float jumpSpeed; public int jumpHeight; public float fallDamage; public int fatigueMax; public bool constantJump; public bool blockExtraJumps; public int abilityChargeMax; public int abilityDuration; public int abilityCooldown; public int spawnDust; public bool spawnDustNoGravity; public int totalFrames; public int standingFrameStart; public int standingFrameCount; public int standingFrameDelay; public int runningFrameStart; public int runningFrameCount; public int runningFrameDelay; public int flyingFrameStart; public int flyingFrameCount; public int flyingFrameDelay; public int inAirFrameStart; public int inAirFrameCount; public int inAirFrameDelay; public int idleFrameStart; public int idleFrameCount; public int idleFrameDelay; public bool idleFrameLoop; public int swimFrameStart; public int swimFrameCount; public int swimFrameDelay; public int dashingFrameStart; public int dashingFrameCount; public int dashingFrameDelay; public bool Minecart; public bool MinecartDirectional; public Vector3 lightColor = Vector3.One; public bool emitsLight; public Mount.MountDelegatesData delegations; } } }