Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ SlimeRainSpawns()

static void Terraria.NPC.SlimeRainSpawns ( int plr)
inlinestatic

Definition at line 72410 of file NPC.cs.

72411 {
72412 int logicCheckScreenHeight = Main.LogicCheckScreenHeight;
72413 int logicCheckScreenWidth = Main.LogicCheckScreenWidth;
72414 float num = 15f;
72415 Player player = Main.player[plr];
72416 if ((double)player.position.Y > Main.worldSurface * 16.0 + (double)(logicCheckScreenHeight / 2) || player.nearbyActiveNPCs > num)
72417 {
72418 return;
72419 }
72420 float num2 = player.nearbyActiveNPCs / num;
72421 int num3 = 45 + (int)(450f * num2);
72422 if (Main.expertMode)
72423 {
72424 num3 = (int)((double)num3 * 0.85);
72425 }
72426 if (Main.GameModeInfo.IsJourneyMode)
72427 {
72429 if (power != null && power.GetIsUnlocked())
72430 {
72431 if (power.GetShouldDisableSpawnsFor(plr))
72432 {
72433 return;
72434 }
72435 if (power.GetRemappedSliderValueFor(plr, out var num4))
72436 {
72437 num3 = (int)((float)num3 / num4);
72438 }
72439 }
72440 }
72441 if (Main.rand.Next(num3) != 0)
72442 {
72443 return;
72444 }
72445 int num5 = (int)(player.Center.X - (float)logicCheckScreenWidth);
72447 int minValue = (int)((double)player.Center.Y - (double)logicCheckScreenHeight * 1.5);
72448 int maxValue2 = (int)((double)player.Center.Y - (double)logicCheckScreenHeight * 0.75);
72449 int num6 = Main.rand.Next(num5, maxValue);
72450 int num7 = Main.rand.Next(minValue, maxValue2);
72451 num6 /= 16;
72452 num7 /= 16;
72453 if (num6 < 10 || num6 > Main.maxTilesX + 10 || (double)num7 < Main.worldSurface * 0.3 || (double)num7 > Main.worldSurface || Collision.SolidTiles(num6 - 3, num6 + 3, num7 - 5, num7 + 2) || Main.wallHouse[Main.tile[num6, num7].wall])
72454 {
72455 return;
72456 }
72457 int num8 = NewNPC(GetSpawnSourceForNaturalSpawn(), num6 * 16 + 8, num7 * 16, 1);
72458 if (Main.rand.Next(200) == 0)
72459 {
72460 Main.npc[num8].SetDefaults(-4);
72461 }
72462 else if (Main.expertMode)
72463 {
72464 if (Main.rand.Next(7) == 0)
72465 {
72466 Main.npc[num8].SetDefaults(-7);
72467 }
72468 else if (Main.rand.Next(3) == 0)
72469 {
72470 Main.npc[num8].SetDefaults(-3);
72471 }
72472 }
72473 else if (Main.rand.Next(10) == 0)
72474 {
72475 Main.npc[num8].SetDefaults(-7);
72476 }
72477 else if (Main.rand.Next(5) < 2)
72478 {
72479 Main.npc[num8].SetDefaults(-3);
72480 }
72481 }
static int NewNPC(IEntitySource source, int X, int Y, int Type, int Start=0, float ai0=0f, float ai1=0f, float ai2=0f, float ai3=0f, int Target=255)
Definition NPC.cs:77654
static IEntitySource GetSpawnSourceForNaturalSpawn()
Definition NPC.cs:87536

References Terraria.Entity.Center, Terraria.Main.expertMode, Terraria.Main.GameModeInfo, Terraria.GameContent.Creative.CreativePowerManager.Instance, Terraria.Main.LogicCheckScreenHeight, Terraria.Main.LogicCheckScreenWidth, Terraria.Main.maxTilesX, Terraria.Player.nearbyActiveNPCs, Terraria.Main.npc, Terraria.Main.player, Terraria.Entity.position, Terraria.Main.rand, Terraria.Collision.SolidTiles(), Terraria.Main.tile, Terraria.Main.wallHouse, Terraria.Main.worldSurface, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.