73962 {
73963
73964
73965
73966
73967
73968
73969
73970
73971
73972
73973
73974
73975
73976
73977
73978
73979
73980
73981
73982
73983
73984
73985
73986
73987
73988
73989
73990
73991
73992
73993
73994
73995
73996
73997
73998
73999
74000
74001
74002
74003
74004
74005
74006
74007
74008
74009
74010
74011
74012
74013
74014
74015
74016
74017
74018
74019
74020
74021
74022
74023
74024
74025
74026
74027
74028
74029
74030
74031
74032
74033
74034
74035
74036
74037
74038
74039
74040
74041
74042
74043
74044
74045
74046
74047
74048
74049
74050
74051
74052
74053
74054
74055
74056
74057
74058
74059
74060
74061
74062
74063
74064
74065
74066
74067
74068
74069
74070
74071
74072
74073
74074
74075
74076
74077
74078
74079
74080
74081
74082
74083
74084
74085
74086
74087
74088
74089
74090
74091
74092
74093
74094
74095
74096
74097
74098
74099
74100
74101
74102
74103
74104
74105
74106
74107
74108
74109
74110
74111
74112
74113
74114
74115
74116
74117
74118
74119
74120
74121
74122
74123
74124
74125
74126
74127
74128
74129
74139 if (
owner == Main.myPlayer)
74140 {
74141 bool flag2 =
false;
74142 for (int i = 0; i < 1000; i++)
74143 {
74144 if (Main.projectile[i].active && Main.projectile[i].owner ==
owner && Main.projectile[i].aiStyle == 99 && (Main.projectile[i].type < 556 || Main.projectile[i].type > 561))
74145 {
74147 }
74148 }
74150 {
74153 }
74154 }
74155 if (Main.player[
owner].yoyoString)
74156 {
74158 }
74160 if (Main.player[
owner].dead)
74161 {
74163 return;
74164 }
74166 {
74168 Main.player[
owner].SetDummyItemTime(2);
74170 {
74171 Main.player[
owner].ChangeDir(1);
74173 }
74174 else
74175 {
74176 Main.player[
owner].ChangeDir(-1);
74178 }
74179 }
74180 if (
ai[0] == 0
f ||
ai[0] == 1
f)
74181 {
74183 {
74185 }
74187 bool flag3 =
false;
74189 if ((
double)((Vector2)(
ref vector)).Length() > (
double)
num * 0.9)
74190 {
74192 }
74194 {
74196 Vector2
vector2 =
default(Vector2);
74202 position.X -=
width / 2;
74203 position.Y -=
height / 2;
74207 {
74209 }
74212 Vector2
vector3 =
default(Vector2);
74214 Vector2
vector4 =
default(Vector2);
74217 {
74219 }
74221 {
74223 }
74225 {
74227 }
74229 {
74231 }
74236 {
74242 {
74244 }
74245 else
74246 {
74248 }
74249 }
74250 else
74251 {
74257 {
74259 }
74260 else
74261 {
74263 }
74264 }
74265 }
74266 if (Main.myPlayer ==
owner)
74267 {
74268 if (Main.player[
owner].channel)
74269 {
74270 Vector2
vector7 =
default(Vector2);
74271 ((Vector2)(
ref vector7)).
_002Ector((
float)(Main.mouseX - Main.lastMouseX), (
float)(Main.mouseY - Main.lastMouseY));
74273 {
74275 {
74277 }
74279 {
74281 {
74283 }
74285 {
74287 }
74289 {
74291 }
74293 {
74295 }
74296 }
74299 }
74300 }
74301 else
74302 {
74305 }
74306 }
74308 {
74310 Vector2
vector8 =
default(Vector2);
74311 bool flag4 =
false;
74313 {
74315 }
74317 {
74319 }
74321 {
74323 }
74325 {
74327 }
74328 for (
int j = 0;
j < 200;
j++)
74329 {
74330 if (!Main.npc[
j].CanBeChasedBy(
this))
74331 {
74332 continue;
74333 }
74334 float num12 = Main.npc[
j].position.X + (float)(Main.npc[
j].width / 2);
74335 float num13 = Main.npc[
j].position.Y + (float)(Main.npc[
j].height / 2);
74338 {
74339 Vector2
val = Main.npc[
j].Center - Main.player[
owner].Center;
74340 if ((
double)((Vector2)(
ref val)).Length() < (double)
num * 0.9)
74341 {
74346 }
74347 }
74348 }
74350 {
74354 {
74357 }
74358 else if (
type == 553)
74359 {
74362 }
74363 else if (
type == 603)
74364 {
74367 }
74368 else if (
type == 554)
74369 {
74372 }
74373 else
74374 {
74377 }
74378 }
74379 }
74381 {
74384 }
74386 {
74389 }
74390 return;
74391 }
74396 {
74398 return;
74399 }
74402 {
74404 }
74406 {
74408 }
74410 {
74412 }
74414 {
74416 }
74421 }
int whoAmI
The index of this Entity within its specific array. These arrays track the entities in the world....
Vector2 velocity
The velocity of this Entity in world coordinates per tick.
Vector2 position
The position of this Entity in world coordinates.
int width
The width of this Entity's hitbox, in pixels.
int height
The height of this Entity's hitbox, in pixels.
int owner
The index of the player who owns this projectile. In Multiplayer, Clients "own" projectiles that they...
float[] ai
An array with 3 slots used for any sort of data storage, which is occasionally synced to the server....
bool netUpdate
Set manually to true in M:Terraria.ModLoader.ModProjectile.AI once to make it sync its current F:Terr...
int type
The Projectile ID of this projectile. The Projectile ID is a unique number assigned to each Projectil...
bool tileCollide
If true, the projectile will collide with tiles, usually bouncing or killing the tile depending on M:...
int timeLeft
Time in ticks before this projectile will naturally despawn. Each update timeLeft is decreased by 1...
float rotation
Rotation of the projectile. Radians not Degrees. Use T:Microsoft.Xna.Framework.MathHelper if you want...