terraria-source-code/Mount.cs
2021-10-26 12:45:26 -04:00

4337 lines
177 KiB
C#

// 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<DrillDebugDraw> _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<DrillDebugDraw>();
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<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData2.frontTexture = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData2.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData3.frontTexture = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData3.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData4.frontTexture = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData4.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Vector2>(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<Texture2D>) Asset<Texture2D>.Empty;
mountData5.backTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData5.frontTexture = TextureAssets.MinecartMount;
mountData5.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Vector2>(DelegateMethods.Minecart.SparksMeow);
newMount16.delegations.MinecartLandingSound = new Action<Vector2, int, int>(Mount.MeowcartLandingSound);
newMount16.delegations.MinecartBumperSound = new Action<Vector2, int, int>(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<Vector2>(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<Texture2D>) Asset<Texture2D>.Empty;
mountData6.backTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData6.frontTexture = TextureAssets.FishMinecartMount;
mountData6.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData7.frontTexture = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData7.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData8.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData9.backTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData10.backTextureExtraGlow = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData12.frontTexture = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData12.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Vector2>(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<Texture2D>) Asset<Texture2D>.Empty;
mountData13.backTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData13.frontTexture = TextureAssets.MinecartMechMount[0];
mountData13.frontTextureGlow = TextureAssets.MinecartMechMount[1];
mountData13.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData14.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Vector2>(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<Texture2D>) Asset<Texture2D>.Empty;
mountData15.backTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData15.frontTexture = TextureAssets.MinecartWoodMount;
mountData15.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData16.frontTexture = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData16.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData17.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData18.frontTexture = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData18.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData19.frontTexture = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData19.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData20.backTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData20.frontTexture = TextureAssets.Extra[164];
mountData20.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData21.backTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData21.frontTexture = TextureAssets.Extra[166];
mountData21.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData22.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData23.backTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData24.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData25.frontTexture = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData25.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData26.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<Texture2D>) Asset<Texture2D>.Empty;
mountData27.frontTexture = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData27.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.Empty;
mountData27.textureWidth = mountData27.backTexture.Width();
mountData27.textureHeight = mountData27.backTexture.Height();
}
private static void SetAsHorse(Mount.MountData newMount, int buff, Asset<Texture2D> 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<Texture2D>) Asset<Texture2D>.Empty;
newMount.frontTexture = (Asset<Texture2D>) Asset<Texture2D>.Empty;
newMount.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.Empty;
newMount.textureWidth = newMount.backTexture.Width();
newMount.textureHeight = newMount.backTexture.Height();
}
private static void SetAsMinecart(
Mount.MountData newMount,
int buffToLeft,
int buffToRight,
Asset<Texture2D> texture)
{
newMount.Minecart = true;
newMount.delegations = new Mount.MountDelegatesData();
newMount.delegations.MinecartDust = new Action<Vector2>(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<Texture2D>) Asset<Texture2D>.Empty;
newMount.backTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.Empty;
newMount.frontTexture = texture;
newMount.frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.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<float>(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<int>(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<int>(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<float>(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<short>(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<DrawData> 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<Vector2> MinecartDust;
public Action<Vector2, int, int> MinecartLandingSound;
public Action<Vector2, int, int> MinecartBumperSound;
public MountDelegatesData()
{
this.MinecartDust = new Action<Vector2>(DelegateMethods.Minecart.Sparks);
this.MinecartLandingSound = new Action<Vector2, int, int>(DelegateMethods.Minecart.LandingSound);
this.MinecartBumperSound = new Action<Vector2, int, int>(DelegateMethods.Minecart.BumperSound);
}
}
private class MountData
{
public Asset<Texture2D> backTexture = (Asset<Texture2D>) Asset<Texture2D>.Empty;
public Asset<Texture2D> backTextureGlow = (Asset<Texture2D>) Asset<Texture2D>.Empty;
public Asset<Texture2D> backTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.Empty;
public Asset<Texture2D> backTextureExtraGlow = (Asset<Texture2D>) Asset<Texture2D>.Empty;
public Asset<Texture2D> frontTexture = (Asset<Texture2D>) Asset<Texture2D>.Empty;
public Asset<Texture2D> frontTextureGlow = (Asset<Texture2D>) Asset<Texture2D>.Empty;
public Asset<Texture2D> frontTextureExtra = (Asset<Texture2D>) Asset<Texture2D>.Empty;
public Asset<Texture2D> frontTextureExtraGlow = (Asset<Texture2D>) Asset<Texture2D>.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;
}
}
}