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

◆ GrowSpike()

static void Terraria.WorldGen.GrowSpike ( int i,
int j,
ushort spikeType,
ushort landType )
inlinestatic

Definition at line 38165 of file WorldGen.cs.

38166 {
38167 int num = -1;
38168 switch (landType)
38169 {
38170 case 23:
38171 num = 661;
38172 break;
38173 case 199:
38174 num = 662;
38175 break;
38176 }
38177 int num2 = i;
38178 int num3 = j;
38179 int num4 = 0;
38180 if (Main.tile[num2 + 1, num3].active() && Main.tile[num2 + 1, num3].type == spikeType)
38181 {
38182 num4++;
38183 }
38184 if (Main.tile[num2 - 1, num3].active() && Main.tile[num2 - 1, num3].type == spikeType)
38185 {
38186 num4++;
38187 }
38188 if (Main.tile[num2, num3 + 1].active() && Main.tile[num2, num3 + 1].type == spikeType)
38189 {
38190 num4++;
38191 }
38192 if (Main.tile[num2, num3 - 1].active() && Main.tile[num2, num3 - 1].type == spikeType)
38193 {
38194 num4++;
38195 }
38196 if (num4 >= 3 && Main.tile[i, j].type != landType && Main.tile[i, j].type != num)
38197 {
38198 return;
38199 }
38200 switch (genRand.Next(4))
38201 {
38202 case 0:
38203 num3--;
38204 break;
38205 case 1:
38206 num3++;
38207 break;
38208 case 2:
38209 num2--;
38210 break;
38211 case 3:
38212 num2++;
38213 break;
38214 }
38215 if (Main.tile[num2, num3].active())
38216 {
38217 return;
38218 }
38219 num4 = 0;
38220 if (Main.tile[num2 + 1, num3].active() && Main.tile[num2 + 1, num3].type == spikeType)
38221 {
38222 num4++;
38223 }
38224 if (Main.tile[num2 - 1, num3].active() && Main.tile[num2 - 1, num3].type == spikeType)
38225 {
38226 num4++;
38227 }
38228 if (Main.tile[num2, num3 + 1].active() && Main.tile[num2, num3 + 1].type == spikeType)
38229 {
38230 num4++;
38231 }
38232 if (Main.tile[num2, num3 - 1].active() && Main.tile[num2, num3 - 1].type == spikeType)
38233 {
38234 num4++;
38235 }
38236 if (num4 >= 2)
38237 {
38238 return;
38239 }
38240 int num5 = 7;
38241 int num9 = num2 - num5;
38242 int num6 = num2 + num5;
38243 int num7 = num3 - num5;
38244 int num8 = num3 + num5;
38245 bool flag = false;
38246 for (int k = num9; k < num6; k++)
38247 {
38248 for (int l = num7; l < num8; l++)
38249 {
38250 if (Math.Abs(k - num2) * 2 + Math.Abs(l - num3) < 9 && Main.tile[k, l].active() && (Main.tile[k, l].type == landType || Main.tile[k, l].type == num) && Main.tile[k, l - 1].active() && Main.tile[k, l - 1].type == spikeType && Main.tile[k, l - 1].liquid == 0)
38251 {
38252 flag = true;
38253 break;
38254 }
38255 }
38256 }
38257 if (flag)
38258 {
38259 Main.tile[num2, num3].type = spikeType;
38260 Main.tile[num2, num3].active(active: true);
38261 Main.tile[num2, num3].CopyPaintAndCoating(Main.tile[i, j]);
38263 if (Main.netMode == 2)
38264 {
38265 NetMessage.SendTileSquare(-1, num2, num3, 1);
38266 }
38267 }
38268 }
static UnifiedRandom genRand
Definition WorldGen.cs:1455
static void SquareTileFrame(int i, int j, bool resetFrame=true)

References Terraria.Main.netMode, Terraria.NetMessage.SendTileSquare(), and Terraria.Main.tile.

+ Here is the call graph for this function: