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

◆ Gem()

static void Terraria.WorldGen.Spread.Gem ( int x,
int y )
inlinestatic

Definition at line 342 of file WorldGen.cs.

343 {
344 if (!InWorld(x, y))
345 {
346 return;
347 }
351 list2.Add(new Point(x, y));
352 while (list2.Count > 0)
353 {
354 list.Clear();
356 list2.Clear();
357 while (list.Count > 0)
358 {
359 Point item = list[0];
360 if (!InWorld(item.X, item.Y, 1))
361 {
362 list.Remove(item);
363 continue;
364 }
367 Tile tile = Main.tile[item.X, item.Y];
368 if (SolidTile(item.X, item.Y) || tile.wall != 0)
369 {
370 if (tile.active())
371 {
372 if (Gemmable(tile.type))
373 {
374 tile.type = randGemTile();
375 }
376 Tile tile2 = Main.tile[item.X - 1, item.Y];
377 if (Gemmable(tile2.type))
378 {
379 tile2.type = randGemTile();
380 }
381 tile2 = Main.tile[item.X + 1, item.Y];
382 if (Gemmable(tile2.type))
383 {
384 tile2.type = randGemTile();
385 }
386 tile2 = Main.tile[item.X, item.Y - 1];
387 if (Gemmable(tile2.type))
388 {
389 tile2.type = randGemTile();
390 }
391 tile2 = Main.tile[item.X, item.Y + 1];
392 if (Gemmable(tile2.type))
393 {
394 tile2.type = randGemTile();
395 }
396 }
397 }
398 else
399 {
400 tile.wall = (ushort)(48 + randGem());
401 if (!tile.active() && genRand.Next(2) == 0)
402 {
403 PlaceTile(item.X, item.Y, 178, mute: true, forced: false, -1, randGem());
404 }
405 Point item2 = new Point(item.X - 1, item.Y);
406 if (!hashSet.Contains(item2))
407 {
408 list2.Add(item2);
409 }
410 item2 = new Point(item.X + 1, item.Y);
411 if (!hashSet.Contains(item2))
412 {
413 list2.Add(item2);
414 }
415 item2 = new Point(item.X, item.Y - 1);
416 if (!hashSet.Contains(item2))
417 {
418 list2.Add(item2);
419 }
420 item2 = new Point(item.X, item.Y + 1);
421 if (!hashSet.Contains(item2))
422 {
423 list2.Add(item2);
424 }
425 }
426 }
427 }
428 }
bool ICollection< KeyValuePair< TKey, TValue > >. Remove(KeyValuePair< TKey, TValue > keyValuePair)
bool ICollection< KeyValuePair< TKey, TValue > >. Contains(KeyValuePair< TKey, TValue > keyValuePair)
void AddRange(IEnumerable< KeyValuePair< TKey, TValue > > collection)
void Add(TKey key, TValue value)
static bool Gemmable(int type)
Definition WorldGen.cs:588
static ushort randGemTile()
Definition WorldGen.cs:5853
static bool PlaceTile(int i, int j, int Type, bool mute=false, bool forced=false, int plr=-1, int style=0)
static UnifiedRandom genRand
Definition WorldGen.cs:1215
static bool InWorld(int x, int y, int fluff=0)
Definition WorldGen.cs:5816
static int randGem()
Definition WorldGen.cs:5843

References Terraria.Tile.active(), System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Collections.Generic.Dictionary< TKey, TValue >.AddRange(), System.Collections.Generic.Dictionary< TKey, TValue >.Clear(), System.Collections.Generic.Dictionary< TKey, TValue >.Contains(), System.Collections.Generic.Dictionary< TKey, TValue >.Count, Terraria.WorldGen.Spread.Gemmable(), Terraria.WorldGen.genRand, Terraria.WorldGen.InWorld(), System.item, System.list, Terraria.WorldGen.PlaceTile(), Terraria.WorldGen.randGem(), Terraria.WorldGen.randGemTile(), System.Collections.Generic.Dictionary< TKey, TValue >.Remove(), Terraria.Enums.SolidTile, Terraria.Main.tile, Terraria.Tile.type, and Terraria.Tile.wall.

Referenced by Terraria.WorldGen.gemCave().