public override bool?CanHitNPCWithProj(Projectile proj, NPC target)
 {
     if (critterCatch && target.catchItem > 0 && proj.Colliding(proj.getRect(), target.getRect()))
     {
         GadgetMethods.CatchNPC(target.whoAmI, player.whoAmI, false);
         return(false);
     }
     return(null);
 }
        public override void MeleeEffects(Item item, Rectangle hitbox)
        {
            if (!critterCatch || Main.myPlayer != player.whoAmI || item.type == ItemID.BugNet || item.type == ItemID.GoldenBugNet)
            {
                return;
            }

            for (byte i = 0; i < Main.maxNPCs; i++)
            {
                NPC npc = Main.npc[i];
                if (!npc.active || npc.catchItem <= 0)
                {
                    continue;
                }

                if (hitbox.Intersects(npc.getRect()) && (npc.noTileCollide || player.CanHit(npc)))
                {
                    GadgetMethods.CatchNPC(i, player.whoAmI);
                }
            }
        }
Exemple #3
0
        public override void HandlePacket(BinaryReader reader, int whoAmI)
        {
            MessageType message = (MessageType)reader.ReadByte();

            switch (message)
            {
            case MessageType.CatchNPC:
                GadgetMethods.CatchNPC(reader.ReadByte(), whoAmI, reader.ReadBoolean());                         // fixes catching of npcs with projectiles
                break;

            case MessageType.ExtractorMessage:
                this.GetTileEntity <ChlorophyteExtractorTE>(reader.ReadInt32())?.ReceiveExtractorMessage(reader, whoAmI);
                break;

            case MessageType.TripWire:
                int tileX = reader.ReadInt32();
                int tileY = reader.ReadInt32();
                if (WorldGen.InWorld(tileX, tileY) && Main.tile[tileX, tileY] != null)
                {
                    Items.Tools.ActivationRod.TriggerMech(tileX, tileY);
                }
                break;
            }
        }