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

◆ Update()

void Terraria.Projectile.Update ( int i)
inline

Definition at line 14283 of file Projectile.cs.

14284 {
14285 if (!active)
14286 {
14287 return;
14288 }
14289 if (Main.netMode == 1 && (ProjectileID.Sets.IsAGolfBall[type] || type == 820))
14290 {
14291 int num = (int)(position.X + (float)(width / 2)) / 16;
14292 int num2 = (int)(position.Y + (float)(height / 2)) / 16;
14293 if (Main.tile[num, num2] == null)
14294 {
14295 return;
14296 }
14297 }
14299 while (numUpdates >= 0)
14300 {
14301 numUpdates--;
14302 if (type == 640 && ai[1] > 0f)
14303 {
14304 ai[1] -= 1f;
14305 continue;
14306 }
14307 if (position.X <= Main.leftWorld || position.X + (float)width >= Main.rightWorld || position.Y <= Main.topWorld || position.Y + (float)height >= Main.bottomWorld)
14308 {
14309 active = false;
14310 return;
14311 }
14313 {
14315 }
14316 if (numUpdates == -1 && (minion || sentry))
14317 {
14318 Player player = Main.player[owner];
14319 damage = (int)((float)originalDamage * player.minionDamage + 5E-06f);
14320 }
14321 if (minion && numUpdates == -1 && type != 625 && type != 628)
14322 {
14323 minionPos = Main.player[owner].numMinions;
14324 if (Main.player[owner].slotsMinions + minionSlots > (float)Main.player[owner].maxMinions && owner == Main.myPlayer)
14325 {
14326 if ((type == 627 || type == 626) && owner == Main.myPlayer)
14327 {
14328 int byUUID = GetByUUID(owner, ai[0]);
14329 if (byUUID != -1)
14330 {
14331 Projectile projectile = Main.projectile[byUUID];
14332 if (projectile.type != 625)
14333 {
14334 projectile.localAI[1] = localAI[1];
14335 }
14336 projectile = Main.projectile[(int)localAI[1]];
14337 projectile.ai[0] = ai[0];
14338 projectile.ai[1] = 1f;
14339 projectile.netUpdate = true;
14340 }
14341 }
14342 Kill();
14343 }
14344 else
14345 {
14346 Main.player[owner].numMinions++;
14347 Main.player[owner].slotsMinions += minionSlots;
14348 }
14349 }
14350 float num3 = 1f + Math.Abs(velocity.X) / 3f;
14351 if (gfxOffY > 0f)
14352 {
14353 gfxOffY -= num3 * stepSpeed;
14354 if (gfxOffY < 0f)
14355 {
14356 gfxOffY = 0f;
14357 }
14358 }
14359 else if (gfxOffY < 0f)
14360 {
14361 gfxOffY += num3 * stepSpeed;
14362 if (gfxOffY > 0f)
14363 {
14364 gfxOffY = 0f;
14365 }
14366 }
14367 if (gfxOffY > 16f)
14368 {
14369 gfxOffY = 16f;
14370 }
14371 if (gfxOffY < -16f)
14372 {
14373 gfxOffY = -16f;
14374 }
14377 whoAmI = i;
14378 if (soundDelay > 0)
14379 {
14380 soundDelay--;
14381 }
14382 netUpdate = false;
14383 for (int j = 0; j < 255; j++)
14384 {
14385 if (playerImmune[j] > 0)
14386 {
14387 playerImmune[j]--;
14388 }
14389 }
14391 {
14392 for (int k = 0; k < 200; k++)
14393 {
14394 if (localNPCImmunity[k] > 0)
14395 {
14397 }
14398 }
14399 }
14400 AI();
14401 if (ShouldUseWindPhysics() && (double)base.Center.Y < Main.worldSurface * 16.0 && Main.tile[(int)base.Center.X / 16, (int)base.Center.Y / 16] != null && Main.tile[(int)base.Center.X / 16, (int)base.Center.Y / 16].wall == 0 && ((velocity.X > 0f && Main.windSpeedCurrent < 0f) || (velocity.X < 0f && Main.windSpeedCurrent > 0f) || Math.Abs(velocity.X) < Math.Abs(Main.windSpeedCurrent * Main.windPhysicsStrength) * 180f) && Math.Abs(velocity.X) < 16f)
14402 {
14403 velocity.X += Main.windSpeedCurrent * Main.windPhysicsStrength;
14404 MathHelper.Clamp(velocity.X, -16f, 16f);
14405 }
14406 if (owner < 255 && !Main.player[owner].active)
14407 {
14408 Kill();
14409 }
14410 if (type == 242 || type == 302 || type == 638)
14411 {
14412 wet = false;
14413 }
14414 if (!ignoreWater)
14415 {
14416 bool flag;
14417 bool flag2;
14418 try
14419 {
14420 flag = Collision.LavaCollision(position, width, height);
14421 flag2 = Collision.WetCollision(position, width, height);
14422 if (flag)
14423 {
14424 lavaWet = true;
14425 }
14426 if (Collision.honey)
14427 {
14428 honeyWet = true;
14429 }
14430 if (Collision.shimmer)
14431 {
14432 shimmerWet = true;
14433 }
14434 }
14435 catch
14436 {
14437 active = false;
14438 return;
14439 }
14440 if (wet && !lavaWet)
14441 {
14442 if (type == 85 || type == 15 || type == 188)
14443 {
14444 Kill();
14445 }
14446 if (type == 2)
14447 {
14448 type = 1;
14449 light = 0f;
14450 }
14451 }
14452 if (type == 34)
14453 {
14454 if (wet && !lavaWet)
14455 {
14456 Kill();
14457 }
14458 if (lavaWet)
14459 {
14460 flag2 = (wet = (lavaWet = false));
14461 }
14462 }
14463 if (type == 80)
14464 {
14465 flag2 = false;
14466 wet = false;
14467 if (flag && ai[0] >= 0f)
14468 {
14469 Kill();
14470 }
14471 }
14472 if (flag2)
14473 {
14474 if (type != 155 && wetCount == 0 && !wet)
14475 {
14476 if (!flag)
14477 {
14478 if (shimmerWet)
14479 {
14480 for (int l = 0; l < 10; l++)
14481 {
14482 int num4 = Dust.NewDust(new Vector2(position.X - 6f, position.Y + (float)(height / 2) - 8f), width + 12, 24, 308);
14483 Main.dust[num4].velocity.Y -= 4f;
14484 Main.dust[num4].velocity.X *= 2.5f;
14485 Main.dust[num4].scale = 1.3f;
14486 Main.dust[num4].noGravity = true;
14487 switch (Main.rand.Next(6))
14488 {
14489 case 0:
14490 Main.dust[num4].color = new Color(255, 255, 210);
14491 break;
14492 case 1:
14493 Main.dust[num4].color = new Color(190, 245, 255);
14494 break;
14495 case 2:
14496 Main.dust[num4].color = new Color(255, 150, 255);
14497 break;
14498 default:
14499 Main.dust[num4].color = new Color(190, 175, 255);
14500 break;
14501 }
14502 SoundEngine.PlaySound(19, (int)position.X, (int)position.Y, 4);
14503 }
14504 }
14505 else if (honeyWet)
14506 {
14507 for (int m = 0; m < 10; m++)
14508 {
14509 int num5 = Dust.NewDust(new Vector2(position.X - 6f, position.Y + (float)(height / 2) - 8f), width + 12, 24, 152);
14510 Main.dust[num5].velocity.Y -= 1f;
14511 Main.dust[num5].velocity.X *= 2.5f;
14512 Main.dust[num5].scale = 1.3f;
14513 Main.dust[num5].alpha = 100;
14514 Main.dust[num5].noGravity = true;
14515 }
14516 SoundEngine.PlaySound(19, (int)position.X, (int)position.Y);
14517 }
14518 else
14519 {
14520 for (int n = 0; n < 10; n++)
14521 {
14522 int num6 = Dust.NewDust(new Vector2(position.X - 6f, position.Y + (float)(height / 2) - 8f), width + 12, 24, Dust.dustWater());
14523 Main.dust[num6].velocity.Y -= 4f;
14524 Main.dust[num6].velocity.X *= 2.5f;
14525 Main.dust[num6].scale = 1.3f;
14526 Main.dust[num6].alpha = 100;
14527 Main.dust[num6].noGravity = true;
14528 }
14529 SoundEngine.PlaySound(19, (int)position.X, (int)position.Y);
14530 }
14531 }
14532 else
14533 {
14534 for (int num7 = 0; num7 < 10; num7++)
14535 {
14536 int num8 = Dust.NewDust(new Vector2(position.X - 6f, position.Y + (float)(height / 2) - 8f), width + 12, 24, 35);
14537 Main.dust[num8].velocity.Y -= 1.5f;
14538 Main.dust[num8].velocity.X *= 2.5f;
14539 Main.dust[num8].scale = 1.3f;
14540 Main.dust[num8].alpha = 100;
14541 Main.dust[num8].noGravity = true;
14542 }
14543 SoundEngine.PlaySound(19, (int)position.X, (int)position.Y);
14544 }
14545 }
14546 wet = true;
14547 }
14548 else if (wet)
14549 {
14550 wet = false;
14551 if (type == 155)
14552 {
14553 velocity.Y *= 0.5f;
14554 }
14555 else if (wetCount == 0)
14556 {
14557 wetCount = 10;
14558 if (!lavaWet)
14559 {
14560 if (shimmerWet)
14561 {
14562 for (int num9 = 0; num9 < 10; num9++)
14563 {
14564 int num10 = Dust.NewDust(new Vector2(position.X - 6f, position.Y + (float)(height / 2) - 8f), width + 12, 24, 308);
14565 Main.dust[num10].velocity.Y -= 4f;
14566 Main.dust[num10].velocity.X *= 2.5f;
14567 Main.dust[num10].scale = 1.3f;
14568 Main.dust[num10].noGravity = true;
14569 switch (Main.rand.Next(6))
14570 {
14571 case 0:
14572 Main.dust[num10].color = new Color(255, 255, 210);
14573 break;
14574 case 1:
14575 Main.dust[num10].color = new Color(190, 245, 255);
14576 break;
14577 case 2:
14578 Main.dust[num10].color = new Color(255, 150, 255);
14579 break;
14580 default:
14581 Main.dust[num10].color = new Color(190, 175, 255);
14582 break;
14583 }
14584 SoundEngine.PlaySound(19, (int)position.X, (int)position.Y, 5);
14585 }
14586 }
14587 else if (honeyWet)
14588 {
14589 for (int num11 = 0; num11 < 10; num11++)
14590 {
14591 int num12 = Dust.NewDust(new Vector2(position.X - 6f, position.Y + (float)(height / 2) - 8f), width + 12, 24, 152);
14592 Main.dust[num12].velocity.Y -= 1f;
14593 Main.dust[num12].velocity.X *= 2.5f;
14594 Main.dust[num12].scale = 1.3f;
14595 Main.dust[num12].alpha = 100;
14596 Main.dust[num12].noGravity = true;
14597 }
14598 SoundEngine.PlaySound(19, (int)position.X, (int)position.Y);
14599 }
14600 else
14601 {
14602 for (int num13 = 0; num13 < 10; num13++)
14603 {
14604 int num14 = Dust.NewDust(new Vector2(position.X - 6f, position.Y + (float)(height / 2)), width + 12, 24, Dust.dustWater());
14605 Main.dust[num14].velocity.Y -= 4f;
14606 Main.dust[num14].velocity.X *= 2.5f;
14607 Main.dust[num14].scale = 1.3f;
14608 Main.dust[num14].alpha = 100;
14609 Main.dust[num14].noGravity = true;
14610 }
14611 SoundEngine.PlaySound(19, (int)position.X, (int)position.Y);
14612 }
14613 }
14614 else
14615 {
14616 for (int num15 = 0; num15 < 10; num15++)
14617 {
14618 int num16 = Dust.NewDust(new Vector2(position.X - 6f, position.Y + (float)(height / 2) - 8f), width + 12, 24, 35);
14619 Main.dust[num16].velocity.Y -= 1.5f;
14620 Main.dust[num16].velocity.X *= 2.5f;
14621 Main.dust[num16].scale = 1.3f;
14622 Main.dust[num16].alpha = 100;
14623 Main.dust[num16].noGravity = true;
14624 }
14625 SoundEngine.PlaySound(19, (int)position.X, (int)position.Y);
14626 }
14627 }
14628 }
14629 if (!wet)
14630 {
14631 lavaWet = false;
14632 honeyWet = false;
14633 shimmerWet = false;
14634 }
14635 if (wetCount > 0)
14636 {
14637 wetCount--;
14638 }
14639 }
14640 if (shimmerWet)
14641 {
14642 Shimmer();
14643 }
14648 {
14649 if (velocity.X < 0f)
14650 {
14651 direction = -1;
14652 }
14653 else
14654 {
14655 direction = 1;
14656 }
14657 }
14658 if (!active)
14659 {
14660 return;
14661 }
14662 ProjLight();
14663 if (!npcProj && friendly && Main.player[owner].magicQuiver && extraUpdates < 1 && arrow)
14664 {
14665 extraUpdates = 1;
14666 }
14667 if (type == 2 || type == 82)
14668 {
14669 Dust.NewDust(new Vector2(position.X, position.Y), width, height, 6, 0f, 0f, 100);
14670 }
14671 else if (type == 172)
14672 {
14673 Dust.NewDust(new Vector2(position.X, position.Y), width, height, 135, 0f, 0f, 100);
14674 }
14675 else if (type == 103)
14676 {
14677 int num17 = Dust.NewDust(new Vector2(position.X, position.Y), width, height, 75, 0f, 0f, 100);
14678 if (Main.rand.Next(2) == 0)
14679 {
14680 Main.dust[num17].noGravity = true;
14681 Main.dust[num17].scale *= 2f;
14682 }
14683 }
14684 else if (type == 278)
14685 {
14686 int num18 = Dust.NewDust(new Vector2(position.X, position.Y), width, height, 169, 0f, 0f, 100);
14687 if (Main.rand.Next(2) == 0)
14688 {
14689 Main.dust[num18].noGravity = true;
14690 Main.dust[num18].scale *= 1.5f;
14691 }
14692 }
14693 else if (type == 4)
14694 {
14695 if (Main.rand.Next(5) == 0)
14696 {
14697 Dust.NewDust(new Vector2(position.X, position.Y), width, height, 14, 0f, 0f, 150, default(Color), 1.1f);
14698 }
14699 }
14700 else if (type == 5)
14701 {
14702 int num19 = Main.rand.Next(3);
14703 Dust.NewDust(position, width, height, num19 switch
14704 {
14705 0 => 15,
14706 1 => 57,
14707 _ => 58,
14708 }, velocity.X * 0.5f, velocity.Y * 0.5f, 150, default(Color), 1.2f);
14709 }
14710 Damage();
14711 if (type == 434 && localAI[0] == 0f && numUpdates == 0)
14712 {
14713 extraUpdates = 1;
14715 localAI[0] = 1f;
14716 localAI[1] = 0.9999f;
14717 netUpdate = true;
14718 }
14719 if (Main.netMode != 1 && (type == 99 || type == 1013 || type == 655 || type == 727 || type == 1014 || type == 1021))
14720 {
14721 Collision.SwitchTiles(position, width, height, oldPosition, 3);
14722 }
14724 {
14725 for (int num20 = oldPos.Length - 1; num20 > 0; num20--)
14726 {
14727 oldPos[num20] = oldPos[num20 - 1];
14728 }
14729 oldPos[0] = position;
14730 }
14731 else if (ProjectileID.Sets.TrailingMode[type] == 1)
14732 {
14733 if (frameCounter == 0 || oldPos[0] == Vector2.Zero)
14734 {
14735 for (int num21 = oldPos.Length - 1; num21 > 0; num21--)
14736 {
14737 oldPos[num21] = oldPos[num21 - 1];
14738 }
14739 oldPos[0] = position;
14740 if (velocity == Vector2.Zero && type == 466)
14741 {
14742 float num22 = rotation + (float)Math.PI / 2f + ((Main.rand.Next(2) == 1) ? (-1f) : 1f) * ((float)Math.PI / 2f);
14743 float num23 = (float)Main.rand.NextDouble() * 2f + 2f;
14744 Vector2 vector = new Vector2((float)Math.Cos(num22) * num23, (float)Math.Sin(num22) * num23);
14745 int num24 = Dust.NewDust(oldPos[oldPos.Length - 1], 0, 0, 229, vector.X, vector.Y);
14746 Main.dust[num24].noGravity = true;
14747 Main.dust[num24].scale = 1.7f;
14748 }
14749 if (velocity == Vector2.Zero && type == 580)
14750 {
14751 float num25 = rotation + (float)Math.PI / 2f + ((Main.rand.Next(2) == 1) ? (-1f) : 1f) * ((float)Math.PI / 2f);
14752 float num26 = (float)Main.rand.NextDouble() * 2f + 2f;
14753 Vector2 vector2 = new Vector2((float)Math.Cos(num25) * num26, (float)Math.Sin(num25) * num26);
14754 int num27 = Dust.NewDust(oldPos[oldPos.Length - 1], 0, 0, 229, vector2.X, vector2.Y);
14755 Main.dust[num27].noGravity = true;
14756 Main.dust[num27].scale = 1.7f;
14757 }
14758 }
14759 }
14760 else if (ProjectileID.Sets.TrailingMode[type] == 2)
14761 {
14762 for (int num28 = oldPos.Length - 1; num28 > 0; num28--)
14763 {
14764 oldPos[num28] = oldPos[num28 - 1];
14765 oldRot[num28] = oldRot[num28 - 1];
14767 }
14768 oldPos[0] = position;
14769 oldRot[0] = rotation;
14771 }
14772 else if (ProjectileID.Sets.TrailingMode[type] == 3)
14773 {
14774 for (int num29 = oldPos.Length - 1; num29 > 0; num29--)
14775 {
14776 oldPos[num29] = oldPos[num29 - 1];
14777 oldRot[num29] = oldRot[num29 - 1];
14779 }
14780 oldPos[0] = position;
14781 oldRot[0] = rotation;
14783 float amount = 0.65f;
14784 int num30 = 1;
14785 for (int num31 = 0; num31 < num30; num31++)
14786 {
14787 for (int num32 = oldPos.Length - 1; num32 > 0; num32--)
14788 {
14789 if (!(oldPos[num32] == Vector2.Zero))
14790 {
14791 if (oldPos[num32].Distance(oldPos[num32 - 1]) > 2f)
14792 {
14794 }
14795 oldRot[num32] = (oldPos[num32 - 1] - oldPos[num32]).SafeNormalize(Vector2.Zero).ToRotation();
14796 }
14797 }
14798 }
14799 }
14800 else if (ProjectileID.Sets.TrailingMode[type] == 4)
14801 {
14802 Vector2 vector3 = Main.player[owner].position - Main.player[owner].oldPosition;
14803 for (int num33 = oldPos.Length - 1; num33 > 0; num33--)
14804 {
14805 oldPos[num33] = oldPos[num33 - 1];
14806 oldRot[num33] = oldRot[num33 - 1];
14808 if (numUpdates == 0 && oldPos[num33] != Vector2.Zero)
14809 {
14810 oldPos[num33] += vector3;
14811 }
14812 }
14813 oldPos[0] = position;
14814 oldRot[0] = rotation;
14816 }
14817 else if (ProjectileID.Sets.TrailingMode[type] == 5)
14818 {
14819 for (int num34 = oldPos.Length - 1; num34 > 0; num34--)
14820 {
14821 oldPos[num34] = oldPos[num34 - 1];
14822 oldRot[num34] = oldRot[num34 - 1];
14824 }
14825 oldPos[0] = position;
14826 oldRot[0] = velocity.ToRotation();
14828 }
14830 {
14831 timeLeft++;
14832 }
14833 timeLeft--;
14834 if (timeLeft <= 0)
14835 {
14836 Kill();
14837 }
14838 if (penetrate == 0)
14839 {
14840 Kill();
14841 }
14842 if (!active || owner != Main.myPlayer)
14843 {
14844 continue;
14845 }
14846 if (netUpdate2)
14847 {
14848 netUpdate = true;
14849 }
14850 if (!active)
14851 {
14852 netSpam = 0;
14853 }
14854 if (netUpdate)
14855 {
14856 if (netSpam < 60)
14857 {
14858 netSpam += 5;
14859 NetMessage.SendData(27, -1, -1, null, i);
14860 netUpdate2 = false;
14861 }
14862 else
14863 {
14864 netUpdate2 = true;
14865 }
14866 }
14867 if (netSpam > 0)
14868 {
14869 netSpam--;
14870 }
14871 }
14872 netUpdate = false;
14873 }
static float Clamp(float value, float min, float max)
Definition MathHelper.cs:46
static double Cos(double d)
static double Abs(double value)
static double Sin(double a)
const double PI
Definition Math.cs:16
static void PlaySound(int type, Vector2 position, int style=1)
Vector2 oldPosition
Definition Entity.cs:18
bool honeyWet
Definition Entity.cs:34
bool shimmerWet
Definition Entity.cs:32
int oldDirection
Definition Entity.cs:22
Vector2 velocity
Definition Entity.cs:16
float Distance(Vector2 Other)
Definition Entity.cs:187
Vector2 position
Definition Entity.cs:14
Vector2 oldVelocity
Definition Entity.cs:20
byte wetCount
Definition Entity.cs:36
void HandleMovement(Vector2 wetVelocity, out int overrideWidth, out int overrideHeight)
bool AutomaticallyChangesDirection()
static int GetByUUID(int owner, float uuid)
void UpdateEnchantmentVisuals()
static Vector2 Lerp(Vector2 value1, Vector2 value2, float amount)
Definition Vector2.cs:227

References System.Math.Abs(), Terraria.Entity.active, Terraria.Projectile.ai, Terraria.Projectile.AI(), Terraria.Projectile.arrow, Terraria.Projectile.AutomaticallyChangesDirection(), Terraria.Main.bottomWorld, Microsoft.Xna.Framework.MathHelper.Clamp(), System.Math.Cos(), Terraria.Projectile.damage, Terraria.Projectile.Damage(), Terraria.Entity.direction, Terraria.Entity.Distance(), Terraria.Main.dust, Terraria.Dust.dustWater(), System.E, Terraria.Projectile.extraUpdates, Terraria.Projectile.frameCounter, Terraria.Projectile.friendly, Terraria.Projectile.GetByUUID(), Terraria.Projectile.gfxOffY, Terraria.Projectile.HandleMovement(), Terraria.Entity.height, Terraria.Collision.honey, Terraria.Entity.honeyWet, Terraria.Projectile.ignoreWater, Terraria.ID.ProjectileID.Sets.IsADD2Turret, Terraria.ID.ProjectileID.Sets.IsAGolfBall, Terraria.Projectile.Kill(), Terraria.Collision.LavaCollision(), Terraria.Entity.lavaWet, Terraria.Main.leftWorld, Microsoft.Xna.Framework.Vector2.Length(), Microsoft.Xna.Framework.Vector2.Lerp(), Terraria.Projectile.light, Terraria.Projectile.localAI, Terraria.Projectile.localNPCImmunity, Terraria.Projectile.minion, Terraria.Projectile.minionPos, Terraria.Projectile.minionSlots, Terraria.Main.myPlayer, Terraria.Main.netMode, Terraria.Projectile.netSpam, Terraria.Projectile.netUpdate, Terraria.Projectile.netUpdate2, Terraria.Dust.NewDust(), Terraria.Projectile.noEnchantmentVisuals, Terraria.Projectile.npcProj, Terraria.Projectile.numUpdates, Terraria.Entity.oldDirection, Terraria.Projectile.oldPos, Terraria.Entity.oldPosition, Terraria.Projectile.oldRot, Terraria.Projectile.oldSpriteDirection, Terraria.Entity.oldVelocity, Terraria.GameContent.Events.DD2Event.Ongoing, Terraria.Projectile.originalDamage, Terraria.Projectile.owner, Terraria.Projectile.penetrate, System.Math.PI, Terraria.Main.player, Terraria.Projectile.playerImmune, Terraria.Audio.SoundEngine.PlaySound(), Terraria.Entity.position, Terraria.Main.projectile, Terraria.Projectile.ProjLight(), Terraria.Main.rand, Terraria.Projectile.rotation, Terraria.NetMessage.SendData(), Terraria.Projectile.sentry, Terraria.Collision.shimmer, Terraria.Projectile.Shimmer(), Terraria.Entity.shimmerWet, Terraria.Projectile.ShouldUseWindPhysics(), System.Math.Sin(), Terraria.Projectile.soundDelay, Terraria.Projectile.spriteDirection, Terraria.Projectile.stepSpeed, Terraria.Collision.SwitchTiles(), Terraria.Main.tile, Terraria.Projectile.timeLeft, Terraria.ID.ProjectileID.Sets.TrailingMode, Terraria.Projectile.type, Terraria.Projectile.UpdateEnchantmentVisuals(), Terraria.Projectile.usesLocalNPCImmunity, Terraria.Entity.velocity, Terraria.Entity.wet, Terraria.Collision.WetCollision(), Terraria.Entity.wetCount, Terraria.Entity.whoAmI, Terraria.Entity.width, Terraria.Main.windPhysicsStrength, Terraria.Main.windSpeedCurrent, Terraria.Main.worldSurface, Microsoft.Xna.Framework.Vector2.X, Microsoft.Xna.Framework.Vector2.Y, and Microsoft.Xna.Framework.Vector2.Zero.