public override void NPCLoot(NPC npc) { if (npc.lastInteraction == 255) { return; // Killed by a non-player. } if (Main.netMode == NetmodeID.Server) { NetworkPacketManager.Instance.PlayerKilledNPC.SendPacketToAllClients(255, npc.lastInteraction, NPCsHelper.GetNPCIdFromNPC(npc)); } else if (npc.lastInteraction != Main.myPlayer) { return; // Killed by someone else. } DoTariaPlayer dotariaPlayer = DoTariaPlayer.Get(Main.LocalPlayer); if (dotariaPlayer == null) { return; } if (npc.lastInteraction == Main.myPlayer) { dotariaPlayer.OnKilledNPC(npc); } }
public override bool CastAbility(DoTariaPlayer dotariaPlayer, PlayerAbility playerAbility, bool casterIsLocalPlayer) { dotariaPlayer.player.Hurt(PlayerDeathReason.ByPlayer(dotariaPlayer.player.whoAmI), (int)GetSelfDamage(dotariaPlayer, playerAbility), 1); if (casterIsLocalPlayer) { EntitiesHelper.GetLocalHoveredEntity(out Player player, out NPC npc); if (player == null && npc == null) { return(false); } int projectileId = Projectile.NewProjectile(dotariaPlayer.player.position, Vector2.Zero, ModContent.ProjectileType <MistCoilProjectile>(), 0, 0f, dotariaPlayer.player.whoAmI); MistCoilProjectile mistCoil = Main.projectile[projectileId].modProjectile as MistCoilProjectile; if (player != null) { mistCoil.HomeOntoPlayer = player; } else if (npc != null) { mistCoil.HomeOntoNPC = npc; } mistCoil.DamageOnContact = (int)InternalGetAbilityDamage(dotariaPlayer, playerAbility); NetworkPacketManager.Instance.MistCoilFired.SendPacketToAllClients(dotariaPlayer.player.whoAmI, dotariaPlayer.player.whoAmI, (player != null ? MistCoilFiredPacket.TargetType.Player : MistCoilFiredPacket.TargetType.NPC).ToString(), projectileId, player?.whoAmI ?? NPCsHelper.GetNPCIdFromNPC(npc), (int)mistCoil.DamageOnContact); } return(true); }