Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ ItemCheck_MeleeHitPVP()

void Terraria.Player.ItemCheck_MeleeHitPVP ( Item sItem,
Rectangle itemRectangle,
int damage,
float knockBack )
inlineprivate

Definition at line 41888 of file Player.cs.

41889 {
41890 if (!hostile)
41891 {
41892 return;
41893 }
41894 for (int i = 0; i < 255; i++)
41895 {
41896 Player player = Main.player[i];
41897 if (i == whoAmI || !player.active || !player.hostile || player.immune || player.dead || (team != 0 && team == player.team) || !itemRectangle.Intersects(player.Hitbox) || !CanHit(player))
41898 {
41899 continue;
41900 }
41901 bool flag = false;
41902 if (Main.rand.Next(1, 101) <= 10)
41903 {
41904 flag = true;
41905 }
41906 int num = Main.DamageVar(damage, luck);
41907 StatusToPlayerPvP(sItem.type, i);
41908 OnHit(player.Center.X, player.Center.Y, player);
41910 int num2 = (int)player.Hurt(playerDeathReason, num, direction, pvp: true, quiet: false, flag);
41911 if (inventory[selectedItem].type == 3211)
41912 {
41913 Vector2 vector = new Vector2(direction * 100 + Main.rand.Next(-25, 26), Main.rand.Next(-75, 76));
41914 vector.Normalize();
41915 vector *= (float)Main.rand.Next(30, 41) * 0.1f;
41916 Vector2 vector2 = new Vector2(itemRectangle.X + Main.rand.Next(itemRectangle.Width), itemRectangle.Y + Main.rand.Next(itemRectangle.Height));
41917 vector2 = (vector2 + player.Center * 2f) / 3f;
41918 Projectile.NewProjectile(GetProjectileSource_Item(HeldItem), vector2.X, vector2.Y, vector.X, vector.Y, 524, (int)((double)damage * 0.7), knockBack * 0.7f, whoAmI);
41919 }
41920 if (sItem.type == 5097)
41921 {
41922 BatBat_TryLifeLeeching(player);
41923 }
41924 if (beetleOffense)
41925 {
41927 beetleCountdown = 0;
41928 }
41929 if (meleeEnchant == 7)
41930 {
41931 Projectile.NewProjectile(GetProjectileSource_Misc(8), player.Center.X, player.Center.Y, player.velocity.X, player.velocity.Y, 289, 0, 0f, whoAmI);
41932 }
41933 if (sItem.type == 1123)
41934 {
41935 int num3 = Main.rand.Next(1, 4);
41936 if (strongBees && Main.rand.Next(3) == 0)
41937 {
41938 num3++;
41939 }
41940 for (int j = 0; j < num3; j++)
41941 {
41942 float num4 = (float)(direction * 2) + (float)Main.rand.Next(-35, 36) * 0.02f;
41943 float num5 = (float)Main.rand.Next(-35, 36) * 0.02f;
41944 num4 *= 0.2f;
41945 num5 *= 0.2f;
41946 int num6 = Projectile.NewProjectile(GetProjectileSource_Item(sItem), itemRectangle.X + itemRectangle.Width / 2, itemRectangle.Y + itemRectangle.Height / 2, num4, num5, beeType(), beeDamage(num / 3), beeKB(0f), whoAmI);
41947 Main.projectile[num6].melee = true;
41948 }
41949 }
41950 if (inventory[selectedItem].type == 3106)
41951 {
41952 stealth = 1f;
41953 if (Main.netMode == 1)
41954 {
41955 NetMessage.SendData(84, -1, -1, null, whoAmI);
41956 }
41957 }
41958 if (Main.netMode != 0)
41959 {
41960 NetMessage.SendPlayerHurt(i, playerDeathReason, num, direction, flag, pvp: true, -1);
41961 }
41963 }
41964 }
static PlayerDeathReason ByPlayer(int index)
float beetleCounter
Definition Player.cs:677
bool beetleOffense
Definition Player.cs:683
void ApplyAttackCooldown()
Definition Player.cs:42228
void StatusToPlayerPvP(int type, int i)
Definition Player.cs:5575
bool CanHit(Entity ent)
Definition Player.cs:40596
IEntitySource GetProjectileSource_Misc(int projectileSourceId)
Definition Player.cs:9317
IEntitySource GetProjectileSource_Item(Item item)
Definition Player.cs:9272
byte meleeEnchant
Definition Player.cs:831
void BatBat_TryLifeLeeching(Entity entity)
Definition Player.cs:42008
float beeKB(float KB)
Definition Player.cs:11853
int beeDamage(int dmg)
Definition Player.cs:11844
int beetleCountdown
Definition Player.cs:679
void OnHit(float x, float y, Entity victim)
Definition Player.cs:5855
Item[] inventory
Definition Player.cs:1257

References Terraria.Entity.active, Terraria.DataStructures.PlayerDeathReason.ByPlayer(), Terraria.Entity.Center, Terraria.Main.DamageVar(), Terraria.Player.dead, Terraria.Entity.Hitbox, Terraria.Player.hostile, Terraria.Player.Hurt(), Terraria.Player.immune, Terraria.Main.netMode, Terraria.Projectile.NewProjectile(), Terraria.Main.player, Terraria.Main.projectile, Terraria.Main.rand, Terraria.NetMessage.SendData(), Terraria.NetMessage.SendPlayerHurt(), Terraria.Player.team, System.type, Terraria.Entity.velocity, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.