35798 {
35800 if (!player.active || player.dead || player.noItems || player.CCed ||
Vector2.
Distance(
base.Center, player.Center) > 900f)
35801 {
35803 return;
35804 }
35805 if (Main.myPlayer ==
owner && Main.mapFullscreen)
35806 {
35808 return;
35809 }
35811 {
35814 }
35817 bool flag = true;
35818 bool flag2 =
false;
35819 int num = 10;
35832 int num14 = num + 5;
35834 {
35835 case 947:
35836 case 948:
35837 num = 13;
35841 break;
35842 case 25:
35843 num = 15;
35847 break;
35848 case 154:
35849 num = 15;
35853 break;
35854 case 26:
35855 num = 15;
35859 break;
35860 case 35:
35861 num = 15;
35865 break;
35866 case 63:
35867 num = 13;
35872 break;
35873 case 757:
35874 num = 13;
35879 break;
35880 case 247:
35881 num = 13;
35884 break;
35885 }
35886 float meleeSpeed = player.meleeSpeed;
35887 float num15 = 1f / meleeSpeed;
35898 switch ((
int)
ai[0])
35899 {
35900 case 0:
35901 {
35903 if (
owner == Main.myPlayer)
35904 {
35908 player.ChangeDir((
vector3.X > 0f) ? 1 : (-1));
35909 if (!player.channel)
35910 {
35918 break;
35919 }
35920 }
35923 vector4.Y *= 0.8f;
35924 if (
vector4.Y * player.gravDir > 0f)
35925 {
35926 vector4.Y *= 0.5f;
35927 }
35931 break;
35932 }
35933 case 1:
35934 {
35936 bool flag3 =
ai[1]++ >= (float)num;
35938 if (player.controlUseItem)
35939 {
35944 if (Main.myPlayer ==
owner &&
type == 757)
35945 {
35947 }
35948 break;
35949 }
35951 {
35956 if (Main.myPlayer ==
owner &&
type == 757)
35957 {
35959 }
35960 }
35961 player.ChangeDir((player.Center.X <
base.Center.X) ? 1 : (-1));
35963 break;
35964 }
35965 case 2:
35966 {
35969 {
35971 return;
35972 }
35973 if (player.controlUseItem)
35974 {
35979 }
35980 else
35981 {
35984 player.ChangeDir((player.Center.X <
base.Center.X) ? 1 : (-1));
35985 }
35986 break;
35987 }
35988 case 3:
35989 {
35990 if (!player.controlUseItem)
35991 {
35995 break;
35996 }
36001 {
36005 }
36007 {
36009 {
36012 }
36015 }
36016 else
36017 {
36019 {
36020 velocity.X *= 0.96f;
36021 velocity.Y += 0.2f;
36022 }
36023 if (player.velocity.X == 0f)
36024 {
36025 velocity.X *= 0.96f;
36026 }
36027 }
36028 player.ChangeDir((player.Center.X <
base.Center.X) ? 1 : (-1));
36029 break;
36030 }
36031 case 4:
36032 {
36036 {
36038 return;
36039 }
36045 {
36047 return;
36048 }
36049 player.ChangeDir((player.Center.X <
base.Center.X) ? 1 : (-1));
36050 break;
36051 }
36052 case 5:
36054 {
36058 }
36059 else
36060 {
36062 velocity.Y += 0.6f;
36063 velocity.X *= 0.95f;
36064 player.ChangeDir((player.Center.X <
base.Center.X) ? 1 : (-1));
36065 }
36066 break;
36067 case 6:
36069 {
36073 break;
36074 }
36076 {
36077 velocity.Y += 0.8f;
36078 }
36079 velocity.X *= 0.95f;
36080 player.ChangeDir((player.Center.X <
base.Center.X) ? 1 : (-1));
36081 break;
36082 }
36085 {
36086 flag = false;
36090 {
36091 rotation += (float)
Math.
PI * 2f / 15f * (
float)player.direction;
36092 }
36093 float num21 = 600f;
36095 if (
owner == Main.myPlayer)
36096 {
36099 {
36101 for (
int i = 0;
i < 200;
i++)
36102 {
36104 if (
nPC2.CanBeChasedBy(
this))
36105 {
36108 {
36111 }
36112 }
36113 }
36114 }
36116 {
36122 }
36123 }
36124 }
36125 direction = ((velocity.X > 0f) ? 1 : (-1));
36128 if (flag)
36129 {
36131 {
36133 }
36134 else
36135 {
36137 }
36138 }
36140 player.heldProj =
whoAmI;
36141 player.SetDummyItemTime(2);
36144 {
36145 player.itemRotation += (float)
Math.
PI;
36146 }
36149 }
static float WrapAngle(float angle)
static double Abs(double value)
Vector2 DirectionFrom(Vector2 Source)
float Distance(Vector2 Other)
Vector2 DirectionTo(Vector2 Destination)
IEntitySource GetProjectileSource_FromThis()
void ResetLocalNPCHitImmunity()
void AI_015_Flails_Dust(bool doFastThrowDust)
static int NewProjectile(IEntitySource spawnSource, Vector2 position, Vector2 velocity, int Type, int Damage, float KnockBack, int Owner=-1, float ai0=0f, float ai1=0f, float ai2=0f)
static float Dot(Vector2 value1, Vector2 value2)
static float Distance(Vector2 value1, Vector2 value2)