48270 {
48271
48272
48273
48274
48275
48276
48277
48278
48279
48280
48281
48282
48283
48284
48285
48286
48287
48288
48289
48290
48291
48292
48293
48294
48295
48296
48297
48298
48299
48300
48301
48302
48303
48304
48305
48306
48307
48308
48309
48310
48311
48312
48313
48314
48315
48316
48317
48318
48319
48320
48321
48322
48323
48324
48325
48326
48327
48328
48329
48330
48331
48332
48335 Vector2
vector = player.Top +
new Vector2(0
f, -30
f);
48337 {
48338 if (player.dead)
48339 {
48340 player.smolstar = false;
48341 }
48342 if (player.smolstar)
48343 {
48345 }
48347 {
48352 Vector2
vector3 = Vector2.UnitY.RotatedBy(
num2 * (
float)index + Main.GlobalTimeWrappedHourly %
num3 /
num3 * ((
float)
Math.PI * 2
f));
48354 vector.Y += player.gfxOffY;
48356 }
48357 }
48359 {
48365 {
48367 }
48370 {
48372 }
48377 {
48381 }
48384 {
48386 }
48388 return;
48389 }
48391 {
48393 {
48395 for (int i = 0; i < 2; i++)
48396 {
48398 if (Main.rand.Next(3) != 0)
48399 {
48400 dust.scale *= 1.3f;
48401 dust.velocity *= 1.1f;
48402 }
48403 dust.noGravity = true;
48405 }
48406 velocity += Main.rand.NextVector2CircularEdge(4
f, 4
f);
48407 }
48409 rotation += velocity.X * 0.1f + velocity.Y * 0.05f;
48412 {
48415 }
48416 return;
48417 }
48420 if (Main.npc.IndexInRange(
num5) && Main.npc[
num5].CanBeChasedBy(
this))
48421 {
48423 }
48425 {
48429 }
48430 else if (player.Distance(
nPC.Center) >= 900
f)
48431 {
48435 }
48436 else
48437 {
48442 {
48444 }
48447 }
48450 for (
int j = 0;
j < 1000;
j++)
48451 {
48453 {
48454 if (
position.X < Main.projectile[
j].position.X)
48455 {
48456 velocity.X -=
num7;
48457 }
48458 else
48459 {
48460 velocity.X +=
num7;
48461 }
48462 if (
position.Y < Main.projectile[
j].position.Y)
48463 {
48464 velocity.Y -=
num7;
48465 }
48466 else
48467 {
48468 velocity.Y +=
num7;
48469 }
48470 }
48471 }
48472 }
static SlotId PlaySound(in SoundStyle? style, Vector2? position=null, SoundUpdateCallback? updateCallback=null)
Attempts to play a sound style with the provided sound style (if it's not null), and returns a valid ...
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...
void Minion_FindTargetInRange(int startAttackRange, ref int attackTarget, bool skipIfCannotHitWithOwnBody, Func< Entity, int, bool > customEliminationCheck=null)
int type
The Projectile ID of this projectile. The Projectile ID is a unique number assigned to each Projectil...
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...
void AI_GetMyGroupIndexAndFillBlackList(List< int > blackListedTargets, out int index, out int totalIndexesInGroup)