Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ WallslideMovement()

void Terraria.Player.WallslideMovement ( )
inline

Definition at line 20779 of file Player.cs.

20780 {
20781 sliding = false;
20782 if (slideDir == 0 || spikedBoots <= 0 || mount.Active || ((!controlLeft || slideDir != -1) && (!controlRight || slideDir != 1)))
20783 {
20784 return;
20785 }
20786 bool flag = false;
20787 float num = position.X;
20788 if (slideDir == 1)
20789 {
20790 num += (float)width;
20791 }
20792 num += (float)slideDir;
20793 float num2 = position.Y + (float)height + 1f;
20794 if (gravDir < 0f)
20795 {
20796 num2 = position.Y - 1f;
20797 }
20798 num /= 16f;
20799 num2 /= 16f;
20800 if (WorldGen.SolidTile((int)num, (int)num2) && WorldGen.SolidTile((int)num, (int)num2 - 1))
20801 {
20802 flag = true;
20803 }
20804 if (spikedBoots >= 2)
20805 {
20806 if (!flag || ((!(velocity.Y > 0f) || gravDir != 1f) && (!(velocity.Y < gravity) || gravDir != -1f)))
20807 {
20808 return;
20809 }
20810 float num3 = gravity;
20811 if (slowFall)
20812 {
20813 num3 = ((!TryingToHoverUp) ? (gravity / 3f * gravDir) : (gravity / 10f * gravDir));
20814 }
20815 fallStart = (int)(position.Y / 16f);
20816 if ((controlDown && gravDir == 1f) || (controlUp && gravDir == -1f))
20817 {
20818 velocity.Y = 4f * gravDir;
20819 int num4 = Dust.NewDust(new Vector2(position.X + (float)(width / 2) + (float)((width / 2 - 4) * slideDir), position.Y + (float)(height / 2) + (float)(height / 2 - 4) * gravDir), 8, 8, 31);
20820 if (slideDir < 0)
20821 {
20822 Main.dust[num4].position.X -= 10f;
20823 }
20824 if (gravDir < 0f)
20825 {
20826 Main.dust[num4].position.Y -= 12f;
20827 }
20828 Main.dust[num4].velocity *= 0.1f;
20829 Main.dust[num4].scale *= 1.2f;
20830 Main.dust[num4].noGravity = true;
20831 Main.dust[num4].shader = GameShaders.Armor.GetSecondaryShader(cShoe, this);
20832 }
20833 else if (gravDir == -1f)
20834 {
20835 velocity.Y = (0f - num3 + 1E-05f) * gravDir;
20836 }
20837 else
20838 {
20839 velocity.Y = (0f - num3 + 1E-05f) * gravDir;
20840 }
20841 sliding = true;
20842 }
20843 else if ((flag && (double)velocity.Y > 0.5 && gravDir == 1f) || ((double)velocity.Y < -0.5 && gravDir == -1f))
20844 {
20845 fallStart = (int)(position.Y / 16f);
20846 if (controlDown)
20847 {
20848 velocity.Y = 4f * gravDir;
20849 }
20850 else
20851 {
20852 velocity.Y = 0.5f * gravDir;
20853 }
20854 sliding = true;
20855 int num5 = Dust.NewDust(new Vector2(position.X + (float)(width / 2) + (float)((width / 2 - 4) * slideDir), position.Y + (float)(height / 2) + (float)(height / 2 - 4) * gravDir), 8, 8, 31);
20856 if (slideDir < 0)
20857 {
20858 Main.dust[num5].position.X -= 10f;
20859 }
20860 if (gravDir < 0f)
20861 {
20862 Main.dust[num5].position.Y -= 12f;
20863 }
20864 Main.dust[num5].velocity *= 0.1f;
20865 Main.dust[num5].scale *= 1.2f;
20866 Main.dust[num5].noGravity = true;
20867 Main.dust[num5].shader = GameShaders.Armor.GetSecondaryShader(cShoe, this);
20868 }
20869 }
Vector2 velocity
Definition Entity.cs:16
Vector2 position
Definition Entity.cs:14
static ArmorShaderDataSet Armor
Definition GameShaders.cs:7
bool Active
Definition Mount.cs:345
bool controlRight
Definition Player.cs:1383
bool TryingToHoverUp
Definition Player.cs:3400

References Terraria.Graphics.Shaders.GameShaders.Armor, Terraria.Main.dust, System.E, Terraria.Dust.NewDust(), and Terraria.WorldGen.SolidTile().