void ZapJellies() { UpdateFrame(0.15f, 10, 13); if (attackCounter > 20) { for (int j = 0; j < Main.npc.Length; j++) { if (Main.npc[j].type == mod.NPCType("MoonJellyMedium") && Main.npc[j].active && attackCounter % 5 == 0) { NPC other = Main.npc[j]; Vector2 direction9 = other.Center - npc.Center; int distance = (int)Math.Sqrt((direction9.X * direction9.X) + (direction9.Y * direction9.Y)); direction9.Normalize(); if (distance < 1000) { if (Main.netMode != NetmodeID.MultiplayerClient) { if (attackCounter < 60) { int proj = Projectile.NewProjectile(npc.Center.X, npc.Center.Y, (float)direction9.X * 15, (float)direction9.Y * 15, mod.ProjectileType("MoonPredictorTrail"), 0, 0); Main.projectile[proj].timeLeft = (int)(distance / 15); } else { int proj = Projectile.NewProjectile(npc.Center.X, npc.Center.Y, (float)direction9.X * 30, (float)direction9.Y * 30, mod.ProjectileType("MoonLightning"), 30, 0); Main.projectile[proj].timeLeft = (int)(distance / 30); DustHelper.DrawElectricity(npc.Center, other.Center, 226, 0.3f, 30, default, 0.15f);
public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) { int shardType; shardType = Main.rand.Next(new int[] { ModContent.ProjectileType <CobaltStaffProj>(), ModContent.ProjectileType <CobaltStaffProj1>() }); //set the spawn position to the first solid tile in the direction of the cursor, or the cursor, whichever is closer float[] scanarray = new float[3]; float dist = player.Distance(Main.MouseWorld); //set the maximum distance to the distance between the player and the cursor Collision.LaserScan(player.Center, player.DirectionTo(Main.MouseWorld), 0, dist, scanarray); //scan to find the first solid tile in the direction of the cursor dist = 0; foreach (float array in scanarray) //make the distance the average of the samples { dist += array / (scanarray.Length); } Vector2 spawnpos = player.Center + player.DirectionTo(Main.MouseWorld) * dist; Projectile p = Projectile.NewProjectileDirect(spawnpos + Main.rand.NextVector2Square(-20, 20), Main.rand.NextVector2Circular(10, 10), shardType, damage, knockBack, player.whoAmI); p.scale = Main.rand.NextFloat(.4f, 1.1f); p.netUpdate = true; DustHelper.DrawDiamond(spawnpos, 48, 1.5f, 1.2f, 1f); return(false); }
public override bool OnTileCollide(Vector2 oldVelocity) { if (projectile.timeLeft > 800) //smells like boilerplate. IDG-it kinda is { Point16 point = new Point16((int)((projectile.Center.X + (projectile.width / 3f) * projectile.spriteDirection) / 16), Math.Min(Main.maxTilesY, (int)((projectile.Center.Y) / 16) + 1)); Tile tile = Framing.GetTileSafely(point.X, point.Y); //hard coded dust ids in worldgen.cs, still ew //Tile hit! if (tile != null && WorldGen.InWorld(point.X, point.Y, 1) && tile.active() && Main.tileSolid[tile.type]) { projectile.timeLeft = 20; projectile.ai[0] = tile.type; projectile.tileCollide = false; projectile.position.Y += 16; int dusttype = 0; DustHelper.TileDust(tile, ref dusttype); for (float num315 = 0.50f; num315 < 3; num315 += 0.25f) { float angle = MathHelper.ToRadians(-Main.rand.Next(70, 130)); Vector2 vecangle = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle)) * num315 * 3f; int num316 = Dust.NewDust(new Vector2(projectile.position.X, projectile.position.Y), projectile.width, (int)(projectile.height / 2f), dusttype, 0f, 0f, 50, default, (4f - num315) / 3f);
protected virtual void Attack() { npc.velocity = Vector2.Zero; if (npc.frameCounter < 1) { shot = false; } if (npc.frameCounter > 2 && !shot) { int glyphnum = Main.rand.Next(10); DustHelper.DrawDustImage(npc.Center, 6, 0.05f, "SpiritMod/Effects/Glyphs/Glyph" + glyphnum, 1.5f); int proj = Projectile.NewProjectile(npc.Center, npc.velocity, ModContent.ProjectileType <AutomataCreeperProj>(), Main.expertMode ? 40 : 60, 4, npc.target, npc.ai[0], npc.ai[1]); if (Main.projectile[proj].modProjectile is AutomataCreeperProj modproj) { modproj.moveDirection = moveDirection; } shot = true; if (Main.netMode == NetmodeID.MultiplayerClient) { NetMessage.SendData(MessageID.SyncNPC, -1, -1, null, npc.whoAmI); NetMessage.SendData(MessageID.SyncProjectile, -1, -1, null, proj); } } }
public override void Kill(int timeLeft) { int sizeX = 120; int sizeY = 45; projectile.hostile = false; projectile.tileCollide = false; projectile.alpha = 255; projectile.position.X = projectile.position.X + (float)(projectile.width / 2); projectile.position.Y = projectile.position.Y + (float)(projectile.height / 2); projectile.width = sizeX; projectile.height = sizeY; projectile.position.X = projectile.position.X - (float)(projectile.width / 2); projectile.position.Y = projectile.position.Y - (float)(projectile.height / 2); projectile.Damage(); Main.projectileIdentity[projectile.owner, projectile.identity] = -1; projectile.position.X = projectile.position.X + (float)(projectile.width / 2); projectile.position.Y = projectile.position.Y + (float)(projectile.height / 2); projectile.width = (int)((float)sizeX / 5.8f); projectile.height = (int)((float)sizeY / 5.8f); projectile.position.X = projectile.position.X - (float)(projectile.width / 2); projectile.position.Y = projectile.position.Y - (float)(projectile.height / 2); DustHelper.DrawDustImage(projectile.position, ModContent.DustType <MarbleDust>(), 0.075f, "SpiritMod/Effects/DustImages/Boom", 1.66f); }
public override void PostUpdate() { //TidePoints = EnemyKills / 2; if (TidePoints >= 100) { TidePoints = 0; EnemyKills = 0; TideWaveIncrease(); SendPacket(mod); } if (TheTide && TideWave == 5) { if (!NPC.AnyNPCs(ModContent.NPCType <Rylheian>())) { Player player = Main.rand.Next(Main.player.Where(x => x.active && !x.dead && x.ZoneBeach).ToArray()); NPC npc = Main.npc[NPC.NewNPC((int)player.Center.X, (int)player.Center.Y - 400, ModContent.NPCType <Rylheian>(), 0, 2, 1, 0, 0, player.whoAmI)]; DustHelper.DrawDiamond(new Vector2(npc.Center.X, npc.Center.Y), 173, 8); DustHelper.DrawTriangle(new Vector2(npc.Center.X, npc.Center.Y), 173, 8); Main.PlaySound(SoundID.Zombie, npc.Center, 89); if (Main.netMode != NetmodeID.SinglePlayer) { NetMessage.SendData(MessageID.SyncNPC, -1, -1, null, npc.whoAmI); } } } }
public void flowerAttack(Player player) { bool expertMode = Main.expertMode; int damage = expertMode ? 11 : 16; if (npc.ai[0] % 15 == 0) { Main.PlaySound(new LegacySoundStyle(SoundID.Item, 104).WithPitchVariance(0.2f), npc.Center); if (Main.netMode != NetmodeID.MultiplayerClient) { int p = Projectile.NewProjectile(npc.Center.X + Main.rand.Next(-60, 60), npc.Center.Y + Main.rand.Next(-60, 60), Main.rand.NextFloat(-5.3f, 5.3f), Main.rand.NextFloat(-5.3f, 5.3f), ModContent.ProjectileType <ReachBossFlower>(), damage, 1, Main.myPlayer, 0, 0); Main.projectile[p].scale = Main.rand.NextFloat(.6f, .8f); DustHelper.DrawStar(Main.projectile[p].Center, 272, pointAmount: 6, mainSize: .9425f, dustDensity: 2, dustSize: .5f, pointDepthMult: 0.3f, noGravity: true); if (Main.projectile[p].velocity == Vector2.Zero) { Main.projectile[p].velocity = new Vector2(2.25f, 2.25f); } if (Main.projectile[p].velocity.X <2.25f && Math.Sign(Main.projectile[p].velocity.X) == Math.Sign(1) || Main.projectile[p].velocity.X> -2.25f && Math.Sign(Main.projectile[p].velocity.X) == Math.Sign(-1)) { Main.projectile[p].velocity.X *= 2.15f; } Main.projectile[p].netUpdate = true; } } }
public override void AI() { if (!initialized) { initialPos = projectile.Center; initialized = true; throwLine = Vector2.One.RotatedBy(Main.rand.NextFloat(6.28f)); } if (projectile.timeLeft < 585 && projectile.timeLeft % 3 == 0 && projectile.timeLeft > 500) { Projectile.NewProjectile(projectile.Center, throwLine * (dist / 20), mod.ProjectileType("MoonPredictorTrail"), 0, 0); } if (projectile.timeLeft <= 500 && projectile.timeLeft > 464) { radians += 0.0872664626f; projectile.velocity = (float)Math.Sin((double)radians) * (dist / 36) * throwLine; } if (projectile.timeLeft <= 500) { projectile.hostile = true; Vector2 distance = initialPos - projectile.Center; float electricDist = distance.Length(); distance.Normalize(); if (projectile.timeLeft % 4 == 0) { DustHelper.DrawElectricity(projectile.Center, initialPos, 226, 0.6f, 30, default, 0.3f);
public override void AI() { if (projectile.velocity.X != 0 || projectile.velocity.Y != 0) { DustHelper.CreateDust(projectile.Center, 64, Color.White, Vector2.Zero, scale: 1.3f, noGrav: true); } if (projectile.owner == Main.myPlayer) { if (_timer > 0) { _timer--; } else { _timer = 180; float speed = Main.rand.NextFloat(4, 8); float dir = Main.rand.NextFloat(MathHelper.TwoPi); projectile.velocity += dir.ToRotationVector2() * speed; _timerr = 30; projectile.netUpdate = true; } if (_timerr > 0) { _timerr--; } else { projectile.velocity = new Vector2(0, 0); projectile.netUpdate = true; } } }
public override void AI() { projectile.VelocityToRotation(); for (int i = 0; i < 5; i++) { DustHelper.CreateDust(projectile.Center, 75, Color.White, -projectile.velocity.ToRotation().ToRotationVector2() * Main.rand.NextFloat(2, 8), noGrav: true, shader: GameShaders.Armor.GetSecondaryShader(102, Main.LocalPlayer)); } if (--t == 0 && !a) { projectile.velocity *= 1.3f; a = true; } if (projectile.alpha > 0) { projectile.alpha -= 255 / 25; } if (++projectile.frameCounter >= 5) { projectile.frameCounter = 0; if (++projectile.frame >= 4) { projectile.frame = 0; } } }
public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) { Vector2 mouse = new Vector2(Main.mouseX, Main.mouseY) + Main.screenPosition; int amount = Main.rand.Next(1, 3); for (int i = 0; i < amount; ++i) { Vector2 pos = new Vector2(mouse.X + target.width * 0.5f + Main.rand.Next(-35, 36), mouse.Y - 220f); pos.X = (pos.X * 10f + mouse.X) / 11f - 350; pos.Y -= Main.rand.Next(-20, 20); float spX = mouse.X + target.width * 0.5f + Main.rand.Next(-100, 101) - mouse.X; float spY = mouse.Y - pos.Y; if (spY < 0f) { spY *= -1f; } if (spY < 20f) { spY = 20f; } float length = (float)Math.Sqrt((double)(spX * spX + spY * spY)); length = 12 / length; spX *= length; spY *= length; spX = spX + (float)Main.rand.Next(-40, 41) * 0.02f; spY = spY + (float)Main.rand.Next(-40, 41) * 0.12f; spX *= (float)Main.rand.Next(75, 150) * 0.006f; pos.X += (float)Main.rand.Next(-20, 21); DustHelper.DrawCircle(new Vector2(pos.X, pos.Y), 222, 1, 1f, 1.35f, .85f, .85f); Projectile.NewProjectile(pos.X, pos.Y, spX * projectile.direction, spY, ModContent.ProjectileType <MorningtideProjectile2>(), projectile.damage / 3 * 2, 2, Main.player[projectile.owner].whoAmI); } }
private void dust(int rnd) { Vector2 position = new Vector2(projectile.Center.X + Main.rand.NextFloat(-rnd, rnd), projectile.Center.Y + Main.rand.NextFloat(-rnd, rnd)); DustHelper.CreateDust(position, 156, Color.White, Vector2.Zero, 0.8f, noGrav: true); }
private void RunTeleport(Player player, Vector2 pos) { player.Teleport(pos, 2, 0); player.velocity = Vector2.Zero; Main.PlaySound(SoundID.Item6, player.Center); DustHelper.DrawStar(player.Center, DustID.GoldCoin, pointAmount: 4, mainSize: 1.7425f, dustDensity: 6, dustSize: .65f, pointDepthMult: 3.6f, noGravity: true); }
public override void AI() { Lighting.AddLight(projectile.Center, Main.DiscoColor.ToVector3() * 0.5f); for (int i = 0; i < 5; i++) { DustHelper.CreateDust(projectile.Center, dust, Main.DiscoColor, noGrav: true); } Vector2 a = projectile.velocity.ToRotation().ToRotationVector2(); Vector2 b = new Vector2(a.Y, -a.X); projectile.timeLeft++; if (Main.player[projectile.owner].whoAmI == Main.myPlayer) { if (taken && Vector2.Distance(projectile.Center, Main.MouseWorld) > 70f) { projectile.velocity = VectorHelper.FromTo(projectile.Center, Main.MouseWorld, 50f) / 4; } if (!Main.player[projectile.owner].controlUseItem) { taken = false; } } projectile.VelocityToRotation(); }
public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) { if (type == ProjectileID.WoodenArrowFriendly) { type = ModContent.ProjectileType<ShadowmoorProjectile>(); damage = (int)(damage * .75f); } else { float angle = Main.rand.NextFloat(MathHelper.PiOver4, -MathHelper.Pi - MathHelper.PiOver4); Vector2 spawnPlace = Vector2.Normalize(new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle))) * 20f; if (Collision.CanHit(position, 0, 0, position + spawnPlace, 0, 0)) { position += spawnPlace; } Vector2 velocity = Vector2.Normalize(Main.MouseWorld - position) * item.shootSpeed; DustHelper.DrawDiamond(new Vector2(position.X, position.Y), 173, 2, .8f, .75f); int p1 = Projectile.NewProjectile(position.X, position.Y, velocity.X, velocity.Y, ModContent.ProjectileType<ShadowmoorProjectile>(), damage, knockBack, 0, 0.0f, 0.0f); } for (int I = 0; I < 4; I++) { float angle = Main.rand.NextFloat(MathHelper.PiOver4, -MathHelper.Pi - MathHelper.PiOver4); Vector2 spawnPlace = Vector2.Normalize(new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle))) * 20f; if (Collision.CanHit(position, 0, 0, position + spawnPlace, 0, 0)) { position += spawnPlace; } Vector2 velocity = Vector2.Normalize(Main.MouseWorld - position) * item.shootSpeed; DustHelper.DrawDiamond(new Vector2(position.X, position.Y), 173, 2, .8f, .75f); int p = Projectile.NewProjectile(position.X, position.Y, velocity.X, velocity.Y, type, damage, knockBack, 0, 0.0f, 0.0f); } return false; }
public override void Kill(int timeLeft) { DustHelper.DrawStar(projectile.Center, dustType, pointAmount: 5, mainSize: 1.2f * ScaleMult, dustDensity: 0.5f, pointDepthMult: 0.3f); Main.PlaySound(SoundID.Item10, projectile.Center); for (int k = 0; k < 35; k++) { Dust.NewDustPerfect(projectile.Center, dustType, Vector2.One.RotatedByRandom(6.28f) * (Main.rand.NextFloat(0.25f, 1.2f) * ScaleMult), 0, default, 1.5f);
public override void AI() { for (int i = 0; i < 8; i++) { DustHelper.CreateDust(new Vector2(projectile.Center.X + Main.rand.NextFloat(-2, 3), projectile.Center.Y + Main.rand.NextFloat(-2, 3)), 59, Color.AliceBlue, Vector2.Zero, noGrav: true, scale: 0.7f); } }
public override void ExplodeEffect() { Main.PlaySound(new LegacySoundStyle(soundId: SoundID.Item, style: 14).WithPitchVariance(0.1f), projectile.Center); DustHelper.DrawDustImage(projectile.Center, ModContent.DustType <WinterbornDust>(), 0.3f, "SpiritMod/Effects/Snowflakes/Flake" + Main.rand.Next(3), 0.4f); float rot = Main.rand.NextFloat(MathHelper.TwoPi); for (int i = 0; i < 8; i++) { DustHelper.DrawDustImage(projectile.Center + (Vector2.UnitX.RotatedBy(rot + (MathHelper.TwoPi * i / 8f)) * 60), ModContent.DustType <WinterbornDust>(), 0.15f, "SpiritMod/Effects/Snowflakes/Flake" + Main.rand.Next(3), 0.25f, rot: Main.rand.NextFloat(MathHelper.TwoPi)); } for (int i = 0; i < 30; i++) { float maxDist = 100; float Dist = Main.rand.NextFloat(maxDist); Vector2 offset = Main.rand.NextVector2Unit(); ParticleHandler.SpawnParticle(new SmokeParticle(projectile.Center + (offset * Dist), Main.rand.NextFloat(5f) * offset * (1 - (Dist / maxDist)), new Color(30, 30, 90) * 0.5f, Main.rand.NextFloat(0.4f, 0.6f), 40)); } for (int i = 0; i < 8; i++) { ParticleHandler.SpawnParticle(new FireParticle(projectile.Center, (projectile.velocity / 4) - (Vector2.UnitY.RotatedByRandom(MathHelper.PiOver2 * 3) * Main.rand.NextFloat(4)), new Color(135, 253, 255), new Color(0, 21, 255), Main.rand.NextFloat(0.5f, 0.7f), 40, delegate(Particle particle) { if (particle.Velocity.Y < 16) { particle.Velocity.Y += 0.12f; } })); } }
public override void AI() { alphaCounter += 0.04f; Lighting.AddLight((int)((npc.position.X + (float)(npc.width / 2)) / 16f), (int)((npc.position.Y + (float)(npc.height / 2)) / 16f), 0.091f, 0.24f, .24f); npc.rotation = npc.velocity.X * .009f; aiTimer++; if (aiTimer == 100 || aiTimer == 240 || aiTimer == 360 || aiTimer == 620) { Vector2 direction = Main.player[npc.target].Center - npc.Center; direction.Normalize(); Main.PlaySound(SoundID.DD2_WyvernDiveDown, npc.Center); direction.X = direction.X * Main.rand.Next(8, 10); direction.Y = direction.Y * Main.rand.Next(8, 10); npc.velocity.X = direction.X; npc.velocity.Y = direction.Y; npc.velocity *= 0.96f; } if (aiTimer >= 680) { Main.PlaySound(SoundID.Item, npc.Center, 109); float ScaleMult = 2.33f; DustHelper.DrawStar(new Vector2(npc.Center.X, npc.Center.Y), DustID.GoldCoin, pointAmount: 5, mainSize: 2.25f * ScaleMult, dustDensity: 2, pointDepthMult: 0.3f, noGravity: true); for (int i = 0; i < 5; i++) { if (Main.netMode != NetmodeID.MultiplayerClient) { Projectile.NewProjectile(npc.Center.X, npc.Center.Y, Main.rand.Next(-8, 8), Main.rand.Next(-8, 8), ModContent.ProjectileType <ShootingStarHostile>(), 30, 1, Main.myPlayer, 0, 0); } } aiTimer = 0; } }
public override void NearbyEffects(int i, int j, bool closer) { if (Main.rand.Next(1100) == 1) { int glyphnum = Main.rand.Next(10); DustHelper.DrawDustImage(new Vector2(i * 16, j * 16), ModContent.DustType <MarbleDust>(), 0.05f, "SpiritMod/Effects/Glyphs/Glyph" + glyphnum, 1f); } }
public override void AI() { projectile.VelocityToRotation(); for (int i = 0; i < 5; i++) { DustHelper.CreateDust(new Vector2(projectile.Center.X + Main.rand.Next(-3, 3), projectile.Center.Y + Main.rand.Next(-3, 3)), 156, Color.White, Vector2.Zero, 1f, 0, 0.7f, true); } }
public override void Kill(int timeLeft) { for (int i = 0; i < Main.rand.Next(6, 12); i++) { int t = DustID.CrystalPulse2; DustHelper.CreateDust(projectile.Center, t, velocity: Main.rand.NextFloat(MathHelper.TwoPi).ToRotationVector2() * Main.rand.NextFloat(4, 8), scale: 0.8f, noGrav: true, alpha: 50); } }
public override void AI() { for (int i = 0; i < 6; i++) { DustHelper.CreateDust( projectile.Center + new Vector2(Main.rand.Next(-8, 8), Main.rand.Next(-8, 8)) + (projectile.rotation + MathHelper.PiOver2).ToRotationVector2() * 10, 180, new Color(61 + Main.rand.Next(15), 142 - Main.rand.Next(20), 228), Vector2.Zero, scale: .7f, noGrav: true, fadeIn: .5f); } }
public override bool PreKill(int timeLeft) { for (int i = 0; i < 10; i++) { DustHelper.CreateDust(new Vector2(projectile.Center.X + Main.rand.NextFloat(-4, 4), projectile.Center.Y + Main.rand.NextFloat(-4, 4)), 75, Color.White, projectile.oldVelocity.ToRotation().ToRotationVector2() * Main.rand.NextFloat(2, 6), 1, 0, 1.4f, true, shader: GameShaders.Armor.GetSecondaryShader(102, Main.LocalPlayer)); } return(base.PreKill(timeLeft)); }
public override bool PreKill(int timeLeft) { for (int i = 0; i < 10; i++) { DustHelper.CreateDust(new Vector2(projectile.Center.X + Main.rand.NextFloat(-4, 4), projectile.Center.Y + Main.rand.NextFloat(-4, 4)), 156, Color.White, projectile.oldVelocity.ToRotation().ToRotationVector2() * Main.rand.NextFloat(2, 6), 1, 0, .8f, true); } return(base.PreKill(timeLeft)); }
public override void Kill(int timeLeft) { float len = projectile.oldVelocity.Length(); float len2 = len * 0.3f; for (int i = 0; i < 20; i++) { DustHelper.CreateDust(projectile.Center, dust, Main.DiscoColor, velocity: Main.rand.NextFloat(MathHelper.TwoPi).ToRotationVector2() * Main.rand.NextFloat(len2, len), noGrav: true); } }
public override void Kill(int timeLeft) { Explode(6); for (int i = 0; i < 30; i++) { Vector2 pos = new Vector2(projectile.Center.X + Main.rand.NextFloat(-10, 10), projectile.Center.Y + Main.rand.NextFloat(-10, 10)); DustHelper.CreateDust(pos, 156, Color.White, Vector2.Zero, noGrav: true); } }
public override void AI() { projectile.VelocityToRotation(); for (int i = 0; i < 5; i++) { DustHelper.CreateDust(new Vector2(projectile.Center.X + Main.rand.Next(-3, 3), projectile.Center.Y + Main.rand.Next(-3, 3)), DustID.Fire, Color.White, -projectile.oldVelocity.ToRotation().ToRotationVector2() * Main.rand.Next(2, 8), 1f, 0, 1, true); } }
public override void Kill(int timeLeft) { Explode(6); for (int i = 0; i < 30; i++) { int rnd = 20; Vector2 pos = new Vector2(projectile.Center.X + Main.rand.NextFloat(-rnd, rnd), projectile.Center.Y + Main.rand.NextFloat(-rnd, rnd)); DustHelper.CreateDust(pos, 75, Color.White, Vector2.Zero, scale: 1.4f, noGrav: true); } }
public override void AI() { for (int i = 0; i < 6; i++) { DustHelper.CreateDust(projectile.Center, 254, Color.White, -projectile.velocity.ToRotation().ToRotationVector2() * Main.rand.NextFloat(5), noGrav: true, fadeIn: 1.2f, rotation: Main.rand.NextFloat(MathHelper.TwoPi)); } if (Main.netMode != 1) { projectile.tileCollide = projectile.Center.Y > projectile.OwnerPlayer().Top.Y; projectile.netUpdate = true; } }