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

◆ AI_140_MonkStaffT1()

void Terraria.Projectile.AI_140_MonkStaffT1 ( )
inlineprivate

Definition at line 58363 of file Projectile.cs.

58364 {
58365 //IL_0505: Unknown result type (might be due to invalid IL or missing references)
58366 //IL_0518: Unknown result type (might be due to invalid IL or missing references)
58367 float num = 50f;
58368 float num2 = 2f;
58369 float num3 = 20f;
58370 Player player = Main.player[owner];
58371 float num4 = -(float)Math.PI / 4f;
58372 Vector2 vector = player.RotatedRelativePoint(player.MountedCenter);
58374 if (player.dead)
58375 {
58376 Kill();
58377 return;
58378 }
58379 if (type == 697)
58380 {
58381 int num5 = damage * 3;
58382 int num6 = Math.Sign(velocity.X);
58383 velocity = new Vector2(num6, 0f);
58384 if (ai[0] == 0f)
58385 {
58386 rotation = new Vector2(num6, 0f - player.gravDir).ToRotation() + num4 + (float)Math.PI;
58387 if (velocity.X < 0f)
58388 {
58389 rotation -= (float)Math.PI / 2f;
58390 }
58391 }
58392 alpha -= 128;
58393 if (alpha < 0)
58394 {
58395 alpha = 0;
58396 }
58397 float num7 = ai[0] / num;
58398 float num8 = 1f;
58399 ai[0] += num8;
58400 rotation += (float)Math.PI * 2f * num2 / num * (float)num6;
58401 bool flag = ai[0] == (float)(int)(num / 2f);
58402 if (ai[0] >= num || (flag && !player.controlUseItem))
58403 {
58404 Kill();
58405 player.reuseDelay = 10;
58406 }
58407 else if (flag)
58408 {
58409 Vector2 mouseWorld = Main.MouseWorld;
58410 int num9 = ((player.DirectionTo(mouseWorld).X > 0f) ? 1 : (-1));
58411 if ((float)num9 != velocity.X)
58412 {
58413 player.ChangeDir(num9);
58414 velocity = new Vector2(num9, 0f);
58415 netUpdate = true;
58416 rotation -= (float)Math.PI;
58417 }
58418 }
58419 float num10 = rotation - (float)Math.PI / 4f * (float)num6;
58420 vector2 = (num10 + ((num6 == -1) ? ((float)Math.PI) : 0f)).ToRotationVector2() * (ai[0] / num) * num3;
58421 Vector2 vector3 = base.Center + (num10 + ((num6 == -1) ? ((float)Math.PI) : 0f)).ToRotationVector2() * 30f;
58422 if (Main.rand.Next(2) == 0)
58423 {
58424 Dust dust = Dust.NewDustDirect(vector3 - new Vector2(5f), 10, 10, 31, player.velocity.X, player.velocity.Y, 150);
58425 dust.velocity = DirectionTo(dust.position) * 0.1f + dust.velocity * 0.1f;
58426 }
58427 if (num7 >= 0.75f)
58428 {
58429 Dust dust2 = Dust.NewDustDirect(vector3 - new Vector2(5f), 10, 10, 55, player.velocity.X, player.velocity.Y, 50);
58430 dust2.velocity = DirectionTo(dust2.position) * 0.1f + dust2.velocity * 0.1f;
58431 dust2.noGravity = true;
58432 dust2.color = new Color(20, 255, 100, 160);
58433 }
58434 if (ai[0] >= num - 8f && ai[0] < num - 2f)
58435 {
58436 for (int i = 0; i < 5; i++)
58437 {
58438 Dust dust3 = Dust.NewDustDirect(vector3 - new Vector2(5f), 10, 10, 55, player.velocity.X, player.velocity.Y, 50);
58439 dust3.velocity *= 1.2f;
58440 dust3.noGravity = true;
58441 dust3.scale += 0.1f;
58442 dust3.color = new Color(20, 255, 100, 160);
58443 }
58444 }
58445 if (ai[0] == num - 3f && owner == Main.myPlayer)
58446 {
58448 {
58451 }
58452 else
58453 {
58455 }
58456 }
58457 }
58458 if (type == 707)
58459 {
58460 Lighting.AddLight(player.Center, 0.75f, 0.9f, 1.15f);
58461 int num11 = Math.Sign(velocity.X);
58462 velocity = new Vector2(num11, 0f);
58463 if (ai[0] == 0f)
58464 {
58465 rotation = new Vector2(num11, 0f - player.gravDir).ToRotation() + num4 + (float)Math.PI;
58466 if (velocity.X < 0f)
58467 {
58468 rotation -= (float)Math.PI / 2f;
58469 }
58470 }
58471 alpha -= 128;
58472 if (alpha < 0)
58473 {
58474 alpha = 0;
58475 }
58476 _ = ai[0] / num;
58477 float num12 = 1f;
58478 ai[0] += num12;
58479 rotation += (float)Math.PI * 2f * num2 / num * (float)num11;
58480 bool flag2 = ai[0] == (float)(int)(num / 2f);
58481 if (ai[0] >= num || (flag2 && !player.controlUseItem))
58482 {
58483 Kill();
58484 player.reuseDelay = 2;
58485 }
58486 else if (flag2)
58487 {
58488 Vector2 mouseWorld2 = Main.MouseWorld;
58489 int num13 = ((player.DirectionTo(mouseWorld2).X > 0f) ? 1 : (-1));
58490 if ((float)num13 != velocity.X)
58491 {
58492 player.ChangeDir(num13);
58493 velocity = new Vector2(num13, 0f);
58494 netUpdate = true;
58495 rotation -= (float)Math.PI;
58496 }
58497 }
58498 if ((ai[0] == num12 || (ai[0] == (float)(int)(num / 2f) && active)) && owner == Main.myPlayer)
58499 {
58500 Vector2 mouseWorld3 = Main.MouseWorld;
58501 _ = player.DirectionTo(mouseWorld3) * 0f;
58502 }
58503 float num14 = rotation - (float)Math.PI / 4f * (float)num11;
58504 vector2 = (num14 + ((num11 == -1) ? ((float)Math.PI) : 0f)).ToRotationVector2() * (ai[0] / num) * num3;
58505 Vector2 vector4 = base.Center + (num14 + ((num11 == -1) ? ((float)Math.PI) : 0f)).ToRotationVector2() * 30f;
58506 Vector2 vector5 = num14.ToRotationVector2();
58507 Vector2 vector6 = vector5.RotatedBy((float)Math.PI / 2f * (float)spriteDirection);
58508 if (Main.rand.Next(2) == 0)
58509 {
58510 Dust dust4 = Dust.NewDustDirect(vector4 - new Vector2(5f), 10, 10, 31, player.velocity.X, player.velocity.Y, 150);
58511 dust4.velocity = DirectionTo(dust4.position) * 0.1f + dust4.velocity * 0.1f;
58512 }
58513 for (int j = 0; j < 4; j++)
58514 {
58515 float num15 = 1f;
58516 float num16 = 1f;
58517 switch (j)
58518 {
58519 case 1:
58520 num16 = -1f;
58521 break;
58522 case 2:
58523 num16 = 1.25f;
58524 num15 = 0.5f;
58525 break;
58526 case 3:
58527 num16 = -1.25f;
58528 num15 = 0.5f;
58529 break;
58530 }
58531 if (Main.rand.Next(6) != 0)
58532 {
58533 Dust dust5 = Dust.NewDustDirect(position, 0, 0, 226, 0f, 0f, 100);
58534 dust5.position = base.Center + vector5 * (60f + Main.rand.NextFloat() * 20f) * num16;
58535 dust5.velocity = vector6 * (4f + 4f * Main.rand.NextFloat()) * num16 * num15;
58536 dust5.noGravity = true;
58537 dust5.noLight = true;
58538 dust5.scale = 0.5f;
58539 dust5.customData = this;
58540 if (Main.rand.Next(4) == 0)
58541 {
58542 dust5.noGravity = false;
58543 }
58544 }
58545 }
58546 }
58547 position = vector - base.Size / 2f;
58548 position += vector2;
58550 timeLeft = 2;
58551 player.ChangeDir(direction);
58552 player.heldProj = whoAmI;
58553 player.SetDummyItemTime(2);
58554 player.itemRotation = MathHelper.WrapAngle(rotation);
58555 }
static float WrapAngle(float angle)
Definition MathHelper.cs:87
const double PI
Definition Math.cs:16
static int Sign(decimal value)
Definition Math.cs:1202
static SlotId PlayTrackedSound(SoundStyle style, Vector2 position)
Vector2 velocity
Definition Entity.cs:16
Vector2 position
Definition Entity.cs:14
Vector2 DirectionTo(Vector2 Destination)
Definition Entity.cs:197
static readonly LegacySoundStyle DD2_MonkStaffGroundMiss
Definition SoundID.cs:944
static readonly LegacySoundStyle DD2_MonkStaffGroundImpact
Definition SoundID.cs:942
static Conditions.NotNull _cachedConditions_notNull
IEntitySource GetProjectileSource_FromThis()
static Conditions.IsSolid _cachedConditions_solid
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 GenSearch Chain(GenSearch search, params GenCondition[] conditions)
Definition Searches.cs:123
static bool Find(Point origin, GenSearch search, out Point result)
Definition WorldUtils.cs:27

References Terraria.Lighting.AddLight(), Terraria.Entity.Center, Terraria.WorldBuilding.Searches.Chain(), Terraria.Player.ChangeDir(), Terraria.Player.controlUseItem, Terraria.ID.SoundID.DD2_MonkStaffGroundImpact, Terraria.ID.SoundID.DD2_MonkStaffGroundMiss, Terraria.Player.dead, Terraria.Entity.DirectionTo(), Terraria.WorldBuilding.WorldUtils.Find(), Terraria.Player.gravDir, Terraria.Player.MountedCenter, Terraria.Main.MouseWorld, Terraria.Main.myPlayer, Terraria.Dust.NewDustDirect(), System.Math.PI, Terraria.Main.player, Terraria.Audio.SoundEngine.PlayTrackedSound(), Terraria.Dust.position, Terraria.Main.rand, Terraria.Player.RotatedRelativePoint(), Terraria.Player.SetDummyItemTime(), System.Math.Sign(), System.type, Terraria.Entity.velocity, Microsoft.Xna.Framework.MathHelper.WrapAngle(), Microsoft.Xna.Framework.Vector2.X, Microsoft.Xna.Framework.Vector2.Y, and Microsoft.Xna.Framework.Vector2.Zero.