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

◆ SpawnWOF()

static void Terraria.NPC.SpawnWOF ( Vector2 pos)
inlinestatic

Definition at line 77086 of file NPC.cs.

77087 {
77088 if (pos.Y / 16f < (float)(Main.maxTilesY - 205) || Main.wofNPCIndex >= 0 || Main.netMode == 1 || AnyNPCs(113))
77089 {
77090 return;
77091 }
77092 Player.FindClosest(pos, 16, 16);
77093 int num = 1;
77094 if (pos.X / 16f > (float)(Main.maxTilesX / 2))
77095 {
77096 num = -1;
77097 }
77098 bool flag = false;
77099 int num2 = (int)pos.X;
77100 int targetPlayerIndex = 0;
77101 while (!flag)
77102 {
77103 flag = true;
77104 for (int i = 0; i < 255; i++)
77105 {
77106 if (Main.player[i].active && Main.player[i].position.X > (float)(num2 - 1200) && Main.player[i].position.X < (float)(num2 + 1200))
77107 {
77108 num2 -= num * 16;
77109 flag = false;
77111 }
77112 }
77113 if (num2 / 16 < 20 || num2 / 16 > Main.maxTilesX - 20)
77114 {
77115 flag = true;
77116 }
77117 }
77118 int num3 = (int)pos.Y;
77119 int num4 = num2 / 16;
77120 int num5 = num3 / 16;
77121 int num6 = 0;
77122 int num7 = 1000;
77123 if (!WorldGen.InWorld(num4, num5, 2) || WorldGen.SolidTile(num4, num5) || Main.tile[num4, num5 - num6].liquid >= 100)
77124 {
77125 while (true)
77126 {
77127 num7--;
77128 if (num7 <= 0)
77129 {
77130 break;
77131 }
77132 try
77133 {
77134 if (WorldGen.InWorld(num4, num5 - num6, 2) && !WorldGen.SolidTile(num4, num5 - num6) && Main.tile[num4, num5 - num6].liquid < 100)
77135 {
77136 num5 -= num6;
77137 break;
77138 }
77139 if (WorldGen.InWorld(num4, num5 + num6, 2) && !WorldGen.SolidTile(num4, num5 + num6) && Main.tile[num4, num5 + num6].liquid < 100)
77140 {
77141 num5 += num6;
77142 break;
77143 }
77144 num6++;
77145 }
77146 catch
77147 {
77148 break;
77149 }
77150 }
77151 }
77152 int num8 = Main.UnderworldLayer + 10;
77153 int num9 = num8 + 70;
77154 if (num5 < num8)
77155 {
77156 num5 = num8;
77157 }
77158 if (num5 > num9)
77159 {
77160 num5 = num9;
77161 }
77162 num3 = num5 * 16;
77164 if (Main.netMode == 0)
77165 {
77166 Main.NewText(Language.GetTextValue("Announcement.HasAwoken", Main.npc[num10].TypeName), 175, 75);
77167 }
77168 else if (Main.netMode == 2)
77169 {
77170 ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", Main.npc[num10].GetTypeNetName()), new Color(175, 75, 255));
77171 }
77172 }
static void BroadcastChatMessage(NetworkText text, Color color, int excludedPlayer=-1)
Definition ChatHelper.cs:46
static string GetTextValue(string key)
Definition Language.cs:15
static NetworkText FromKey(string key, params object[] substitutions)
static bool AnyNPCs(int Type)
Definition NPC.cs:86689
static int NewNPC(IEntitySource source, int X, int Y, int Type, int Start=0, float ai0=0f, float ai1=0f, float ai2=0f, float ai3=0f, int Target=255)
Definition NPC.cs:77654
static IEntitySource GetBossSpawnSource(int targetPlayerIndex)
Definition NPC.cs:77579

References Terraria.Chat.ChatHelper.BroadcastChatMessage(), Terraria.Player.FindClosest(), Terraria.Localization.NetworkText.FromKey(), Terraria.Localization.Language.GetTextValue(), Terraria.WorldGen.InWorld(), Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Main.netMode, Terraria.Main.NewText(), Terraria.Main.npc, Terraria.Main.player, Terraria.WorldGen.SolidTile(), Terraria.Main.tile, Terraria.Main.wofNPCIndex, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.

Referenced by Terraria.Item.CheckLavaDeath(), and Terraria.NPC.DoDeathEvents().