public override bool UseItem(Player player) { //SLWorld.EnterSubworld("SGAmod_Blank"); SGAPocketDim.EnterSubworld(mod.GetType().Name + "_LimboDim"); return(true); }
public void UpdateMusic(ref int music, ref MusicPriority priority) { SGAPocketDim.UpdateMusic(ref music, ref priority); }
public override void PreUpdate() { //if (SGAWorld.CutsceneActive) if (SpaceBoss.film.IsActive || CaliburnGuardianHardmode.film.IsActive) { player.AddBuff(ModContent.BuffType <Buffs.InvincibleBuff>(), 2); } if (!Main.gameMenu) { bool spacey = Spacey; enterlimbo += 1; SGAmod.anysubworld = SGAPocketDim.WhereAmI != null; if (Main.netMode != NetmodeID.Server && !Main.dedServ && Main.LocalPlayer == player) { Projectile.NewProjectile(Main.screenPosition + new Vector2(Main.screenWidth, Main.screenHeight) / 2, Vector2.Zero, mod.ProjectileType("DrawOverride"), 0, 0f); if (spacey) { Projectile.NewProjectile(Main.screenPosition + new Vector2(Main.screenWidth, Main.screenHeight) / 2, Vector2.Zero, mod.ProjectileType("AsteriodDraw"), 0, 0f); } } if (SGAPocketDim.WhereAmI != null) { if (SLWorld.currentSubworld is SGAPocketDim sub) { SLWorld.noReturn = false; int limit = sub.LimitPlayers; if (limit % 16 == 0 && limit > 0) { player.AddBuff(BuffID.NoBuilding, 2); } player.GetModPlayer <SGAPlayer>().noModTeleport = true; if (sub.GetType() == typeof(SpaceDim)) { Point loc = new Point((int)(player.Center.X) >> 4, (int)(player.Center.Y) >> 4); if (WorldGen.InWorld(loc.X, loc.Y)) { Tile tilez = Framing.GetTileSafely(loc.X, loc.Y); if (tilez != null) { if (tilez.wall >= 0) { ModWall wallz = WallLoader.GetWall(tilez.wall); if (wallz != null && wallz is IBreathableWallType) { goto movingOn; } } } } player.AddBuff(ModContent.BuffType <SharkvernDrown>(), 3); } } movingOn: if (spacey) { SLWorld.noReturn = true; player.gravity = 0.12f; if (spacevar < 1)//Arriving in Space now { player.velocity = new Vector2(0, -16); player.Center = new Vector2(spaceX * (Main.maxTilesX * 16f), (Main.maxTilesY * 16f) - (16 * 50)); } if (player.velocity.Y > 0 && player.Center.Y > (Main.maxTilesY * 16f) - (16 * 50) && spacevar == 1) { //SGAPocketDim.EnterSubworld(mod.GetType().Name + "_SpaceDim"); SGAPocketDim.Exit(); } targetedAsteriod = null; if (player.HeldItem.pick > 0) { List <Projectile> allAsteriods2 = Main.projectile.Where(testby => testby.active && testby?.modProjectile is IMineableAsteriod).ToList(); List <Projectile> allAsteriods = new List <Projectile>(); if (allAsteriods2.Count > 0) { foreach (Projectile proj in allAsteriods2) { double length3 = Math.Sqrt((Math.Abs(proj.Center.X - player.Center.X) * Math.Abs(proj.Center.X - player.Center.X)) + (Math.Abs(proj.Center.Y - player.Center.Y) * Math.Abs(proj.Center.Y - player.Center.Y))); if (length3 < (Math.Sqrt(Player.tileRangeX * Player.tileRangeY) + player.blockRange) * 48) { allAsteriods.Add(proj); } } Vector2 from = Main.MouseWorld; if (Main.SmartCursorEnabled) { from = player.MountedCenter + Vector2.Normalize(from) * 16f; } //Main.NewText(allAsteriods.Count); allAsteriods = allAsteriods.OrderBy(testby => ((Math.Abs(from.X - testby.Center.X) * Math.Abs(from.X - testby.Center.X)) + (Math.Abs(from.Y - testby.Center.Y) * Math.Abs(from.Y - testby.Center.Y))) + 0).ToList(); restartHere: if (allAsteriods.Count > 0) { MineableAsteriod targetedasteriod = allAsteriods[0].modProjectile as MineableAsteriod; //double length2 = Math.Sqrt(Math.Abs(targetedasteriod.projectile.Center.X - player.Center.X) * Math.Abs(targetedasteriod.projectile.Center.Y - player.Center.Y)); // if (length2 < (Math.Sqrt(Player.tileRangeX * Player.tileRangeY) + player.blockRange) * 16) // { targetedAsteriod = targetedasteriod; targetedasteriod.miningTargeted = targetedasteriod.miningTargeted + 2; //break; // } } } } spacevar = 1; } if (SGAPocketDim.WhereAmI == typeof(LimboDim)) { SLWorld.noReturn = true; } } else //No subworld entered atm { if (spacevar > 0)//dropping out of Space { player.Center = new Vector2(spaceX * (Main.maxTilesX * 16f), 48); player.velocity = new Vector2(0, 16); } if (player.wings > 0 && player.velocity.Y < 0 && player.Center.Y < (16 * 50) && spacevar == 0 && player.controlJump && !IdgNPC.bossAlive) { SpaceDim.postMoonLord = NPC.downedMoonlord; SGAPocketDim.EnterSubworld(mod.GetType().Name + "_SpaceDim"); } spacevar = 0; } spaceX = player.Center.X / (Main.maxTilesX * 16f); if (SGAPocketDim.WhereAmI == typeof(LimboDim)) { player.AddBuff(Idglib.Instance.BuffType("LimboFading"), 1); if (enterlimbo > 0) { enterlimbo = -6; } if (enterlimbo == -5) { Main.PlaySound(mod.GetLegacySoundSlot(SoundType.Custom, "Sounds/Custom/crack"), new Vector2(-1, -1)); player.Center = new Vector2(Main.rand.Next(200, Main.maxTilesX - 400) * 16, 64); } if (enterlimbo > -2) { enterlimbo = -2; if (Framing.GetTileSafely((int)(player.Center.X / 16f), (int)(player.Center.Y / 16f)).wall == mod.WallType("NullWall") && DimDingeonsWorld.ancientLockedFabric) { enterlimbo = -6; } } } if (SGAPocketDim.WhereAmI == typeof(Limborinth)) { if (Framing.GetTileSafely((int)(player.Center.X / 16f), (int)(player.Center.Y / 16f)).wall == mod.WallType("NullWallBossArena")) { if (NullBossArenaSpot == default) { Idglib.Chat("There's no turning back now...", 120, 15, 15); } NullBossArenaSpot = player.Center; } else { if (NullBossArenaSpot != default) { player.velocity = Vector2.Normalize(NullBossArenaSpot - player.Center) * 12f; player.Center = NullBossArenaSpot; } } } else { NullBossArenaSpot = default; } } }