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); } } }
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; } }