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

◆ ProcessHitAgainstNPC()

void Terraria.Player.ProcessHitAgainstNPC ( Item sItem,
Rectangle itemRectangle,
int originalDamage,
float knockBack,
int npcIndex )
inlineprivate

Definition at line 43512 of file Player.cs.

43513 {
43514 //IL_002f: Unknown result type (might be due to invalid IL or missing references)
43515 //IL_00f8: Unknown result type (might be due to invalid IL or missing references)
43516 //IL_0172: Unknown result type (might be due to invalid IL or missing references)
43517 //IL_0149: Unknown result type (might be due to invalid IL or missing references)
43518 //IL_014a: Unknown result type (might be due to invalid IL or missing references)
43519 //IL_014c: Unknown result type (might be due to invalid IL or missing references)
43520 //IL_0337: Unknown result type (might be due to invalid IL or missing references)
43521 //IL_033c: Unknown result type (might be due to invalid IL or missing references)
43522 //IL_0341: Unknown result type (might be due to invalid IL or missing references)
43523 //IL_0344: Unknown result type (might be due to invalid IL or missing references)
43524 //IL_0349: Unknown result type (might be due to invalid IL or missing references)
43525 //IL_034b: Unknown result type (might be due to invalid IL or missing references)
43526 //IL_0350: Unknown result type (might be due to invalid IL or missing references)
43527 //IL_035e: Unknown result type (might be due to invalid IL or missing references)
43528 //IL_0360: Unknown result type (might be due to invalid IL or missing references)
43529 //IL_03f7: Unknown result type (might be due to invalid IL or missing references)
43530 //IL_03fc: Unknown result type (might be due to invalid IL or missing references)
43531 //IL_0432: Unknown result type (might be due to invalid IL or missing references)
43532 //IL_0437: Unknown result type (might be due to invalid IL or missing references)
43533 //IL_046d: Unknown result type (might be due to invalid IL or missing references)
43534 //IL_0472: Unknown result type (might be due to invalid IL or missing references)
43535 //IL_053e: Unknown result type (might be due to invalid IL or missing references)
43536 //IL_04a9: Unknown result type (might be due to invalid IL or missing references)
43537 //IL_04b4: Unknown result type (might be due to invalid IL or missing references)
43538 NPC nPC = Main.npc[npcIndex];
43539 if (nPC.dontTakeDamage || !CanNPCBeHitByPlayerOrPlayerProjectile(nPC))
43540 {
43541 if (NPCID.Sets.ZappingJellyfish[nPC.type] && ((Rectangle)(ref itemRectangle)).Intersects(nPC.Hitbox) && (nPC.noTileCollide || CanHit(nPC)))
43542 {
43544 }
43545 return;
43546 }
43548 if (!(modCanHit ?? true) || (!(modCanHit ?? false) && nPC.friendly && (nPC.type != 22 || !killGuide) && (nPC.type != 54 || !killClothier) && (!nPC.isLikeATownNPC || sItem.type != 5129)))
43549 {
43550 return;
43551 }
43552 Rectangle rectangle = default(Rectangle);
43553 ((Rectangle)(ref rectangle))._002Ector((int)nPC.position.X, (int)nPC.position.Y, nPC.width, nPC.height);
43554 bool flag = ((Rectangle)(ref itemRectangle)).Intersects(rectangle);
43555 if (sItem.type == 121)
43556 {
43559 bool flag2 = Utils.LineRectangleDistance(rectangle, location, location2) <= 16f;
43560 flag = ((!_spawnVolcanoExplosion) ? (flag || flag2) : flag2);
43561 }
43563 if (modCanCollide == false)
43564 {
43565 return;
43566 }
43567 if (modCanCollide == true)
43568 {
43569 flag = true;
43570 }
43571 if (!flag || (!nPC.noTileCollide && !CanHit(nPC)))
43572 {
43573 return;
43574 }
43575 NPC.HitModifiers modifiers = nPC.GetIncomingStrikeModifiers(sItem.DamageType, direction);
43576 float num = 1000f;
43577 bool flag3 = false;
43578 if (sItem.DamageType.UseStandardCritCalcs)
43579 {
43581 if (Main.rand.Next(1, 101) <= weaponCrit)
43582 {
43583 flag3 = true;
43584 }
43585 }
43587 if (parryDamageBuff && sItem.melee)
43588 {
43589 modifiers.ScalingBonusDamage += 4f;
43590 parryDamageBuff = false;
43591 ClearBuff(198);
43592 }
43593 if (sItem.type == 426 && (float)nPC.life >= (float)nPC.lifeMax * 0.9f)
43594 {
43595 num = (int)(num * 2.5f);
43596 }
43597 if (sItem.type == 5096)
43598 {
43599 int num2 = 0;
43600 if (FindBuffIndex(26) != -1)
43601 {
43602 num2 = 1;
43603 }
43604 if (FindBuffIndex(206) != -1)
43605 {
43606 num2 = 2;
43607 }
43608 if (FindBuffIndex(207) != -1)
43609 {
43610 num2 = 3;
43611 }
43612 float num3 = 1f + 0.05f * (float)num2;
43613 num = (int)(num * num3);
43614 }
43615 if (sItem.type == 671)
43616 {
43617 float t = (float)nPC.life / (float)nPC.lifeMax;
43618 float lerpValue = Utils.GetLerpValue(1f, 0.1f, t, clamped: true);
43619 float num4 = 1f * lerpValue;
43620 num = (int)(num * (1f + num4));
43621 Vector2 point = ((Rectangle)(ref itemRectangle)).Center.ToVector2();
43622 Vector2 positionInWorld = nPC.Hitbox.ClosestPointInRect(point);
43624 {
43625 PositionInWorld = positionInWorld
43626 }, whoAmI);
43627 }
43628 modifiers.SourceDamage *= num / 1000f;
43629 float armorPenetrationPercent = 0f;
43630 if (sItem.type == 5129 && nPC.isLikeATownNPC)
43631 {
43633 if (nPC.type == 18)
43634 {
43635 modifiers.TargetDamageMultiplier *= 2f;
43636 }
43637 }
43638 if (sItem.type == 3258)
43639 {
43641 particleOrchestraSettings3.PositionInWorld = nPC.Center;
43644 }
43645 if (sItem.type == 5382)
43646 {
43648 particleOrchestraSettings2.PositionInWorld = nPC.Center;
43651 }
43652 if (sItem.type == 5129)
43653 {
43655 particleOrchestraSettings.PositionInWorld = nPC.Center;
43658 }
43659 StatusToNPC(sItem.type, npcIndex);
43660 if (nPC.life > 5)
43661 {
43662 OnHit(nPC.Center.X, nPC.Center.Y, nPC);
43663 }
43664 modifiers.ArmorPenetration += (float)GetWeaponArmorPenetration(sItem);
43665 modifiers.ScalingArmorPenetration += armorPenetrationPercent;
43667 NPC.HitInfo strike = modifiers.ToHitInfo(originalDamage, flag3, knockBack, damageVariation: true, luck);
43669 int dmgDone = nPC.StrikeNPC(strike);
43671 ApplyNPCOnHitEffects(sItem, itemRectangle, strike.SourceDamage, strike.Knockback, npcIndex, strike.SourceDamage, dmgDone);
43672 int num5 = Item.NPCtoBanner(nPC.BannerID());
43673 if (num5 >= 0)
43674 {
43676 }
43677 if (Main.netMode != 0)
43678 {
43679 NetMessage.SendStrikeNPC(nPC, in strike);
43680 }
43681 if (accDreamCatcher && !nPC.HideStrikeDamage)
43682 {
43683 addDPS(dmgDone);
43684 }
43686 if (attempt.DidNPCDie())
43687 {
43689 }
43691 }
Vector2 Center
Definition Entity.cs:70
int whoAmI
The index of this Entity within its specific array. These arrays track the entities in the world....
Definition Entity.cs:16
static void RequestParticleSpawn(bool clientOnly, ParticleOrchestraType type, ParticleOrchestraSettings settings, int? overrideInvokingPlayerIndex=null)
static bool[] ZappingJellyfish
If true for a given NPC type (F:Terraria.NPC.type), then that NPC, if currently F:Terraria....
Definition NPCID.cs:250
static void OnPlayerHitNPCWithItem(Player player, Item sItem, NPC nPC, in NPC.HitInfo hit, int damageDone)
static ? bool CanPlayerMeleeAttackCollideWithNPC(Player player, Item item, Rectangle meleeAttackHitbox, NPC target)
static ? bool CanPlayerHitNPCWithItem(Player player, Item item, NPC npc)
static void ModifyPlayerHitNPCWithItem(Player player, Item sItem, NPC nPC, ref NPC.HitModifiers modifiers)
void TakeDamageFromJellyfish(int npcIndex)
Definition Player.cs:43504
bool parryDamageBuff
Definition Player.cs:2599
void SetMeleeHitCooldown(int npcIndex, int timeInFrames)
Definition Player.cs:43476
void addDPS(int dmg)
Definition Player.cs:54827
void ApplyAttackCooldown()
Definition Player.cs:43693
void StatusToNPC(int type, int i)
Definition Player.cs:6831
bool CanNPCBeHitByPlayerOrPlayerProjectile(NPC npc, Projectile projectile=null)
Definition Player.cs:19013
int FindBuffIndex(int type)
Definition Player.cs:5676
bool CanHit(Entity ent)
Definition Player.cs:41725
bool killClothier
Definition Player.cs:2875
void GetPointOnSwungItemPath(float spriteWidth, float spriteHeight, float normalizedPointOnPath, float itemScale, out Vector2 location, out Vector2 outwardDirection)
Definition Player.cs:44068
void ApplyBannerOffenseBuff(NPC npc, ref NPC.HitModifiers modifiers)
Definition Player.cs:18899
int GetWeaponCrit(Item sItem)
Definition Player.cs:53938
int lastCreatureHit
Definition Player.cs:2751
float GetAdjustedItemScale(Item item)
Used to determine what the overall scale of an item should be. M:Terraria.ModLoader....
Definition Player.cs:41782
int GetWeaponArmorPenetration(Item sItem)
Definition Player.cs:58486
void OnKillNPC(ref NPCKillAttempt attempt, object externalKillingBlowSource)
Definition Player.cs:18986
void ApplyNPCOnHitEffects(Item sItem, Rectangle itemRectangle, int damage, float knockBack, int npcIndex, int dmgRandomized, int dmgDone)
Definition Player.cs:43706
void OnHit(float x, float y, Entity victim)
Definition Player.cs:7222
bool _spawnVolcanoExplosion
Definition Player.cs:3001
bool accDreamCatcher
Definition Player.cs:2769
void ClearBuff(int type)
Removes the provided buff type from the player and shuffles the remaining buff indexes down to fill t...
Definition Player.cs:5893

References Terraria.Player._spawnVolcanoExplosion, Terraria.Player.accDreamCatcher, Terraria.Player.addDPS(), Terraria.Player.ApplyAttackCooldown(), Terraria.Player.ApplyBannerOffenseBuff(), Terraria.Player.ApplyNPCOnHitEffects(), Terraria.Player.CanHit(), Terraria.Player.CanNPCBeHitByPlayerOrPlayerProjectile(), Terraria.ModLoader.CombinedHooks.CanPlayerHitNPCWithItem(), Terraria.ModLoader.CombinedHooks.CanPlayerMeleeAttackCollideWithNPC(), Terraria.Entity.Center, Terraria.Player.ClearBuff(), Terraria.Entity.direction, Terraria.Player.FindBuffIndex(), Terraria.Player.GetAdjustedItemScale(), Terraria.Utils.GetLerpValue(), Terraria.Player.GetPointOnSwungItemPath(), Terraria.Player.GetWeaponArmorPenetration(), Terraria.Player.GetWeaponCrit(), Terraria.Player.itemAnimation, Terraria.Player.killClothier, Terraria.Player.killGuide, Terraria.Player.lastCreatureHit, Terraria.Utils.LineRectangleDistance(), Terraria.Player.luck, Terraria.ModLoader.CombinedHooks.ModifyPlayerHitNPCWithItem(), Terraria.Main.netMode, Terraria.Main.npc, Terraria.Item.NPCtoBanner(), Terraria.Player.OnHit(), Terraria.Player.OnKillNPC(), Terraria.ModLoader.CombinedHooks.OnPlayerHitNPCWithItem(), Terraria.Player.parryDamageBuff, Terraria.Main.rand, Terraria.GameContent.Drawing.ParticleOrchestrator.RequestParticleSpawn(), Terraria.NetMessage.SendStrikeNPC(), Terraria.Player.SetMeleeHitCooldown(), Terraria.Player.StatusToNPC(), Terraria.Player.TakeDamageFromJellyfish(), Terraria.Entity.whoAmI, and Terraria.ID.NPCID.Sets.ZappingJellyfish.

Referenced by Terraria.Player.ItemCheck_MeleeHitNPCs().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: