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

◆ SpawnFaelings()

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

Definition at line 77231 of file NPC.cs.

77232 {
77233 if (AnyNPCs(677))
77234 {
77235 return;
77236 }
77237 int num = Main.rand.Next(2, 6);
77238 int num2 = (int)(Main.player[plr].position.X / 16f) - spawnRangeX * 2;
77239 int num3 = (int)(Main.player[plr].position.X / 16f) + spawnRangeX * 2;
77240 int num4 = (int)(Main.player[plr].position.Y / 16f) - spawnRangeY * 2;
77241 int num5 = (int)(Main.player[plr].position.Y / 16f) + spawnRangeY * 2;
77242 _ = Main.player[plr].position.X / 16f;
77243 _ = safeRangeX;
77244 _ = Main.player[plr].position.X / 16f;
77245 _ = safeRangeX;
77246 _ = Main.player[plr].position.Y / 16f;
77247 _ = safeRangeY;
77248 _ = Main.player[plr].position.Y / 16f;
77249 _ = safeRangeY;
77250 if (num2 < 0)
77251 {
77252 num2 = 0;
77253 }
77254 if (num3 > Main.maxTilesX)
77255 {
77256 num3 = Main.maxTilesX;
77257 }
77258 if (num4 < 0)
77259 {
77260 num4 = 0;
77261 }
77262 if (num5 > Main.maxTilesY)
77263 {
77264 num5 = Main.maxTilesY;
77265 }
77266 for (int i = 0; i < num; i++)
77267 {
77268 int num6 = 1000;
77269 for (int j = 0; j < num6; j++)
77270 {
77271 int num7 = Main.rand.Next(num2, num3);
77272 int num8 = Main.rand.Next(num4, num5);
77273 if (Main.tile[num7, num8].liquid <= 0 || !Main.tile[num7, num8].shimmer())
77274 {
77275 continue;
77276 }
77277 while (Main.tile[num7, num8].liquid > 0)
77278 {
77279 if (num8 < 50)
77280 {
77281 return;
77282 }
77283 num8--;
77284 }
77285 bool flag = true;
77286 Rectangle rectangle = new Rectangle(num7 * 16, num8 * 16, 16, 16);
77287 for (int k = 0; k < 255; k++)
77288 {
77289 if (Main.player[k].active)
77290 {
77291 Rectangle rectangle2 = new Rectangle((int)(Main.player[k].position.X + (float)(Main.player[k].width / 2) - (float)(sWidth / 2) - (float)safeRangeX), (int)(Main.player[k].position.Y + (float)(Main.player[k].height / 2) - (float)(sHeight / 2) - (float)safeRangeY), sWidth + safeRangeX * 2, sHeight + safeRangeY * 2);
77292 if (rectangle.Intersects(rectangle2))
77293 {
77294 flag = false;
77295 }
77296 }
77297 }
77298 if (flag)
77299 {
77300 int num9 = NewNPC(GetSpawnSourceForNaturalSpawn(), num7 * 16 + 8, num8 * 16, 677);
77301 if (Main.netMode == 2 && num9 < 200)
77302 {
77303 NetMessage.SendData(23, -1, -1, null, num9);
77304 }
77305 break;
77306 }
77307 }
77308 }
77309 }
static int spawnRangeY
Definition NPC.cs:183
static int safeRangeY
Definition NPC.cs:187
static int spawnRangeX
Definition NPC.cs:181
static int sWidth
Definition NPC.cs:177
static bool AnyNPCs(int Type)
Definition NPC.cs:86689
static int safeRangeX
Definition NPC.cs:185
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
static int sHeight
Definition NPC.cs:179

References Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Main.netMode, Terraria.Main.player, Terraria.Main.rand, Terraria.NetMessage.SendData(), and Terraria.Main.tile.

Referenced by Terraria.MessageBuffer.GetData(), and Terraria.Player.TrySpawningFaelings().