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

◆ ItemCheck_TryPlacingWearablesOnMannequins()

void Terraria.Player.ItemCheck_TryPlacingWearablesOnMannequins ( Item sItem)
inlineprivate

Definition at line 49252 of file Player.cs.

49253 {
49254 if (!controlUseItem || !releaseUseItem || (sItem.headSlot <= 0 && sItem.bodySlot <= 0 && sItem.legSlot <= 0))
49255 {
49256 return;
49257 }
49258 if (sItem.useStyle == 0)
49259 {
49260 releaseUseItem = false;
49261 }
49262 if (!(position.X / 16f - (float)tileRangeX - (float)sItem.tileBoost <= (float)tileTargetX) || !((position.X + (float)width) / 16f + (float)tileRangeX + (float)sItem.tileBoost - 1f >= (float)tileTargetX) || !(position.Y / 16f - (float)tileRangeY - (float)sItem.tileBoost <= (float)tileTargetY) || !((position.Y + (float)height) / 16f + (float)tileRangeY + (float)sItem.tileBoost - 2f >= (float)tileTargetY))
49263 {
49264 return;
49265 }
49266 int num = tileTargetX;
49267 int num2 = tileTargetY;
49268 if (!Main.tile[num, num2].active() || (Main.tile[num, num2].type != 128 && Main.tile[num, num2].type != 269))
49269 {
49270 return;
49271 }
49272 int frameY = Main.tile[num, num2].frameY;
49273 int num3 = 0;
49274 if (sItem.bodySlot >= 0)
49275 {
49276 num3 = 1;
49277 }
49278 if (sItem.legSlot >= 0)
49279 {
49280 num3 = 2;
49281 }
49282 frameY /= 18;
49283 while (num3 > frameY)
49284 {
49285 num2++;
49286 frameY = Main.tile[num, num2].frameY;
49287 frameY /= 18;
49288 }
49289 while (num3 < frameY)
49290 {
49291 num2--;
49292 frameY = Main.tile[num, num2].frameY;
49293 frameY /= 18;
49294 }
49295 int num4;
49296 for (num4 = Main.tile[num, num2].frameX; num4 >= 100; num4 -= 100)
49297 {
49298 }
49299 if (num4 >= 36)
49300 {
49301 num4 -= 36;
49302 }
49303 num -= num4 / 18;
49304 int num5 = Main.tile[num, num2].frameX;
49305 WorldGen.KillTile(num, num2, fail: true);
49306 if (Main.netMode == 1)
49307 {
49308 NetMessage.SendData(17, -1, -1, null, 0, num, num2, 1f);
49309 }
49310 while (num5 >= 100)
49311 {
49312 num5 -= 100;
49313 }
49314 if (frameY == 0 && sItem.headSlot >= 0)
49315 {
49316 Main.blockMouse = true;
49317 Main.tile[num, num2].frameX = (short)(num5 + sItem.headSlot * 100);
49318 if (Main.netMode == 1)
49319 {
49320 NetMessage.SendTileSquare(-1, num, num2);
49321 }
49322 sItem.stack--;
49323 if (sItem.stack <= 0)
49324 {
49325 sItem.SetDefaults();
49326 Main.mouseItem.SetDefaults();
49327 }
49328 if (selectedItem == 58)
49329 {
49330 Main.mouseItem = sItem.Clone();
49331 }
49332 releaseUseItem = false;
49333 mouseInterface = true;
49334 }
49335 else if (frameY == 1 && sItem.bodySlot >= 0)
49336 {
49337 Main.blockMouse = true;
49338 Main.tile[num, num2].frameX = (short)(num5 + sItem.bodySlot * 100);
49339 if (Main.netMode == 1)
49340 {
49341 NetMessage.SendTileSquare(-1, num, num2);
49342 }
49343 sItem.stack--;
49344 if (sItem.stack <= 0)
49345 {
49346 sItem.SetDefaults();
49347 Main.mouseItem.SetDefaults();
49348 }
49349 if (selectedItem == 58)
49350 {
49351 Main.mouseItem = sItem.Clone();
49352 }
49353 releaseUseItem = false;
49354 mouseInterface = true;
49355 }
49356 else if (frameY == 2 && sItem.legSlot >= 0 && !ArmorIDs.Legs.Sets.MannequinIncompatible.Contains(sItem.legSlot))
49357 {
49358 Main.blockMouse = true;
49359 Main.tile[num, num2].frameX = (short)(num5 + sItem.legSlot * 100);
49360 if (Main.netMode == 1)
49361 {
49362 NetMessage.SendTileSquare(-1, num, num2);
49363 }
49364 sItem.stack--;
49365 if (sItem.stack <= 0)
49366 {
49367 sItem.SetDefaults();
49368 Main.mouseItem.SetDefaults();
49369 }
49370 if (selectedItem == 58)
49371 {
49372 Main.mouseItem = sItem.Clone();
49373 }
49374 releaseUseItem = false;
49375 mouseInterface = true;
49376 }
49377 }
Vector2 position
Definition Entity.cs:14
static List< int > MannequinIncompatible
Definition ArmorIDs.cs:1041
bool mouseInterface
Definition Player.cs:1137
bool releaseUseItem
Definition Player.cs:1413
static int tileTargetY
Definition Player.cs:2085
static int tileRangeX
Definition Player.cs:2075
static int tileTargetX
Definition Player.cs:2083
static int tileRangeY
Definition Player.cs:2077
bool controlUseItem
Definition Player.cs:1391

References Terraria.WorldGen.KillTile(), Terraria.ID.ArmorIDs.Legs.Sets.MannequinIncompatible, Terraria.Main.mouseItem, Terraria.Main.netMode, Terraria.NetMessage.SendData(), Terraria.NetMessage.SendTileSquare(), and Terraria.Main.tile.