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

◆ SpawnNPC()

static void Terraria.NPC.SpawnNPC ( )
inlinestatic

Definition at line 86011 of file NPC.cs.

86012 {
86013 //IL_02c2: Unknown result type (might be due to invalid IL or missing references)
86014 //IL_2039: Unknown result type (might be due to invalid IL or missing references)
86015 //IL_2051: Unknown result type (might be due to invalid IL or missing references)
86016 //IL_1f2c: Unknown result type (might be due to invalid IL or missing references)
86017 //IL_1386: Unknown result type (might be due to invalid IL or missing references)
86018 //IL_13b0: Unknown result type (might be due to invalid IL or missing references)
86019 //IL_13e5: Unknown result type (might be due to invalid IL or missing references)
86020 //IL_2640: Unknown result type (might be due to invalid IL or missing references)
86021 //IL_6908: Unknown result type (might be due to invalid IL or missing references)
86022 //IL_6940: Unknown result type (might be due to invalid IL or missing references)
86023 if (noSpawnCycle)
86024 {
86025 noSpawnCycle = false;
86026 return;
86027 }
86029 bool flag = (double)Main.windSpeedTarget < -0.4 || (double)Main.windSpeedTarget > 0.4;
86030 RevengeManager.CheckRespawns();
86031 bool flag12 = false;
86032 bool flag23 = false;
86033 int num = 0;
86034 int num24 = 0;
86035 int num35 = 0;
86036 int num46 = 0;
86037 for (int i = 0; i < 255; i++)
86038 {
86039 if (Main.player[i].active)
86040 {
86041 num46++;
86042 }
86043 }
86044 float num57 = 0f;
86045 for (int j = 0; j < 200; j++)
86046 {
86047 if (Main.npc[j].active)
86048 {
86049 switch (Main.npc[j].type)
86050 {
86051 case 315:
86052 case 325:
86053 case 327:
86054 case 328:
86055 case 344:
86056 case 345:
86057 case 346:
86058 num57 += Main.npc[j].npcSlots;
86059 break;
86060 }
86061 }
86062 }
86064 float num67 = (int)((float)defaultMaxSpawns * (2f + 0.3f * (float)num46));
86065 Rectangle rectangle = default(Rectangle);
86066 Rectangle rectangle2 = default(Rectangle);
86067 for (int k = 0; k < 255; k++)
86068 {
86069 if (!Main.player[k].active || Main.player[k].dead)
86070 {
86071 continue;
86072 }
86073 flag23 = false;
86074 if (Main.player[k].isNearNPC(398, MoonLordFightingDistance))
86075 {
86076 continue;
86077 }
86078 if (Main.slimeRain)
86079 {
86081 }
86082 bool flag33 = false;
86083 bool flag34 = false;
86084 bool flag35 = false;
86085 bool flag36 = false;
86086 bool flag37 = false;
86087 bool flag38 = false;
86088 bool flag2 = false;
86089 bool flag3 = false;
86090 bool flag4 = false;
86091 bool flag5 = false;
86092 bool flag6 = downedPlantBoss && Main.hardMode;
86093 bool isItAHappyWindyDay = Main.IsItAHappyWindyDay;
86094 if (Main.player[k].active && Main.invasionType > 0 && Main.invasionDelay == 0 && Main.invasionSize > 0 && ((double)Main.player[k].position.Y < Main.worldSurface * 16.0 + (double)sHeight || Main.remixWorld))
86095 {
86096 int num78 = 3000;
86097 if ((double)Main.player[k].position.X > Main.invasionX * 16.0 - (double)num78 && (double)Main.player[k].position.X < Main.invasionX * 16.0 + (double)num78)
86098 {
86099 flag35 = true;
86100 }
86101 else if (Main.invasionX >= (double)(Main.maxTilesX / 2 - 5) && Main.invasionX <= (double)(Main.maxTilesX / 2 + 5))
86102 {
86103 for (int l = 0; l < 200; l++)
86104 {
86105 if (Main.npc[l].townNPC && Math.Abs(Main.player[k].position.X - Main.npc[l].Center.X) < (float)num78)
86106 {
86107 if (Main.rand.Next(3) != 0)
86108 {
86109 flag35 = true;
86110 }
86111 break;
86112 }
86113 }
86114 }
86115 }
86116 if (Main.player[k].ZoneTowerSolar || Main.player[k].ZoneTowerNebula || Main.player[k].ZoneTowerVortex || Main.player[k].ZoneTowerStardust)
86117 {
86118 flag35 = true;
86119 }
86120 int num89 = (int)(Main.player[k].position.X + (float)(Main.player[k].width / 2)) / 16;
86121 int num100 = (int)(Main.player[k].position.Y + (float)(Main.player[k].height / 2)) / 16;
86122 if (Main.wallHouse[Main.tile[num89, num100].wall])
86123 {
86124 flag34 = true;
86125 }
86126 if (Main.tile[num89, num100].wall == 87)
86127 {
86128 flag33 = true;
86129 }
86130 flag12 = false;
86133 if (Main.hardMode)
86134 {
86135 spawnRate = (int)((double)defaultSpawnRate * 0.9);
86137 }
86138 if (Main.player[k].position.Y > (float)(Main.UnderworldLayer * 16))
86139 {
86140 maxSpawns = (int)((float)maxSpawns * 2f);
86141 }
86142 else if ((double)Main.player[k].position.Y > Main.rockLayer * 16.0 + (double)sHeight)
86143 {
86144 if (Main.remixWorld)
86145 {
86146 if (Main.hardMode)
86147 {
86148 spawnRate = (int)((double)spawnRate * 0.45);
86149 maxSpawns = (int)((float)maxSpawns * 1.8f);
86150 }
86151 else
86152 {
86153 spawnRate = (int)((double)spawnRate * 0.5);
86154 maxSpawns = (int)((float)maxSpawns * 1.7f);
86155 }
86156 }
86157 else
86158 {
86159 spawnRate = (int)((double)spawnRate * 0.4);
86160 maxSpawns = (int)((float)maxSpawns * 1.9f);
86161 }
86162 }
86163 else if ((double)Main.player[k].position.Y > Main.worldSurface * 16.0 + (double)sHeight)
86164 {
86165 if (Main.remixWorld)
86166 {
86167 spawnRate = (int)((double)spawnRate * 0.4);
86168 maxSpawns = (int)((float)maxSpawns * 1.9f);
86169 }
86170 else if (Main.hardMode)
86171 {
86172 spawnRate = (int)((double)spawnRate * 0.45);
86173 maxSpawns = (int)((float)maxSpawns * 1.8f);
86174 }
86175 else
86176 {
86177 spawnRate = (int)((double)spawnRate * 0.5);
86178 maxSpawns = (int)((float)maxSpawns * 1.7f);
86179 }
86180 }
86181 else if (Main.remixWorld)
86182 {
86183 if (!Main.dayTime)
86184 {
86185 spawnRate = (int)((double)spawnRate * 0.6);
86186 maxSpawns = (int)((float)maxSpawns * 1.3f);
86187 }
86188 }
86189 else if (!Main.dayTime)
86190 {
86191 spawnRate = (int)((double)spawnRate * 0.6);
86192 maxSpawns = (int)((float)maxSpawns * 1.3f);
86193 if (Main.bloodMoon)
86194 {
86195 spawnRate = (int)((double)spawnRate * 0.3);
86196 maxSpawns = (int)((float)maxSpawns * 1.8f);
86197 }
86198 if ((Main.pumpkinMoon || Main.snowMoon) && (double)Main.player[k].position.Y < Main.worldSurface * 16.0)
86199 {
86200 spawnRate = (int)((double)spawnRate * 0.2);
86201 maxSpawns *= 2;
86202 }
86203 }
86204 else if (Main.dayTime && Main.eclipse)
86205 {
86206 spawnRate = (int)((double)spawnRate * 0.2);
86207 maxSpawns = (int)((float)maxSpawns * 1.9f);
86208 }
86209 if (Main.remixWorld)
86210 {
86211 if (!Main.dayTime)
86212 {
86213 if (Main.bloodMoon)
86214 {
86215 spawnRate = (int)((double)spawnRate * 0.3);
86216 maxSpawns = (int)((float)maxSpawns * 1.8f);
86217 if ((double)Main.player[k].position.Y > Main.rockLayer * 16.0 + (double)sHeight)
86218 {
86219 spawnRate = (int)((double)spawnRate * 0.6);
86220 }
86221 }
86222 if (Main.pumpkinMoon || Main.snowMoon)
86223 {
86224 spawnRate = (int)((double)spawnRate * 0.2);
86225 maxSpawns *= 2;
86226 if ((double)Main.player[k].position.Y > Main.rockLayer * 16.0 + (double)sHeight)
86227 {
86228 spawnRate = (int)((double)spawnRate * 0.6);
86229 }
86230 }
86231 }
86232 else if (Main.dayTime && Main.eclipse)
86233 {
86234 spawnRate = (int)((double)spawnRate * 0.2);
86235 maxSpawns = (int)((float)maxSpawns * 1.9f);
86236 }
86237 }
86238 if (Main.player[k].ZoneSnow && (double)(Main.player[k].position.Y / 16f) < Main.worldSurface)
86239 {
86240 maxSpawns = (int)((float)maxSpawns + (float)maxSpawns * Main.cloudAlpha);
86241 spawnRate = (int)((float)spawnRate * (1f - Main.cloudAlpha + 1f) / 2f);
86242 }
86243 if (Main.drunkWorld && Main.tile[num89, num100].wall == 86)
86244 {
86245 spawnRate = (int)((double)spawnRate * 0.3);
86246 maxSpawns = (int)((float)maxSpawns * 1.8f);
86247 }
86248 if (Main.player[k].ZoneDungeon)
86249 {
86250 spawnRate = (int)((double)spawnRate * 0.3);
86251 maxSpawns = (int)((float)maxSpawns * 1.8f);
86252 }
86253 else if (Main.player[k].ZoneSandstorm)
86254 {
86255 spawnRate = (int)((float)spawnRate * (Main.hardMode ? 0.4f : 0.9f));
86256 maxSpawns = (int)((float)maxSpawns * (Main.hardMode ? 1.5f : 1.2f));
86257 }
86258 else if (Main.player[k].ZoneUndergroundDesert)
86259 {
86260 spawnRate = (int)((float)spawnRate * 0.2f);
86261 maxSpawns = (int)((float)maxSpawns * 3f);
86262 }
86263 else if (Main.player[k].ZoneJungle)
86264 {
86265 if (Main.player[k].townNPCs == 0f)
86266 {
86267 spawnRate = (int)((double)spawnRate * 0.4);
86268 maxSpawns = (int)((float)maxSpawns * 1.5f);
86269 }
86270 else if (Main.player[k].townNPCs == 1f)
86271 {
86272 spawnRate = (int)((double)spawnRate * 0.55);
86273 maxSpawns = (int)((double)maxSpawns * 1.4);
86274 }
86275 else if (Main.player[k].townNPCs == 2f)
86276 {
86277 spawnRate = (int)((double)spawnRate * 0.7);
86278 maxSpawns = (int)((float)maxSpawns * 1.3f);
86279 }
86280 else
86281 {
86282 spawnRate = (int)((double)spawnRate * 0.85);
86283 maxSpawns = (int)((float)maxSpawns * 1.2f);
86284 }
86285 }
86286 else if (Main.player[k].ZoneCorrupt || Main.player[k].ZoneCrimson)
86287 {
86288 spawnRate = (int)((double)spawnRate * 0.65);
86289 maxSpawns = (int)((float)maxSpawns * 1.3f);
86290 }
86291 else if (Main.player[k].ZoneMeteor)
86292 {
86293 spawnRate = (int)((double)spawnRate * 0.4);
86294 maxSpawns = (int)((float)maxSpawns * 1.1f);
86295 }
86296 if (flag33)
86297 {
86298 spawnRate = (int)((float)spawnRate * 0.8f);
86299 maxSpawns = (int)((float)maxSpawns * 1.2f);
86300 if (Main.remixWorld)
86301 {
86302 spawnRate = (int)((double)spawnRate * 0.4);
86303 maxSpawns = (int)((float)maxSpawns * 1.5f);
86304 }
86305 }
86306 if (Main.remixWorld && (Main.player[k].ZoneCorrupt || Main.player[k].ZoneCrimson) && (double)(Main.player[k].position.Y / 16f) < Main.worldSurface)
86307 {
86308 spawnRate = (int)((double)spawnRate * 0.5);
86309 maxSpawns *= 2;
86310 }
86311 if (Main.player[k].ZoneHallow && (double)Main.player[k].position.Y > Main.rockLayer * 16.0 + (double)sHeight)
86312 {
86313 spawnRate = (int)((double)spawnRate * 0.65);
86314 maxSpawns = (int)((float)maxSpawns * 1.3f);
86315 }
86316 if (Main.wofNPCIndex >= 0 && Main.player[k].position.Y > (float)(Main.UnderworldLayer * 16))
86317 {
86318 maxSpawns = (int)((float)maxSpawns * 0.3f);
86319 spawnRate *= 3;
86320 }
86321 if ((double)Main.player[k].nearbyActiveNPCs < (double)maxSpawns * 0.2)
86322 {
86323 spawnRate = (int)((float)spawnRate * 0.6f);
86324 }
86325 else if ((double)Main.player[k].nearbyActiveNPCs < (double)maxSpawns * 0.4)
86326 {
86327 spawnRate = (int)((float)spawnRate * 0.7f);
86328 }
86329 else if ((double)Main.player[k].nearbyActiveNPCs < (double)maxSpawns * 0.6)
86330 {
86331 spawnRate = (int)((float)spawnRate * 0.8f);
86332 }
86333 else if ((double)Main.player[k].nearbyActiveNPCs < (double)maxSpawns * 0.8)
86334 {
86335 spawnRate = (int)((float)spawnRate * 0.9f);
86336 }
86337 if ((double)(Main.player[k].position.Y / 16f) > (Main.worldSurface + Main.rockLayer) / 2.0 || Main.player[k].ZoneCorrupt || Main.player[k].ZoneCrimson)
86338 {
86339 if ((double)Main.player[k].nearbyActiveNPCs < (double)maxSpawns * 0.2)
86340 {
86341 spawnRate = (int)((float)spawnRate * 0.7f);
86342 }
86343 else if ((double)Main.player[k].nearbyActiveNPCs < (double)maxSpawns * 0.4)
86344 {
86345 spawnRate = (int)((float)spawnRate * 0.9f);
86346 }
86347 }
86348 int maxValue = 65;
86349 if (Main.remixWorld && (double)(Main.player[k].position.Y / 16f) < Main.worldSurface && (Main.player[k].ZoneCorrupt || Main.player[k].ZoneCrimson))
86350 {
86351 maxValue = 25;
86352 spawnRate = (int)((double)spawnRate * 0.8);
86353 maxSpawns *= 2;
86354 }
86355 if (Main.player[k].invis)
86356 {
86357 spawnRate = (int)((float)spawnRate * 1.2f);
86358 maxSpawns = (int)((float)maxSpawns * 0.8f);
86359 }
86360 if (Main.player[k].calmed)
86361 {
86362 spawnRate = (int)((float)spawnRate * 1.65f);
86363 maxSpawns = (int)((float)maxSpawns * 0.6f);
86364 }
86365 if (Main.player[k].sunflower)
86366 {
86367 spawnRate = (int)((float)spawnRate * 1.2f);
86368 maxSpawns = (int)((float)maxSpawns * 0.8f);
86369 }
86370 if (Main.player[k].anglerSetSpawnReduction)
86371 {
86372 spawnRate = (int)((float)spawnRate * 1.3f);
86373 maxSpawns = (int)((float)maxSpawns * 0.7f);
86374 }
86375 if (Main.player[k].enemySpawns)
86376 {
86377 spawnRate = (int)((double)spawnRate * 0.5);
86378 maxSpawns = (int)((float)maxSpawns * 2f);
86379 }
86380 if (Main.player[k].ZoneWaterCandle || Main.player[k].inventory[Main.player[k].selectedItem].type == 148)
86381 {
86382 if (!Main.player[k].ZonePeaceCandle && Main.player[k].inventory[Main.player[k].selectedItem].type != 3117)
86383 {
86384 spawnRate = (int)((double)spawnRate * 0.75);
86385 maxSpawns = (int)((float)maxSpawns * 1.5f);
86386 }
86387 }
86388 else if (Main.player[k].ZonePeaceCandle || Main.player[k].inventory[Main.player[k].selectedItem].type == 3117)
86389 {
86390 spawnRate = (int)((double)spawnRate * 1.3);
86391 maxSpawns = (int)((float)maxSpawns * 0.7f);
86392 }
86393 if (Main.player[k].ZoneShadowCandle || Main.player[k].inventory[Main.player[k].selectedItem].type == 5322)
86394 {
86395 Main.player[k].townNPCs = 0f;
86396 }
86397 if (Main.player[k].ZoneWaterCandle && (double)(Main.player[k].position.Y / 16f) < Main.worldSurface * 0.3499999940395355)
86398 {
86399 spawnRate = (int)((double)spawnRate * 0.5);
86400 }
86401 if (Main.player[k].isNearFairy())
86402 {
86403 spawnRate = (int)((float)spawnRate * 1.2f);
86404 maxSpawns = (int)((float)maxSpawns * 0.8f);
86405 }
86406 if ((double)spawnRate < (double)defaultSpawnRate * 0.1)
86407 {
86408 spawnRate = (int)((double)defaultSpawnRate * 0.1);
86409 }
86410 if (maxSpawns > defaultMaxSpawns * 3)
86411 {
86413 }
86414 if (Main.getGoodWorld)
86415 {
86416 spawnRate = (int)((float)spawnRate * 0.8f);
86417 maxSpawns = (int)((float)maxSpawns * 1.2f);
86418 }
86419 if (Main.GameModeInfo.IsJourneyMode)
86420 {
86422 if (power != null && power.GetIsUnlocked())
86423 {
86424 if (power.GetShouldDisableSpawnsFor(k))
86425 {
86426 continue;
86427 }
86428 if (power.GetRemappedSliderValueFor(k, out var num2))
86429 {
86430 spawnRate = (int)((float)spawnRate / num2);
86431 maxSpawns = (int)((float)maxSpawns * num2);
86432 }
86433 }
86434 }
86435 if ((Main.pumpkinMoon || Main.snowMoon) && (Main.remixWorld || (double)Main.player[k].position.Y < Main.worldSurface * 16.0))
86436 {
86437 maxSpawns = (int)((double)defaultMaxSpawns * (2.0 + 0.3 * (double)num46));
86438 spawnRate = 20;
86439 }
86440 if (DD2Event.Ongoing && Main.player[k].ZoneOldOneArmy)
86441 {
86444 }
86445 if (flag35)
86446 {
86447 maxSpawns = (int)((double)defaultMaxSpawns * (2.0 + 0.3 * (double)num46));
86448 spawnRate = 20;
86449 }
86450 if (Main.player[k].ZoneDungeon && !downedBoss3)
86451 {
86452 spawnRate = 10;
86453 }
86454 if (!flag35 && ((!Main.bloodMoon && !Main.pumpkinMoon && !Main.snowMoon) || Main.dayTime) && (!Main.eclipse || !Main.dayTime) && !Main.player[k].ZoneDungeon && !Main.player[k].ZoneCorrupt && !Main.player[k].ZoneCrimson && !Main.player[k].ZoneMeteor && !Main.player[k].ZoneOldOneArmy)
86455 {
86456 if (Main.player[k].Center.Y / 16f > (float)Main.UnderworldLayer && (!Main.remixWorld || !((double)(Main.player[k].Center.X / 16f) > (double)Main.maxTilesX * 0.39 + 50.0) || !((double)(Main.player[k].Center.X / 16f) < (double)Main.maxTilesX * 0.61)))
86457 {
86458 if (Main.player[k].townNPCs == 1f)
86459 {
86460 if (Main.rand.Next(2) == 0)
86461 {
86462 flag34 = true;
86463 }
86464 if (Main.rand.Next(10) == 0)
86465 {
86466 flag4 = true;
86467 maxSpawns = (int)((double)(float)maxSpawns * 0.5);
86468 }
86469 else
86470 {
86471 spawnRate = (int)((double)(float)spawnRate * 1.25);
86472 }
86473 }
86474 else if (Main.player[k].townNPCs == 2f)
86475 {
86476 if (Main.rand.Next(4) != 0)
86477 {
86478 flag34 = true;
86479 }
86480 if (Main.rand.Next(5) == 0)
86481 {
86482 flag4 = true;
86483 maxSpawns = (int)((double)(float)maxSpawns * 0.5);
86484 }
86485 else
86486 {
86487 spawnRate = (int)((double)(float)spawnRate * 1.5);
86488 }
86489 }
86490 else if (Main.player[k].townNPCs >= 3f)
86491 {
86492 if (Main.rand.Next(10) != 0)
86493 {
86494 flag34 = true;
86495 }
86496 if (Main.rand.Next(3) == 0)
86497 {
86498 flag4 = true;
86499 maxSpawns = (int)((double)(float)maxSpawns * 0.5);
86500 }
86501 else
86502 {
86503 spawnRate = (int)((float)spawnRate * 2f);
86504 }
86505 }
86506 }
86507 else if (Main.player[k].townNPCs == 1f)
86508 {
86509 flag34 = true;
86510 if (Main.player[k].ZoneGraveyard)
86511 {
86512 spawnRate = (int)((double)(float)spawnRate * 1.66);
86513 if (Main.rand.Next(9) == 1)
86514 {
86515 flag4 = true;
86516 maxSpawns = (int)((double)(float)maxSpawns * 0.6);
86517 }
86518 }
86519 else if (Main.rand.Next(3) == 1)
86520 {
86521 flag4 = true;
86522 maxSpawns = (int)((double)(float)maxSpawns * 0.6);
86523 }
86524 else
86525 {
86526 spawnRate = (int)((float)spawnRate * 2f);
86527 }
86528 }
86529 else if (Main.player[k].townNPCs == 2f)
86530 {
86531 flag34 = true;
86532 if (Main.player[k].ZoneGraveyard)
86533 {
86534 spawnRate = (int)((double)(float)spawnRate * 2.33);
86535 if (Main.rand.Next(6) == 1)
86536 {
86537 flag4 = true;
86538 maxSpawns = (int)((double)(float)maxSpawns * 0.6);
86539 }
86540 }
86541 else if (Main.rand.Next(3) != 0)
86542 {
86543 flag4 = true;
86544 maxSpawns = (int)((double)(float)maxSpawns * 0.6);
86545 }
86546 else
86547 {
86548 spawnRate = (int)((float)spawnRate * 3f);
86549 }
86550 }
86551 else if (Main.player[k].townNPCs >= 3f)
86552 {
86553 flag34 = true;
86554 if (Main.player[k].ZoneGraveyard)
86555 {
86556 spawnRate = (int)((float)spawnRate * 3f);
86557 if (Main.rand.Next(3) == 1)
86558 {
86559 flag4 = true;
86560 maxSpawns = (int)((double)(float)maxSpawns * 0.6);
86561 }
86562 }
86563 else
86564 {
86565 if (!Main.expertMode || Main.rand.Next(30) != 0)
86566 {
86567 flag4 = true;
86568 }
86569 maxSpawns = (int)((double)(float)maxSpawns * 0.6);
86570 }
86571 }
86572 }
86574 bool flag7 = false;
86575 if (Main.player[k].active && !Main.player[k].dead && Main.player[k].nearbyActiveNPCs < (float)maxSpawns && Main.rand.Next(spawnRate) == 0)
86576 {
86577 bool flag8 = Main.player[k].ZoneTowerNebula || Main.player[k].ZoneTowerSolar || Main.player[k].ZoneTowerStardust || Main.player[k].ZoneTowerVortex;
86578 spawnRangeX = (int)((double)(sWidth / 16) * 0.7);
86579 spawnRangeY = (int)((double)(sHeight / 16) * 0.7);
86580 safeRangeX = (int)((double)(sWidth / 16) * 0.52);
86581 safeRangeY = (int)((double)(sHeight / 16) * 0.52);
86582 if (Main.player[k].inventory[Main.player[k].selectedItem].type == 1254 || Main.player[k].inventory[Main.player[k].selectedItem].type == 1299 || Main.player[k].scope)
86583 {
86584 float num13 = 1.5f;
86585 if (Main.player[k].inventory[Main.player[k].selectedItem].type == 1254 && Main.player[k].scope)
86586 {
86587 num13 = 1.25f;
86588 }
86589 else if (Main.player[k].inventory[Main.player[k].selectedItem].type == 1254)
86590 {
86591 num13 = 1.5f;
86592 }
86593 else if (Main.player[k].inventory[Main.player[k].selectedItem].type == 1299)
86594 {
86595 num13 = 1.5f;
86596 }
86597 else if (Main.player[k].scope)
86598 {
86599 num13 = 2f;
86600 }
86601 spawnRangeX += (int)((double)(sWidth / 16) * 0.5 / (double)num13);
86602 spawnRangeY += (int)((double)(sHeight / 16) * 0.5 / (double)num13);
86603 safeRangeX += (int)((double)(sWidth / 16) * 0.5 / (double)num13);
86604 safeRangeY += (int)((double)(sHeight / 16) * 0.5 / (double)num13);
86605 }
86607 int num16 = (int)(Main.player[k].position.X / 16f) - spawnRangeX;
86608 int num17 = (int)(Main.player[k].position.X / 16f) + spawnRangeX;
86609 int num18 = (int)(Main.player[k].position.Y / 16f) - spawnRangeY;
86610 int num19 = (int)(Main.player[k].position.Y / 16f) + spawnRangeY;
86611 int num20 = (int)(Main.player[k].position.X / 16f) - safeRangeX;
86612 int num21 = (int)(Main.player[k].position.X / 16f) + safeRangeX;
86613 int num22 = (int)(Main.player[k].position.Y / 16f) - safeRangeY;
86614 int num23 = (int)(Main.player[k].position.Y / 16f) + safeRangeY;
86615 if (num16 < 0)
86616 {
86617 num16 = 0;
86618 }
86619 if (num17 > Main.maxTilesX)
86620 {
86621 num17 = Main.maxTilesX;
86622 }
86623 if (num18 < 0)
86624 {
86625 num18 = 0;
86626 }
86627 if (num19 > Main.maxTilesY)
86628 {
86629 num19 = Main.maxTilesY;
86630 }
86631 for (int m = 0; m < 50; m++)
86632 {
86633 int num25 = Main.rand.Next(num16, num17);
86634 int num26 = Main.rand.Next(num18, num19);
86635 if (!Main.tile[num25, num26].nactive() || !Main.tileSolid[Main.tile[num25, num26].type])
86636 {
86637 if (!flag8 && Main.wallHouse[Main.tile[num25, num26].wall])
86638 {
86639 continue;
86640 }
86641 if (!flag35 && (double)num26 < Main.worldSurface * 0.3499999940395355 && !flag4 && ((double)num25 < (double)Main.maxTilesX * 0.45 || (double)num25 > (double)Main.maxTilesX * 0.55 || Main.hardMode))
86642 {
86643 num35 = Main.tile[num25, num26].type;
86644 num = num25;
86645 num24 = num26;
86646 flag12 = true;
86647 flag23 = true;
86648 }
86649 else if (!flag35 && (double)num26 < Main.worldSurface * 0.44999998807907104 && !flag4 && Main.hardMode && Main.rand.Next(10) == 0)
86650 {
86651 num35 = Main.tile[num25, num26].type;
86652 num = num25;
86653 num24 = num26;
86654 flag12 = true;
86655 flag23 = true;
86656 }
86657 else
86658 {
86659 for (int n = num26; n < Main.maxTilesY && n < num19; n++)
86660 {
86661 if (Main.tile[num25, n].nactive() && Main.tileSolid[Main.tile[num25, n].type])
86662 {
86664 {
86665 num35 = Main.tile[num25, n].type;
86666 num = num25;
86667 num24 = n;
86668 flag12 = true;
86669 }
86670 break;
86671 }
86672 }
86673 }
86674 if (Main.player[k].ZoneShadowCandle)
86675 {
86676 flag34 = false;
86677 }
86678 else if (!flag23 && Main.player[k].afkCounter >= AFKTimeNeededForNoWorms)
86679 {
86680 flag34 = true;
86681 }
86682 if (flag12)
86683 {
86684 int num27 = num - spawnSpaceX / 2;
86685 int num28 = num + spawnSpaceX / 2;
86686 int num29 = num24 - spawnSpaceY;
86687 int num30 = num24;
86688 if (num27 < 0)
86689 {
86690 flag12 = false;
86691 }
86692 if (num28 > Main.maxTilesX)
86693 {
86694 flag12 = false;
86695 }
86696 if (num29 < 0)
86697 {
86698 flag12 = false;
86699 }
86700 if (num30 > Main.maxTilesY)
86701 {
86702 flag12 = false;
86703 }
86704 if (flag12)
86705 {
86706 for (int num31 = num27; num31 < num28; num31++)
86707 {
86708 for (int num32 = num29; num32 < num30; num32++)
86709 {
86710 if (Main.tile[num31, num32].nactive() && Main.tileSolid[Main.tile[num31, num32].type])
86711 {
86712 flag12 = false;
86713 break;
86714 }
86715 if (Main.tile[num31, num32].lava())
86716 {
86717 flag12 = false;
86718 break;
86719 }
86720 }
86721 }
86722 }
86723 if (num >= num20 && num <= num21)
86724 {
86725 flag7 = true;
86726 }
86727 }
86728 }
86729 if (flag12 || flag12)
86730 {
86731 break;
86732 }
86733 }
86734 }
86735 if (flag12)
86736 {
86737 ((Rectangle)(ref rectangle))._002Ector(num * 16, num24 * 16, 16, 16);
86738 for (int num33 = 0; num33 < 255; num33++)
86739 {
86740 if (Main.player[num33].active)
86741 {
86742 ((Rectangle)(ref rectangle2))._002Ector((int)(Main.player[num33].position.X + (float)(Main.player[num33].width / 2) - (float)(sWidth / 2) - (float)safeRangeX), (int)(Main.player[num33].position.Y + (float)(Main.player[num33].height / 2) - (float)(sHeight / 2) - (float)safeRangeY), sWidth + safeRangeX * 2, sHeight + safeRangeY * 2);
86743 if (((Rectangle)(ref rectangle)).Intersects(rectangle2))
86744 {
86745 flag12 = false;
86746 }
86747 }
86748 }
86749 }
86750 if (flag12)
86751 {
86752 if (Main.player[k].ZoneDungeon && (!Main.tileDungeon[Main.tile[num, num24].type] || Main.tile[num, num24 - 1].wall == 0))
86753 {
86754 flag12 = false;
86755 }
86756 if (Main.tile[num, num24 - 1].liquid > 0 && Main.tile[num, num24 - 2].liquid > 0 && !Main.tile[num, num24 - 1].lava())
86757 {
86758 if (Main.tile[num, num24 - 1].shimmer())
86759 {
86760 flag12 = false;
86761 }
86762 if (Main.tile[num, num24 - 1].honey())
86763 {
86764 flag37 = true;
86765 }
86766 else
86767 {
86768 flag36 = true;
86769 }
86770 }
86771 int num34 = (int)Main.player[k].Center.X / 16;
86772 int num36 = (int)(Main.player[k].Bottom.Y + 8f) / 16;
86773 spawnInfo.PlayerFloorX = num34;
86774 spawnInfo.PlayerFloorY = num36;
86775 if (Main.tile[num, num24].type == 367)
86776 {
86777 flag2 = true;
86778 }
86779 else if (Main.tile[num, num24].type == 368)
86780 {
86781 flag38 = true;
86782 }
86783 else if (Main.tile[num34, num36].type == 367)
86784 {
86785 flag2 = true;
86786 }
86787 else if (Main.tile[num34, num36].type == 368)
86788 {
86789 flag38 = true;
86790 }
86791 else
86792 {
86793 int num37 = Main.rand.Next(20, 31);
86794 int num38 = Main.rand.Next(1, 4);
86795 if (num - num37 < 0)
86796 {
86797 num37 = num;
86798 }
86799 if (num24 - num37 < 0)
86800 {
86801 num37 = num24;
86802 }
86803 if (num + num37 >= Main.maxTilesX)
86804 {
86805 num37 = Main.maxTilesX - num - 1;
86806 }
86807 if (num24 + num37 >= Main.maxTilesY)
86808 {
86809 num37 = Main.maxTilesY - num24 - 1;
86810 }
86811 for (int num39 = num - num37; num39 <= num + num37; num39 += num38)
86812 {
86813 int num40 = Main.rand.Next(1, 4);
86814 for (int num41 = num24 - num37; num41 <= num24 + num37; num41 += num40)
86815 {
86816 if (Main.tile[num39, num41].type == 367)
86817 {
86818 flag2 = true;
86819 }
86820 if (Main.tile[num39, num41].type == 368)
86821 {
86822 flag38 = true;
86823 }
86824 }
86825 }
86826 num37 = Main.rand.Next(30, 61);
86827 num38 = Main.rand.Next(3, 7);
86828 if (num34 - num37 < 0)
86829 {
86830 num37 = num34;
86831 }
86832 if (num36 - num37 < 0)
86833 {
86834 num37 = num36;
86835 }
86836 if (num34 + num37 >= Main.maxTilesX)
86837 {
86838 num37 = Main.maxTilesX - num34 - 2;
86839 }
86840 if (num36 + num37 >= Main.maxTilesY)
86841 {
86842 num37 = Main.maxTilesY - num36 - 2;
86843 }
86844 for (int num42 = num34 - num37; num42 <= num34 + num37; num42 += num38)
86845 {
86846 int num43 = Main.rand.Next(3, 7);
86847 for (int num44 = num36 - num37; num44 <= num36 + num37; num44 += num43)
86848 {
86849 if (Main.tile[num42, num44].type == 367)
86850 {
86851 flag2 = true;
86852 }
86853 if (Main.tile[num42, num44].type == 368)
86854 {
86855 flag38 = true;
86856 }
86857 }
86858 }
86859 }
86860 if (flag37)
86861 {
86862 flag12 = false;
86863 }
86864 if ((num35 == 477 || num35 == 492) && !Main.bloodMoon && !Main.eclipse && Main.invasionType <= 0 && !Main.pumpkinMoon && !Main.snowMoon && !Main.slimeRain && Main.rand.Next(100) < 10)
86865 {
86866 flag12 = false;
86867 }
86868 }
86869 if (!flag12)
86870 {
86871 continue;
86872 }
86873 if (Main.remixWorld)
86874 {
86875 ResetRemixHax();
86876 }
86877 bool flag9 = (double)num24 <= Main.rockLayer;
86878 if (Main.remixWorld)
86879 {
86880 flag9 = (double)num24 > Main.rockLayer && num24 <= Main.maxTilesY - 190;
86881 }
86882 bool flag10 = (double)num24 > Main.rockLayer && num24 < Main.UnderworldLayer;
86883 if (Main.dontStarveWorld)
86884 {
86885 flag10 = num24 < Main.UnderworldLayer;
86886 }
86887 if (flag10 && !Main.player[k].ZoneDungeon && !flag35)
86888 {
86889 if (Main.rand.Next(3) == 0)
86890 {
86891 int num45 = Main.rand.Next(5, 15);
86892 if (num - num45 >= 0 && num + num45 < Main.maxTilesX)
86893 {
86894 for (int num47 = num - num45; num47 < num + num45; num47++)
86895 {
86896 for (int num48 = num24 - num45; num48 < num24 + num45; num48++)
86897 {
86898 if (Main.tile[num47, num48].wall == 62)
86899 {
86900 flag3 = true;
86901 }
86902 }
86903 }
86904 }
86905 }
86906 else
86907 {
86908 int num49 = (int)Main.player[k].position.X / 16;
86909 int num50 = (int)Main.player[k].position.Y / 16;
86910 if (Main.tile[num49, num50].wall == 62)
86911 {
86912 flag3 = true;
86913 }
86914 }
86915 }
86916 if ((double)num24 < Main.rockLayer && num24 > 200 && !Main.player[k].ZoneDungeon && !flag35)
86917 {
86918 if (Main.rand.Next(3) == 0)
86919 {
86920 int num51 = Main.rand.Next(5, 15);
86921 if (num - num51 >= 0 && num + num51 < Main.maxTilesX)
86922 {
86923 for (int num52 = num - num51; num52 < num + num51; num52++)
86924 {
86925 for (int num53 = num24 - num51; num53 < num24 + num51; num53++)
86926 {
86928 {
86929 flag5 = true;
86930 }
86931 }
86932 }
86933 }
86934 }
86935 else
86936 {
86937 int num54 = (int)Main.player[k].position.X / 16;
86938 int num55 = (int)Main.player[k].position.Y / 16;
86940 {
86941 flag5 = true;
86942 }
86943 }
86944 }
86945 flag12 = false;
86946 int num56 = Main.tile[num, num24].type;
86947 int num58 = Main.tile[num, num24 - 1].wall;
86948 if (Main.tile[num, num24 - 2].wall == 244 || Main.tile[num, num24].wall == 244)
86949 {
86950 num58 = 244;
86951 }
86952 bool flag11 = (float)new Point(num89 - num, num100 - num24).X * Main.windSpeedTarget > 0f;
86953 bool flag13 = (double)num24 <= Main.worldSurface;
86954 bool flag14 = (double)num24 >= Main.rockLayer;
86955 bool flag15 = ((num < WorldGen.oceanDistance || num > Main.maxTilesX - WorldGen.oceanDistance) && Main.tileSand[num56] && (double)num24 < Main.rockLayer) || (num35 == 53 && WorldGen.oceanDepths(num, num24));
86956 bool flag16 = (double)num24 <= Main.worldSurface && (num < WorldGen.beachDistance || num > Main.maxTilesX - WorldGen.beachDistance);
86957 bool flag17 = Main.cloudAlpha > 0f;
86958 int range = 10;
86959 if (Main.remixWorld)
86960 {
86961 flag17 = Main.raining;
86962 flag14 = (((double)num24 > Main.worldSurface && (double)num24 < Main.rockLayer) ? true : false);
86963 if ((double)num24 < Main.worldSurface + 5.0)
86964 {
86965 Main.raining = false;
86966 Main.cloudAlpha = 0f;
86967 Main.dayTime = false;
86968 }
86969 range = 5;
86970 if (Main.player[k].ZoneCorrupt || Main.player[k].ZoneCrimson)
86971 {
86972 flag15 = false;
86973 flag16 = false;
86974 }
86975 if ((double)num < (double)Main.maxTilesX * 0.43 || (double)num > (double)Main.maxTilesX * 0.57)
86976 {
86977 if ((double)num24 > Main.rockLayer - 200.0 && num24 < Main.maxTilesY - 200 && Main.rand.Next(2) == 0)
86978 {
86979 flag15 = true;
86980 }
86981 if ((double)num24 > Main.rockLayer - 200.0 && num24 < Main.maxTilesY - 200 && Main.rand.Next(2) == 0)
86982 {
86983 flag16 = true;
86984 }
86985 }
86986 if ((double)num24 > Main.rockLayer - 20.0)
86987 {
86988 if (num24 <= Main.maxTilesY - 190 && Main.rand.Next(3) != 0)
86989 {
86990 flag13 = true;
86991 Main.dayTime = false;
86992 if (Main.rand.Next(2) == 0)
86993 {
86994 Main.dayTime = true;
86995 }
86996 }
86997 else if ((Main.bloodMoon || (Main.eclipse && Main.dayTime)) && (double)num > (double)Main.maxTilesX * 0.38 + 50.0 && (double)num < (double)Main.maxTilesX * 0.62)
86998 {
86999 flag13 = true;
87000 }
87001 }
87002 }
87004 spawnInfo.SpawnTileX = num;
87005 spawnInfo.SpawnTileY = num24;
87006 spawnInfo.SpawnTileType = num35;
87007 spawnInfo.Player = Main.player[k];
87008 spawnInfo.Sky = flag23;
87009 spawnInfo.Lihzahrd = flag33;
87010 spawnInfo.PlayerSafe = flag34;
87011 spawnInfo.Invasion = flag35;
87012 spawnInfo.Water = flag36;
87013 spawnInfo.Granite = flag38;
87014 spawnInfo.Marble = flag2;
87015 spawnInfo.SpiderCave = flag3;
87016 spawnInfo.PlayerInTown = flag4;
87017 spawnInfo.DesertCave = flag5;
87018 spawnInfo.SafeRangeX = flag7;
87019 int newNPC = 200;
87021 if (!spawnChoice.HasValue)
87022 {
87023 break;
87024 }
87025 int spawn = spawnChoice.Value;
87026 if (spawn == 0)
87027 {
87028 int cattailX;
87029 int cattailY;
87030 if (Main.player[k].ZoneTowerNebula)
87031 {
87032 bool flag18 = true;
87033 int num59 = 0;
87034 while (flag18)
87035 {
87036 num59 = Utils.SelectRandom<int>(Main.rand, 424, 424, 424, 423, 423, 423, 421, 421, 421, 420, 420);
87037 flag18 = false;
87038 if (num59 == 424 && CountNPCS(num59) >= 3)
87039 {
87040 flag18 = true;
87041 }
87042 if (num59 == 423 && CountNPCS(num59) >= 3)
87043 {
87044 flag18 = true;
87045 }
87046 if (num59 == 420 && CountNPCS(num59) >= 3)
87047 {
87048 flag18 = true;
87049 }
87050 }
87051 if (num59 != 0)
87052 {
87053 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, num59, 1);
87054 }
87055 }
87056 else if (Main.player[k].ZoneTowerVortex)
87057 {
87058 bool flag19 = true;
87059 int num60 = 0;
87060 while (flag19)
87061 {
87062 num60 = Utils.SelectRandom<int>(Main.rand, 429, 429, 429, 429, 427, 427, 425, 425, 426);
87063 flag19 = false;
87064 if (num60 == 425 && CountNPCS(num60) >= 3)
87065 {
87066 flag19 = true;
87067 }
87068 if (num60 == 426 && CountNPCS(num60) >= 3)
87069 {
87070 flag19 = true;
87071 }
87072 if (num60 == 429 && CountNPCS(num60) >= 4)
87073 {
87074 flag19 = true;
87075 }
87076 }
87077 if (num60 != 0)
87078 {
87079 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, num60, 1);
87080 }
87081 }
87082 else if (Main.player[k].ZoneTowerStardust)
87083 {
87084 int num61 = Utils.SelectRandom<int>(Main.rand, 411, 411, 411, 409, 409, 407, 402, 405);
87085 if (num61 != 0)
87086 {
87087 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, num61, 1);
87088 }
87089 }
87090 else if (Main.player[k].ZoneTowerSolar)
87091 {
87092 bool flag20 = true;
87093 int num62 = 0;
87094 while (flag20)
87095 {
87096 num62 = Utils.SelectRandom<int>(Main.rand, 518, 419, 418, 412, 417, 416, 415);
87097 flag20 = false;
87098 if (num62 == 418 && Main.rand.Next(2) == 0)
87099 {
87100 num62 = Utils.SelectRandom<int>(Main.rand, 415, 416, 419, 417);
87101 }
87102 if (num62 == 518 && CountNPCS(num62) >= 2)
87103 {
87104 flag20 = true;
87105 }
87106 if (num62 == 412 && CountNPCS(num62) >= 1)
87107 {
87108 flag20 = true;
87109 }
87110 }
87111 if (num62 != 0)
87112 {
87113 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, num62, 1);
87114 }
87115 }
87116 else if (flag23)
87117 {
87118 int maxValue2 = 8;
87119 int maxValue3 = 30;
87120 bool flag21 = (float)Math.Abs(num - Main.maxTilesX / 2) / (float)(Main.maxTilesX / 2) > 0.33f && (Main.wallLight[Main.tile[num89, num100].wall] || Main.tile[num89, num100].wall == 73);
87121 if (flag21 && AnyDanger())
87122 {
87123 flag21 = false;
87124 }
87125 if (Main.player[k].ZoneWaterCandle)
87126 {
87127 maxValue2 = 3;
87128 maxValue3 = 10;
87129 }
87130 if (flag35 && Main.invasionType == 4)
87131 {
87132 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 388);
87133 }
87134 else if (flag21 && Main.hardMode && downedGolemBoss && ((!downedMartians && Main.rand.Next(maxValue2) == 0) || Main.rand.Next(maxValue3) == 0) && !AnyNPCs(399))
87135 {
87136 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 399);
87137 }
87138 else if (flag21 && Main.hardMode && downedGolemBoss && ((!downedMartians && Main.rand.Next(maxValue2) == 0) || Main.rand.Next(maxValue3) == 0) && !AnyNPCs(399) && (Main.player[k].inventory[Main.player[k].selectedItem].type == 148 || Main.player[k].ZoneWaterCandle))
87139 {
87140 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 399);
87141 }
87142 else if (Main.hardMode && !AnyNPCs(87) && !flag34 && Main.rand.Next(10) == 0)
87143 {
87144 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 87, 1);
87145 }
87146 else if (Main.hardMode && !AnyNPCs(87) && !flag34 && Main.rand.Next(10) == 0 && (Main.player[k].inventory[Main.player[k].selectedItem].type == 148 || Main.player[k].ZoneWaterCandle))
87147 {
87148 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 87, 1);
87149 }
87150 else if (!unlockedSlimePurpleSpawn && Main.player[k].RollLuck(25) == 0 && !AnyNPCs(686))
87151 {
87152 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 686);
87153 }
87154 else
87155 {
87156 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 48);
87157 }
87158 }
87159 else if (flag35)
87160 {
87161 if (Main.invasionType == 1)
87162 {
87163 if (Main.hardMode && !AnyNPCs(471) && Main.rand.Next(30) == 0)
87164 {
87165 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 471);
87166 }
87167 else if (Main.rand.Next(9) == 0)
87168 {
87169 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 29);
87170 }
87171 else if (Main.rand.Next(5) == 0)
87172 {
87173 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 26);
87174 }
87175 else if (Main.rand.Next(3) == 0)
87176 {
87177 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 111);
87178 }
87179 else if (Main.rand.Next(3) == 0)
87180 {
87181 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 27);
87182 }
87183 else
87184 {
87185 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 28);
87186 }
87187 }
87188 else if (Main.invasionType == 2)
87189 {
87190 if (Main.rand.Next(7) == 0)
87191 {
87192 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 145);
87193 }
87194 else if (Main.rand.Next(3) == 0)
87195 {
87196 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 143);
87197 }
87198 else
87199 {
87200 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 144);
87201 }
87202 }
87203 else if (Main.invasionType == 3)
87204 {
87205 if (Main.invasionSize < Main.invasionSizeStart / 2 && Main.rand.Next(20) == 0 && !AnyNPCs(491) && !Collision.SolidTiles(num - 20, num + 20, num24 - 40, num24 - 10))
87206 {
87207 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, (num24 - 10) * 16, 491);
87208 }
87209 else if (Main.rand.Next(30) == 0 && !AnyNPCs(216))
87210 {
87211 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 216);
87212 }
87213 else if (Main.rand.Next(11) == 0)
87214 {
87215 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 215);
87216 }
87217 else if (Main.rand.Next(9) == 0)
87218 {
87219 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 252);
87220 }
87221 else if (Main.rand.Next(7) == 0)
87222 {
87223 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 214);
87224 }
87225 else if (Main.rand.Next(3) == 0)
87226 {
87227 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 213);
87228 }
87229 else
87230 {
87231 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 212);
87232 }
87233 }
87234 else if (Main.invasionType == 4)
87235 {
87236 int num63 = 0;
87237 int num64 = Main.rand.Next(7);
87238 bool flag22 = (float)(Main.invasionSizeStart - Main.invasionSize) / (float)Main.invasionSizeStart >= 0.3f && !AnyNPCs(395);
87239 if (Main.rand.Next(45) == 0 && flag22)
87240 {
87241 num63 = 395;
87242 }
87243 else if (num64 >= 6)
87244 {
87245 if (Main.rand.Next(20) == 0 && flag22)
87246 {
87247 num63 = 395;
87248 }
87249 else
87250 {
87251 int num111 = Main.rand.Next(2);
87252 if (num111 == 0)
87253 {
87254 num63 = 390;
87255 }
87256 if (num111 == 1)
87257 {
87258 num63 = 386;
87259 }
87260 }
87261 }
87262 else if (num64 >= 4)
87263 {
87264 int num65 = Main.rand.Next(5);
87265 num63 = ((num65 < 2) ? 382 : ((num65 >= 4) ? 388 : 381));
87266 }
87267 else
87268 {
87269 int num66 = Main.rand.Next(4);
87270 if (num66 == 3)
87271 {
87272 if (!AnyNPCs(520))
87273 {
87274 num63 = 520;
87275 }
87276 else
87277 {
87278 num66 = Main.rand.Next(3);
87279 }
87280 }
87281 if (num66 == 0)
87282 {
87283 num63 = 385;
87284 }
87285 if (num66 == 1)
87286 {
87287 num63 = 389;
87288 }
87289 if (num66 == 2)
87290 {
87291 num63 = 383;
87292 }
87293 }
87294 if (num63 != 0)
87295 {
87296 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, num63, 1);
87297 }
87298 }
87299 }
87300 else if (num58 == 244 && !Main.remixWorld)
87301 {
87302 if (flag36)
87303 {
87304 if (Main.player[k].RollLuck(goldCritterChance) == 0)
87305 {
87306 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 592);
87307 }
87308 else
87309 {
87310 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 55);
87311 }
87312 }
87313 else if ((double)num24 > Main.worldSurface)
87314 {
87315 if (Main.rand.Next(3) == 0)
87316 {
87317 if (Main.player[k].RollLuck(goldCritterChance) == 0)
87318 {
87319 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 447);
87320 }
87321 else
87322 {
87323 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 300);
87324 }
87325 }
87326 else if (Main.rand.Next(2) == 0)
87327 {
87328 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 359);
87329 }
87330 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
87331 {
87332 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 448);
87333 }
87334 else if (Main.rand.Next(3) != 0)
87335 {
87336 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 357);
87337 }
87338 }
87339 else if (Main.player[k].RollLuck(2) == 0)
87340 {
87341 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 624);
87342 Main.npc[newNPC].timeLeft *= 10;
87343 }
87344 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
87345 {
87346 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 443);
87347 }
87348 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
87349 {
87350 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 539);
87351 }
87352 else if (Main.halloween && Main.rand.Next(3) != 0)
87353 {
87354 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 303);
87355 }
87356 else if (Main.xMas && Main.rand.Next(3) != 0)
87357 {
87358 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 337);
87359 }
87360 else if (BirthdayParty.PartyIsUp && Main.rand.Next(3) != 0)
87361 {
87362 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 540);
87363 }
87364 else if (Main.rand.Next(3) == 0)
87365 {
87366 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Utils.SelectRandom(Main.rand, new short[2] { 299, 538 }));
87367 }
87368 else
87369 {
87370 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 46);
87371 }
87372 }
87373 else if (!savedBartender && DD2Event.ReadyToFindBartender && !AnyNPCs(579) && Main.rand.Next(80) == 0 && !flag36)
87374 {
87375 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 579);
87376 }
87377 else if (Main.tile[num, num24].wall == 62 || flag3)
87378 {
87379 bool flag24 = flag14 && num24 < Main.maxTilesY - 210;
87380 if (Main.dontStarveWorld)
87381 {
87382 flag24 = num24 < Main.maxTilesY - 210;
87383 }
87384 if (Main.tile[num, num24].wall == 62 && Main.rand.Next(8) == 0 && !flag36 && flag24 && !savedStylist && !AnyNPCs(354))
87385 {
87386 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 354);
87387 }
87388 else if (Main.hardMode && Main.rand.Next(10) != 0)
87389 {
87390 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 163);
87391 }
87392 else
87393 {
87394 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 164);
87395 }
87396 }
87398 {
87399 float num68 = 1.15f;
87400 if ((double)num24 > (Main.rockLayer * 2.0 + (double)Main.maxTilesY) / 3.0)
87401 {
87402 num68 *= 0.5f;
87403 }
87404 else if ((double)num24 > Main.rockLayer)
87405 {
87406 num68 *= 0.85f;
87407 }
87408 if (Main.rand.Next(20) == 0 && !flag36 && !savedGolfer && !AnyNPCs(589))
87409 {
87410 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 589);
87411 }
87412 else if (Main.hardMode && Main.rand.Next((int)(45f * num68)) == 0 && !flag34 && (double)num24 > Main.worldSurface + 100.0)
87413 {
87414 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 510);
87415 }
87416 else if (Main.rand.Next((int)(45f * num68)) == 0 && !flag34 && (double)num24 > Main.worldSurface + 100.0 && CountNPCS(513) == 0)
87417 {
87418 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 513);
87419 }
87420 else if (Main.hardMode && Main.rand.Next(5) != 0)
87421 {
87422 List<int> list = new List<int>();
87423 if (Main.player[k].ZoneCorrupt)
87424 {
87425 list.Add(525);
87426 list.Add(525);
87427 }
87428 if (Main.player[k].ZoneCrimson)
87429 {
87430 list.Add(526);
87431 list.Add(526);
87432 }
87433 if (Main.player[k].ZoneHallow)
87434 {
87435 list.Add(527);
87436 list.Add(527);
87437 }
87438 if (list.Count == 0)
87439 {
87440 list.Add(524);
87441 list.Add(524);
87442 }
87443 if (Main.player[k].ZoneCorrupt || Main.player[k].ZoneCrimson)
87444 {
87445 list.Add(533);
87446 list.Add(529);
87447 }
87448 else
87449 {
87450 list.Add(530);
87451 list.Add(528);
87452 }
87453 list.Add(532);
87454 int num69 = Utils.SelectRandom(Main.rand, list.ToArray());
87456 list.Clear();
87457 }
87458 else
87459 {
87460 int num70 = Utils.SelectRandom<int>(Main.rand, 69, 580, 580, 580, 581);
87461 if (Main.rand.Next(15) == 0)
87462 {
87463 num70 = 537;
87464 }
87465 else if (Main.rand.Next(10) == 0)
87466 {
87467 switch (num70)
87468 {
87469 case 580:
87470 num70 = 508;
87471 break;
87472 case 581:
87473 num70 = 509;
87474 break;
87475 }
87476 }
87478 }
87479 }
87480 else if (Main.hardMode && flag36 && Main.player[k].ZoneJungle && Main.rand.Next(3) != 0)
87481 {
87482 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 157);
87483 }
87484 else if (Main.hardMode && flag36 && Main.player[k].ZoneCrimson && Main.rand.Next(3) != 0)
87485 {
87486 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 242);
87487 }
87488 else if (Main.hardMode && flag36 && Main.player[k].ZoneCrimson && Main.rand.Next(3) != 0)
87489 {
87490 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 241);
87491 }
87492 else if ((!flag4 || (!savedAngler && !AnyNPCs(376))) && flag36 && flag15)
87493 {
87494 bool flag25 = false;
87495 if (!savedAngler && !AnyNPCs(376) && ((double)num24 < Main.worldSurface - 10.0 || Main.remixWorld))
87496 {
87497 int num71 = -1;
87498 for (int num72 = num24 - 1; num72 > num24 - 50; num72--)
87499 {
87500 if (Main.tile[num, num72].liquid == 0 && !WorldGen.SolidTile(num, num72) && !WorldGen.SolidTile(num, num72 + 1) && !WorldGen.SolidTile(num, num72 + 2))
87501 {
87502 num71 = num72 + 2;
87503 break;
87504 }
87505 }
87506 if (num71 > num24)
87507 {
87508 num71 = num24;
87509 }
87510 if (num71 > 0 && !flag7)
87511 {
87512 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num71 * 16, 376);
87513 flag25 = true;
87514 }
87515 }
87516 if (!flag25 && !flag7)
87517 {
87518 int num73 = -1;
87519 int num74 = -1;
87520 if (((double)num24 < Main.worldSurface || Main.remixWorld) && num24 > 50)
87521 {
87522 for (int num75 = num24 - 1; num75 > num24 - 50; num75--)
87523 {
87524 if (Main.tile[num, num75].liquid == 0 && !WorldGen.SolidTile(num, num75) && !WorldGen.SolidTile(num, num75 + 1) && !WorldGen.SolidTile(num, num75 + 2))
87525 {
87526 num73 = num75 + 2;
87527 if (!WorldGen.SolidTile(num, num73 + 1) && !WorldGen.SolidTile(num, num73 + 2) && !Main.wallHouse[Main.tile[num, num73 + 2].wall])
87528 {
87529 num74 = num73 + 2;
87530 }
87531 if (Main.wallHouse[Main.tile[num, num73].wall])
87532 {
87533 num73 = -1;
87534 }
87535 break;
87536 }
87537 }
87538 if (num73 > num24)
87539 {
87540 num73 = num24;
87541 }
87542 if (num74 > num24)
87543 {
87544 num74 = num24;
87545 }
87546 }
87547 if (num73 > 0 && !flag7 && Main.rand.Next(10) == 0)
87548 {
87549 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num73 * 16, 602);
87550 }
87551 else if (Main.rand.Next(10) == 0)
87552 {
87553 int num76 = Main.rand.Next(3);
87554 if (num76 == 0 && num73 > 0)
87555 {
87556 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num73 * 16, 625);
87557 }
87558 else if (num76 == 1 && num74 > 0)
87559 {
87560 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num74 * 16, 615);
87561 }
87562 else if (num76 == 2)
87563 {
87564 int num77 = num24;
87565 if (num74 > 0)
87566 {
87567 num77 = num74;
87568 }
87569 if (Main.player[k].RollLuck(goldCritterChance) == 0)
87570 {
87571 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num77 * 16, 627);
87572 }
87573 else
87574 {
87575 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num77 * 16, 626);
87576 }
87577 }
87578 }
87579 else if (Main.rand.Next(40) == 0)
87580 {
87581 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 220);
87582 }
87583 else if (Main.rand.Next(18) == 0)
87584 {
87585 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 221);
87586 }
87587 else if (Main.rand.Next(8) == 0)
87588 {
87589 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 65);
87590 }
87591 else if (Main.rand.Next(3) == 0)
87592 {
87593 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 67);
87594 }
87595 else
87596 {
87597 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 64);
87598 }
87599 }
87600 }
87601 else if (!flag36 && !savedAngler && !AnyNPCs(376) && (num < WorldGen.beachDistance || num > Main.maxTilesX - WorldGen.beachDistance) && Main.tileSand[num56] && ((double)num24 < Main.worldSurface || Main.remixWorld))
87602 {
87603 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 376);
87604 }
87605 else if (!flag4 && flag36 && ((flag14 && Main.rand.Next(2) == 0) || num56 == 60))
87606 {
87607 bool flag26 = false;
87608 if (num56 == 60 && flag13 && num24 > 50 && Main.rand.Next(3) == 0 && Main.dayTime)
87609 {
87610 int num79 = -1;
87611 for (int num80 = num24 - 1; num80 > num24 - 50; num80--)
87612 {
87613 if (Main.tile[num, num80].liquid == 0 && !WorldGen.SolidTile(num, num80) && !WorldGen.SolidTile(num, num80 + 1) && !WorldGen.SolidTile(num, num80 + 2))
87614 {
87615 num79 = num80 + 2;
87616 break;
87617 }
87618 }
87619 if (num79 > num24)
87620 {
87621 num79 = num24;
87622 }
87623 if (num79 > 0 && !flag7)
87624 {
87625 flag26 = true;
87626 if (Main.rand.Next(4) == 0)
87627 {
87628 flag26 = true;
87629 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num79 * 16, 617);
87630 }
87631 else if (!flag && Main.cloudAlpha == 0f)
87632 {
87633 flag26 = true;
87634 int num81 = Main.rand.Next(1, 4);
87635 for (int num82 = 0; num82 < num81; num82++)
87636 {
87637 if (Main.player[k].RollLuck(goldCritterChance) == 0)
87638 {
87639 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num79 * 16 - 16, 613);
87640 }
87641 else
87642 {
87643 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num79 * 16 - 16, 612);
87644 }
87645 }
87646 }
87647 }
87648 }
87649 if (!flag26)
87650 {
87651 if (Main.hardMode && Main.rand.Next(3) > 0)
87652 {
87653 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 102);
87654 }
87655 else
87656 {
87657 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 58);
87658 }
87659 }
87660 }
87661 else if (!flag4 && flag36 && (double)num24 > Main.worldSurface && Main.rand.Next(3) == 0)
87662 {
87663 if (Main.hardMode && Main.rand.Next(3) > 0)
87664 {
87665 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 103);
87666 }
87667 else
87668 {
87669 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 63);
87670 }
87671 }
87672 else if (flag36 && Main.rand.Next(4) == 0 && ((num > WorldGen.oceanDistance && num < Main.maxTilesX - WorldGen.oceanDistance) || (double)num24 > Main.worldSurface + 50.0))
87673 {
87674 if (Main.player[k].ZoneCorrupt)
87675 {
87676 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 57);
87677 }
87678 else if (Main.player[k].ZoneCrimson)
87679 {
87680 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 465);
87681 }
87682 else if ((double)num24 < Main.worldSurface && num24 > 50 && Main.rand.Next(3) != 0 && Main.dayTime)
87683 {
87684 int num83 = -1;
87685 for (int num84 = num24 - 1; num84 > num24 - 50; num84--)
87686 {
87687 if (Main.tile[num, num84].liquid == 0 && !WorldGen.SolidTile(num, num84) && !WorldGen.SolidTile(num, num84 + 1) && !WorldGen.SolidTile(num, num84 + 2))
87688 {
87689 num83 = num84 + 2;
87690 break;
87691 }
87692 }
87693 if (num83 > num24)
87694 {
87695 num83 = num24;
87696 }
87697 if (num83 > 0 && !flag7)
87698 {
87699 if (Main.rand.Next(5) == 0 && (num35 == 2 || num35 == 477))
87700 {
87701 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num83 * 16, 616);
87702 }
87703 else if (num35 == 53)
87704 {
87705 if (Main.rand.Next(2) == 0 && !flag && Main.cloudAlpha == 0f)
87706 {
87707 int num85 = Main.rand.Next(1, 4);
87708 for (int num86 = 0; num86 < num85; num86++)
87709 {
87710 if (Main.player[k].RollLuck(goldCritterChance) == 0)
87711 {
87712 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num83 * 16 - 16, 613);
87713 }
87714 else
87715 {
87716 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num83 * 16 - 16, 612);
87717 }
87718 }
87719 }
87720 else
87721 {
87722 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num83 * 16, 608);
87723 }
87724 }
87725 else if (Main.rand.Next(2) == 0)
87726 {
87727 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num83 * 16, 362);
87728 }
87729 else
87730 {
87731 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num83 * 16, 364);
87732 }
87733 }
87734 else if (num35 == 53 && num > WorldGen.beachDistance && num < Main.maxTilesX - WorldGen.beachDistance)
87735 {
87736 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num83 * 16, 607);
87737 }
87738 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
87739 {
87740 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 592);
87741 }
87742 else
87743 {
87744 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 55);
87745 }
87746 }
87747 else if (num35 == 53 && num > WorldGen.beachDistance && num < Main.maxTilesX - WorldGen.beachDistance)
87748 {
87749 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 607);
87750 }
87751 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
87752 {
87753 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 592);
87754 }
87755 else
87756 {
87757 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 55);
87758 }
87759 }
87760 else if (downedGoblins && Main.player[k].RollLuck(20) == 0 && !flag36 && flag14 && num24 < Main.maxTilesY - 210 && !savedGoblin && !AnyNPCs(105))
87761 {
87762 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 105);
87763 }
87764 else if (Main.hardMode && Main.player[k].RollLuck(20) == 0 && !flag36 && flag14 && num24 < Main.maxTilesY - 210 && !savedWizard && !AnyNPCs(106))
87765 {
87766 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 106);
87767 }
87768 else if (downedBoss3 && Main.player[k].RollLuck(20) == 0 && !flag36 && flag14 && num24 < Main.maxTilesY - 210 && !unlockedSlimeOldSpawn && !AnyNPCs(685))
87769 {
87770 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 685);
87771 }
87772 else if (flag4)
87773 {
87774 if (Main.player[k].ZoneGraveyard)
87775 {
87776 if (!flag36)
87777 {
87778 if (Main.rand.Next(2) == 0)
87779 {
87780 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 606);
87781 }
87782 else
87783 {
87784 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 610);
87785 }
87786 }
87787 }
87788 else if (!flag7 && flag16)
87789 {
87790 if (flag36)
87791 {
87792 int num87 = -1;
87793 int num88 = -1;
87794 if (((double)num24 < Main.worldSurface || Main.remixWorld) && num24 > 50)
87795 {
87796 for (int num90 = num24 - 1; num90 > num24 - 50; num90--)
87797 {
87798 if (Main.tile[num, num90].liquid == 0 && !WorldGen.SolidTile(num, num90) && !WorldGen.SolidTile(num, num90 + 1) && !WorldGen.SolidTile(num, num90 + 2))
87799 {
87800 num87 = num90 + 2;
87801 if (!WorldGen.SolidTile(num, num87 + 1) && !WorldGen.SolidTile(num, num87 + 2))
87802 {
87803 num88 = num87 + 2;
87804 }
87805 break;
87806 }
87807 }
87808 if (num87 > num24)
87809 {
87810 num87 = num24;
87811 }
87812 if (num88 > num24)
87813 {
87814 num88 = num24;
87815 }
87816 }
87817 if (Main.rand.Next(2) == 0)
87818 {
87819 int num91 = Main.rand.Next(3);
87820 if (num91 == 0 && num87 > 0)
87821 {
87822 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num87 * 16, 625);
87823 }
87824 else if (num91 == 1 && num88 > 0)
87825 {
87826 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num88 * 16, 615);
87827 }
87828 else if (num91 == 2)
87829 {
87830 int num92 = num24;
87831 if (num88 > 0)
87832 {
87833 num92 = num88;
87834 }
87835 if (Main.player[k].RollLuck(goldCritterChance) == 0)
87836 {
87837 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num92 * 16, 627);
87838 }
87839 else
87840 {
87841 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num92 * 16, 626);
87842 }
87843 }
87844 }
87845 else if (num87 > 0 && !flag7)
87846 {
87847 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num87 * 16, 602);
87848 }
87849 }
87850 else
87851 {
87852 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 602);
87853 }
87854 }
87855 else if ((num56 == 2 || num56 == 477 || num56 == 53) && !tooWindyForButterflies && Main.raining && Main.dayTime && Main.rand.Next(2) == 0 && ((double)num24 <= Main.worldSurface || Main.remixWorld) && FindCattailTop(num, num24, out cattailX, out cattailY))
87856 {
87857 if (Main.player[k].RollLuck(goldCritterChance) == 0)
87858 {
87859 NewNPC(GetSpawnSourceForNaturalSpawn(), cattailX * 16 + 8, cattailY * 16, 601);
87860 }
87861 else
87862 {
87864 }
87865 if (Main.rand.Next(3) == 0)
87866 {
87868 }
87869 if (Main.rand.Next(3) == 0)
87870 {
87872 }
87873 }
87874 else if (flag36)
87875 {
87876 if (flag13 && num24 > 50 && Main.rand.Next(3) != 0 && Main.dayTime)
87877 {
87878 int num93 = -1;
87879 for (int num94 = num24 - 1; num94 > num24 - 50; num94--)
87880 {
87881 if (Main.tile[num, num94].liquid == 0 && !WorldGen.SolidTile(num, num94) && !WorldGen.SolidTile(num, num94 + 1) && !WorldGen.SolidTile(num, num94 + 2))
87882 {
87883 num93 = num94 + 2;
87884 break;
87885 }
87886 }
87887 if (num93 > num24)
87888 {
87889 num93 = num24;
87890 }
87891 if (num93 > 0 && !flag7)
87892 {
87893 switch (num35)
87894 {
87895 case 60:
87896 if (Main.rand.Next(3) != 0 && !flag && Main.cloudAlpha == 0f)
87897 {
87898 int num97 = Main.rand.Next(1, 4);
87899 for (int num98 = 0; num98 < num97; num98++)
87900 {
87901 if (Main.player[k].RollLuck(goldCritterChance) == 0)
87902 {
87903 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num93 * 16 - 16, 613);
87904 }
87905 else
87906 {
87907 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num93 * 16 - 16, 612);
87908 }
87909 }
87910 }
87911 else
87912 {
87913 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num93 * 16, 617);
87914 }
87915 break;
87916 case 53:
87917 if (Main.rand.Next(3) != 0 && !flag && Main.cloudAlpha == 0f)
87918 {
87919 int num95 = Main.rand.Next(1, 4);
87920 for (int num96 = 0; num96 < num95; num96++)
87921 {
87922 if (Main.player[k].RollLuck(goldCritterChance) == 0)
87923 {
87924 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num93 * 16 - 16, 613);
87925 }
87926 else
87927 {
87928 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num93 * 16 - 16, 612);
87929 }
87930 }
87931 }
87932 else
87933 {
87934 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num93 * 16, 608);
87935 }
87936 break;
87937 default:
87938 if (Main.rand.Next(5) == 0 && (num35 == 2 || num35 == 477))
87939 {
87940 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num93 * 16, 616);
87941 }
87942 else if (Main.rand.Next(2) == 0)
87943 {
87944 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num93 * 16, 362);
87945 }
87946 else
87947 {
87948 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num93 * 16, 364);
87949 }
87950 break;
87951 }
87952 }
87953 else if (num35 == 53 && num > WorldGen.beachDistance && num < Main.maxTilesX - WorldGen.beachDistance)
87954 {
87955 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 607);
87956 }
87957 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
87958 {
87959 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 592);
87960 }
87961 else
87962 {
87963 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 55);
87964 }
87965 }
87966 else if (num35 == 53 && num > WorldGen.beachDistance && num < Main.maxTilesX - WorldGen.beachDistance)
87967 {
87968 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 607);
87969 }
87970 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
87971 {
87972 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 592);
87973 }
87974 else
87975 {
87976 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 55);
87977 }
87978 }
87979 else if (num56 == 147 || num56 == 161)
87980 {
87981 if (Main.rand.Next(2) == 0)
87982 {
87983 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 148);
87984 }
87985 else
87986 {
87987 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 149);
87988 }
87989 }
87990 else if (num56 == 60)
87991 {
87992 if (Main.dayTime && Main.rand.Next(3) != 0)
87993 {
87994 switch (Main.rand.Next(5))
87995 {
87996 case 0:
87997 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 671);
87998 break;
87999 case 1:
88000 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 672);
88001 break;
88002 case 2:
88003 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 673);
88004 break;
88005 case 3:
88006 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 674);
88007 break;
88008 default:
88009 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 675);
88010 break;
88011 }
88012 }
88013 else
88014 {
88016 }
88017 }
88018 else if (num56 == 53)
88019 {
88020 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(366, 368));
88021 }
88022 else
88023 {
88024 if (num56 != 2 && num56 != 477 && num56 != 109 && num56 != 492 && !((double)num24 > Main.worldSurface))
88025 {
88026 break;
88027 }
88028 bool flag27 = flag13;
88029 if (Main.raining && num24 <= Main.UnderworldLayer)
88030 {
88031 if (flag14 && Main.rand.Next(5) == 0)
88032 {
88034 }
88035 else if (flag14 && Main.rand.Next(5) == 0)
88036 {
88038 }
88039 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
88040 {
88041 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 448);
88042 }
88043 else if (Main.rand.Next(3) != 0)
88044 {
88045 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 357);
88046 }
88047 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
88048 {
88049 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 593);
88050 }
88051 else
88052 {
88053 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 230);
88054 }
88055 }
88056 else if (!Main.dayTime && Main.numClouds <= 55 && Main.cloudBGActive == 0f && Star.starfallBoost > 3f && flag27 && Main.player[k].RollLuck(2) == 0)
88057 {
88058 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 484);
88059 }
88060 else if (!tooWindyForButterflies && !Main.dayTime && Main.rand.Next(fireFlyFriendly) == 0 && flag27)
88061 {
88062 int num99 = 355;
88063 if (num56 == 109)
88064 {
88065 num99 = 358;
88066 }
88068 if (Main.rand.Next(fireFlyMultiple) == 0)
88069 {
88070 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 - 16, num24 * 16, num99);
88071 }
88072 if (Main.rand.Next(fireFlyMultiple) == 0)
88073 {
88074 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + 16, num24 * 16, num99);
88075 }
88076 if (Main.rand.Next(fireFlyMultiple) == 0)
88077 {
88078 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16 - 16, num99);
88079 }
88080 if (Main.rand.Next(fireFlyMultiple) == 0)
88081 {
88082 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16 + 16, num99);
88083 }
88084 }
88085 else if (Main.cloudAlpha == 0f && !Main.dayTime && Main.rand.Next(5) == 0 && flag27)
88086 {
88087 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 611);
88088 }
88089 else if (Main.dayTime && Main.time < 18000.0 && Main.rand.Next(3) != 0 && flag27)
88090 {
88091 int num101 = Main.rand.Next(4);
88092 if (Main.player[k].RollLuck(goldCritterChance) == 0)
88093 {
88094 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 442);
88095 }
88096 else
88097 {
88098 switch (num101)
88099 {
88100 case 0:
88101 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 297);
88102 break;
88103 case 1:
88104 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 298);
88105 break;
88106 default:
88107 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 74);
88108 break;
88109 }
88110 }
88111 }
88112 else if (!tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(stinkBugChance) == 0 && flag27)
88113 {
88114 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 669);
88115 if (Main.rand.Next(4) == 0)
88116 {
88117 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 - 16, num24 * 16, 669);
88118 }
88119 if (Main.rand.Next(4) == 0)
88120 {
88121 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + 16, num24 * 16, 669);
88122 }
88123 }
88124 else if (!tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(butterflyChance) == 0 && flag27)
88125 {
88126 if (Main.player[k].RollLuck(goldCritterChance) == 0)
88127 {
88128 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 444);
88129 }
88130 else
88131 {
88132 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 356);
88133 }
88134 if (Main.rand.Next(4) == 0)
88135 {
88136 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 - 16, num24 * 16, 356);
88137 }
88138 if (Main.rand.Next(4) == 0)
88139 {
88140 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + 16, num24 * 16, 356);
88141 }
88142 }
88143 else if (tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(butterflyChance / 2) == 0 && flag27)
88144 {
88145 if (Main.player[k].RollLuck(goldCritterChance) == 0)
88146 {
88147 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 605);
88148 }
88149 else
88150 {
88151 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 604);
88152 }
88153 if (Main.rand.Next(3) != 0)
88154 {
88155 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 604);
88156 }
88157 if (Main.rand.Next(2) == 0)
88158 {
88159 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 604);
88160 }
88161 if (Main.rand.Next(3) == 0)
88162 {
88163 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 604);
88164 }
88165 if (Main.rand.Next(4) == 0)
88166 {
88167 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 604);
88168 }
88169 }
88170 else if (Main.rand.Next(2) == 0 && flag27)
88171 {
88172 int num102 = Main.rand.Next(4);
88173 if (Main.player[k].RollLuck(goldCritterChance) == 0)
88174 {
88175 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 442);
88176 }
88177 else
88178 {
88179 switch (num102)
88180 {
88181 case 0:
88182 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 297);
88183 break;
88184 case 1:
88185 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 298);
88186 break;
88187 default:
88188 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 74);
88189 break;
88190 }
88191 }
88192 }
88193 else if (num24 > Main.UnderworldLayer)
88194 {
88195 if (Main.remixWorld && (double)(Main.player[k].Center.X / 16f) > (double)Main.maxTilesX * 0.39 + 50.0 && (double)(Main.player[k].Center.X / 16f) < (double)Main.maxTilesX * 0.61 && Main.rand.Next(2) == 0)
88196 {
88197 if (Main.rand.Next(2) == 0)
88198 {
88200 }
88201 else
88202 {
88204 }
88205 }
88206 else
88207 {
88209 }
88210 }
88211 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
88212 {
88213 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 443);
88214 }
88215 else if (Main.player[k].RollLuck(goldCritterChance) == 0 && flag27)
88216 {
88217 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 539);
88218 }
88219 else if (Main.halloween && Main.rand.Next(3) != 0)
88220 {
88221 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 303);
88222 }
88223 else if (Main.xMas && Main.rand.Next(3) != 0)
88224 {
88225 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 337);
88226 }
88227 else if (BirthdayParty.PartyIsUp && Main.rand.Next(3) != 0)
88228 {
88229 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 540);
88230 }
88231 else if (Main.rand.Next(3) == 0)
88232 {
88233 if (Main.remixWorld)
88234 {
88235 if ((double)num24 < Main.rockLayer && (double)num24 > Main.worldSurface)
88236 {
88237 if (Main.rand.Next(5) == 0)
88238 {
88240 }
88241 }
88242 else if (flag27)
88243 {
88244 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Utils.SelectRandom(Main.rand, new short[2] { 299, 538 }));
88245 }
88246 }
88247 else if ((double)num24 >= Main.rockLayer && num24 <= Main.UnderworldLayer)
88248 {
88249 if (Main.rand.Next(5) == 0)
88250 {
88252 }
88253 }
88254 else if (flag27)
88255 {
88256 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Utils.SelectRandom(Main.rand, new short[2] { 299, 538 }));
88257 }
88258 }
88259 else if (Main.remixWorld)
88260 {
88261 if ((double)num24 < Main.rockLayer && (double)num24 > Main.worldSurface)
88262 {
88263 if ((double)num24 >= Main.rockLayer && num24 <= Main.UnderworldLayer)
88264 {
88265 if (Main.rand.Next(5) == 0)
88266 {
88268 }
88269 }
88270 else
88271 {
88272 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 46);
88273 }
88274 }
88275 }
88276 else if ((double)num24 >= Main.rockLayer && num24 <= Main.UnderworldLayer)
88277 {
88278 if (Main.rand.Next(5) == 0)
88279 {
88281 }
88282 }
88283 else
88284 {
88285 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 46);
88286 }
88287 }
88288 }
88289 else if (Main.player[k].ZoneDungeon)
88290 {
88291 int num103 = 0;
88292 ushort wall = Main.tile[num, num24].wall;
88293 ushort wall2 = Main.tile[num, num24 - 1].wall;
88294 if (wall == 94 || wall == 96 || wall == 98 || wall2 == 94 || wall2 == 96 || wall2 == 98)
88295 {
88296 num103 = 1;
88297 }
88298 if (wall == 95 || wall == 97 || wall == 99 || wall2 == 95 || wall2 == 97 || wall2 == 99)
88299 {
88300 num103 = 2;
88301 }
88302 if (Main.player[k].RollLuck(7) == 0)
88303 {
88304 num103 = Main.rand.Next(3);
88305 }
88306 bool flag28 = !downedBoss3;
88307 if (Main.drunkWorld && Main.player[k].position.Y / 16f < (float)(Main.dungeonY + 40))
88308 {
88309 flag28 = false;
88310 }
88311 if (flag28)
88312 {
88313 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 68);
88314 }
88315 else if (downedBoss3 && !savedMech && Main.rand.Next(5) == 0 && !flag36 && !AnyNPCs(123) && (double)num24 > (Main.worldSurface * 4.0 + Main.rockLayer) / 5.0)
88316 {
88317 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 123);
88318 }
88319 else if (flag6 && Main.rand.Next(30) == 0)
88320 {
88321 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 287);
88322 }
88323 else if (flag6 && num103 == 0 && Main.rand.Next(15) == 0)
88324 {
88325 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 293);
88326 }
88327 else if (flag6 && num103 == 1 && Main.rand.Next(15) == 0)
88328 {
88329 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 291);
88330 }
88331 else if (flag6 && num103 == 2 && Main.rand.Next(15) == 0)
88332 {
88333 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 292);
88334 }
88335 else if (flag6 && !AnyNPCs(290) && num103 == 0 && Main.rand.Next(35) == 0)
88336 {
88337 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 290);
88338 }
88339 else if (flag6 && (num103 == 1 || num103 == 2) && Main.rand.Next(30) == 0)
88340 {
88341 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 289);
88342 }
88343 else if (flag6 && Main.rand.Next(20) == 0)
88344 {
88345 int num104 = 281;
88346 if (num103 == 0)
88347 {
88348 num104 += 2;
88349 }
88350 if (num103 == 2)
88351 {
88352 num104 += 4;
88353 }
88354 num104 += Main.rand.Next(2);
88355 if (!AnyNPCs(num104))
88356 {
88358 }
88359 }
88360 else if (flag6 && Main.rand.Next(3) != 0)
88361 {
88362 int num105 = 269;
88363 if (num103 == 0)
88364 {
88365 num105 += 4;
88366 }
88367 if (num103 == 2)
88368 {
88369 num105 += 8;
88370 }
88371 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, num105 + Main.rand.Next(4));
88372 }
88373 else if (Main.player[k].RollLuck(35) == 0)
88374 {
88375 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 71);
88376 }
88377 else if (num103 == 1 && Main.rand.Next(3) == 0 && !NearSpikeBall(num, num24))
88378 {
88379 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 70);
88380 }
88381 else if (num103 == 2 && Main.rand.Next(5) == 0)
88382 {
88383 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 72);
88384 }
88385 else if (num103 == 0 && Main.rand.Next(7) == 0)
88386 {
88387 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 34);
88388 }
88389 else if (Main.rand.Next(7) == 0)
88390 {
88391 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 32);
88392 }
88393 else
88394 {
88395 switch (Main.rand.Next(5))
88396 {
88397 case 0:
88398 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 294);
88399 break;
88400 case 1:
88401 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 295);
88402 break;
88403 case 2:
88404 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 296);
88405 break;
88406 default:
88407 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 31);
88408 if (Main.rand.Next(4) == 0)
88409 {
88410 Main.npc[newNPC].SetDefaults(-14);
88411 }
88412 else if (Main.rand.Next(5) == 0)
88413 {
88414 Main.npc[newNPC].SetDefaults(-13);
88415 }
88416 break;
88417 }
88418 }
88419 }
88420 else if (Main.player[k].ZoneMeteor)
88421 {
88422 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 23);
88423 }
88424 else if (DD2Event.Ongoing && Main.player[k].ZoneOldOneArmy)
88425 {
88427 }
88428 else if ((Main.remixWorld || (double)num24 <= Main.worldSurface) && !Main.dayTime && Main.snowMoon)
88429 {
88430 int num106 = waveNumber;
88431 if (Main.rand.Next(30) == 0 && CountNPCS(341) < 4)
88432 {
88433 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 341);
88434 }
88435 else if (num106 >= 20)
88436 {
88437 int num107 = Main.rand.Next(3);
88438 if (!(num57 >= (float)num46 * num67))
88439 {
88440 newNPC = num107 switch
88441 {
88442 0 => NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 345),
88443 1 => NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 346),
88444 _ => NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 344),
88445 };
88446 }
88447 }
88448 else if (num106 >= 19)
88449 {
88450 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(345) < 4) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 345) : ((Main.rand.Next(10) == 0 && CountNPCS(346) < 5) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 346) : ((Main.rand.Next(10) != 0 || CountNPCS(344) >= 7) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 343) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 344))));
88451 }
88452 else if (num106 >= 18)
88453 {
88454 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(345) < 3) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 345) : ((Main.rand.Next(10) == 0 && CountNPCS(346) < 4) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 346) : ((Main.rand.Next(10) == 0 && CountNPCS(344) < 6) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 344) : ((Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 348) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 343) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 351))))));
88455 }
88456 else if (num106 >= 17)
88457 {
88458 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(345) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 345) : ((Main.rand.Next(10) == 0 && CountNPCS(346) < 3) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 346) : ((Main.rand.Next(10) == 0 && CountNPCS(344) < 5) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 344) : ((Main.rand.Next(4) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 347) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 343) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 351))))));
88459 }
88460 else if (num106 >= 16)
88461 {
88462 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(345) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 345) : ((Main.rand.Next(10) == 0 && CountNPCS(346) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 346) : ((Main.rand.Next(10) == 0 && CountNPCS(344) < 4) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 344) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 343) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 352)))));
88463 }
88464 else if (num106 >= 15)
88465 {
88466 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(345)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 345) : ((Main.rand.Next(10) == 0 && CountNPCS(346) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 346) : ((Main.rand.Next(10) == 0 && CountNPCS(344) < 3) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 344) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 343) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 347)))));
88467 }
88468 else
88469 {
88470 switch (num106)
88471 {
88472 case 14:
88473 if (Main.rand.Next(10) == 0 && !AnyNPCs(345))
88474 {
88475 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 345);
88476 }
88477 else if (Main.rand.Next(10) == 0 && !AnyNPCs(346))
88478 {
88479 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 346);
88480 }
88481 else if (Main.rand.Next(10) == 0 && !AnyNPCs(344))
88482 {
88483 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 344);
88484 }
88485 else if (Main.rand.Next(3) == 0)
88486 {
88487 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 343);
88488 }
88489 break;
88490 case 13:
88491 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(345)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 345) : ((Main.rand.Next(10) == 0 && !AnyNPCs(346)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 346) : ((Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 352) : ((Main.rand.Next(6) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 343) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 347) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 342))))));
88492 break;
88493 case 12:
88494 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(345)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 345) : ((Main.rand.Next(10) == 0 && !AnyNPCs(344)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 344) : ((Main.rand.Next(8) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 343) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 342)))));
88495 break;
88496 case 11:
88497 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(345)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 345) : ((Main.rand.Next(6) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 352) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 342))));
88498 break;
88499 case 10:
88500 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(346)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 346) : ((Main.rand.Next(10) == 0 && CountNPCS(344) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 344) : ((Main.rand.Next(6) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 351) : ((Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 348) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 347))))));
88501 break;
88502 case 9:
88503 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(346)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 346) : ((Main.rand.Next(10) == 0 && !AnyNPCs(344)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 344) : ((Main.rand.Next(2) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 348) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 342) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 347)))));
88504 break;
88505 case 8:
88506 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(346)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 346) : ((Main.rand.Next(8) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 351) : ((Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 348) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 350) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 347)))));
88507 break;
88508 case 7:
88509 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(346)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 346) : ((Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 342) : ((Main.rand.Next(4) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 350))));
88510 break;
88511 case 6:
88512 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(344) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 344) : ((Main.rand.Next(4) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 347) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 350) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 348))));
88513 break;
88514 case 5:
88515 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(344)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 344) : ((Main.rand.Next(4) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 350) : ((Main.rand.Next(8) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 348))));
88516 break;
88517 case 4:
88518 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(344)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 344) : ((Main.rand.Next(4) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 350) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 342))));
88519 break;
88520 case 3:
88521 newNPC = ((Main.rand.Next(8) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 348) : ((Main.rand.Next(4) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 350) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 342))));
88522 break;
88523 case 2:
88524 newNPC = ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 350));
88525 break;
88526 default:
88527 newNPC = ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 342));
88528 break;
88529 }
88530 }
88531 }
88532 else if ((Main.remixWorld || (double)num24 <= Main.worldSurface) && !Main.dayTime && Main.pumpkinMoon)
88533 {
88534 int num108 = waveNumber;
88535 if (waveNumber >= 20)
88536 {
88537 if (!(num57 >= (float)num46 * num67))
88538 {
88539 if (Main.rand.Next(2) == 0 && CountNPCS(327) < 2)
88540 {
88541 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 327);
88542 }
88543 else if (Main.rand.Next(3) != 0 && CountNPCS(325) < 2)
88544 {
88545 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 325);
88546 }
88547 else if (CountNPCS(315) < 3)
88548 {
88549 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 315);
88550 }
88551 }
88552 }
88553 else
88554 {
88555 switch (num108)
88556 {
88557 case 19:
88558 if (Main.rand.Next(5) == 0 && CountNPCS(327) < 2)
88559 {
88560 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 327);
88561 }
88562 else if (Main.rand.Next(5) == 0 && CountNPCS(325) < 2)
88563 {
88564 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 325);
88565 }
88566 else if (!(num57 >= (float)num46 * num67) && CountNPCS(315) < 5)
88567 {
88568 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 315);
88569 }
88570 break;
88571 case 18:
88572 if (Main.rand.Next(7) == 0 && CountNPCS(327) < 2)
88573 {
88574 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 327);
88575 }
88576 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 325) : ((Main.rand.Next(7) != 0 || CountNPCS(315) >= 3) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 330) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 315)));
88577 break;
88578 case 17:
88579 if (Main.rand.Next(7) == 0 && CountNPCS(327) < 2)
88580 {
88581 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 327);
88582 }
88583 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 325) : ((Main.rand.Next(7) == 0 && CountNPCS(315) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 315) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 329) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 330))));
88584 break;
88585 case 16:
88586 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(327) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 327) : ((Main.rand.Next(10) == 0 && CountNPCS(315) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 315) : ((Main.rand.Next(6) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 330) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 326) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 329)))));
88587 break;
88588 case 15:
88589 if (Main.rand.Next(10) == 0 && !AnyNPCs(327))
88590 {
88591 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 327);
88592 }
88593 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 325) : ((Main.rand.Next(5) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 330) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 326))));
88594 break;
88595 case 14:
88596 if (Main.rand.Next(10) == 0 && !AnyNPCs(327))
88597 {
88598 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 327);
88599 }
88600 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 325) : ((Main.rand.Next(10) == 0 && !AnyNPCs(315)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 315) : ((Main.rand.Next(10) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 330) : ((Main.rand.Next(7) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 329) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 326))))));
88601 break;
88602 case 13:
88603 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 325) : ((Main.rand.Next(10) == 0 && CountNPCS(315) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 315) : ((Main.rand.Next(6) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 330) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 326) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 329)))));
88604 break;
88605 case 12:
88606 newNPC = ((Main.rand.Next(5) != 0 || AnyNPCs(327)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 330) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 327));
88607 break;
88608 case 11:
88609 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 325) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 326) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 330)));
88610 break;
88611 case 10:
88612 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(327)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 327) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 329)));
88613 break;
88614 case 9:
88615 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 325) : ((Main.rand.Next(8) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 330) : ((Main.rand.Next(5) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 329) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 326)))));
88616 break;
88617 case 8:
88618 newNPC = ((Main.rand.Next(8) == 0 && CountNPCS(315) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 315) : ((Main.rand.Next(4) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 329) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 330)));
88619 break;
88620 case 7:
88621 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 325) : ((Main.rand.Next(4) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 329) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 330)));
88622 break;
88623 case 6:
88624 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 325) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 326)));
88625 break;
88626 case 5:
88627 newNPC = ((Main.rand.Next(10) != 0 || AnyNPCs(315)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 329) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 315));
88628 break;
88629 case 4:
88630 newNPC = ((Main.rand.Next(8) == 0 && !AnyNPCs(325)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 330) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 326)));
88631 break;
88632 case 3:
88633 newNPC = ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 326) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 329));
88634 break;
88635 case 2:
88636 newNPC = ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 326));
88637 break;
88638 default:
88639 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(305, 315));
88640 break;
88641 }
88642 }
88643 }
88644 else if (((double)num24 <= Main.worldSurface || (Main.remixWorld && (double)num24 > Main.rockLayer)) && Main.dayTime && Main.eclipse)
88645 {
88646 bool flag29 = false;
88648 {
88649 flag29 = true;
88650 }
88651 newNPC = ((downedPlantBoss && Main.rand.Next(80) == 0 && !AnyNPCs(477)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 477) : ((Main.rand.Next(50) == 0 && !AnyNPCs(251)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 251) : ((downedPlantBoss && Main.rand.Next(5) == 0 && !AnyNPCs(466)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 466) : ((downedPlantBoss && Main.rand.Next(20) == 0 && !AnyNPCs(463)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 463) : ((downedPlantBoss && Main.rand.Next(20) == 0 && CountNPCS(467) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 467) : ((Main.rand.Next(15) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 159) : ((flag29 && Main.rand.Next(13) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 253) : ((Main.rand.Next(8) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 469) : ((downedPlantBoss && Main.rand.Next(7) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 468) : ((downedPlantBoss && Main.rand.Next(5) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 460) : ((Main.rand.Next(4) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 162) : ((Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 461) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 166) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 462))))))))))))));
88652 }
88654 {
88655 int num109 = Main.rand.Next(583, 586);
88656 if (Main.tenthAnniversaryWorld && !Main.getGoodWorld && Main.rand.Next(4) != 0)
88657 {
88658 num109 = 583;
88659 }
88661 Main.npc[newNPC].ai[2] = 2f;
88662 Main.npc[newNPC].TargetClosest();
88663 Main.npc[newNPC].ai[3] = 0f;
88664 }
88665 else if (!Main.remixWorld && !flag36 && (!Main.dayTime || Main.tile[num, num24].wall > 0) && Main.tile[num89, num100].wall == 244 && !Main.eclipse && !Main.bloodMoon && Main.player[k].RollLuck(30) == 0 && CountNPCS(624) <= Main.rand.Next(3))
88666 {
88667 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 624);
88668 }
88669 else if (!Main.player[k].ZoneCorrupt && !Main.player[k].ZoneCrimson && !flag36 && !Main.eclipse && !Main.bloodMoon && Main.player[k].RollLuck(range) == 0 && ((!Main.remixWorld && (double)num24 >= Main.worldSurface * 0.800000011920929 && (double)num24 < Main.worldSurface * 1.100000023841858) || (Main.remixWorld && (double)num24 > Main.rockLayer && num24 < Main.maxTilesY - 350)) && CountNPCS(624) <= Main.rand.Next(3) && (!Main.dayTime || Main.tile[num, num24].wall > 0) && (Main.tile[num, num24].wall == 63 || Main.tile[num, num24].wall == 2 || Main.tile[num, num24].wall == 196 || Main.tile[num, num24].wall == 197 || Main.tile[num, num24].wall == 198 || Main.tile[num, num24].wall == 199))
88670 {
88671 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 624);
88672 }
88673 else if (Main.hardMode && num35 == 70 && flag36)
88674 {
88675 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 256);
88676 }
88677 else if (num35 == 70 && (double)num24 <= Main.worldSurface && Main.rand.Next(3) != 0)
88678 {
88679 if ((!Main.hardMode && Main.rand.Next(6) == 0) || Main.rand.Next(12) == 0)
88680 {
88681 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 360);
88682 }
88683 else if (Main.rand.Next(3) != 0)
88684 {
88685 newNPC = ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 255) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 254));
88686 }
88687 else if (Main.rand.Next(4) != 0)
88688 {
88689 newNPC = ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 258) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 257));
88690 }
88691 else if (Main.hardMode && Main.rand.Next(3) != 0)
88692 {
88693 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 260);
88694 Main.npc[newNPC].ai[0] = num;
88695 Main.npc[newNPC].ai[1] = num24;
88696 Main.npc[newNPC].netUpdate = true;
88697 }
88698 else
88699 {
88700 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 259);
88701 Main.npc[newNPC].ai[0] = num;
88702 Main.npc[newNPC].ai[1] = num24;
88703 Main.npc[newNPC].netUpdate = true;
88704 }
88705 }
88706 else if (num35 == 70 && Main.hardMode && (double)num24 >= Main.worldSurface && Main.rand.Next(3) != 0 && (!Main.remixWorld || Main.getGoodWorld || num24 < Main.maxTilesY - 360))
88707 {
88708 if (Main.hardMode && Main.player[k].RollLuck(5) == 0)
88709 {
88710 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 374);
88711 }
88712 else if ((!Main.hardMode && Main.rand.Next(4) == 0) || Main.rand.Next(8) == 0)
88713 {
88714 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 360);
88715 }
88716 else if (Main.rand.Next(4) != 0)
88717 {
88718 newNPC = ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 258) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 257));
88719 }
88720 else if (Main.hardMode && Main.rand.Next(3) != 0)
88721 {
88722 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 260);
88723 Main.npc[newNPC].ai[0] = num;
88724 Main.npc[newNPC].ai[1] = num24;
88725 Main.npc[newNPC].netUpdate = true;
88726 }
88727 else
88728 {
88729 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 259);
88730 Main.npc[newNPC].ai[0] = num;
88731 Main.npc[newNPC].ai[1] = num24;
88732 Main.npc[newNPC].netUpdate = true;
88733 }
88734 }
88735 else if (Main.player[k].ZoneCorrupt && Main.rand.Next(maxValue) == 0 && !flag34)
88736 {
88737 newNPC = ((!Main.hardMode || Main.rand.Next(4) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 7, 1) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 98, 1));
88738 }
88739 else if (Main.remixWorld && !Main.hardMode && (double)num24 > Main.worldSurface && Main.player[k].RollLuck(100) == 0)
88740 {
88741 newNPC = ((!Main.player[k].ZoneSnow) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 85) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 629));
88742 }
88743 else if (Main.hardMode && (double)num24 > Main.worldSurface && Main.player[k].RollLuck(Main.tenthAnniversaryWorld ? 25 : 75) == 0)
88744 {
88745 newNPC = ((Main.rand.Next(2) == 0 && Main.player[k].ZoneCorrupt && !AnyNPCs(473)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 473) : ((Main.rand.Next(2) == 0 && Main.player[k].ZoneCrimson && !AnyNPCs(474)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 474) : ((Main.rand.Next(2) == 0 && Main.player[k].ZoneHallow && !AnyNPCs(475)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 475) : ((Main.tenthAnniversaryWorld && Main.rand.Next(2) == 0 && Main.player[k].ZoneJungle && !AnyNPCs(476)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 476) : ((!Main.player[k].ZoneSnow) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 85) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 629))))));
88746 }
88747 else if (Main.hardMode && Main.tile[num, num24].wall == 2 && Main.rand.Next(20) == 0)
88748 {
88749 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 85);
88750 }
88751 else if (Main.hardMode && (double)num24 <= Main.worldSurface && !Main.dayTime && (Main.rand.Next(20) == 0 || (Main.rand.Next(5) == 0 && Main.moonPhase == 4)))
88752 {
88753 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 82);
88754 }
88755 else if (Main.hardMode && Main.halloween && (double)num24 <= Main.worldSurface && !Main.dayTime && Main.rand.Next(10) == 0)
88756 {
88757 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 304);
88758 }
88759 else if (num56 == 60 && Main.player[k].RollLuck(500) == 0 && !Main.dayTime)
88760 {
88761 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 52);
88762 }
88763 else if (num56 == 60 && (double)num24 > Main.worldSurface && Main.rand.Next(60) == 0)
88764 {
88765 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 219);
88766 }
88767 else if ((double)num24 > Main.worldSurface && num24 < Main.maxTilesY - 210 && !Main.player[k].ZoneSnow && !Main.player[k].ZoneCrimson && !Main.player[k].ZoneCorrupt && !Main.player[k].ZoneJungle && !Main.player[k].ZoneHallow && Main.rand.Next(8) == 0)
88768 {
88769 if (Main.player[k].RollLuck(goldCritterChance) == 0)
88770 {
88771 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 448);
88772 }
88773 else
88774 {
88775 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 357);
88776 }
88777 }
88778 else if ((double)num24 > Main.worldSurface && num24 < Main.maxTilesY - 210 && !Main.player[k].ZoneSnow && !Main.player[k].ZoneCrimson && !Main.player[k].ZoneCorrupt && !Main.player[k].ZoneJungle && !Main.player[k].ZoneHallow && Main.rand.Next(13) == 0)
88779 {
88780 if (Main.player[k].RollLuck(goldCritterChance) == 0)
88781 {
88782 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 447);
88783 }
88784 else
88785 {
88786 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 300);
88787 }
88788 }
88789 else if ((double)num24 > Main.worldSurface && (double)num24 < (Main.rockLayer + (double)Main.maxTilesY) / 2.0 && !Main.player[k].ZoneSnow && !Main.player[k].ZoneCrimson && !Main.player[k].ZoneCorrupt && !Main.player[k].ZoneHallow && Main.rand.Next(13) == 0)
88790 {
88791 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 359);
88792 }
88793 else if (flag13 && Main.player[k].ZoneJungle && !Main.player[k].ZoneCrimson && !Main.player[k].ZoneCorrupt && Main.rand.Next(7) == 0)
88794 {
88795 if (Main.dayTime && Main.time < 43200.00064373016 && Main.rand.Next(3) != 0)
88796 {
88797 switch (Main.rand.Next(5))
88798 {
88799 case 0:
88800 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 671);
88801 break;
88802 case 1:
88803 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 672);
88804 break;
88805 case 2:
88806 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 673);
88807 break;
88808 case 3:
88809 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 674);
88810 break;
88811 default:
88812 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 675);
88813 break;
88814 }
88815 }
88816 else
88817 {
88819 }
88820 }
88821 else if (num56 == 225 && Main.rand.Next(2) == 0)
88822 {
88823 if (Main.hardMode && Main.rand.Next(4) != 0)
88824 {
88825 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 176);
88826 if (Main.rand.Next(10) == 0)
88827 {
88828 Main.npc[newNPC].SetDefaults(-18);
88829 }
88830 if (Main.rand.Next(10) == 0)
88831 {
88832 Main.npc[newNPC].SetDefaults(-19);
88833 }
88834 if (Main.rand.Next(10) == 0)
88835 {
88836 Main.npc[newNPC].SetDefaults(-20);
88837 }
88838 if (Main.rand.Next(10) == 0)
88839 {
88840 Main.npc[newNPC].SetDefaults(-21);
88841 }
88842 }
88843 else
88844 {
88845 switch (Main.rand.Next(8))
88846 {
88847 case 0:
88848 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 231);
88849 if (Main.rand.Next(4) == 0)
88850 {
88851 Main.npc[newNPC].SetDefaults(-56);
88852 }
88853 else if (Main.rand.Next(4) == 0)
88854 {
88855 Main.npc[newNPC].SetDefaults(-57);
88856 }
88857 break;
88858 case 1:
88859 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 232);
88860 if (Main.rand.Next(4) == 0)
88861 {
88862 Main.npc[newNPC].SetDefaults(-58);
88863 }
88864 else if (Main.rand.Next(4) == 0)
88865 {
88866 Main.npc[newNPC].SetDefaults(-59);
88867 }
88868 break;
88869 case 2:
88870 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 233);
88871 if (Main.rand.Next(4) == 0)
88872 {
88873 Main.npc[newNPC].SetDefaults(-60);
88874 }
88875 else if (Main.rand.Next(4) == 0)
88876 {
88877 Main.npc[newNPC].SetDefaults(-61);
88878 }
88879 break;
88880 case 3:
88881 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 234);
88882 if (Main.rand.Next(4) == 0)
88883 {
88884 Main.npc[newNPC].SetDefaults(-62);
88885 }
88886 else if (Main.rand.Next(4) == 0)
88887 {
88888 Main.npc[newNPC].SetDefaults(-63);
88889 }
88890 break;
88891 case 4:
88892 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 235);
88893 if (Main.rand.Next(4) == 0)
88894 {
88895 Main.npc[newNPC].SetDefaults(-64);
88896 }
88897 else if (Main.rand.Next(4) == 0)
88898 {
88899 Main.npc[newNPC].SetDefaults(-65);
88900 }
88901 break;
88902 default:
88903 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 42);
88904 if (Main.rand.Next(4) == 0)
88905 {
88906 Main.npc[newNPC].SetDefaults(-16);
88907 }
88908 else if (Main.rand.Next(4) == 0)
88909 {
88910 Main.npc[newNPC].SetDefaults(-17);
88911 }
88912 break;
88913 }
88914 }
88915 }
88916 else if (num56 == 60 && Main.hardMode && Main.rand.Next(3) != 0)
88917 {
88918 if (flag13 && !Main.dayTime && Main.rand.Next(3) == 0)
88919 {
88920 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 152);
88921 }
88922 else if (flag13 && Main.dayTime && Main.rand.Next(4) != 0)
88923 {
88924 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 177);
88925 }
88926 else if ((double)num24 > Main.worldSurface && Main.rand.Next(100) == 0)
88927 {
88928 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 205);
88929 }
88930 else if ((double)num24 > Main.worldSurface && Main.rand.Next(5) == 0)
88931 {
88932 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 236);
88933 }
88934 else if ((double)num24 > Main.worldSurface && Main.rand.Next(4) != 0)
88935 {
88936 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 176);
88937 if (Main.rand.Next(10) == 0)
88938 {
88939 Main.npc[newNPC].SetDefaults(-18);
88940 }
88941 if (Main.rand.Next(10) == 0)
88942 {
88943 Main.npc[newNPC].SetDefaults(-19);
88944 }
88945 if (Main.rand.Next(10) == 0)
88946 {
88947 Main.npc[newNPC].SetDefaults(-20);
88948 }
88949 if (Main.rand.Next(10) == 0)
88950 {
88951 Main.npc[newNPC].SetDefaults(-21);
88952 }
88953 }
88954 else if (Main.rand.Next(3) == 0)
88955 {
88956 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 175);
88957 Main.npc[newNPC].ai[0] = num;
88958 Main.npc[newNPC].ai[1] = num24;
88959 Main.npc[newNPC].netUpdate = true;
88960 }
88961 else
88962 {
88963 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 153);
88964 }
88965 }
88966 else if (((num56 == 226 || num56 == 232) && flag33) || (Main.remixWorld && flag33))
88967 {
88968 newNPC = ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 198) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 226));
88969 }
88970 else if (num58 == 86 && Main.rand.Next(8) != 0)
88971 {
88972 switch (Main.rand.Next(8))
88973 {
88974 case 0:
88975 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 231);
88976 if (Main.rand.Next(4) == 0)
88977 {
88978 Main.npc[newNPC].SetDefaults(-56);
88979 }
88980 else if (Main.rand.Next(4) == 0)
88981 {
88982 Main.npc[newNPC].SetDefaults(-57);
88983 }
88984 break;
88985 case 1:
88986 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 232);
88987 if (Main.rand.Next(4) == 0)
88988 {
88989 Main.npc[newNPC].SetDefaults(-58);
88990 }
88991 else if (Main.rand.Next(4) == 0)
88992 {
88993 Main.npc[newNPC].SetDefaults(-59);
88994 }
88995 break;
88996 case 2:
88997 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 233);
88998 if (Main.rand.Next(4) == 0)
88999 {
89000 Main.npc[newNPC].SetDefaults(-60);
89001 }
89002 else if (Main.rand.Next(4) == 0)
89003 {
89004 Main.npc[newNPC].SetDefaults(-61);
89005 }
89006 break;
89007 case 3:
89008 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 234);
89009 if (Main.rand.Next(4) == 0)
89010 {
89011 Main.npc[newNPC].SetDefaults(-62);
89012 }
89013 else if (Main.rand.Next(4) == 0)
89014 {
89015 Main.npc[newNPC].SetDefaults(-63);
89016 }
89017 break;
89018 case 4:
89019 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 235);
89020 if (Main.rand.Next(4) == 0)
89021 {
89022 Main.npc[newNPC].SetDefaults(-64);
89023 }
89024 else if (Main.rand.Next(4) == 0)
89025 {
89026 Main.npc[newNPC].SetDefaults(-65);
89027 }
89028 break;
89029 default:
89030 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 42);
89031 if (Main.rand.Next(4) == 0)
89032 {
89033 Main.npc[newNPC].SetDefaults(-16);
89034 }
89035 else if (Main.rand.Next(4) == 0)
89036 {
89037 Main.npc[newNPC].SetDefaults(-17);
89038 }
89039 break;
89040 }
89041 }
89042 else if (num56 == 60 && ((!Main.remixWorld && (double)num24 > (Main.worldSurface + Main.rockLayer) / 2.0) || (Main.remixWorld && ((double)num24 < Main.rockLayer || Main.rand.Next(2) == 0))))
89043 {
89044 if (Main.rand.Next(4) == 0)
89045 {
89046 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 204);
89047 }
89048 else if (Main.rand.Next(4) == 0)
89049 {
89050 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 43);
89051 Main.npc[newNPC].ai[0] = num;
89052 Main.npc[newNPC].ai[1] = num24;
89053 Main.npc[newNPC].netUpdate = true;
89054 }
89055 else
89056 {
89057 switch (Main.rand.Next(8))
89058 {
89059 case 0:
89060 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 231);
89061 if (Main.rand.Next(4) == 0)
89062 {
89063 Main.npc[newNPC].SetDefaults(-56);
89064 }
89065 else if (Main.rand.Next(4) == 0)
89066 {
89067 Main.npc[newNPC].SetDefaults(-57);
89068 }
89069 break;
89070 case 1:
89071 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 232);
89072 if (Main.rand.Next(4) == 0)
89073 {
89074 Main.npc[newNPC].SetDefaults(-58);
89075 }
89076 else if (Main.rand.Next(4) == 0)
89077 {
89078 Main.npc[newNPC].SetDefaults(-59);
89079 }
89080 break;
89081 case 2:
89082 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 233);
89083 if (Main.rand.Next(4) == 0)
89084 {
89085 Main.npc[newNPC].SetDefaults(-60);
89086 }
89087 else if (Main.rand.Next(4) == 0)
89088 {
89089 Main.npc[newNPC].SetDefaults(-61);
89090 }
89091 break;
89092 case 3:
89093 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 234);
89094 if (Main.rand.Next(4) == 0)
89095 {
89096 Main.npc[newNPC].SetDefaults(-62);
89097 }
89098 else if (Main.rand.Next(4) == 0)
89099 {
89100 Main.npc[newNPC].SetDefaults(-63);
89101 }
89102 break;
89103 case 4:
89104 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 235);
89105 if (Main.rand.Next(4) == 0)
89106 {
89107 Main.npc[newNPC].SetDefaults(-64);
89108 }
89109 else if (Main.rand.Next(4) == 0)
89110 {
89111 Main.npc[newNPC].SetDefaults(-65);
89112 }
89113 break;
89114 default:
89115 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 42);
89116 if (Main.rand.Next(4) == 0)
89117 {
89118 Main.npc[newNPC].SetDefaults(-16);
89119 }
89120 else if (Main.rand.Next(4) == 0)
89121 {
89122 Main.npc[newNPC].SetDefaults(-17);
89123 }
89124 break;
89125 }
89126 }
89127 }
89128 else if (num56 == 60 && Main.rand.Next(4) == 0)
89129 {
89130 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 51);
89131 }
89132 else if (num56 == 60 && Main.rand.Next(8) == 0)
89133 {
89134 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 56);
89135 Main.npc[newNPC].ai[0] = num;
89136 Main.npc[newNPC].ai[1] = num24;
89137 Main.npc[newNPC].netUpdate = true;
89138 }
89139 else if (Sandstorm.Happening && Main.player[k].ZoneSandstorm && TileID.Sets.Conversion.Sand[num56] && Spawning_SandstoneCheck(num, num24))
89140 {
89141 if (!downedBoss1 && !Main.hardMode)
89142 {
89143 newNPC = ((Main.rand.Next(2) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 546) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 69) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 61)));
89144 }
89145 else if (Main.hardMode && Main.rand.Next(20) == 0 && !AnyNPCs(541))
89146 {
89147 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 541);
89148 }
89149 else if (Main.hardMode && !flag34 && Main.rand.Next(3) == 0 && CountNPCS(510) < 4)
89150 {
89151 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, (num24 + 10) * 16, 510);
89152 }
89153 else if (!Main.hardMode || flag34 || Main.rand.Next(2) != 0)
89154 {
89155 newNPC = ((Main.hardMode && num56 == 53 && Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 78) : ((Main.hardMode && num56 == 112 && Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 79) : ((Main.hardMode && num56 == 234 && Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 630) : ((Main.hardMode && num56 == 116 && Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 80) : ((Main.rand.Next(2) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 546) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 581) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 580)))))));
89156 }
89157 else
89158 {
89159 int num110 = 542;
89160 if (TileID.Sets.Corrupt[num56])
89161 {
89162 num110 = 543;
89163 }
89164 if (TileID.Sets.Crimson[num56])
89165 {
89166 num110 = 544;
89167 }
89168 if (TileID.Sets.Hallow[num56])
89169 {
89170 num110 = 545;
89171 }
89173 }
89174 }
89175 else if (Main.hardMode && num56 == 53 && Main.rand.Next(3) == 0)
89176 {
89177 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 78);
89178 }
89179 else if (Main.hardMode && num56 == 112 && Main.rand.Next(2) == 0)
89180 {
89181 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 79);
89182 }
89183 else if (Main.hardMode && num56 == 234 && Main.rand.Next(2) == 0)
89184 {
89185 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 630);
89186 }
89187 else if (Main.hardMode && num56 == 116 && Main.rand.Next(2) == 0)
89188 {
89189 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 80);
89190 }
89191 else if (Main.hardMode && !flag36 && flag9 && (num56 == 116 || num56 == 117 || num56 == 109 || num56 == 164))
89192 {
89193 if (downedPlantBoss && (Main.remixWorld || (!Main.dayTime && Main.time < 16200.0)) && flag13 && Main.player[k].RollLuck(10) == 0 && !AnyNPCs(661))
89194 {
89195 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 661);
89196 }
89197 else if (!flag17 || AnyNPCs(244) || Main.rand.Next(12) != 0)
89198 {
89199 newNPC = ((!Main.dayTime && Main.rand.Next(2) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 122) : ((Main.rand.Next(10) != 0 && (!Main.player[k].ZoneWaterCandle || Main.rand.Next(10) != 0)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 75) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 86)));
89200 }
89201 else
89202 {
89203 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 244);
89204 }
89205 }
89206 else if (!flag34 && Main.hardMode && Main.rand.Next(50) == 0 && !flag36 && flag14 && (num56 == 116 || num56 == 117 || num56 == 109 || num56 == 164))
89207 {
89208 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 84);
89209 }
89210 else if ((num56 == 204 && Main.player[k].ZoneCrimson) || num56 == 199 || num56 == 200 || num56 == 203 || num56 == 234 || num56 == 662)
89211 {
89212 bool flag30 = (double)num24 >= Main.rockLayer;
89213 if (Main.remixWorld)
89214 {
89215 flag30 = (double)num24 <= Main.rockLayer;
89216 }
89217 if (Main.hardMode && flag30 && Main.rand.Next(40) == 0 && !flag34)
89218 {
89219 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 179);
89220 }
89221 else if (Main.hardMode && flag30 && Main.rand.Next(5) == 0 && !flag34)
89222 {
89223 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 182);
89224 }
89225 else if (Main.hardMode && flag30 && Main.rand.Next(2) == 0)
89226 {
89227 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 268);
89228 }
89229 else if (Main.hardMode && Main.rand.Next(3) == 0)
89230 {
89231 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 183);
89232 if (Main.rand.Next(3) == 0)
89233 {
89234 Main.npc[newNPC].SetDefaults(-24);
89235 }
89236 else if (Main.rand.Next(3) == 0)
89237 {
89238 Main.npc[newNPC].SetDefaults(-25);
89239 }
89240 }
89241 else if (Main.hardMode && (Main.rand.Next(2) == 0 || ((double)num24 > Main.worldSurface && !Main.remixWorld)))
89242 {
89243 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 174);
89244 }
89245 else if ((Main.tile[num, num24].wall > 0 && Main.rand.Next(4) != 0) || Main.rand.Next(8) == 0)
89246 {
89247 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 239);
89248 }
89249 else if (Main.rand.Next(2) == 0)
89250 {
89251 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 181);
89252 }
89253 else
89254 {
89255 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 173);
89256 if (Main.rand.Next(3) == 0)
89257 {
89258 Main.npc[newNPC].SetDefaults(-22);
89259 }
89260 else if (Main.rand.Next(3) == 0)
89261 {
89262 Main.npc[newNPC].SetDefaults(-23);
89263 }
89264 }
89265 }
89266 else if ((num56 == 22 && Main.player[k].ZoneCorrupt) || num56 == 23 || num56 == 25 || num56 == 112 || num56 == 163 || num56 == 661)
89267 {
89268 bool flag31 = (double)num24 >= Main.rockLayer;
89269 if (Main.remixWorld)
89270 {
89271 flag31 = (double)num24 <= Main.rockLayer;
89272 }
89273 if (Main.hardMode && flag31 && Main.rand.Next(40) == 0 && !flag34)
89274 {
89275 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 83);
89276 }
89277 else if (Main.hardMode && flag31 && Main.rand.Next(3) == 0)
89278 {
89279 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 101);
89280 Main.npc[newNPC].ai[0] = num;
89281 Main.npc[newNPC].ai[1] = num24;
89282 Main.npc[newNPC].netUpdate = true;
89283 }
89284 else if (Main.hardMode && Main.rand.Next(3) == 0)
89285 {
89286 newNPC = ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 81) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 121));
89287 }
89288 else if (Main.hardMode && (Main.rand.Next(2) == 0 || flag31))
89289 {
89290 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 94);
89291 }
89292 else
89293 {
89294 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 6);
89295 if (Main.rand.Next(3) == 0)
89296 {
89297 Main.npc[newNPC].SetDefaults(-11);
89298 }
89299 else if (Main.rand.Next(3) == 0)
89300 {
89301 Main.npc[newNPC].SetDefaults(-12);
89302 }
89303 }
89304 }
89305 else if (flag13)
89306 {
89307 bool flag32 = (float)Math.Abs(num - Main.maxTilesX / 2) / (float)(Main.maxTilesX / 2) > 0.33f;
89308 if (flag32 && AnyDanger())
89309 {
89310 flag32 = false;
89311 }
89312 if (Main.player[k].ZoneGraveyard && !flag36 && (num35 == 2 || num35 == 477) && Main.rand.Next(10) == 0)
89313 {
89314 if (Main.rand.Next(2) == 0)
89315 {
89316 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 606);
89317 }
89318 else
89319 {
89320 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 610);
89321 }
89322 }
89323 else if (Main.player[k].ZoneSnow && Main.hardMode && flag17 && !AnyNPCs(243) && Main.player[k].RollLuck(20) == 0)
89324 {
89325 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 243);
89326 }
89327 else if (!Main.player[k].ZoneSnow && Main.hardMode && flag17 && CountNPCS(250) < 2 && Main.rand.Next(10) == 0)
89328 {
89329 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 250);
89330 }
89331 else if (flag32 && Main.hardMode && downedGolemBoss && ((!downedMartians && Main.rand.Next(100) == 0) || Main.rand.Next(400) == 0) && !AnyNPCs(399))
89332 {
89333 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 399);
89334 }
89335 else if (!Main.player[k].ZoneGraveyard && Main.dayTime)
89336 {
89337 int num3 = Math.Abs(num - Main.spawnTileX);
89338 if (!flag36 && num3 < Main.maxTilesX / 2 && Main.rand.Next(15) == 0 && (num56 == 2 || num56 == 477 || num56 == 109 || num56 == 492 || num56 == 147 || num56 == 161))
89339 {
89340 if (num56 == 147 || num56 == 161)
89341 {
89342 if (Main.rand.Next(2) == 0)
89343 {
89344 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 148);
89345 }
89346 else
89347 {
89348 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 149);
89349 }
89350 }
89351 else if (!tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(stinkBugChance) == 0 && flag13)
89352 {
89353 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 669);
89354 if (Main.rand.Next(4) == 0)
89355 {
89356 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 - 16, num24 * 16, 669);
89357 }
89358 if (Main.rand.Next(4) == 0)
89359 {
89360 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + 16, num24 * 16, 669);
89361 }
89362 }
89363 else if (!tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(butterflyChance) == 0 && flag13)
89364 {
89365 if (Main.player[k].RollLuck(goldCritterChance) == 0)
89366 {
89367 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 444);
89368 }
89369 else
89370 {
89371 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 356);
89372 }
89373 if (Main.rand.Next(4) == 0)
89374 {
89375 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 - 16, num24 * 16, 356);
89376 }
89377 if (Main.rand.Next(4) == 0)
89378 {
89379 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + 16, num24 * 16, 356);
89380 }
89381 }
89382 else if (tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(butterflyChance / 2) == 0 && flag13)
89383 {
89384 if (Main.player[k].RollLuck(goldCritterChance) == 0)
89385 {
89386 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 605);
89387 }
89388 else
89389 {
89390 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 604);
89391 }
89392 if (Main.rand.Next(3) != 0)
89393 {
89394 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 604);
89395 }
89396 if (Main.rand.Next(2) == 0)
89397 {
89398 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 604);
89399 }
89400 if (Main.rand.Next(3) == 0)
89401 {
89402 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 604);
89403 }
89404 if (Main.rand.Next(4) == 0)
89405 {
89406 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 604);
89407 }
89408 }
89409 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
89410 {
89411 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 443);
89412 }
89413 else if (Main.player[k].RollLuck(goldCritterChance) == 0 && (double)num24 <= Main.worldSurface)
89414 {
89415 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 539);
89416 }
89417 else if (Main.halloween && Main.rand.Next(3) != 0)
89418 {
89419 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 303);
89420 }
89421 else if (Main.xMas && Main.rand.Next(3) != 0)
89422 {
89423 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 337);
89424 }
89425 else if (BirthdayParty.PartyIsUp && Main.rand.Next(3) != 0)
89426 {
89427 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 540);
89428 }
89429 else if (Main.rand.Next(3) == 0 && (double)num24 <= Main.worldSurface)
89430 {
89431 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Utils.SelectRandom(Main.rand, new short[2] { 299, 538 }));
89432 }
89433 else
89434 {
89435 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 46);
89436 }
89437 }
89438 else if (!flag36 && num > WorldGen.beachDistance && num < Main.maxTilesX - WorldGen.beachDistance && Main.rand.Next(12) == 0 && num56 == 53)
89439 {
89440 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(366, 368));
89441 }
89442 else if ((num56 == 2 || num56 == 477 || num56 == 53) && !tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(3) != 0 && ((double)num24 <= Main.worldSurface || Main.remixWorld) && FindCattailTop(num, num24, out cattailX, out cattailY))
89443 {
89444 if (Main.player[k].RollLuck(goldCritterChance) == 0)
89445 {
89446 NewNPC(GetSpawnSourceForNaturalSpawn(), cattailX * 16 + 8, cattailY * 16, 601);
89447 }
89448 else
89449 {
89451 }
89452 if (Main.rand.Next(3) == 0)
89453 {
89455 }
89456 if (Main.rand.Next(3) == 0)
89457 {
89459 }
89460 }
89461 else if (!flag36 && num3 < Main.maxTilesX / 3 && Main.dayTime && Main.time < 18000.0 && (num56 == 2 || num56 == 477 || num56 == 109 || num56 == 492) && Main.rand.Next(4) == 0 && (double)num24 <= Main.worldSurface && CountNPCS(74) + CountNPCS(297) + CountNPCS(298) < 6)
89462 {
89463 int num4 = Main.rand.Next(4);
89464 if (Main.player[k].RollLuck(goldCritterChance) == 0)
89465 {
89466 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 442);
89467 }
89468 else
89469 {
89470 switch (num4)
89471 {
89472 case 0:
89473 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 297);
89474 break;
89475 case 1:
89476 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 298);
89477 break;
89478 default:
89479 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 74);
89480 break;
89481 }
89482 }
89483 }
89484 else if (!flag36 && num3 < Main.maxTilesX / 3 && Main.rand.Next(15) == 0 && (num56 == 2 || num56 == 477 || num56 == 109 || num56 == 492 || num56 == 147))
89485 {
89486 int num5 = Main.rand.Next(4);
89487 if (Main.player[k].RollLuck(goldCritterChance) == 0)
89488 {
89489 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 442);
89490 }
89491 else
89492 {
89493 switch (num5)
89494 {
89495 case 0:
89496 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 297);
89497 break;
89498 case 1:
89499 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 298);
89500 break;
89501 default:
89502 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 74);
89503 break;
89504 }
89505 }
89506 }
89507 else if (!flag36 && num3 > Main.maxTilesX / 3 && num56 == 2 && Main.rand.Next(300) == 0 && !AnyNPCs(50))
89508 {
89509 SpawnOnPlayer(k, 50);
89510 }
89511 else if (!flag7 && num56 == 53 && (num < WorldGen.beachDistance || num > Main.maxTilesX - WorldGen.beachDistance))
89512 {
89513 if (!flag36 && Main.rand.Next(10) == 0)
89514 {
89515 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 602);
89516 }
89517 else if (flag36)
89518 {
89519 int num6 = -1;
89520 int num7 = -1;
89522 {
89523 for (int num8 = num24 - 1; num8 > num24 - 50; num8--)
89524 {
89525 if (Main.tile[num, num8].liquid == 0 && !WorldGen.SolidTile(num, num8) && !WorldGen.SolidTile(num, num8 + 1) && !WorldGen.SolidTile(num, num8 + 2))
89526 {
89527 num6 = num8 + 2;
89528 if (!WorldGen.SolidTile(num, num6 + 1) && !WorldGen.SolidTile(num, num6 + 2))
89529 {
89530 num7 = num6 + 2;
89531 }
89532 break;
89533 }
89534 }
89535 if (num6 > num24)
89536 {
89537 num6 = num24;
89538 }
89539 if (num7 > num24)
89540 {
89541 num7 = num24;
89542 }
89543 }
89544 if (Main.rand.Next(10) == 0)
89545 {
89546 int num9 = Main.rand.Next(3);
89547 if (num9 == 0 && num6 > 0)
89548 {
89549 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num6 * 16, 625);
89550 }
89551 else if (num9 == 1 && num7 > 0)
89552 {
89553 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num7 * 16, 615);
89554 }
89555 else if (num9 == 2)
89556 {
89557 int num10 = num24;
89558 if (num7 > 0)
89559 {
89560 num10 = num7;
89561 }
89562 if (Main.player[k].RollLuck(goldCritterChance) == 0)
89563 {
89564 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num10 * 16, 627);
89565 }
89566 else
89567 {
89568 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num10 * 16, 626);
89569 }
89570 }
89571 }
89572 }
89573 }
89574 else if (!flag36 && num56 == 53 && Main.rand.Next(5) == 0 && Spawning_SandstoneCheck(num, num24) && !flag36)
89575 {
89576 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 69);
89577 }
89578 else if (num56 == 53 && !flag36)
89579 {
89580 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 61);
89581 }
89582 else if (!flag36 && (num3 > Main.maxTilesX / 3 || Main.remixWorld) && (Main.rand.Next(15) == 0 || (!downedGoblins && WorldGen.shadowOrbSmashed && Main.rand.Next(7) == 0)))
89583 {
89584 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 73);
89585 }
89586 else if (Main.raining && Main.rand.Next(4) == 0)
89587 {
89588 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 224);
89589 }
89590 else if (!flag36 && Main.raining && Main.rand.Next(2) == 0)
89591 {
89592 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 225);
89593 }
89594 else if (!flag36 && num58 == 0 && isItAHappyWindyDay && flag11 && Main.rand.Next(3) != 0)
89595 {
89596 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 594);
89597 }
89598 else if (!flag36 && num58 == 0 && (num35 == 2 || num35 == 477) && isItAHappyWindyDay && flag11 && Main.rand.Next(10) != 0)
89599 {
89600 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 628);
89601 }
89602 else if (!flag36)
89603 {
89604 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 1);
89605 switch (num56)
89606 {
89607 case 60:
89608 Main.npc[newNPC].SetDefaults(-10);
89609 break;
89610 case 147:
89611 case 161:
89612 Main.npc[newNPC].SetDefaults(147);
89613 break;
89614 default:
89615 if (Main.halloween && Main.rand.Next(3) != 0)
89616 {
89617 Main.npc[newNPC].SetDefaults(302);
89618 }
89619 else if (Main.xMas && Main.rand.Next(3) != 0)
89620 {
89621 Main.npc[newNPC].SetDefaults(Main.rand.Next(333, 337));
89622 }
89623 else if (Main.rand.Next(3) == 0 || (num3 < 200 && !Main.expertMode))
89624 {
89625 Main.npc[newNPC].SetDefaults(-3);
89626 }
89627 else if (Main.rand.Next(10) == 0 && (num3 > 400 || Main.expertMode))
89628 {
89629 Main.npc[newNPC].SetDefaults(-7);
89630 }
89631 break;
89632 }
89633 }
89634 }
89635 else
89636 {
89637 if (!Main.player[k].ZoneGraveyard && !tooWindyForButterflies && (num56 == 2 || num56 == 477 || num56 == 109 || num56 == 492) && !Main.raining && Main.rand.Next(fireFlyChance) == 0 && (double)num24 <= Main.worldSurface)
89638 {
89639 int num11 = 355;
89640 if (num56 == 109)
89641 {
89642 num11 = 358;
89643 }
89645 if (Main.rand.Next(fireFlyMultiple) == 0)
89646 {
89647 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 - 16, num24 * 16, num11);
89648 }
89649 if (Main.rand.Next(fireFlyMultiple) == 0)
89650 {
89651 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + 16, num24 * 16, num11);
89652 }
89653 if (Main.rand.Next(fireFlyMultiple) == 0)
89654 {
89655 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16 - 16, num11);
89656 }
89657 if (Main.rand.Next(fireFlyMultiple) == 0)
89658 {
89659 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16 + 16, num11);
89660 }
89661 }
89662 else if ((Main.halloween || Main.player[k].ZoneGraveyard) && Main.rand.Next(12) == 0)
89663 {
89664 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 301);
89665 }
89666 else if (Main.player[k].ZoneGraveyard && Main.rand.Next(30) == 0)
89667 {
89668 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 316);
89669 }
89670 else if (Main.player[k].ZoneGraveyard && Main.hardMode && (double)num24 <= Main.worldSurface && Main.rand.Next(10) == 0)
89671 {
89672 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 304);
89673 }
89674 else if (Main.rand.Next(6) == 0 || (Main.moonPhase == 4 && Main.rand.Next(2) == 0))
89675 {
89676 if (Main.hardMode && Main.rand.Next(3) == 0)
89677 {
89678 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 133);
89679 }
89680 else if (Main.halloween && Main.rand.Next(2) == 0)
89681 {
89682 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(317, 319));
89683 }
89684 else if (Main.rand.Next(2) == 0)
89685 {
89686 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 2);
89687 if (Main.rand.Next(4) == 0)
89688 {
89689 Main.npc[newNPC].SetDefaults(-43);
89690 }
89691 }
89692 else
89693 {
89694 switch (Main.rand.Next(5))
89695 {
89696 case 0:
89697 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 190);
89698 if (Main.rand.Next(3) == 0)
89699 {
89700 Main.npc[newNPC].SetDefaults(-38);
89701 }
89702 break;
89703 case 1:
89704 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 191);
89705 if (Main.rand.Next(3) == 0)
89706 {
89707 Main.npc[newNPC].SetDefaults(-39);
89708 }
89709 break;
89710 case 2:
89711 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 192);
89712 if (Main.rand.Next(3) == 0)
89713 {
89714 Main.npc[newNPC].SetDefaults(-40);
89715 }
89716 break;
89717 case 3:
89718 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 193);
89719 if (Main.rand.Next(3) == 0)
89720 {
89721 Main.npc[newNPC].SetDefaults(-41);
89722 }
89723 break;
89724 case 4:
89725 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 194);
89726 if (Main.rand.Next(3) == 0)
89727 {
89728 Main.npc[newNPC].SetDefaults(-42);
89729 }
89730 break;
89731 }
89732 }
89733 }
89734 else if (Main.hardMode && Main.rand.Next(50) == 0 && Main.bloodMoon && !AnyNPCs(109))
89735 {
89736 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 109);
89737 }
89738 else if (Main.rand.Next(250) == 0 && (Main.bloodMoon || Main.player[k].ZoneGraveyard))
89739 {
89740 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 53);
89741 }
89742 else if (Main.rand.Next(250) == 0 && (Main.bloodMoon || Main.player[k].ZoneGraveyard))
89743 {
89744 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 536);
89745 }
89746 else if (!Main.dayTime && Main.moonPhase == 0 && Main.hardMode && Main.rand.Next(3) != 0)
89747 {
89748 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 104);
89749 }
89750 else if (!Main.dayTime && Main.hardMode && Main.rand.Next(3) == 0)
89751 {
89752 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 140);
89753 }
89754 else if (Main.bloodMoon && Main.rand.Next(5) < 2)
89755 {
89756 newNPC = ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 490) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 489));
89757 }
89758 else if (num35 == 147 || num35 == 161 || num35 == 163 || num35 == 164 || num35 == 162)
89759 {
89760 newNPC = ((!Main.player[k].ZoneGraveyard && Main.hardMode && Main.rand.Next(4) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 169) : ((!Main.player[k].ZoneGraveyard && Main.hardMode && Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 155) : ((!Main.expertMode || Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 161) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 431))));
89761 }
89762 else if (Main.raining && Main.rand.Next(2) == 0)
89763 {
89764 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 223);
89765 if (Main.rand.Next(3) == 0)
89766 {
89767 if (Main.rand.Next(2) == 0)
89768 {
89769 Main.npc[newNPC].SetDefaults(-54);
89770 }
89771 else
89772 {
89773 Main.npc[newNPC].SetDefaults(-55);
89774 }
89775 }
89776 }
89777 else
89778 {
89779 int num12 = Main.rand.Next(7);
89780 int num14 = 12;
89781 int maxValue4 = 20;
89782 if (Main.player[k].ConsumedLifeCrystals == 0)
89783 {
89784 num14 = 5;
89785 num14 -= Main.CurrentFrameFlags.ActivePlayersCount / 2;
89786 if (num14 < 2)
89787 {
89788 num14 = 2;
89789 }
89790 }
89791 if (Main.player[k].ZoneGraveyard && Main.rand.Next(maxValue4) == 0)
89792 {
89793 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 632);
89794 }
89795 else if (Main.rand.Next(num14) == 0)
89796 {
89797 newNPC = ((!Main.expertMode || Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 590) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 591));
89798 }
89799 else if (Main.halloween && Main.rand.Next(2) == 0)
89800 {
89801 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(319, 322));
89802 }
89803 else if (Main.xMas && Main.rand.Next(2) == 0)
89804 {
89805 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(331, 333));
89806 }
89807 else if (num12 == 0 && Main.expertMode && Main.rand.Next(3) == 0)
89808 {
89809 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 430);
89810 }
89811 else if (num12 == 2 && Main.expertMode && Main.rand.Next(3) == 0)
89812 {
89813 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 432);
89814 }
89815 else if (num12 == 3 && Main.expertMode && Main.rand.Next(3) == 0)
89816 {
89817 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 433);
89818 }
89819 else if (num12 == 4 && Main.expertMode && Main.rand.Next(3) == 0)
89820 {
89821 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 434);
89822 }
89823 else if (num12 == 5 && Main.expertMode && Main.rand.Next(3) == 0)
89824 {
89825 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 435);
89826 }
89827 else if (num12 == 6 && Main.expertMode && Main.rand.Next(3) == 0)
89828 {
89829 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 436);
89830 }
89831 else
89832 {
89833 switch (num12)
89834 {
89835 case 0:
89836 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 3);
89837 if (Main.rand.Next(3) == 0)
89838 {
89839 if (Main.rand.Next(2) == 0)
89840 {
89841 Main.npc[newNPC].SetDefaults(-26);
89842 }
89843 else
89844 {
89845 Main.npc[newNPC].SetDefaults(-27);
89846 }
89847 }
89848 break;
89849 case 1:
89850 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 132);
89851 if (Main.rand.Next(3) == 0)
89852 {
89853 if (Main.rand.Next(2) == 0)
89854 {
89855 Main.npc[newNPC].SetDefaults(-28);
89856 }
89857 else
89858 {
89859 Main.npc[newNPC].SetDefaults(-29);
89860 }
89861 }
89862 break;
89863 case 2:
89864 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 186);
89865 if (Main.rand.Next(3) == 0)
89866 {
89867 if (Main.rand.Next(2) == 0)
89868 {
89869 Main.npc[newNPC].SetDefaults(-30);
89870 }
89871 else
89872 {
89873 Main.npc[newNPC].SetDefaults(-31);
89874 }
89875 }
89876 break;
89877 case 3:
89878 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 187);
89879 if (Main.rand.Next(3) == 0)
89880 {
89881 if (Main.rand.Next(2) == 0)
89882 {
89883 Main.npc[newNPC].SetDefaults(-32);
89884 }
89885 else
89886 {
89887 Main.npc[newNPC].SetDefaults(-33);
89888 }
89889 }
89890 break;
89891 case 4:
89892 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 188);
89893 if (Main.rand.Next(3) == 0)
89894 {
89895 if (Main.rand.Next(2) == 0)
89896 {
89897 Main.npc[newNPC].SetDefaults(-34);
89898 }
89899 else
89900 {
89901 Main.npc[newNPC].SetDefaults(-35);
89902 }
89903 }
89904 break;
89905 case 5:
89906 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 189);
89907 if (Main.rand.Next(3) == 0)
89908 {
89909 if (Main.rand.Next(2) == 0)
89910 {
89911 Main.npc[newNPC].SetDefaults(-36);
89912 }
89913 else
89914 {
89915 Main.npc[newNPC].SetDefaults(-37);
89916 }
89917 }
89918 break;
89919 case 6:
89920 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 200);
89921 if (Main.rand.Next(3) == 0)
89922 {
89923 if (Main.rand.Next(2) == 0)
89924 {
89925 Main.npc[newNPC].SetDefaults(-44);
89926 }
89927 else
89928 {
89929 Main.npc[newNPC].SetDefaults(-45);
89930 }
89931 }
89932 break;
89933 }
89934 }
89935 }
89936 if (Main.player[k].ZoneGraveyard)
89937 {
89938 Main.npc[newNPC].target = k;
89939 }
89940 }
89941 }
89942 else if (flag9)
89943 {
89944 if (!flag34 && Main.rand.Next(50) == 0 && !Main.player[k].ZoneSnow)
89945 {
89946 newNPC = ((!Main.hardMode) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 10, 1) : ((Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 10, 1) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 95, 1)));
89947 }
89948 else if (Main.hardMode && Main.rand.Next(3) == 0)
89949 {
89950 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 140);
89951 }
89952 else if (Main.hardMode && Main.rand.Next(4) != 0)
89953 {
89954 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 141);
89955 }
89956 else if (Main.remixWorld)
89957 {
89958 if (num35 == 147 || num35 == 161 || num35 == 163 || num35 == 164 || num35 == 162 || Main.player[k].ZoneSnow)
89959 {
89960 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 147);
89961 }
89962 else
89963 {
89964 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 1);
89965 if (Main.rand.Next(3) == 0)
89966 {
89967 Main.npc[newNPC].SetDefaults(-9);
89968 }
89969 else
89970 {
89971 Main.npc[newNPC].SetDefaults(-8);
89972 }
89973 }
89974 }
89975 else if (num56 == 147 || num56 == 161 || Main.player[k].ZoneSnow)
89976 {
89977 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 147);
89978 }
89979 else
89980 {
89981 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 1);
89982 if (Main.rand.Next(5) == 0)
89983 {
89984 Main.npc[newNPC].SetDefaults(-9);
89985 }
89986 else if (Main.rand.Next(2) == 0)
89987 {
89988 Main.npc[newNPC].SetDefaults(1);
89989 }
89990 else
89991 {
89992 Main.npc[newNPC].SetDefaults(-8);
89993 }
89994 }
89995 }
89996 else if (num24 > Main.maxTilesY - 190)
89997 {
89998 newNPC = ((Main.remixWorld && (double)num > (double)Main.maxTilesX * 0.38 + 50.0 && (double)num < (double)Main.maxTilesX * 0.62) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 59) : ((Main.hardMode && !savedTaxCollector && Main.rand.Next(20) == 0 && !AnyNPCs(534)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 534) : ((Main.rand.Next(8) == 0) ? SpawnNPC_SpawnLavaBaitCritters(num, num24) : ((Main.rand.Next(40) == 0 && !AnyNPCs(39)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 39, 1) : ((Main.rand.Next(14) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 24) : ((Main.rand.Next(7) != 0) ? ((Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 59) : ((!Main.hardMode || !downedMechBossAny || Main.rand.Next(5) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 60) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 151))) : ((Main.rand.Next(10) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 66) : ((!Main.hardMode || !downedMechBossAny || Main.rand.Next(5) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 62) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 156)))))))));
89999 }
90001 {
90002 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 631);
90003 }
90004 else if (Main.rand.Next(60) == 0)
90005 {
90006 newNPC = ((!Main.player[k].ZoneSnow) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 217) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 218));
90007 }
90008 else if ((num56 == 116 || num56 == 117 || num56 == 164) && Main.hardMode && !flag34 && Main.rand.Next(8) == 0)
90009 {
90010 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 120);
90011 }
90012 else if ((num35 == 147 || num35 == 161 || num35 == 162 || num35 == 163 || num35 == 164 || num35 == 200) && !flag34 && Main.hardMode && Main.player[k].ZoneCorrupt && Main.rand.Next(30) == 0)
90013 {
90014 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 170);
90015 }
90016 else if ((num35 == 147 || num35 == 161 || num35 == 162 || num35 == 163 || num35 == 164 || num35 == 200) && !flag34 && Main.hardMode && Main.player[k].ZoneHallow && Main.rand.Next(30) == 0)
90017 {
90018 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 171);
90019 }
90020 else if ((num35 == 147 || num35 == 161 || num35 == 162 || num35 == 163 || num35 == 164 || num35 == 200) && !flag34 && Main.hardMode && Main.player[k].ZoneCrimson && Main.rand.Next(30) == 0)
90021 {
90022 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 180);
90023 }
90024 else if (Main.hardMode && Main.player[k].ZoneSnow && Main.rand.Next(10) == 0)
90025 {
90026 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 154);
90027 }
90028 else if (!flag34 && Main.rand.Next(100) == 0 && !Main.player[k].ZoneHallow)
90029 {
90030 newNPC = (Main.hardMode ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 95, 1) : ((!Main.player[k].ZoneSnow) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 10, 1) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 185)));
90031 }
90032 else if (Main.player[k].ZoneSnow && Main.rand.Next(20) == 0)
90033 {
90034 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 185);
90035 }
90036 else if ((!Main.hardMode && Main.rand.Next(10) == 0) || (Main.hardMode && Main.rand.Next(20) == 0))
90037 {
90038 if (Main.player[k].ZoneSnow)
90039 {
90040 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 184);
90041 }
90042 else if (Main.rand.Next(3) == 0)
90043 {
90044 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 1);
90045 Main.npc[newNPC].SetDefaults(-6);
90046 }
90047 else
90048 {
90049 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 16);
90050 }
90051 }
90052 else if (!Main.hardMode && Main.rand.Next(4) == 0)
90053 {
90054 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 1);
90055 if (Main.player[k].ZoneJungle)
90056 {
90057 Main.npc[newNPC].SetDefaults(-10);
90058 }
90059 else if (Main.player[k].ZoneSnow)
90060 {
90061 Main.npc[newNPC].SetDefaults(184);
90062 }
90063 else
90064 {
90065 Main.npc[newNPC].SetDefaults(-6);
90066 }
90067 }
90068 else if (Main.rand.Next(2) != 0)
90069 {
90070 newNPC = ((Main.hardMode && (Main.player[k].ZoneHallow & (Main.rand.Next(2) == 0))) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 138) : (Main.player[k].ZoneJungle ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 51) : ((Main.player[k].ZoneGlowshroom && (num35 == 70 || num35 == 190)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 634) : ((Main.hardMode && Main.player[k].ZoneHallow) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 137) : ((Main.hardMode && Main.rand.Next(6) > 0) ? ((Main.rand.Next(3) != 0 || (num35 != 147 && num35 != 161 && num35 != 162)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 93) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 150)) : ((num35 != 147 && num35 != 161 && num35 != 162) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 49) : ((!Main.hardMode) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 150) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 169))))))));
90071 }
90072 else if (Main.rand.Next(35) == 0 && CountNPCS(453) == 0)
90073 {
90074 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 453);
90075 }
90076 else if (Main.rand.Next(80) == 0)
90077 {
90078 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 195);
90079 }
90080 else if (Main.hardMode && (Main.remixWorld || (double)num24 > (Main.rockLayer + (double)Main.maxTilesY) / 2.0) && Main.rand.Next(200) == 0)
90081 {
90082 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 172);
90083 }
90084 else if ((Main.remixWorld || (double)num24 > (Main.rockLayer + (double)Main.maxTilesY) / 2.0) && (Main.rand.Next(200) == 0 || (Main.rand.Next(50) == 0 && (Main.player[k].armor[1].type == 4256 || (Main.player[k].armor[1].type >= 1282 && Main.player[k].armor[1].type <= 1287)) && Main.player[k].armor[0].type != 238)))
90085 {
90086 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 45);
90087 }
90088 else if (flag2 && Main.rand.Next(4) != 0)
90089 {
90090 newNPC = ((Main.rand.Next(6) == 0 || AnyNPCs(480) || !Main.hardMode) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 481) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 480));
90091 }
90092 else if (flag38 && Main.rand.Next(5) != 0)
90093 {
90094 newNPC = ((Main.rand.Next(6) == 0 || AnyNPCs(483)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 482) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 483));
90095 }
90096 else if (Main.hardMode && Main.rand.Next(10) != 0)
90097 {
90098 if (Main.rand.Next(2) != 0)
90099 {
90100 newNPC = ((!Main.player[k].ZoneSnow) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 110) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 206));
90101 }
90102 else if (Main.player[k].ZoneSnow)
90103 {
90104 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 197);
90105 }
90106 else
90107 {
90108 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 77);
90109 if ((Main.remixWorld || (double)num24 > (Main.rockLayer + (double)Main.maxTilesY) / 2.0) && Main.rand.Next(5) == 0)
90110 {
90111 Main.npc[newNPC].SetDefaults(-15);
90112 }
90113 }
90114 }
90115 else if (!flag34 && (Main.halloween || Main.player[k].ZoneGraveyard) && Main.rand.Next(30) == 0)
90116 {
90117 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 316);
90118 }
90119 else if (Main.rand.Next(20) == 0)
90120 {
90121 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 44);
90122 }
90123 else if (num35 == 147 || num35 == 161 || num35 == 162)
90124 {
90125 newNPC = ((Main.rand.Next(15) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 167) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 185));
90126 }
90127 else if (Main.player[k].ZoneSnow)
90128 {
90129 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 185);
90130 }
90131 else if (Main.rand.Next(3) == 0)
90132 {
90133 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, cavernMonsterType[Main.rand.Next(2), Main.rand.Next(3)]);
90134 }
90135 else if (Main.player[k].ZoneGlowshroom && (num35 == 70 || num35 == 190))
90136 {
90137 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 635);
90138 }
90139 else if (Main.halloween && Main.rand.Next(2) == 0)
90140 {
90141 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, Main.rand.Next(322, 325));
90142 }
90143 else if (Main.expertMode && Main.rand.Next(3) == 0)
90144 {
90145 int num15 = Main.rand.Next(4);
90146 newNPC = ((num15 == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 449) : ((num15 == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 450) : ((num15 != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 452) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 451))));
90147 }
90148 else
90149 {
90150 switch (Main.rand.Next(4))
90151 {
90152 case 0:
90153 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 21);
90154 if (Main.rand.Next(3) == 0)
90155 {
90156 if (Main.rand.Next(2) == 0)
90157 {
90158 Main.npc[newNPC].SetDefaults(-47);
90159 }
90160 else
90161 {
90162 Main.npc[newNPC].SetDefaults(-46);
90163 }
90164 }
90165 break;
90166 case 1:
90167 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 201);
90168 if (Main.rand.Next(3) == 0)
90169 {
90170 if (Main.rand.Next(2) == 0)
90171 {
90172 Main.npc[newNPC].SetDefaults(-49);
90173 }
90174 else
90175 {
90176 Main.npc[newNPC].SetDefaults(-48);
90177 }
90178 }
90179 break;
90180 case 2:
90181 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 202);
90182 if (Main.rand.Next(3) == 0)
90183 {
90184 if (Main.rand.Next(2) == 0)
90185 {
90186 Main.npc[newNPC].SetDefaults(-51);
90187 }
90188 else
90189 {
90190 Main.npc[newNPC].SetDefaults(-50);
90191 }
90192 }
90193 break;
90194 case 3:
90195 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num24 * 16, 203);
90196 if (Main.rand.Next(3) == 0)
90197 {
90198 if (Main.rand.Next(2) == 0)
90199 {
90200 Main.npc[newNPC].SetDefaults(-53);
90201 }
90202 else
90203 {
90204 Main.npc[newNPC].SetDefaults(-52);
90205 }
90206 }
90207 break;
90208 }
90209 }
90210 }
90211 if (spawn != 0)
90212 {
90214 }
90215 if (Main.npc[newNPC].type == 1 && Main.player[k].RollLuck(180) == 0)
90216 {
90217 Main.npc[newNPC].SetDefaults(-4);
90218 }
90219 if (Main.tenthAnniversaryWorld && Main.npc[newNPC].type == 1 && Main.player[k].RollLuck(180) == 0)
90220 {
90221 Main.npc[newNPC].SetDefaults(667);
90222 }
90223 if (Main.netMode == 2 && newNPC < 200)
90224 {
90225 NetMessage.SendData(23, -1, -1, null, newNPC);
90226 }
90227 break;
90228 }
90229 }
static void SpawnNPC(ref int newNPC)
Definition DD2Event.cs:165
static bool[] Crimson
Definition TileID.cs:316
static bool[] Corrupt
Definition TileID.cs:302
static bool[] Hallow
Definition TileID.cs:308
static bool[] AllowsUndergroundDesertEnemiesToSpawn
Definition WallID.cs:41
static int SpawnNPC(int type, int tileX, int tileY)
static ? int ChooseSpawn(NPCSpawnInfo spawnInfo)
static void EditSpawnRate(Player player, ref int spawnRate, ref int maxSpawns)
static void EditSpawnRange(Player player, ref int spawnRangeX, ref int spawnRangeY, ref int safeRangeX, ref int safeRangeY)
This serves as the central class from which NPC-related functions are carried out....
Definition NPCLoader.cs:26
static void SpawnNPC_SpawnFrog(int spawnTileX, int spawnTileY, int plr)
Definition NPC.cs:90231
static CoinLossRevengeSystem RevengeManager
Definition NPC.cs:976
static bool savedAngler
Definition NPC.cs:732
static bool noSpawnCycle
Definition NPC.cs:635
static int CountNPCS(int Type)
Returns the number of active NPC in the world of the given NPC type (F:Terraria.NPC....
Definition NPC.cs:106585
static int stinkBugChance
Definition NPC.cs:572
static int spawnRangeY
Definition NPC.cs:614
static void ResetRemixHax()
Definition NPC.cs:85974
static bool downedMechBoss2
Denotes whether or not the Twins have been defeated at least once in the current world.
Definition NPC.cs:959
static int goldCritterChance
Definition NPC.cs:468
static bool unlockedSlimePurpleSpawn
Definition NPC.cs:752
static bool NearSpikeBall(int x, int y)
Definition NPC.cs:106644
static bool savedTaxCollector
Definition NPC.cs:724
static int MoonLordFightingDistance
Definition NPC.cs:448
static int waveNumber
Definition NPC.cs:476
static bool savedGolfer
Definition NPC.cs:738
static int SpawnNPC_SpawnLavaBaitCritters(int spawnTileX, int spawnTileY)
Definition NPC.cs:90354
static int butterflyChance
Definition NPC.cs:570
static int safeRangeY
Definition NPC.cs:618
static bool savedMech
Definition NPC.cs:730
static readonly int AFKTimeNeededForNoWorms
Definition NPC.cs:494
static int spawnSpaceX
Definition NPC.cs:542
static bool downedMechBossAny
Denotes whether or not ANY Mechanical Boss has been defeated at least once in the current world.
Definition NPC.cs:949
static int[,] cavernMonsterType
Definition NPC.cs:1221
static bool savedWizard
Definition NPC.cs:728
static bool downedBoss1
Denotes whether or not the Eye of Cthulhu has been defeated at least once in the current world.
Definition NPC.cs:790
static int fireFlyChance
Definition NPC.cs:566
static int spawnRangeX
Definition NPC.cs:612
static bool savedGoblin
Definition NPC.cs:726
static int SpawnNPC_TryFindingProperGroundTileType(int spawnTileType, int x, int y)
Definition NPC.cs:90383
static int defaultSpawnRate
Definition NPC.cs:639
static int sWidth
Definition NPC.cs:608
static int maxSpawns
Definition NPC.cs:972
static bool FindCattailTop(int landX, int landY, out int cattailX, out int cattailY)
Definition NPC.cs:90416
static bool downedMechBoss3
Denotes whether or not Skeletron Prime has been defeated at least once in the current world.
Definition NPC.cs:964
static void SlimeRainSpawns(int plr)
Definition NPC.cs:85827
static bool AnyDanger(bool quickBossNPCCheck=false, bool ignorePillarsAndMoonlordCountdown=false)
Definition NPC.cs:90479
static int spawnRate
Definition NPC.cs:970
static bool AnyNPCs(int Type)
Returns true if there are any active NPC in the world of the given NPC type (F:Terraria....
Definition NPC.cs:106615
static int SpawnNPC_GetGemBunnyToSpawn()
Definition NPC.cs:90247
static bool SpawnNPC_CheckToSpawnUndergroundFairy(int spawnTileX, int spawnTileY, int plr)
Definition NPC.cs:90324
static int safeRangeX
Definition NPC.cs:616
static int RollDragonflyType(int tileType=2)
Definition NPC.cs:85965
static bool unlockedSlimeOldSpawn
Definition NPC.cs:750
static bool downedGoblins
Denotes whether or not at least one Goblin Army has been defeated in the current world.
Definition NPC.cs:816
static bool Spawning_SandstoneCheck(int x, int y)
Definition NPC.cs:85903
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)
Spawns an NPC into the game world with the given type. This method should not be called on multipla...
Definition NPC.cs:91239
static void SpawnOnPlayer(int plr, int Type)
Definition NPC.cs:90808
static int spawnSpaceY
Definition NPC.cs:544
static int fireFlyFriendly
Definition NPC.cs:564
static bool downedGolemBoss
Denotes whether or not Golem has been defeated at least once in the current world.
Definition NPC.cs:842
static bool downedMartians
Denotes whether or not at least one Martian Madness event has been cleared in the current world.
Definition NPC.cs:847
static bool downedBoss3
Denotes whether or not Skeletron has been defeated at least once in the current world.
Definition NPC.cs:801
static int SpawnNPC_GetGemSquirrelToSpawn()
Definition NPC.cs:90277
static bool downedPlantBoss
Denotes whether or not Plantera has been defeated at least once in the current world.
Definition NPC.cs:837
static bool savedBartender
Definition NPC.cs:736
static bool TooWindyForButterflies
Definition NPC.cs:1557
static int defaultMaxSpawns
Definition NPC.cs:641
static IEntitySource GetSpawnSourceForNaturalSpawn()
Definition NPC.cs:107538
static bool SpawnTileOrAboveHasAnyWallInSet(int x, int y, bool[] wallTypes)
Definition NPC.cs:85988
static bool downedMechBoss1
Denotes whether or not the Destroyer has been defeated at least once in the current world.
Definition NPC.cs:954
static bool SpawnNPC_CheckToSpawnRockGolem(int spawnTileX, int spawnTileY, int plr, int tileType)
Definition NPC.cs:90307
static int fireFlyMultiple
Definition NPC.cs:568
static bool savedStylist
Definition NPC.cs:734
static int sHeight
Definition NPC.cs:610
A struct that stores information regarding where an NPC is naturally spawning and the player it is sp...

References Terraria.ID.WallID.Sets.AllowsUndergroundDesertEnemiesToSpawn, Terraria.WorldGen.beachDistance, Terraria.Main.bloodMoon, Terraria.GameContent.CoinLossRevengeSystem.CheckRespawns(), Terraria.WorldGen.checkUnderground(), Terraria.ModLoader.NPCLoader.ChooseSpawn(), Terraria.Main.cloudAlpha, Terraria.Main.cloudBGActive, Terraria.ID.TileID.Sets.Corrupt, Terraria.ID.TileID.Sets.Crimson, Terraria.Main.dayTime, Terraria.Main.dontStarveWorld, Terraria.Main.drunkWorld, Terraria.Main.dungeonY, Terraria.Main.eclipse, Terraria.ModLoader.NPCLoader.EditSpawnRange(), Terraria.ModLoader.NPCLoader.EditSpawnRate(), Terraria.Main.expertMode, Terraria.Main.GameModeInfo, Terraria.Main.getGoodWorld, Terraria.ID.TileID.Sets.Hallow, Terraria.Main.halloween, Terraria.GameContent.Events.Sandstorm.Happening, Terraria.Main.hardMode, Terraria.GameContent.Creative.CreativePowerManager.Instance, Terraria.Main.invasionDelay, Terraria.Main.invasionSize, Terraria.Main.invasionSizeStart, Terraria.Main.invasionType, Terraria.Main.invasionX, Terraria.Main.IsItAHappyWindyDay, Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Main.moonPhase, Terraria.Main.netMode, Terraria.Main.npc, Terraria.Main.numClouds, Terraria.WorldGen.oceanDepths(), Terraria.WorldGen.oceanDistance, Terraria.GameContent.Events.DD2Event.Ongoing, Terraria.GameContent.Events.BirthdayParty.PartyIsUp, Terraria.Main.player, Terraria.Main.pumpkinMoon, Terraria.Main.raining, Terraria.Main.rand, Terraria.GameContent.Events.DD2Event.ReadyToFindBartender, Terraria.Main.remixWorld, Terraria.Main.rockLayer, Terraria.ID.TileID.Sets.Conversion.Sand, Terraria.NetMessage.SendData(), Terraria.WorldGen.shadowOrbSmashed, Terraria.Main.slimeRain, Terraria.Main.snowMoon, Terraria.WorldGen.SolidTile(), Terraria.Collision.SolidTiles(), Terraria.ModLoader.NPCLoader.SpawnNPC(), Terraria.GameContent.Events.DD2Event.SpawnNPC(), Terraria.Main.spawnTileX, Terraria.Star.starfallBoost, Terraria.Main.tenthAnniversaryWorld, Terraria.Main.tile, Terraria.Main.tileDungeon, Terraria.Main.tileSand, Terraria.Main.tileSolid, Terraria.Main.time, Terraria.Main.UnderworldLayer, Terraria.Main.wallHouse, Terraria.Main.wallLight, Terraria.Main.windSpeedTarget, Terraria.Main.wofNPCIndex, Terraria.Main.worldSurface, and Terraria.Main.xMas.

Referenced by Terraria.Main.DoUpdateInWorld().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: