示例#1
0
        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);
        }