internal StruckNpcKilledEventArgs(NPC npc, int npcHitPoints, PlayerStrikeInfo playerStrikeInfo) { //Npc = npc; //NpcValue = npc.value; NpcHitPoints = npcHitPoints; NpcType = npc.type; NpcGivenOrTypeName = npc.GivenOrTypeName; NpcSpawnedFromStatue = npc.SpawnedFromStatue; PlayerStrikeInfo = playerStrikeInfo; }
public void OnNpcStrike(Player player, NPC npc, int damage, bool isCritical, string itemName) { //var playerIndex = player.whoAmI; var npcIndex = npc.whoAmI; PlayerStrikeInfo playerStrikes = null; if (!npcStrikes.TryGetValue(npcIndex, out playerStrikes)) { playerStrikes = new PlayerStrikeInfo(); playerStrikes.OriginalNpcType = npc.type; //used to help determine despawns. //npcStrikes.Add(npcIndex, playerStrikes); npcStrikes.TryAdd(npcIndex, playerStrikes); } var realDamage = CalculateNpcDamage(npc, damage, isCritical); var damageDefended = (int)(CalculateNpcDefense(npc) * (Main.expertMode ? 0.75f : 0.50f)); //Debug.Print($"Banking - realDamage: {realDamage}, Critical: {isCritical}"); //Debug.Print($"OnNpcStrike item: {itemName}"); playerStrikes.AddStrike(player.name, realDamage, damageDefended, itemName); }