Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
PlayerDrawLayers.cs
Go to the documentation of this file.
1using System;
11using Terraria.ID;
12using Terraria.UI;
13
15
16public static class PlayerDrawLayers
17{
18 private const int DEFAULT_MAX_SPRITES = 200;
19
21
23 {
24 drawinfo.Position.Y += drawinfo.torsoOffset;
25 drawinfo.ItemLocation.Y += drawinfo.torsoOffset;
26 }
27
29 {
30 drawinfo.Position.Y -= drawinfo.torsoOffset;
31 drawinfo.ItemLocation.Y -= drawinfo.torsoOffset;
32 }
33
35 {
36 drawinfo.Position.Y += (int)drawinfo.mountOffSet / 2;
37 }
38
40 {
41 drawinfo.Position.Y -= (int)drawinfo.mountOffSet / 2;
42 }
43
45 {
46 drawinfo.DrawDataCache.Add(data);
47 switch (context)
48 {
49 case CompositePlayerDrawContext.BackShoulder:
50 case CompositePlayerDrawContext.BackArm:
51 case CompositePlayerDrawContext.FrontArm:
52 case CompositePlayerDrawContext.FrontShoulder:
53 {
54 if (drawinfo.armGlowColor.PackedValue == 0)
55 {
56 break;
57 }
58 DrawData item2 = data;
59 item2.color = drawinfo.armGlowColor;
60 Rectangle value2 = item2.sourceRect.Value;
61 value2.Y += 224;
62 item2.sourceRect = value2;
63 if (drawinfo.drawPlayer.body == 227)
64 {
65 Vector2 position2 = item2.position;
66 for (int j = 0; j < 2; j++)
67 {
68 Vector2 vector2 = new Vector2((float)Main.rand.Next(-10, 10) * 0.125f, (float)Main.rand.Next(-10, 10) * 0.125f);
69 item2.position = position2 + vector2;
70 if (j == 0)
71 {
72 drawinfo.DrawDataCache.Add(item2);
73 }
74 }
75 }
76 drawinfo.DrawDataCache.Add(item2);
77 break;
78 }
80 {
81 if (drawinfo.bodyGlowColor.PackedValue == 0)
82 {
83 break;
84 }
85 DrawData item = data;
86 item.color = drawinfo.bodyGlowColor;
87 Rectangle value = item.sourceRect.Value;
88 value.Y += 224;
89 item.sourceRect = value;
90 if (drawinfo.drawPlayer.body == 227)
91 {
92 Vector2 position = item.position;
93 for (int i = 0; i < 2; i++)
94 {
95 Vector2 vector = new Vector2((float)Main.rand.Next(-10, 10) * 0.125f, (float)Main.rand.Next(-10, 10) * 0.125f);
96 item.position = position + vector;
97 if (i == 0)
98 {
99 drawinfo.DrawDataCache.Add(item);
100 }
101 }
102 }
103 drawinfo.DrawDataCache.Add(item);
104 break;
105 }
106 }
107 if (context == CompositePlayerDrawContext.FrontShoulder && drawinfo.drawPlayer.head == 269)
108 {
109 Vector2 position3 = drawinfo.helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect;
110 DrawData item3 = new DrawData(TextureAssets.Extra[214].Value, position3, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
111 item3.shader = drawinfo.cHead;
112 drawinfo.DrawDataCache.Add(item3);
113 item3 = new DrawData(TextureAssets.GlowMask[308].Value, position3, drawinfo.drawPlayer.bodyFrame, drawinfo.headGlowColor, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
114 item3.shader = drawinfo.cHead;
115 drawinfo.DrawDataCache.Add(item3);
116 }
117 if (context == CompositePlayerDrawContext.FrontArm && drawinfo.drawPlayer.body == 205)
118 {
119 Color color = new Color(100, 100, 100, 0);
120 ulong seed = (ulong)(drawinfo.drawPlayer.miscCounter / 4);
121 int num = 4;
122 for (int k = 0; k < num; k++)
123 {
124 float num2 = (float)Utils.RandomInt(ref seed, -10, 11) * 0.2f;
125 float num3 = (float)Utils.RandomInt(ref seed, -10, 1) * 0.15f;
126 DrawData item4 = data;
127 Rectangle value3 = item4.sourceRect.Value;
128 value3.Y += 224;
129 item4.sourceRect = value3;
130 item4.position.X += num2;
131 item4.position.Y += num3;
132 item4.color = color;
133 drawinfo.DrawDataCache.Add(item4);
134 }
135 }
136 }
137
139 {
140 if (!drawinfo.hideHair && drawinfo.backHairDraw)
141 {
142 Vector2 position = new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + drawinfo.hairOffset;
143 if (drawinfo.drawPlayer.head == -1 || drawinfo.fullHair || drawinfo.drawsBackHairWithoutHeadgear)
144 {
145 DrawData item = new DrawData(TextureAssets.PlayerHair[drawinfo.drawPlayer.hair].Value, position, drawinfo.hairBackFrame, drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
146 item.shader = drawinfo.hairDyePacked;
147 drawinfo.DrawDataCache.Add(item);
148 }
149 else if (drawinfo.hatHair)
150 {
151 DrawData item = new DrawData(TextureAssets.PlayerHairAlt[drawinfo.drawPlayer.hair].Value, position, drawinfo.hairBackFrame, drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
152 item.shader = drawinfo.hairDyePacked;
153 drawinfo.DrawDataCache.Add(item);
154 }
155 }
156 }
157
159 {
160 if (drawinfo.drawPlayer.mount.Active)
161 {
164 drawinfo.drawPlayer.mount.Draw(drawinfo.DrawDataCache, 0, drawinfo.drawPlayer, drawinfo.Position, drawinfo.colorMount, drawinfo.playerEffect, drawinfo.shadow);
165 drawinfo.drawPlayer.mount.Draw(drawinfo.DrawDataCache, 1, drawinfo.drawPlayer, drawinfo.Position, drawinfo.colorMount, drawinfo.playerEffect, drawinfo.shadow);
166 }
167 }
168
170 {
171 if (drawinfo.drawPlayer.carpetFrame >= 0)
172 {
173 Color colorArmorLegs = drawinfo.colorArmorLegs;
174 float num = 0f;
175 if (drawinfo.drawPlayer.gravDir == -1f)
176 {
177 num = 10f;
178 }
179 DrawData item = new DrawData(TextureAssets.FlyingCarpet.Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)(drawinfo.drawPlayer.height / 2) + 28f * drawinfo.drawPlayer.gravDir + num)), new Rectangle(0, TextureAssets.FlyingCarpet.Height() / 6 * drawinfo.drawPlayer.carpetFrame, TextureAssets.FlyingCarpet.Width(), TextureAssets.FlyingCarpet.Height() / 6), colorArmorLegs, drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.FlyingCarpet.Width() / 2, TextureAssets.FlyingCarpet.Height() / 8), 1f, drawinfo.playerEffect);
180 item.shader = drawinfo.cCarpet;
181 drawinfo.DrawDataCache.Add(item);
182 }
183 }
184
186 {
187 if (drawinfo.drawPlayer.portableStoolInfo.IsInUse)
188 {
189 Texture2D value = TextureAssets.Extra[102].Value;
190 Vector2 position = new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height + 28f));
191 Rectangle rectangle = value.Frame();
192 Vector2 origin = rectangle.Size() * new Vector2(0.5f, 1f);
193 DrawData item = new DrawData(value, position, rectangle, drawinfo.colorArmorLegs, drawinfo.drawPlayer.bodyRotation, origin, 1f, drawinfo.playerEffect);
194 item.shader = drawinfo.cPortableStool;
195 drawinfo.DrawDataCache.Add(item);
196 }
197 }
198
200 {
201 if (!drawinfo.drawPlayer.electrified || drawinfo.shadow != 0f)
202 {
203 return;
204 }
206 int num = drawinfo.drawPlayer.miscCounter / 5;
207 for (int i = 0; i < 2; i++)
208 {
209 num %= 7;
210 if (num <= 1 || num >= 5)
211 {
212 DrawData item = new DrawData(value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), new Rectangle(0, num * value.Height / 7, value.Width, value.Height / 7), drawinfo.colorElectricity, drawinfo.drawPlayer.bodyRotation, new Vector2(value.Width / 2, value.Height / 14), 1f, drawinfo.playerEffect);
213 drawinfo.DrawDataCache.Add(item);
214 }
215 num += 3;
216 }
217 }
218
220 {
221 if (drawinfo.drawPlayer.setForbidden && drawinfo.shadow == 0f)
222 {
223 Color color = Color.Lerp(drawinfo.colorArmorBody, Color.White, 0.7f);
226 bool num = !drawinfo.drawPlayer.setForbiddenCooldownLocked;
227 int num2 = 0;
228 num2 = (int)(((float)drawinfo.drawPlayer.miscCounter / 300f * ((float)Math.PI * 2f)).ToRotationVector2().Y * 6f);
229 float num3 = ((float)drawinfo.drawPlayer.miscCounter / 75f * ((float)Math.PI * 2f)).ToRotationVector2().X * 4f;
230 Color color2 = new Color(80, 70, 40, 0) * (num3 / 8f + 0.5f) * 0.8f;
231 if (!num)
232 {
233 num2 = 0;
234 num3 = 2f;
235 color2 = new Color(80, 70, 40, 0) * 0.3f;
236 color = color.MultiplyRGB(new Color(0.5f, 0.5f, 1f));
237 }
238 Vector2 vector = new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2);
239 int num4 = 10;
240 int num5 = 20;
241 if (drawinfo.drawPlayer.head == 238)
242 {
243 num4 += 4;
244 num5 += 4;
245 }
246 vector += new Vector2(-drawinfo.drawPlayer.direction * num4, (float)(-num5) * drawinfo.drawPlayer.gravDir + (float)num2 * drawinfo.drawPlayer.gravDir);
247 DrawData item = new DrawData(value, vector, null, color, drawinfo.drawPlayer.bodyRotation, value.Size() / 2f, 1f, drawinfo.playerEffect);
248 item.shader = drawinfo.cBody;
249 drawinfo.DrawDataCache.Add(item);
250 for (float num6 = 0f; num6 < 4f; num6 += 1f)
251 {
252 item = new DrawData(value2, vector + (num6 * ((float)Math.PI / 2f)).ToRotationVector2() * num3, null, color2, drawinfo.drawPlayer.bodyRotation, value.Size() / 2f, 1f, drawinfo.playerEffect);
253 drawinfo.DrawDataCache.Add(item);
254 }
255 }
256 }
257
259 {
260 if (drawinfo.drawPlayer.head >= 0 && drawinfo.drawPlayer.head < ArmorIDs.Head.Count)
261 {
262 int num = ArmorIDs.Head.Sets.FrontToBackID[drawinfo.drawPlayer.head];
263 if (num >= 0)
264 {
265 Vector2 helmetOffset = drawinfo.helmetOffset;
266 DrawData item = new DrawData(TextureAssets.ArmorHead[num].Value, helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
267 item.shader = drawinfo.cHead;
268 drawinfo.DrawDataCache.Add(item);
269 }
270 }
271 }
272
274 {
275 if (drawinfo.drawPlayer.legs == 60 && !drawinfo.isSitting && !drawinfo.drawPlayer.invis && (!ShouldOverrideLegs_CheckShoes(ref drawinfo) || drawinfo.drawPlayer.wearsRobe))
276 {
277 DrawData item = new DrawData(TextureAssets.Extra[153].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.legFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.legFrame.Height + 4f)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, drawinfo.drawPlayer.legFrame, drawinfo.colorArmorLegs, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect);
278 item.shader = drawinfo.cLegs;
279 drawinfo.DrawDataCache.Add(item);
280 }
281 }
282
284 {
285 if (drawinfo.drawPlayer.head == 238 && drawinfo.shadow == 0f)
286 {
287 Color color = Color.Lerp(drawinfo.colorArmorBody, Color.White, 0.7f);
288 Texture2D value = TextureAssets.Extra[152].Value;
289 Texture2D value2 = TextureAssets.Extra[152].Value;
290 int num = 0;
291 num = (int)(((float)drawinfo.drawPlayer.miscCounter / 300f * ((float)Math.PI * 2f)).ToRotationVector2().Y * 6f);
292 float num2 = ((float)drawinfo.drawPlayer.miscCounter / 75f * ((float)Math.PI * 2f)).ToRotationVector2().X * 4f;
293 Color color2 = new Color(80, 70, 40, 0) * (num2 / 8f + 0.5f) * 0.8f;
294 Vector2 vector = new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2);
295 int num3 = 8;
296 int num4 = 20;
297 num3 += 4;
298 num4 += 4;
299 vector += new Vector2(-drawinfo.drawPlayer.direction * num3, (float)(-num4) * drawinfo.drawPlayer.gravDir + (float)num * drawinfo.drawPlayer.gravDir);
300 DrawData item = new DrawData(value, vector, null, color, drawinfo.drawPlayer.bodyRotation, value.Size() / 2f, 1f, drawinfo.playerEffect);
301 item.shader = drawinfo.cHead;
302 drawinfo.DrawDataCache.Add(item);
303 for (float num5 = 0f; num5 < 4f; num5 += 1f)
304 {
305 item = new DrawData(value2, vector + (num5 * ((float)Math.PI / 2f)).ToRotationVector2() * num2, null, color2, drawinfo.drawPlayer.bodyRotation, value.Size() / 2f, 1f, drawinfo.playerEffect);
306 item.shader = drawinfo.cHead;
307 drawinfo.DrawDataCache.Add(item);
308 }
309 }
310 }
311
313 {
314 if (drawinfo.drawPlayer.webbed && drawinfo.shadow == 0f && drawinfo.drawPlayer.velocity.Y != 0f)
315 {
316 Color color = drawinfo.colorArmorBody * 0.75f;
318 DrawData item = new DrawData(value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), null, color, drawinfo.drawPlayer.bodyRotation, value.Size() / 2f, 1f, drawinfo.playerEffect);
319 drawinfo.DrawDataCache.Add(item);
320 }
321 }
322
324 {
325 if (drawinfo.drawPlayer.leinforsHair && (drawinfo.fullHair || drawinfo.hatHair || drawinfo.drawsBackHairWithoutHeadgear || drawinfo.drawPlayer.head == -1 || drawinfo.drawPlayer.head == 0) && drawinfo.drawPlayer.hair != 12 && drawinfo.shadow == 0f && Main.rgbToHsl(drawinfo.colorHead).Z > 0.2f)
326 {
327 if (Main.rand.Next(20) == 0 && !drawinfo.hatHair)
328 {
329 Rectangle r = Utils.CenteredRectangle(drawinfo.Position + drawinfo.drawPlayer.Size / 2f + new Vector2(0f, drawinfo.drawPlayer.gravDir * -20f), new Vector2(20f, 14f));
330 int num = Dust.NewDust(r.TopLeft(), r.Width, r.Height, 204, 0f, 0f, 150, default(Color), 0.3f);
331 Main.dust[num].fadeIn = 1f;
332 Main.dust[num].velocity *= 0.1f;
333 Main.dust[num].noLight = true;
334 Main.dust[num].shader = GameShaders.Armor.GetSecondaryShader(drawinfo.drawPlayer.cLeinShampoo, drawinfo.drawPlayer);
335 drawinfo.DustCache.Add(num);
336 }
337 if (Main.rand.Next(40) == 0 && drawinfo.hatHair)
338 {
339 Rectangle r2 = Utils.CenteredRectangle(drawinfo.Position + drawinfo.drawPlayer.Size / 2f + new Vector2(drawinfo.drawPlayer.direction * -10, drawinfo.drawPlayer.gravDir * -10f), new Vector2(5f, 5f));
340 int num2 = Dust.NewDust(r2.TopLeft(), r2.Width, r2.Height, 204, 0f, 0f, 150, default(Color), 0.3f);
341 Main.dust[num2].fadeIn = 1f;
342 Main.dust[num2].velocity *= 0.1f;
343 Main.dust[num2].noLight = true;
344 Main.dust[num2].shader = GameShaders.Armor.GetSecondaryShader(drawinfo.drawPlayer.cLeinShampoo, drawinfo.drawPlayer);
345 drawinfo.DustCache.Add(num2);
346 }
347 if (drawinfo.drawPlayer.velocity.X != 0f && drawinfo.backHairDraw && Main.rand.Next(15) == 0)
348 {
349 Rectangle r3 = Utils.CenteredRectangle(drawinfo.Position + drawinfo.drawPlayer.Size / 2f + new Vector2(drawinfo.drawPlayer.direction * -14, 0f), new Vector2(4f, 30f));
350 int num3 = Dust.NewDust(r3.TopLeft(), r3.Width, r3.Height, 204, 0f, 0f, 150, default(Color), 0.3f);
351 Main.dust[num3].fadeIn = 1f;
352 Main.dust[num3].velocity *= 0.1f;
353 Main.dust[num3].noLight = true;
354 Main.dust[num3].shader = GameShaders.Armor.GetSecondaryShader(drawinfo.drawPlayer.cLeinShampoo, drawinfo.drawPlayer);
355 drawinfo.DustCache.Add(num3);
356 }
357 }
358 }
359
360 public static bool DrawPlayer_08_PlayerVisuallyHasFullArmorSet(PlayerDrawSet drawinfo, int head, int body, int legs)
361 {
362 if (drawinfo.drawPlayer.head == head && drawinfo.drawPlayer.body == body)
363 {
364 return drawinfo.drawPlayer.legs == legs;
365 }
366 return false;
367 }
368
370 {
372 {
373 Vector2 vec = new Vector2(-2f + -2f * drawinfo.drawPlayer.Directions.X, 0f) + drawinfo.Position - Main.screenPosition + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.width / 2, drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height / 2);
374 vec = vec.Floor();
375 Texture2D value = TextureAssets.Extra[212].Value;
376 Rectangle value2 = value.Frame(1, 5, 0, drawinfo.drawPlayer.miscCounter % 25 / 5);
377 Color immuneAlphaPure = drawinfo.drawPlayer.GetImmuneAlphaPure(new Color(250, 250, 250, 200), drawinfo.shadow);
378 immuneAlphaPure *= drawinfo.drawPlayer.stealth;
379 DrawData item = new DrawData(value, vec, value2, immuneAlphaPure, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
380 item.shader = drawinfo.cBody;
381 drawinfo.DrawDataCache.Add(item);
382 }
384 {
385 Vector2 vec2 = new Vector2(-9f + 1f * drawinfo.drawPlayer.Directions.X, -4f * drawinfo.drawPlayer.Directions.Y) + drawinfo.Position - Main.screenPosition + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.width / 2, drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height / 2);
386 vec2 = vec2.Floor();
387 Texture2D value3 = TextureAssets.Extra[213].Value;
388 Rectangle value4 = value3.Frame(1, 5, 0, drawinfo.drawPlayer.miscCounter % 25 / 5);
389 Color immuneAlphaPure2 = drawinfo.drawPlayer.GetImmuneAlphaPure(new Color(250, 250, 250, 200), drawinfo.shadow);
390 immuneAlphaPure2 *= drawinfo.drawPlayer.stealth;
391 DrawData item = new DrawData(value3, vec2, value4, immuneAlphaPure2, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
392 item.shader = drawinfo.cBody;
393 drawinfo.DrawDataCache.Add(item);
394 }
395 if (drawinfo.heldItem.type == 4818 && drawinfo.drawPlayer.ownedProjectileCounts[902] == 0)
396 {
397 int num = 8;
398 Vector2 vector = new Vector2(0f, 8f);
399 Vector2 vec3 = drawinfo.Position - Main.screenPosition + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.width / 2, drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height / 2) + new Vector2(0f, -4f) + vector;
400 vec3 = vec3.Floor();
401 DrawData item = new DrawData(TextureAssets.BackPack[num].Value, vec3, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
402 drawinfo.DrawDataCache.Add(item);
403 }
404 if (drawinfo.drawPlayer.backpack > 0 && drawinfo.drawPlayer.backpack < ArmorIDs.Back.Count && !drawinfo.drawPlayer.mount.Active)
405 {
406 Vector2 vector2 = new Vector2(0f, 8f);
407 Vector2 vec4 = drawinfo.Position - Main.screenPosition + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.width / 2, drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height / 2) + new Vector2(0f, -4f) + vector2;
408 vec4 = vec4.Floor();
409 DrawData item = new DrawData(TextureAssets.AccBack[drawinfo.drawPlayer.backpack].Value, vec4, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
410 item.shader = drawinfo.cBackpack;
411 drawinfo.DrawDataCache.Add(item);
412 }
413 else
414 {
415 if (drawinfo.heldItem.type != 1178 && drawinfo.heldItem.type != 779 && drawinfo.heldItem.type != 5134 && drawinfo.heldItem.type != 1295 && drawinfo.heldItem.type != 1910 && !drawinfo.drawPlayer.turtleArmor && drawinfo.drawPlayer.body != 106 && drawinfo.drawPlayer.body != 170)
416 {
417 return;
418 }
419 int type = drawinfo.heldItem.type;
420 int num2 = 1;
421 float num3 = -4f;
422 float num4 = -8f;
423 int shader = 0;
424 if (drawinfo.drawPlayer.turtleArmor)
425 {
426 num2 = 4;
427 shader = drawinfo.cBody;
428 }
429 else if (drawinfo.drawPlayer.body == 106)
430 {
431 num2 = 6;
432 shader = drawinfo.cBody;
433 }
434 else if (drawinfo.drawPlayer.body == 170)
435 {
436 num2 = 7;
437 shader = drawinfo.cBody;
438 }
439 else
440 {
441 switch (type)
442 {
443 case 1178:
444 num2 = 1;
445 break;
446 case 779:
447 num2 = 2;
448 break;
449 case 5134:
450 num2 = 9;
451 break;
452 case 1295:
453 num2 = 3;
454 break;
455 case 1910:
456 num2 = 5;
457 break;
458 }
459 }
460 Vector2 vector3 = new Vector2(0f, 8f);
461 Vector2 vec5 = drawinfo.Position - Main.screenPosition + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.width / 2, drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height / 2) + new Vector2(0f, -4f) + vector3;
462 vec5 = vec5.Floor();
463 Vector2 vec6 = drawinfo.Position - Main.screenPosition + new Vector2(drawinfo.drawPlayer.width / 2, drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height / 2) + new Vector2((-9f + num3) * (float)drawinfo.drawPlayer.direction, (2f + num4) * drawinfo.drawPlayer.gravDir) + vector3;
464 vec6 = vec6.Floor();
465 switch (num2)
466 {
467 case 7:
468 {
469 DrawData item = new DrawData(TextureAssets.BackPack[num2].Value, vec5, new Rectangle(0, drawinfo.drawPlayer.bodyFrame.Y, TextureAssets.BackPack[num2].Width(), drawinfo.drawPlayer.bodyFrame.Height), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, new Vector2((float)TextureAssets.BackPack[num2].Width() * 0.5f, drawinfo.bodyVect.Y), 1f, drawinfo.playerEffect);
470 item.shader = shader;
471 drawinfo.DrawDataCache.Add(item);
472 break;
473 }
474 case 4:
475 case 6:
476 {
477 DrawData item = new DrawData(TextureAssets.BackPack[num2].Value, vec5, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
478 item.shader = shader;
479 drawinfo.DrawDataCache.Add(item);
480 break;
481 }
482 default:
483 {
484 DrawData item = new DrawData(TextureAssets.BackPack[num2].Value, vec6, new Rectangle(0, 0, TextureAssets.BackPack[num2].Width(), TextureAssets.BackPack[num2].Height()), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.BackPack[num2].Width() / 2, TextureAssets.BackPack[num2].Height() / 2), 1f, drawinfo.playerEffect);
485 item.shader = shader;
486 drawinfo.DrawDataCache.Add(item);
487 break;
488 }
489 }
490 }
491 }
492
494 {
495 if (drawinfo.drawPlayer.tail > 0 && drawinfo.drawPlayer.tail < ArmorIDs.Back.Count && !drawinfo.drawPlayer.mount.Active)
496 {
498 if (drawinfo.isSitting)
499 {
500 zero.Y += -2f;
501 }
502 Vector2 vector = new Vector2(0f, 8f);
503 Vector2 vec = zero + drawinfo.Position - Main.screenPosition + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.width / 2, drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height / 2) + new Vector2(0f, -4f) + vector;
504 vec = vec.Floor();
505 DrawData item = new DrawData(TextureAssets.AccBack[drawinfo.drawPlayer.tail].Value, vec, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
506 item.shader = drawinfo.cTail;
507 drawinfo.DrawDataCache.Add(item);
508 }
509 }
510
512 {
513 if (drawinfo.drawPlayer.back <= 0 || drawinfo.drawPlayer.back >= ArmorIDs.Back.Count)
514 {
515 return;
516 }
517 if (drawinfo.drawPlayer.front >= 1 && drawinfo.drawPlayer.front <= 4)
518 {
519 int num = drawinfo.drawPlayer.bodyFrame.Y / 56;
520 if (num < 1 || num > 5)
521 {
522 drawinfo.armorAdjust = 10;
523 }
524 else
525 {
526 if (drawinfo.drawPlayer.front == 1)
527 {
528 drawinfo.armorAdjust = 0;
529 }
530 if (drawinfo.drawPlayer.front == 2)
531 {
532 drawinfo.armorAdjust = 8;
533 }
534 if (drawinfo.drawPlayer.front == 3)
535 {
536 drawinfo.armorAdjust = 0;
537 }
538 if (drawinfo.drawPlayer.front == 4)
539 {
540 drawinfo.armorAdjust = 8;
541 }
542 }
543 }
545 Vector2 vector = new Vector2(0f, 8f);
546 Vector2 vec = zero + drawinfo.Position - Main.screenPosition + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.width / 2, drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height / 2) + new Vector2(0f, -4f) + vector;
547 vec = vec.Floor();
548 DrawData item = new DrawData(TextureAssets.AccBack[drawinfo.drawPlayer.back].Value, vec, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
549 item.shader = drawinfo.cBack;
550 drawinfo.DrawDataCache.Add(item);
551 if (drawinfo.drawPlayer.back == 36)
552 {
553 Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame;
554 Rectangle value = bodyFrame;
555 value.Width = 2;
556 int num2 = 0;
557 int num3 = bodyFrame.Width / 2;
558 int num4 = 2;
559 if (drawinfo.playerEffect.HasFlag(SpriteEffects.FlipHorizontally))
560 {
561 num2 = bodyFrame.Width - 2;
562 num4 = -2;
563 }
564 for (int i = 0; i < num3; i++)
565 {
566 value.X = bodyFrame.X + 2 * i;
567 Color immuneAlpha = drawinfo.drawPlayer.GetImmuneAlpha(LiquidRenderer.GetShimmerGlitterColor(top: true, (float)i / 16f, 0f), drawinfo.shadow);
568 immuneAlpha *= (float)(int)drawinfo.colorArmorBody.A / 255f;
569 item = new DrawData(TextureAssets.GlowMask[332].Value, vec + new Vector2(num2 + i * num4, 0f), value, immuneAlpha, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
570 item.shader = drawinfo.cBack;
571 drawinfo.DrawDataCache.Add(item);
572 }
573 }
574 }
575
577 {
578 if (drawinfo.drawPlayer.dead || drawinfo.hideEntirePlayer)
579 {
580 return;
581 }
582 Vector2 directions = drawinfo.drawPlayer.Directions;
583 Vector2 vector = drawinfo.Position - Main.screenPosition + drawinfo.drawPlayer.Size / 2f;
584 Vector2 vector2 = new Vector2(0f, 7f);
585 vector = drawinfo.Position - Main.screenPosition + new Vector2(drawinfo.drawPlayer.width / 2, drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height / 2) + vector2;
586 if (drawinfo.drawPlayer.wings <= 0)
587 {
588 return;
589 }
590 Main.instance.LoadWings(drawinfo.drawPlayer.wings);
592 if (drawinfo.drawPlayer.wings == 22)
593 {
594 if (!drawinfo.drawPlayer.ShouldDrawWingsThatAreAlwaysAnimated())
595 {
596 return;
597 }
598 Main.instance.LoadItemFlames(1866);
599 Color colorArmorBody = drawinfo.colorArmorBody;
600 int num = 26;
601 int num2 = -9;
603 if (drawinfo.shadow == 0f && drawinfo.drawPlayer.grappling[0] == -1)
604 {
605 for (int i = 0; i < 7; i++)
606 {
607 Color color = new Color(250 - i * 10, 250 - i * 10, 250 - i * 10, 150 - i * 10);
608 Vector2 vector4 = new Vector2((float)Main.rand.Next(-10, 11) * 0.2f, (float)Main.rand.Next(-10, 11) * 0.2f);
609 drawinfo.stealth *= drawinfo.stealth;
610 drawinfo.stealth *= 1f - drawinfo.shadow;
611 color = new Color((int)((float)(int)color.R * drawinfo.stealth), (int)((float)(int)color.G * drawinfo.stealth), (int)((float)(int)color.B * drawinfo.stealth), (int)((float)(int)color.A * drawinfo.stealth));
612 vector4.X = drawinfo.drawPlayer.itemFlamePos[i].X;
613 vector4.Y = 0f - drawinfo.drawPlayer.itemFlamePos[i].Y;
614 vector4 *= 0.5f;
615 Vector2 position = (vector3 + vector4).Floor();
616 item = new DrawData(TextureAssets.ItemFlame[1866].Value, position, new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 7 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 7 - 2), color, drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 14), 1f, drawinfo.playerEffect);
617 item.shader = drawinfo.cWings;
618 drawinfo.DrawDataCache.Add(item);
619 }
620 }
621 item = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vector3.Floor(), new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 7 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 7), colorArmorBody, drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 14), 1f, drawinfo.playerEffect);
622 item.shader = drawinfo.cWings;
623 drawinfo.DrawDataCache.Add(item);
624 return;
625 }
626 if (drawinfo.drawPlayer.wings == 28)
627 {
628 if (drawinfo.drawPlayer.ShouldDrawWingsThatAreAlwaysAnimated())
629 {
630 Color colorArmorBody2 = drawinfo.colorArmorBody;
631 Vector2 vector5 = new Vector2(0f, 19f);
633 Texture2D value = TextureAssets.Wings[drawinfo.drawPlayer.wings].Value;
634 Rectangle rectangle = value.Frame(1, 4, 0, drawinfo.drawPlayer.miscCounter / 5 % 4);
635 rectangle.Width -= 2;
636 rectangle.Height -= 2;
637 item = new DrawData(value, vec.Floor(), rectangle, Color.Lerp(colorArmorBody2, Color.White, 1f), drawinfo.drawPlayer.bodyRotation, rectangle.Size() / 2f, 1f, drawinfo.playerEffect);
638 item.shader = drawinfo.cWings;
639 drawinfo.DrawDataCache.Add(item);
640 value = TextureAssets.Extra[38].Value;
641 item = new DrawData(value, vec.Floor(), rectangle, Color.Lerp(colorArmorBody2, Color.White, 0.5f), drawinfo.drawPlayer.bodyRotation, rectangle.Size() / 2f, 1f, drawinfo.playerEffect);
642 item.shader = drawinfo.cWings;
643 drawinfo.DrawDataCache.Add(item);
644 }
645 return;
646 }
647 if (drawinfo.drawPlayer.wings == 45)
648 {
649 if (!drawinfo.drawPlayer.ShouldDrawWingsThatAreAlwaysAnimated())
650 {
651 return;
652 }
654 Color color2 = new Color(255, 255, 255, 255);
655 int num3 = 22;
656 int num4 = 0;
658 Color color3 = color2 * (1f - drawinfo.shadow);
659 item = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vec2.Floor(), new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 6 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 6), color3, drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 12), 1f, drawinfo.playerEffect);
660 item.shader = drawinfo.cWings;
661 drawinfo.DrawDataCache.Add(item);
662 if (drawinfo.shadow == 0f)
663 {
664 float num5 = ((float)drawinfo.drawPlayer.miscCounter / 75f * ((float)Math.PI * 2f)).ToRotationVector2().X * 4f;
665 Color color4 = new Color(70, 70, 70, 0) * (num5 / 8f + 0.5f) * 0.4f;
666 for (float num6 = 0f; num6 < (float)Math.PI * 2f; num6 += (float)Math.PI / 2f)
667 {
668 item = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vec2.Floor() + num6.ToRotationVector2() * num5, new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 6 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 6), color4, drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 12), 1f, drawinfo.playerEffect);
669 item.shader = drawinfo.cWings;
670 drawinfo.DrawDataCache.Add(item);
671 }
672 }
673 return;
674 }
675 if (drawinfo.drawPlayer.wings == 34)
676 {
677 if (drawinfo.drawPlayer.ShouldDrawWingsThatAreAlwaysAnimated())
678 {
679 drawinfo.stealth *= drawinfo.stealth;
680 drawinfo.stealth *= 1f - drawinfo.shadow;
681 Color color5 = new Color((int)(250f * drawinfo.stealth), (int)(250f * drawinfo.stealth), (int)(250f * drawinfo.stealth), (int)(100f * drawinfo.stealth));
682 Vector2 vector6 = new Vector2(0f, 0f);
683 Texture2D value2 = TextureAssets.Wings[drawinfo.drawPlayer.wings].Value;
684 Vector2 vec3 = drawinfo.Position + drawinfo.drawPlayer.Size / 2f - Main.screenPosition + vector6 * drawinfo.drawPlayer.Directions - Vector2.UnitX * drawinfo.drawPlayer.direction * 4f;
685 Rectangle rectangle2 = value2.Frame(1, 6, 0, drawinfo.drawPlayer.wingFrame);
686 rectangle2.Width -= 2;
687 rectangle2.Height -= 2;
688 item = new DrawData(value2, vec3.Floor(), rectangle2, color5, drawinfo.drawPlayer.bodyRotation, rectangle2.Size() / 2f, 1f, drawinfo.playerEffect);
689 item.shader = drawinfo.cWings;
690 drawinfo.DrawDataCache.Add(item);
691 }
692 return;
693 }
694 if (drawinfo.drawPlayer.wings == 40)
695 {
696 drawinfo.stealth *= drawinfo.stealth;
697 drawinfo.stealth *= 1f - drawinfo.shadow;
698 Color color6 = new Color((int)(250f * drawinfo.stealth), (int)(250f * drawinfo.stealth), (int)(250f * drawinfo.stealth), (int)(100f * drawinfo.stealth));
699 Vector2 vector7 = new Vector2(-4f, 0f);
700 Texture2D value3 = TextureAssets.Wings[drawinfo.drawPlayer.wings].Value;
702 for (int j = 0; j < 1; j++)
703 {
704 SpriteEffects spriteEffects = drawinfo.playerEffect;
705 Vector2 scale = new Vector2(1f);
707 zero.X = drawinfo.drawPlayer.direction * 3;
708 if (j == 1)
709 {
710 spriteEffects ^= SpriteEffects.FlipHorizontally;
711 scale = new Vector2(0.7f, 1f);
712 zero.X += (float)(-drawinfo.drawPlayer.direction) * 6f;
713 }
714 Vector2 vector9 = drawinfo.drawPlayer.velocity * -1.5f;
715 int num7 = 0;
716 int num8 = 8;
717 float num9 = 4f;
718 if (drawinfo.drawPlayer.velocity.Y == 0f)
719 {
720 num7 = 8;
721 num8 = 14;
722 num9 = 3f;
723 }
724 for (int k = num7; k < num8; k++)
725 {
727 Rectangle rectangle3 = value3.Frame(1, 14, 0, k);
728 rectangle3.Width -= 2;
729 rectangle3.Height -= 2;
730 int num10 = (k - num7) % (int)num9;
731 Vector2 vector10 = new Vector2(0f, 0.5f).RotatedBy((drawinfo.drawPlayer.miscCounterNormalized * (2f + (float)num10) + (float)num10 * 0.5f + (float)j * 1.3f) * ((float)Math.PI * 2f)) * (num10 + 1);
732 vec4 += vector10;
733 vec4 += vector9 * ((float)num10 / num9);
734 vec4 += zero;
735 item = new DrawData(value3, vec4.Floor(), rectangle3, color6, drawinfo.drawPlayer.bodyRotation, rectangle3.Size() / 2f, scale, spriteEffects);
736 item.shader = drawinfo.cWings;
737 drawinfo.DrawDataCache.Add(item);
738 }
739 }
740 return;
741 }
742 if (drawinfo.drawPlayer.wings == 39)
743 {
744 if (drawinfo.drawPlayer.ShouldDrawWingsThatAreAlwaysAnimated())
745 {
746 drawinfo.stealth *= drawinfo.stealth;
747 drawinfo.stealth *= 1f - drawinfo.shadow;
748 Color colorArmorBody3 = drawinfo.colorArmorBody;
749 Vector2 vector11 = new Vector2(-6f, -7f);
750 Texture2D value4 = TextureAssets.Wings[drawinfo.drawPlayer.wings].Value;
752 Rectangle rectangle4 = value4.Frame(1, 6, 0, drawinfo.drawPlayer.wingFrame);
753 rectangle4.Width -= 2;
754 rectangle4.Height -= 2;
755 item = new DrawData(value4, vec5.Floor(), rectangle4, colorArmorBody3, drawinfo.drawPlayer.bodyRotation, rectangle4.Size() / 2f, 1f, drawinfo.playerEffect);
756 item.shader = drawinfo.cWings;
757 drawinfo.DrawDataCache.Add(item);
758 }
759 return;
760 }
761 int num11 = 0;
762 int num12 = 0;
763 int num13 = 4;
764 if (drawinfo.drawPlayer.wings == 43)
765 {
766 num12 = -5;
767 num11 = -7;
768 num13 = 7;
769 }
770 else if (drawinfo.drawPlayer.wings == 44)
771 {
772 num13 = 7;
773 }
774 else if (drawinfo.drawPlayer.wings == 5)
775 {
776 num12 = 4;
777 num11 -= 4;
778 }
779 else if (drawinfo.drawPlayer.wings == 27)
780 {
781 num12 = 4;
782 }
783 Color color7 = drawinfo.colorArmorBody;
784 if (drawinfo.drawPlayer.wings == 9 || drawinfo.drawPlayer.wings == 29)
785 {
786 drawinfo.stealth *= drawinfo.stealth;
787 drawinfo.stealth *= 1f - drawinfo.shadow;
788 color7 = new Color((int)(250f * drawinfo.stealth), (int)(250f * drawinfo.stealth), (int)(250f * drawinfo.stealth), (int)(100f * drawinfo.stealth));
789 }
790 if (drawinfo.drawPlayer.wings == 10)
791 {
792 drawinfo.stealth *= drawinfo.stealth;
793 drawinfo.stealth *= 1f - drawinfo.shadow;
794 color7 = new Color((int)(250f * drawinfo.stealth), (int)(250f * drawinfo.stealth), (int)(250f * drawinfo.stealth), (int)(175f * drawinfo.stealth));
795 }
796 if (drawinfo.drawPlayer.wings == 11 && color7.A > Main.gFade)
797 {
798 color7.A = Main.gFade;
799 }
800 if (drawinfo.drawPlayer.wings == 31)
801 {
802 color7.A = (byte)(220f * drawinfo.stealth);
803 }
804 if (drawinfo.drawPlayer.wings == 32)
805 {
806 color7.A = (byte)(127f * drawinfo.stealth);
807 }
808 if (drawinfo.drawPlayer.wings == 6)
809 {
810 color7.A = (byte)(160f * drawinfo.stealth);
811 color7 *= 0.9f;
812 }
813 Vector2 vector12 = vector + new Vector2(num12 - 9, num11 + 2) * directions;
814 item = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vector12.Floor(), new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / num13 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / num13), color7, drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / num13 / 2), 1f, drawinfo.playerEffect);
815 item.shader = drawinfo.cWings;
816 drawinfo.DrawDataCache.Add(item);
817 if (drawinfo.drawPlayer.wings == 43 && drawinfo.shadow == 0f)
818 {
820 Vector2 origin = new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / num13 / 2);
821 Rectangle value5 = new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / num13 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / num13);
822 for (int l = 0; l < 2; l++)
823 {
824 item = new DrawData(position: vector13 + new Vector2((float)Main.rand.Next(-10, 10) * 0.125f, (float)Main.rand.Next(-10, 10) * 0.125f), texture: TextureAssets.GlowMask[272].Value, sourceRect: value5, color: new Color(230, 230, 230, 60), rotation: drawinfo.drawPlayer.bodyRotation, origin: origin, scale: 1f, effect: drawinfo.playerEffect);
825 item.shader = drawinfo.cWings;
826 drawinfo.DrawDataCache.Add(item);
827 }
828 }
829 if (drawinfo.drawPlayer.wings == 23)
830 {
831 drawinfo.stealth *= drawinfo.stealth;
832 drawinfo.stealth *= 1f - drawinfo.shadow;
833 item = new DrawData(color: new Color((int)(200f * drawinfo.stealth), (int)(200f * drawinfo.stealth), (int)(200f * drawinfo.stealth), (int)(200f * drawinfo.stealth)), texture: TextureAssets.Flames[8].Value, position: vector12.Floor(), sourceRect: new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4), rotation: drawinfo.drawPlayer.bodyRotation, origin: new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8), scale: 1f, effect: drawinfo.playerEffect);
834 item.shader = drawinfo.cWings;
835 drawinfo.DrawDataCache.Add(item);
836 }
837 else if (drawinfo.drawPlayer.wings == 27)
838 {
839 item = new DrawData(TextureAssets.GlowMask[92].Value, vector12.Floor(), new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4), new Color(255, 255, 255, 127) * drawinfo.stealth * (1f - drawinfo.shadow), drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8), 1f, drawinfo.playerEffect);
840 item.shader = drawinfo.cWings;
841 drawinfo.DrawDataCache.Add(item);
842 }
843 else if (drawinfo.drawPlayer.wings == 44)
844 {
846 playerRainbowWings.Request();
847 if (playerRainbowWings.IsReady)
848 {
849 RenderTarget2D target = playerRainbowWings.GetTarget();
850 item = new DrawData(target, vector12.Floor(), new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 7 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 7), new Color(255, 255, 255, 255) * drawinfo.stealth * (1f - drawinfo.shadow), drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 14), 1f, drawinfo.playerEffect);
851 item.shader = drawinfo.cWings;
852 drawinfo.DrawDataCache.Add(item);
853 }
854 }
855 else if (drawinfo.drawPlayer.wings == 30)
856 {
857 item = new DrawData(TextureAssets.GlowMask[181].Value, vector12.Floor(), new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4), new Color(255, 255, 255, 127) * drawinfo.stealth * (1f - drawinfo.shadow), drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8), 1f, drawinfo.playerEffect);
858 item.shader = drawinfo.cWings;
859 drawinfo.DrawDataCache.Add(item);
860 }
861 else if (drawinfo.drawPlayer.wings == 38)
862 {
863 Color color9 = drawinfo.ArkhalisColor * drawinfo.stealth * (1f - drawinfo.shadow);
864 item = new DrawData(TextureAssets.GlowMask[251].Value, vector12.Floor(), new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4), color9, drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8), 1f, drawinfo.playerEffect);
865 item.shader = drawinfo.cWings;
866 drawinfo.DrawDataCache.Add(item);
867 for (int num14 = drawinfo.drawPlayer.shadowPos.Length - 2; num14 >= 0; num14--)
868 {
870 color10.A = 0;
871 color10 *= MathHelper.Lerp(1f, 0f, (float)num14 / 3f);
872 color10 *= 0.1f;
873 Vector2 vector14 = drawinfo.drawPlayer.shadowPos[num14] - drawinfo.drawPlayer.position;
874 for (float num15 = 0f; num15 < 1f; num15 += 0.01f)
875 {
876 Vector2 vector15 = new Vector2(2f, 0f).RotatedBy(num15 / 0.04f * ((float)Math.PI * 2f));
877 item = new DrawData(TextureAssets.GlowMask[251].Value, vector15 + vector14 * num15 + vector12, new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4), color10 * (1f - num15), drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8), 1f, drawinfo.playerEffect);
878 item.shader = drawinfo.cWings;
879 drawinfo.DrawDataCache.Add(item);
880 }
881 }
882 }
883 else if (drawinfo.drawPlayer.wings == 29)
884 {
885 item = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vector12.Floor(), new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4), new Color(255, 255, 255, 0) * drawinfo.stealth * (1f - drawinfo.shadow) * 0.5f, drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8), 1.06f, drawinfo.playerEffect);
886 item.shader = drawinfo.cWings;
887 drawinfo.DrawDataCache.Add(item);
888 }
889 else if (drawinfo.drawPlayer.wings == 36)
890 {
891 item = new DrawData(TextureAssets.GlowMask[213].Value, vector12.Floor(), new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4), new Color(255, 255, 255, 0) * drawinfo.stealth * (1f - drawinfo.shadow), drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8), 1.06f, drawinfo.playerEffect);
892 item.shader = drawinfo.cWings;
893 drawinfo.DrawDataCache.Add(item);
894 Vector2 spinningpoint = new Vector2(0f, 2f - drawinfo.shadow * 2f);
895 for (int m = 0; m < 4; m++)
896 {
897 item = new DrawData(TextureAssets.GlowMask[213].Value, spinningpoint.RotatedBy((float)Math.PI / 2f * (float)m) + vector12.Floor(), new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4), new Color(127, 127, 127, 127) * drawinfo.stealth * (1f - drawinfo.shadow), drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8), 1f, drawinfo.playerEffect);
898 item.shader = drawinfo.cWings;
899 drawinfo.DrawDataCache.Add(item);
900 }
901 }
902 else if (drawinfo.drawPlayer.wings == 31)
903 {
904 Color color11 = new Color(255, 255, 255, 0);
905 color11 = Color.Lerp(Color.HotPink, Color.Crimson, (float)Math.Cos((float)Math.PI * 2f * ((float)drawinfo.drawPlayer.miscCounter / 100f)) * 0.4f + 0.5f);
906 color11.A = 0;
907 for (int n = 0; n < 4; n++)
908 {
909 Vector2 vector16 = new Vector2((float)Math.Cos((float)Math.PI * 2f * ((float)drawinfo.drawPlayer.miscCounter / 60f)) * 0.5f + 0.5f, 0f).RotatedBy((float)n * ((float)Math.PI / 2f)) * 1f;
910 item = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vector12.Floor() + vector16, new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4), color11 * drawinfo.stealth * (1f - drawinfo.shadow) * 0.5f, drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8), 1f, drawinfo.playerEffect);
911 item.shader = drawinfo.cWings;
912 drawinfo.DrawDataCache.Add(item);
913 }
914 item = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vector12.Floor(), new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4), color11 * drawinfo.stealth * (1f - drawinfo.shadow) * 1f, drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8), 1f, drawinfo.playerEffect);
915 item.shader = drawinfo.cWings;
916 drawinfo.DrawDataCache.Add(item);
917 }
918 else if (drawinfo.drawPlayer.wings == 32)
919 {
920 item = new DrawData(TextureAssets.GlowMask[183].Value, vector12.Floor(), new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4), new Color(255, 255, 255, 0) * drawinfo.stealth * (1f - drawinfo.shadow), drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8), 1.06f, drawinfo.playerEffect);
921 item.shader = drawinfo.cWings;
922 drawinfo.DrawDataCache.Add(item);
923 }
924 }
925
927 {
928 if (drawinfo.drawPlayer.balloonFront <= 0 || drawinfo.drawPlayer.balloonFront >= ArmorIDs.Balloon.Count)
929 {
930 return;
931 }
933 if (ArmorIDs.Balloon.Sets.UsesTorsoFraming[drawinfo.drawPlayer.balloonFront])
934 {
935 item = new DrawData(TextureAssets.AccBalloon[drawinfo.drawPlayer.balloonFront].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + drawinfo.bodyVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
936 item.shader = drawinfo.cBalloonFront;
937 drawinfo.DrawDataCache.Add(item);
938 return;
939 }
940 int num = ((Main.hasFocus && (!Main.ingameOptionsWindow || !Main.autoPause)) ? (DateTime.Now.Millisecond % 800 / 200) : 0);
941 Vector2 vector = Main.OffsetsPlayerOffhand[drawinfo.drawPlayer.bodyFrame.Y / 56];
942 if (drawinfo.drawPlayer.direction != 1)
943 {
944 vector.X = (float)drawinfo.drawPlayer.width - vector.X;
945 }
946 if (drawinfo.drawPlayer.gravDir != 1f)
947 {
948 vector.Y -= drawinfo.drawPlayer.height;
949 }
950 Vector2 vector2 = new Vector2(0f, 8f) + new Vector2(0f, 6f);
951 Vector2 vector3 = new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X + vector.X), (int)(drawinfo.Position.Y - Main.screenPosition.Y + vector.Y * drawinfo.drawPlayer.gravDir));
952 vector3 = drawinfo.Position - Main.screenPosition + vector * new Vector2(1f, drawinfo.drawPlayer.gravDir) + new Vector2(0f, drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height) + vector2;
953 vector3 = vector3.Floor();
954 item = new DrawData(TextureAssets.AccBalloon[drawinfo.drawPlayer.balloonFront].Value, vector3, new Rectangle(0, TextureAssets.AccBalloon[drawinfo.drawPlayer.balloonFront].Height() / 4 * num, TextureAssets.AccBalloon[drawinfo.drawPlayer.balloonFront].Width(), TextureAssets.AccBalloon[drawinfo.drawPlayer.balloonFront].Height() / 4), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, new Vector2(26 + drawinfo.drawPlayer.direction * 4, 28f + drawinfo.drawPlayer.gravDir * 6f), 1f, drawinfo.playerEffect);
955 item.shader = drawinfo.cBalloonFront;
956 drawinfo.DrawDataCache.Add(item);
957 }
958
960 {
961 if (drawinfo.drawPlayer.balloon <= 0 || drawinfo.drawPlayer.balloon >= ArmorIDs.Balloon.Count)
962 {
963 return;
964 }
966 if (ArmorIDs.Balloon.Sets.UsesTorsoFraming[drawinfo.drawPlayer.balloon])
967 {
968 item = new DrawData(TextureAssets.AccBalloon[drawinfo.drawPlayer.balloon].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + drawinfo.bodyVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
969 item.shader = drawinfo.cBalloon;
970 drawinfo.DrawDataCache.Add(item);
971 return;
972 }
973 int num = ((Main.hasFocus && (!Main.ingameOptionsWindow || !Main.autoPause)) ? (DateTime.Now.Millisecond % 800 / 200) : 0);
974 Vector2 vector = Main.OffsetsPlayerOffhand[drawinfo.drawPlayer.bodyFrame.Y / 56];
975 if (drawinfo.drawPlayer.direction != 1)
976 {
977 vector.X = (float)drawinfo.drawPlayer.width - vector.X;
978 }
979 if (drawinfo.drawPlayer.gravDir != 1f)
980 {
981 vector.Y -= drawinfo.drawPlayer.height;
982 }
983 Vector2 vector2 = new Vector2(0f, 8f) + new Vector2(0f, 6f);
984 Vector2 vector3 = new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X + vector.X), (int)(drawinfo.Position.Y - Main.screenPosition.Y + vector.Y * drawinfo.drawPlayer.gravDir));
985 vector3 = drawinfo.Position - Main.screenPosition + vector * new Vector2(1f, drawinfo.drawPlayer.gravDir) + new Vector2(0f, drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height) + vector2;
986 vector3 = vector3.Floor();
987 item = new DrawData(TextureAssets.AccBalloon[drawinfo.drawPlayer.balloon].Value, vector3, new Rectangle(0, TextureAssets.AccBalloon[drawinfo.drawPlayer.balloon].Height() / 4 * num, TextureAssets.AccBalloon[drawinfo.drawPlayer.balloon].Width(), TextureAssets.AccBalloon[drawinfo.drawPlayer.balloon].Height() / 4), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, new Vector2(26 + drawinfo.drawPlayer.direction * 4, 28f + drawinfo.drawPlayer.gravDir * 6f), 1f, drawinfo.playerEffect);
988 item.shader = drawinfo.cBalloon;
989 drawinfo.DrawDataCache.Add(item);
990 }
991
993 {
994 if (drawinfo.usesCompositeTorso)
995 {
997 return;
998 }
999 if (drawinfo.isSitting)
1000 {
1001 drawinfo.hidesBottomSkin = true;
1002 }
1003 if (!drawinfo.hidesTopSkin)
1004 {
1005 drawinfo.Position.Y += drawinfo.torsoOffset;
1006 DrawData drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 3].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorBodySkin, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
1007 drawData.shader = drawinfo.skinDyePacked;
1009 drawinfo.DrawDataCache.Add(item);
1010 drawinfo.Position.Y -= drawinfo.torsoOffset;
1011 }
1012 if (!drawinfo.hidesBottomSkin && !IsBottomOverridden(ref drawinfo))
1013 {
1014 if (drawinfo.isSitting)
1015 {
1016 DrawSittingLegs(ref drawinfo, TextureAssets.Players[drawinfo.skinVar, 10].Value, drawinfo.colorLegs);
1017 return;
1018 }
1019 DrawData item = new DrawData(TextureAssets.Players[drawinfo.skinVar, 10].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.legFrame, drawinfo.colorLegs, drawinfo.drawPlayer.legRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
1020 drawinfo.DrawDataCache.Add(item);
1021 }
1022 }
1023
1025 {
1027 {
1028 return true;
1029 }
1031 {
1032 return true;
1033 }
1034 return false;
1035 }
1036
1038 {
1039 switch (drawinfo.drawPlayer.legs)
1040 {
1041 case 67:
1042 case 106:
1043 case 138:
1044 case 140:
1045 case 143:
1046 case 217:
1047 case 222:
1048 case 226:
1049 case 228:
1050 return true;
1051 default:
1052 return false;
1053 }
1054 }
1055
1057 {
1058 sbyte shoe = drawinfo.drawPlayer.shoe;
1059 if (shoe == 15)
1060 {
1061 return true;
1062 }
1063 return false;
1064 }
1065
1067 {
1068 if (!drawinfo.hidesTopSkin && !drawinfo.drawPlayer.invis)
1069 {
1070 Vector2 vector = new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2);
1071 vector.Y += drawinfo.torsoOffset;
1072 Vector2 vector2 = Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height];
1073 vector2.Y -= 2f;
1074 vector += vector2 * -drawinfo.playerEffect.HasFlag(SpriteEffects.FlipVertically).ToDirectionInt();
1075 float bodyRotation = drawinfo.drawPlayer.bodyRotation;
1078 Vector2 bodyVect = drawinfo.bodyVect;
1079 Vector2 bodyVect2 = drawinfo.bodyVect;
1082 _ = bodyVect + compositeOffset_BackArm;
1086 if (drawinfo.drawFloatingTube)
1087 {
1088 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Extra[105].Value, vector, new Rectangle(0, 0, 40, 56), drawinfo.floatingTubeColor, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect)
1089 {
1090 shader = drawinfo.cFloatingTube
1091 });
1092 }
1093 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 3].Value, vector, drawinfo.compTorsoFrame, drawinfo.colorBodySkin, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect)
1094 {
1095 shader = drawinfo.skinDyePacked
1096 });
1097 }
1098 if (!drawinfo.hidesBottomSkin && !drawinfo.drawPlayer.invis && !IsBottomOverridden(ref drawinfo))
1099 {
1100 if (drawinfo.isSitting)
1101 {
1102 DrawSittingLegs(ref drawinfo, TextureAssets.Players[drawinfo.skinVar, 10].Value, drawinfo.colorLegs, drawinfo.skinDyePacked);
1103 }
1104 else
1105 {
1106 DrawData drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 10].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.legFrame, drawinfo.colorLegs, drawinfo.drawPlayer.legRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
1107 drawData.shader = drawinfo.skinDyePacked;
1109 drawinfo.DrawDataCache.Add(item);
1110 }
1111 }
1113 }
1114
1116 {
1117 Vector2 vector = new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2);
1118 Vector2 vector2 = Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height];
1119 vector2.Y -= 2f;
1120 vector += vector2 * -drawinfo.playerEffect.HasFlag(SpriteEffects.FlipVertically).ToDirectionInt();
1121 vector.Y += drawinfo.torsoOffset;
1122 float bodyRotation = drawinfo.drawPlayer.bodyRotation;
1124 Vector2 position = vector;
1125 Vector2 bodyVect = drawinfo.bodyVect;
1128 position += drawinfo.backShoulderOffset;
1129 bodyVect += compositeOffset_BackArm;
1130 float rotation = bodyRotation + drawinfo.compositeBackArmRotation;
1131 bool flag = !drawinfo.drawPlayer.invis;
1132 bool flag2 = !drawinfo.drawPlayer.invis;
1133 bool flag3 = drawinfo.drawPlayer.body > 0 && drawinfo.drawPlayer.body < ArmorIDs.Body.Count;
1134 bool flag4 = !drawinfo.hidesTopSkin;
1135 bool flag5 = false;
1136 if (flag3)
1137 {
1138 flag &= drawinfo.missingHand;
1139 if (flag2 && drawinfo.missingArm)
1140 {
1141 if (flag4)
1142 {
1143 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, vector3, drawinfo.compBackArmFrame, drawinfo.colorBodySkin, rotation, bodyVect, 1f, drawinfo.playerEffect)
1144 {
1145 shader = drawinfo.skinDyePacked
1146 });
1147 }
1148 if (!flag5 && flag4)
1149 {
1150 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 5].Value, vector3, drawinfo.compBackArmFrame, drawinfo.colorBodySkin, rotation, bodyVect, 1f, drawinfo.playerEffect)
1151 {
1152 shader = drawinfo.skinDyePacked
1153 });
1154 flag5 = true;
1155 }
1156 flag2 = false;
1157 }
1158 if (!drawinfo.drawPlayer.invis || IsArmorDrawnWhenInvisible(drawinfo.drawPlayer.body))
1159 {
1160 Texture2D value = TextureAssets.ArmorBodyComposite[drawinfo.drawPlayer.body].Value;
1161 if (!drawinfo.hideCompositeShoulders)
1162 {
1163 DrawCompositeArmorPiece(ref drawinfo, CompositePlayerDrawContext.BackShoulder, new DrawData(value, position, drawinfo.compBackShoulderFrame, drawinfo.colorArmorBody, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect)
1164 {
1165 shader = drawinfo.cBody
1166 });
1167 }
1169 DrawCompositeArmorPiece(ref drawinfo, CompositePlayerDrawContext.BackArm, new DrawData(value, vector3, drawinfo.compBackArmFrame, drawinfo.colorArmorBody, rotation, bodyVect, 1f, drawinfo.playerEffect)
1170 {
1171 shader = drawinfo.cBody
1172 });
1173 }
1174 }
1175 if (flag)
1176 {
1177 if (flag4)
1178 {
1179 if (flag2)
1180 {
1181 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, vector3, drawinfo.compBackArmFrame, drawinfo.colorBodySkin, rotation, bodyVect, 1f, drawinfo.playerEffect)
1182 {
1183 shader = drawinfo.skinDyePacked
1184 });
1185 }
1186 if (!flag5 && flag4)
1187 {
1188 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 5].Value, vector3, drawinfo.compBackArmFrame, drawinfo.colorBodySkin, rotation, bodyVect, 1f, drawinfo.playerEffect)
1189 {
1190 shader = drawinfo.skinDyePacked
1191 });
1192 flag5 = true;
1193 }
1194 }
1195 if (!flag3)
1196 {
1197 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 8].Value, vector3, drawinfo.compBackArmFrame, drawinfo.colorUnderShirt, rotation, bodyVect, 1f, drawinfo.playerEffect));
1199 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 13].Value, vector3, drawinfo.compBackArmFrame, drawinfo.colorShirt, rotation, bodyVect, 1f, drawinfo.playerEffect));
1200 }
1201 }
1202 if (drawinfo.drawPlayer.handoff > 0 && drawinfo.drawPlayer.handoff < ArmorIDs.HandOff.Count)
1203 {
1204 Texture2D value2 = TextureAssets.AccHandsOffComposite[drawinfo.drawPlayer.handoff].Value;
1205 DrawCompositeArmorPiece(ref drawinfo, CompositePlayerDrawContext.BackArmAccessory, new DrawData(value2, vector3, drawinfo.compBackArmFrame, drawinfo.colorArmorBody, rotation, bodyVect, 1f, drawinfo.playerEffect)
1206 {
1207 shader = drawinfo.cHandOff
1208 });
1209 }
1210 if (drawinfo.drawPlayer.drawingFootball)
1211 {
1212 Main.instance.LoadProjectile(861);
1214 Rectangle rectangle = value3.Frame(1, 4);
1215 Vector2 origin = rectangle.Size() / 2f;
1216 Vector2 position2 = vector3 + new Vector2(drawinfo.drawPlayer.direction * -2, drawinfo.drawPlayer.gravDir * 4f);
1217 drawinfo.DrawDataCache.Add(new DrawData(value3, position2, rectangle, drawinfo.colorArmorBody, bodyRotation + (float)Math.PI / 4f * (float)drawinfo.drawPlayer.direction, origin, 0.8f, drawinfo.playerEffect));
1218 }
1219 }
1220
1222 {
1223 Vector2 legsOffset = drawinfo.legsOffset;
1224 if (drawinfo.drawPlayer.legs == 169)
1225 {
1226 return;
1227 }
1228 if (drawinfo.isSitting && drawinfo.drawPlayer.legs != 140 && drawinfo.drawPlayer.legs != 217)
1229 {
1230 if (drawinfo.drawPlayer.legs > 0 && drawinfo.drawPlayer.legs < ArmorIDs.Legs.Count && (!ShouldOverrideLegs_CheckShoes(ref drawinfo) || drawinfo.drawPlayer.wearsRobe))
1231 {
1232 if (!drawinfo.drawPlayer.invis)
1233 {
1234 DrawSittingLegs(ref drawinfo, TextureAssets.ArmorLeg[drawinfo.drawPlayer.legs].Value, drawinfo.colorArmorLegs, drawinfo.cLegs);
1235 if (drawinfo.legsGlowMask != -1)
1236 {
1237 DrawSittingLegs(ref drawinfo, TextureAssets.GlowMask[drawinfo.legsGlowMask].Value, drawinfo.legsGlowColor, drawinfo.cLegs);
1238 }
1239 }
1240 }
1241 else if (!drawinfo.drawPlayer.invis && !ShouldOverrideLegs_CheckShoes(ref drawinfo))
1242 {
1243 DrawSittingLegs(ref drawinfo, TextureAssets.Players[drawinfo.skinVar, 11].Value, drawinfo.colorPants);
1244 DrawSittingLegs(ref drawinfo, TextureAssets.Players[drawinfo.skinVar, 12].Value, drawinfo.colorShoes);
1245 }
1246 }
1247 else if (drawinfo.drawPlayer.legs == 140)
1248 {
1249 if (!drawinfo.drawPlayer.invis && !drawinfo.drawPlayer.mount.Active)
1250 {
1251 Texture2D value = TextureAssets.Extra[73].Value;
1252 bool flag = drawinfo.drawPlayer.legFrame.Y != drawinfo.drawPlayer.legFrame.Height || Main.gameMenu;
1253 int num = drawinfo.drawPlayer.miscCounter / 3 % 8;
1254 if (flag)
1255 {
1256 num = drawinfo.drawPlayer.miscCounter / 4 % 8;
1257 }
1258 Rectangle rectangle = new Rectangle(18 * flag.ToInt(), num * 26, 16, 24);
1259 float num2 = 12f;
1260 if (drawinfo.drawPlayer.bodyFrame.Height != 0)
1261 {
1262 num2 = 12f - Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height].Y;
1263 }
1264 if (drawinfo.drawPlayer.Directions.Y == -1f)
1265 {
1266 num2 -= 6f;
1267 }
1268 Vector2 scale = new Vector2(1f, 1f);
1269 Vector2 vector = drawinfo.Position + drawinfo.drawPlayer.Size * new Vector2(0.5f, 0.5f + 0.5f * drawinfo.drawPlayer.gravDir);
1270 _ = drawinfo.drawPlayer.direction;
1271 Vector2 vec = vector + new Vector2(0f, (0f - num2) * drawinfo.drawPlayer.gravDir) - Main.screenPosition + drawinfo.drawPlayer.legPosition;
1272 if (drawinfo.isSitting)
1273 {
1274 vec.Y += drawinfo.seatYOffset;
1275 }
1276 vec += legsOffset;
1277 vec = vec.Floor();
1278 DrawData item = new DrawData(value, vec, rectangle, drawinfo.colorArmorLegs, drawinfo.drawPlayer.legRotation, rectangle.Size() * new Vector2(0.5f, 0.5f - drawinfo.drawPlayer.gravDir * 0.5f), scale, drawinfo.playerEffect);
1279 item.shader = drawinfo.cLegs;
1280 drawinfo.DrawDataCache.Add(item);
1281 }
1282 }
1283 else if (drawinfo.drawPlayer.legs > 0 && drawinfo.drawPlayer.legs < ArmorIDs.Legs.Count && (!ShouldOverrideLegs_CheckShoes(ref drawinfo) || drawinfo.drawPlayer.wearsRobe))
1284 {
1285 if (drawinfo.drawPlayer.invis)
1286 {
1287 return;
1288 }
1289 DrawData item = new DrawData(TextureAssets.ArmorLeg[drawinfo.drawPlayer.legs].Value, legsOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.legFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.legFrame.Height + 4f)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, drawinfo.drawPlayer.legFrame, drawinfo.colorArmorLegs, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect);
1290 item.shader = drawinfo.cLegs;
1291 drawinfo.DrawDataCache.Add(item);
1292 if (drawinfo.legsGlowMask == -1)
1293 {
1294 return;
1295 }
1296 if (drawinfo.legsGlowMask == 274)
1297 {
1298 for (int i = 0; i < 2; i++)
1299 {
1300 item = new DrawData(position: legsOffset + new Vector2((float)Main.rand.Next(-10, 10) * 0.125f, (float)Main.rand.Next(-10, 10) * 0.125f) + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.legFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.legFrame.Height + 4f)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, texture: TextureAssets.GlowMask[drawinfo.legsGlowMask].Value, sourceRect: drawinfo.drawPlayer.legFrame, color: drawinfo.legsGlowColor, rotation: drawinfo.drawPlayer.legRotation, origin: drawinfo.legVect, scale: 1f, effect: drawinfo.playerEffect);
1301 item.shader = drawinfo.cLegs;
1302 drawinfo.DrawDataCache.Add(item);
1303 }
1304 }
1305 else
1306 {
1307 item = new DrawData(TextureAssets.GlowMask[drawinfo.legsGlowMask].Value, legsOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.legFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.legFrame.Height + 4f)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, drawinfo.drawPlayer.legFrame, drawinfo.legsGlowColor, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect);
1308 item.shader = drawinfo.cLegs;
1309 drawinfo.DrawDataCache.Add(item);
1310 }
1311 }
1312 else if (!drawinfo.drawPlayer.invis && !ShouldOverrideLegs_CheckShoes(ref drawinfo))
1313 {
1314 DrawData item = new DrawData(TextureAssets.Players[drawinfo.skinVar, 11].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.legFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.legFrame.Height + 4f)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, drawinfo.drawPlayer.legFrame, drawinfo.colorPants, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect);
1315 drawinfo.DrawDataCache.Add(item);
1316 item = new DrawData(TextureAssets.Players[drawinfo.skinVar, 12].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.legFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.legFrame.Height + 4f)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, drawinfo.drawPlayer.legFrame, drawinfo.colorShoes, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect);
1317 drawinfo.DrawDataCache.Add(item);
1318 }
1319 }
1320
1322 {
1323 Vector2 legsOffset = drawinfo.legsOffset;
1324 Vector2 position = new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.legFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.legFrame.Height + 4f)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect;
1325 Rectangle legFrame = drawinfo.drawPlayer.legFrame;
1326 position += legsOffset;
1327 position.X += 2 * drawinfo.drawPlayer.direction;
1328 legFrame.Y = legFrame.Height * 5;
1329 if (specialLegCoat == 160 || specialLegCoat == 173)
1330 {
1331 legFrame = drawinfo.drawPlayer.legFrame;
1332 }
1333 DrawData item = new DrawData(textureToDraw, position, legFrame, matchingColor, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect);
1334 item.shader = shaderIndex;
1335 drawinfo.DrawDataCache.Add(item);
1336 }
1337
1339 {
1340 Vector2 legsOffset = drawinfo.legsOffset;
1341 Vector2 vector = new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.legFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.legFrame.Height + 4f)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect;
1342 Rectangle legFrame = drawinfo.drawPlayer.legFrame;
1343 vector.Y -= 2f;
1344 vector.Y += drawinfo.seatYOffset;
1345 vector += legsOffset;
1346 int num = 2;
1347 int num2 = 42;
1348 int num3 = 2;
1349 int num4 = 2;
1350 int num5 = 0;
1351 int num6 = 0;
1352 int num7 = 0;
1353 bool flag = drawinfo.drawPlayer.legs == 101 || drawinfo.drawPlayer.legs == 102 || drawinfo.drawPlayer.legs == 118 || drawinfo.drawPlayer.legs == 99;
1354 if (drawinfo.drawPlayer.wearsRobe && !flag)
1355 {
1356 num = 0;
1357 num4 = 0;
1358 num2 = 6;
1359 vector.Y += 4f;
1360 legFrame.Y = legFrame.Height * 5;
1361 }
1362 switch (drawinfo.drawPlayer.legs)
1363 {
1364 case 214:
1365 case 215:
1366 case 216:
1367 num = -6;
1368 num4 = 2;
1369 num5 = 2;
1370 num3 = 4;
1371 num2 = 6;
1372 legFrame = drawinfo.drawPlayer.legFrame;
1373 vector.Y += 2f;
1374 break;
1375 case 106:
1376 case 143:
1377 case 226:
1378 num = 0;
1379 num4 = 0;
1380 num2 = 6;
1381 vector.Y += 4f;
1382 legFrame.Y = legFrame.Height * 5;
1383 break;
1384 case 132:
1385 num = -2;
1386 num7 = 2;
1387 break;
1388 case 193:
1389 case 194:
1390 if (drawinfo.drawPlayer.body == 218)
1391 {
1392 num = -2;
1393 num7 = 2;
1394 vector.Y += 2f;
1395 }
1396 break;
1397 case 210:
1398 if (glowmask)
1399 {
1400 Vector2 vector2 = new Vector2((float)Main.rand.Next(-10, 10) * 0.125f, (float)Main.rand.Next(-10, 10) * 0.125f);
1401 vector += vector2;
1402 }
1403 break;
1404 }
1405 for (int num8 = num3; num8 >= 0; num8--)
1406 {
1407 Vector2 position = vector + new Vector2(num, 2f) * new Vector2(drawinfo.drawPlayer.direction, 1f);
1408 Rectangle value = legFrame;
1409 value.Y += num8 * 2;
1410 value.Y += num2;
1411 value.Height -= num2;
1412 value.Height -= num8 * 2;
1413 if (num8 != num3)
1414 {
1415 value.Height = 2;
1416 }
1417 position.X += drawinfo.drawPlayer.direction * num4 * num8 + num6 * drawinfo.drawPlayer.direction;
1418 if (num8 != 0)
1419 {
1420 position.X += num7 * drawinfo.drawPlayer.direction;
1421 }
1422 position.Y += num2;
1423 position.Y += num5;
1424 DrawData item = new DrawData(textureToDraw, position, value, matchingColor, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect);
1425 item.shader = shaderIndex;
1426 drawinfo.DrawDataCache.Add(item);
1427 }
1428 }
1429
1431 {
1432 if (drawinfo.drawPlayer.shoe <= 0 || drawinfo.drawPlayer.shoe >= ArmorIDs.Shoe.Count || ShouldOverrideLegs_CheckPants(ref drawinfo))
1433 {
1434 return;
1435 }
1436 int num = drawinfo.cShoe;
1437 if (drawinfo.drawPlayer.shoe == 22 || drawinfo.drawPlayer.shoe == 23)
1438 {
1439 num = drawinfo.cFlameWaker;
1440 }
1441 if (drawinfo.isSitting)
1442 {
1443 DrawSittingLegs(ref drawinfo, TextureAssets.AccShoes[drawinfo.drawPlayer.shoe].Value, drawinfo.colorArmorLegs, num);
1444 return;
1445 }
1446 DrawData item = new DrawData(TextureAssets.AccShoes[drawinfo.drawPlayer.shoe].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.legFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.legFrame.Height + 4f)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, drawinfo.drawPlayer.legFrame, drawinfo.colorArmorLegs, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect);
1447 item.shader = num;
1448 drawinfo.DrawDataCache.Add(item);
1449 if (drawinfo.drawPlayer.shoe == 25 || drawinfo.drawPlayer.shoe == 26)
1450 {
1452 }
1453 }
1454
1456 {
1457 if (drawinfo.shadow == 0f)
1458 {
1459 if (Main.rand.Next(60) == 0)
1460 {
1461 Rectangle r = Utils.CenteredRectangle(drawinfo.Position + drawinfo.drawPlayer.Size / 2f + new Vector2(0f, drawinfo.drawPlayer.gravDir * 16f), new Vector2(20f, 8f));
1462 int num = Dust.NewDust(r.TopLeft(), r.Width, r.Height, 204, 0f, 0f, 150, default(Color), 0.3f);
1463 Main.dust[num].fadeIn = 1f;
1464 Main.dust[num].velocity *= 0.1f;
1465 Main.dust[num].noLight = true;
1466 Main.dust[num].shader = GameShaders.Armor.GetSecondaryShader(drawinfo.drawPlayer.cShoe, drawinfo.drawPlayer);
1467 drawinfo.DustCache.Add(num);
1468 }
1469 if (drawinfo.drawPlayer.velocity.X != 0f && Main.rand.Next(10) == 0)
1470 {
1471 Rectangle r2 = Utils.CenteredRectangle(drawinfo.Position + drawinfo.drawPlayer.Size / 2f + new Vector2(drawinfo.drawPlayer.direction * -2, drawinfo.drawPlayer.gravDir * 16f), new Vector2(6f, 8f));
1472 int num2 = Dust.NewDust(r2.TopLeft(), r2.Width, r2.Height, 204, 0f, 0f, 150, default(Color), 0.3f);
1473 Main.dust[num2].fadeIn = 1f;
1474 Main.dust[num2].velocity *= 0.1f;
1475 Main.dust[num2].noLight = true;
1476 Main.dust[num2].shader = GameShaders.Armor.GetSecondaryShader(drawinfo.drawPlayer.cShoe, drawinfo.drawPlayer);
1477 drawinfo.DustCache.Add(num2);
1478 }
1479 }
1480 }
1481
1483 {
1484 if ((drawinfo.skinVar == 3 || drawinfo.skinVar == 8 || drawinfo.skinVar == 7) && (drawinfo.drawPlayer.body <= 0 || drawinfo.drawPlayer.body >= ArmorIDs.Body.Count) && !drawinfo.drawPlayer.invis)
1485 {
1486 if (drawinfo.isSitting)
1487 {
1488 DrawSittingLegs(ref drawinfo, TextureAssets.Players[drawinfo.skinVar, 14].Value, drawinfo.colorShirt);
1489 return;
1490 }
1491 DrawData item = new DrawData(TextureAssets.Players[drawinfo.skinVar, 14].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.legFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.legFrame.Height + 4f)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, drawinfo.drawPlayer.legFrame, drawinfo.colorShirt, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect);
1492 drawinfo.DrawDataCache.Add(item);
1493 }
1494 }
1495
1497 {
1498 int num = -1;
1499 switch (drawinfo.drawPlayer.body)
1500 {
1501 case 200:
1502 num = 149;
1503 break;
1504 case 202:
1505 num = 151;
1506 break;
1507 case 201:
1508 num = 150;
1509 break;
1510 case 209:
1511 num = 160;
1512 break;
1513 case 207:
1514 num = 161;
1515 break;
1516 case 198:
1517 num = 162;
1518 break;
1519 case 182:
1520 num = 163;
1521 break;
1522 case 168:
1523 num = 164;
1524 break;
1525 case 73:
1526 num = 170;
1527 break;
1528 case 52:
1529 num = ((!drawinfo.drawPlayer.Male) ? 172 : 171);
1530 break;
1531 case 187:
1532 num = 173;
1533 break;
1534 case 205:
1535 num = 174;
1536 break;
1537 case 53:
1538 num = ((!drawinfo.drawPlayer.Male) ? 176 : 175);
1539 break;
1540 case 210:
1541 num = ((!drawinfo.drawPlayer.Male) ? 177 : 178);
1542 break;
1543 case 211:
1544 num = ((!drawinfo.drawPlayer.Male) ? 181 : 182);
1545 break;
1546 case 218:
1547 num = 195;
1548 break;
1549 case 222:
1550 num = ((!drawinfo.drawPlayer.Male) ? 200 : 201);
1551 break;
1552 case 225:
1553 num = 206;
1554 break;
1555 case 236:
1556 num = 221;
1557 break;
1558 case 237:
1559 num = 223;
1560 break;
1561 case 89:
1562 num = 186;
1563 break;
1564 case 81:
1565 num = 169;
1566 break;
1567 }
1568 if (num != -1)
1569 {
1570 Main.instance.LoadArmorLegs(num);
1571 if (drawinfo.isSitting && num != 195)
1572 {
1573 DrawSittingLongCoats(ref drawinfo, num, TextureAssets.ArmorLeg[num].Value, drawinfo.colorArmorBody, drawinfo.cBody);
1574 return;
1575 }
1576 DrawData item = new DrawData(TextureAssets.ArmorLeg[num].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.legFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.legFrame.Height + 4f)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, drawinfo.drawPlayer.legFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect);
1577 item.shader = drawinfo.cBody;
1578 drawinfo.DrawDataCache.Add(item);
1579 }
1580 }
1581
1583 {
1584 if (drawinfo.usesCompositeTorso)
1585 {
1587 }
1588 else if (drawinfo.drawPlayer.body > 0 && drawinfo.drawPlayer.body < ArmorIDs.Body.Count)
1589 {
1590 Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame;
1591 int num = drawinfo.armorAdjust;
1592 bodyFrame.X += num;
1593 bodyFrame.Width -= num;
1594 if (drawinfo.drawPlayer.direction == -1)
1595 {
1596 num = 0;
1597 }
1598 if (!drawinfo.drawPlayer.invis || (drawinfo.drawPlayer.body != 21 && drawinfo.drawPlayer.body != 22))
1599 {
1600 Texture2D texture = (drawinfo.drawPlayer.Male ? TextureAssets.ArmorBody[drawinfo.drawPlayer.body].Value : TextureAssets.FemaleBody[drawinfo.drawPlayer.body].Value);
1601 DrawData item = new DrawData(texture, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)) + num, (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
1602 item.shader = drawinfo.cBody;
1603 drawinfo.DrawDataCache.Add(item);
1604 if (drawinfo.bodyGlowMask != -1)
1605 {
1606 item = new DrawData(TextureAssets.GlowMask[drawinfo.bodyGlowMask].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)) + num, (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), bodyFrame, drawinfo.bodyGlowColor, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
1607 item.shader = drawinfo.cBody;
1608 drawinfo.DrawDataCache.Add(item);
1609 }
1610 }
1611 if (drawinfo.missingHand && !drawinfo.drawPlayer.invis)
1612 {
1613 DrawData drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 5].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorBodySkin, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
1614 drawData.shader = drawinfo.skinDyePacked;
1616 drawinfo.DrawDataCache.Add(item);
1617 }
1618 }
1619 else if (!drawinfo.drawPlayer.invis)
1620 {
1621 DrawData item;
1622 if (!drawinfo.drawPlayer.Male)
1623 {
1624 item = new DrawData(TextureAssets.Players[drawinfo.skinVar, 4].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorUnderShirt, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
1625 drawinfo.DrawDataCache.Add(item);
1626 item = new DrawData(TextureAssets.Players[drawinfo.skinVar, 6].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorShirt, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
1627 drawinfo.DrawDataCache.Add(item);
1628 }
1629 else
1630 {
1631 item = new DrawData(TextureAssets.Players[drawinfo.skinVar, 4].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorUnderShirt, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
1632 drawinfo.DrawDataCache.Add(item);
1633 item = new DrawData(TextureAssets.Players[drawinfo.skinVar, 6].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorShirt, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
1634 drawinfo.DrawDataCache.Add(item);
1635 }
1636 DrawData drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 5].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorBodySkin, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
1637 drawData.shader = drawinfo.skinDyePacked;
1638 item = drawData;
1639 drawinfo.DrawDataCache.Add(item);
1640 }
1641 }
1642
1644 {
1645 Vector2 vector = new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2);
1646 Vector2 vector2 = Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height];
1647 vector2.Y -= 2f;
1648 vector += vector2 * -drawinfo.playerEffect.HasFlag(SpriteEffects.FlipVertically).ToDirectionInt();
1649 float bodyRotation = drawinfo.drawPlayer.bodyRotation;
1651 Vector2 bodyVect = drawinfo.bodyVect;
1654 bodyVect += compositeOffset_BackArm;
1655 if (drawinfo.drawPlayer.body > 0 && drawinfo.drawPlayer.body < ArmorIDs.Body.Count)
1656 {
1657 if (!drawinfo.drawPlayer.invis || IsArmorDrawnWhenInvisible(drawinfo.drawPlayer.body))
1658 {
1659 Texture2D value = TextureAssets.ArmorBodyComposite[drawinfo.drawPlayer.body].Value;
1660 DrawCompositeArmorPiece(ref drawinfo, CompositePlayerDrawContext.Torso, new DrawData(value, vector, drawinfo.compTorsoFrame, drawinfo.colorArmorBody, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect)
1661 {
1662 shader = drawinfo.cBody
1663 });
1664 }
1665 }
1666 else if (!drawinfo.drawPlayer.invis)
1667 {
1668 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 4].Value, vector, drawinfo.compBackShoulderFrame, drawinfo.colorUnderShirt, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect));
1669 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 6].Value, vector, drawinfo.compBackShoulderFrame, drawinfo.colorShirt, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect));
1670 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 4].Value, vector, drawinfo.compTorsoFrame, drawinfo.colorUnderShirt, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect));
1671 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 6].Value, vector, drawinfo.compTorsoFrame, drawinfo.colorShirt, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect));
1672 }
1673 if (drawinfo.drawFloatingTube)
1674 {
1675 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Extra[105].Value, vector, new Rectangle(0, 56, 40, 56), drawinfo.floatingTubeColor, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect)
1676 {
1677 shader = drawinfo.cFloatingTube
1678 });
1679 }
1680 }
1681
1683 {
1684 if (!drawinfo.usesCompositeBackHandAcc && drawinfo.drawPlayer.handoff > 0 && drawinfo.drawPlayer.handoff < ArmorIDs.HandOff.Count)
1685 {
1686 DrawData item = new DrawData(TextureAssets.AccHandsOff[drawinfo.drawPlayer.handoff].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
1687 item.shader = drawinfo.cHandOff;
1688 drawinfo.DrawDataCache.Add(item);
1689 }
1690 }
1691
1693 {
1694 if (drawinfo.drawPlayer.HeldItem.type == 5451 && drawinfo.drawPlayer.itemAnimation == 0)
1695 {
1696 Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame;
1697 Texture2D value = TextureAssets.Extra[261].Value;
1698 DrawData item = new DrawData(value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)) + drawinfo.drawPlayer.direction * 2, (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f + 14f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), bodyFrame, drawinfo.colorArmorLegs, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect);
1699 item.shader = drawinfo.cWaist;
1700 drawinfo.DrawDataCache.Add(item);
1701 }
1702 }
1703
1705 {
1706 if (drawinfo.drawPlayer.waist > 0 && drawinfo.drawPlayer.waist < ArmorIDs.Waist.Count)
1707 {
1708 Rectangle value = drawinfo.drawPlayer.legFrame;
1709 if (ArmorIDs.Waist.Sets.UsesTorsoFraming[drawinfo.drawPlayer.waist])
1710 {
1711 value = drawinfo.drawPlayer.bodyFrame;
1712 }
1713 DrawData item = new DrawData(TextureAssets.AccWaist[drawinfo.drawPlayer.waist].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.legFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.legFrame.Height + 4f)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, value, drawinfo.colorArmorLegs, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect);
1714 item.shader = drawinfo.cWaist;
1715 drawinfo.DrawDataCache.Add(item);
1716 }
1717 }
1718
1720 {
1721 if (drawinfo.drawPlayer.neck > 0 && drawinfo.drawPlayer.neck < ArmorIDs.Neck.Count)
1722 {
1723 DrawData item = new DrawData(TextureAssets.AccNeck[drawinfo.drawPlayer.neck].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
1724 item.shader = drawinfo.cNeck;
1725 drawinfo.DrawDataCache.Add(item);
1726 }
1727 }
1728
1730 {
1731 Vector2 helmetOffset = drawinfo.helmetOffset;
1733 bool flag = drawinfo.drawPlayer.head == 14 || drawinfo.drawPlayer.head == 56 || drawinfo.drawPlayer.head == 114 || drawinfo.drawPlayer.head == 158 || drawinfo.drawPlayer.head == 69 || drawinfo.drawPlayer.head == 180;
1734 bool flag2 = drawinfo.drawPlayer.head == 28;
1735 bool flag3 = drawinfo.drawPlayer.head == 39 || drawinfo.drawPlayer.head == 38;
1736 Vector2 vector = new Vector2(-drawinfo.drawPlayer.bodyFrame.Width / 2 + drawinfo.drawPlayer.width / 2, drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height + 4);
1737 Vector2 position = (drawinfo.Position - Main.screenPosition + vector).Floor() + drawinfo.drawPlayer.headPosition + drawinfo.headVect;
1738 if (drawinfo.playerEffect.HasFlag(SpriteEffects.FlipVertically))
1739 {
1740 int num = drawinfo.drawPlayer.bodyFrame.Height - drawinfo.hairFrontFrame.Height;
1741 position.Y += num;
1742 }
1743 position += drawinfo.hairOffset;
1744 if (drawinfo.fullHair)
1745 {
1746 Color color = drawinfo.colorArmorHead;
1747 int shader = drawinfo.cHead;
1748 if (ArmorIDs.Head.Sets.UseSkinColor[drawinfo.drawPlayer.head])
1749 {
1750 color = ((!drawinfo.drawPlayer.isDisplayDollOrInanimate) ? drawinfo.colorHead : drawinfo.colorDisplayDollSkin);
1751 shader = drawinfo.skinDyePacked;
1752 }
1753 DrawData item = new DrawData(TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, color, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
1754 item.shader = shader;
1755 drawinfo.DrawDataCache.Add(item);
1756 if (!drawinfo.drawPlayer.invis)
1757 {
1758 item = new DrawData(TextureAssets.PlayerHair[drawinfo.drawPlayer.hair].Value, position, drawinfo.hairFrontFrame, drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
1759 item.shader = drawinfo.hairDyePacked;
1760 drawinfo.DrawDataCache.Add(item);
1761 }
1762 }
1763 if (drawinfo.hatHair && !drawinfo.drawPlayer.invis)
1764 {
1765 DrawData item = new DrawData(TextureAssets.PlayerHairAlt[drawinfo.drawPlayer.hair].Value, position, drawinfo.hairFrontFrame, drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
1766 item.shader = drawinfo.hairDyePacked;
1767 drawinfo.DrawDataCache.Add(item);
1768 }
1769 if (drawinfo.drawPlayer.head == 270)
1770 {
1771 Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame;
1772 bodyFrame.Width += 2;
1773 DrawData item = new DrawData(TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, bodyFrame, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
1774 item.shader = drawinfo.cHead;
1775 drawinfo.DrawDataCache.Add(item);
1776 item = new DrawData(TextureAssets.GlowMask[drawinfo.headGlowMask].Value, helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, bodyFrame, drawinfo.headGlowColor, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
1777 item.shader = drawinfo.cHead;
1778 drawinfo.DrawDataCache.Add(item);
1779 }
1780 else if (flag)
1781 {
1782 Rectangle bodyFrame2 = drawinfo.drawPlayer.bodyFrame;
1783 Vector2 headVect = drawinfo.headVect;
1784 if (drawinfo.drawPlayer.gravDir == 1f)
1785 {
1786 if (bodyFrame2.Y != 0)
1787 {
1788 bodyFrame2.Y -= 2;
1789 headVect.Y += 2f;
1790 }
1791 bodyFrame2.Height -= 8;
1792 }
1793 else if (bodyFrame2.Y != 0)
1794 {
1795 bodyFrame2.Y -= 2;
1796 headVect.Y -= 10f;
1797 bodyFrame2.Height -= 8;
1798 }
1799 Color color2 = drawinfo.colorArmorHead;
1800 int shader2 = drawinfo.cHead;
1801 if (ArmorIDs.Head.Sets.UseSkinColor[drawinfo.drawPlayer.head])
1802 {
1803 color2 = ((!drawinfo.drawPlayer.isDisplayDollOrInanimate) ? drawinfo.colorHead : drawinfo.colorDisplayDollSkin);
1804 shader2 = drawinfo.skinDyePacked;
1805 }
1806 DrawData item = new DrawData(TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, bodyFrame2, color2, drawinfo.drawPlayer.headRotation, headVect, 1f, drawinfo.playerEffect);
1807 item.shader = shader2;
1808 drawinfo.DrawDataCache.Add(item);
1809 }
1810 else if (drawinfo.drawPlayer.head == 259)
1811 {
1812 int verticalFrames = 27;
1813 Texture2D value = TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value;
1814 Rectangle rectangle = value.Frame(1, verticalFrames, 0, drawinfo.drawPlayer.rabbitOrderFrame.DisplayFrame);
1815 Vector2 origin = rectangle.Size() / 2f;
1816 int num2 = drawinfo.drawPlayer.babyBird.ToInt();
1817 Vector2 vector2 = DrawPlayer_21_Head_GetSpecialHatDrawPosition(ref drawinfo, ref helmetOffset, new Vector2(1 + num2 * 2, -26 + drawinfo.drawPlayer.babyBird.ToInt() * -6));
1818 int hatStacks = GetHatStacks(ref drawinfo, 4955);
1819 float num3 = (float)Math.PI / 60f;
1820 float num4 = num3 * drawinfo.drawPlayer.position.X % ((float)Math.PI * 2f);
1821 for (int num5 = hatStacks - 1; num5 >= 0; num5--)
1822 {
1823 float x = Vector2.UnitY.RotatedBy(num4 + num3 * (float)num5).X * ((float)num5 / 30f) * 2f - (float)(num5 * 2 * drawinfo.drawPlayer.direction);
1824 DrawData item = new DrawData(value, vector2 + new Vector2(x, (float)(num5 * -14) * drawinfo.drawPlayer.gravDir), rectangle, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, origin, 1f, drawinfo.playerEffect);
1825 item.shader = drawinfo.cHead;
1826 drawinfo.DrawDataCache.Add(item);
1827 }
1828 if (!drawinfo.drawPlayer.invis)
1829 {
1830 DrawData item = new DrawData(TextureAssets.PlayerHair[drawinfo.drawPlayer.hair].Value, position, drawinfo.hairFrontFrame, drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
1831 item.shader = drawinfo.hairDyePacked;
1832 drawinfo.DrawDataCache.Add(item);
1833 }
1834 }
1835 else if (drawinfo.drawPlayer.head > 0 && drawinfo.drawPlayer.head < ArmorIDs.Head.Count && !flag2)
1836 {
1837 if (!(drawinfo.drawPlayer.invis && flag3))
1838 {
1839 if (drawinfo.drawPlayer.head == 13)
1840 {
1841 int hatStacks2 = GetHatStacks(ref drawinfo, 205);
1842 float num6 = (float)Math.PI / 60f;
1843 float num7 = num6 * drawinfo.drawPlayer.position.X % ((float)Math.PI * 2f);
1844 for (int i = 0; i < hatStacks2; i++)
1845 {
1846 float num8 = Vector2.UnitY.RotatedBy(num7 + num6 * (float)i).X * ((float)i / 30f) * 2f;
1847 DrawData item = new DrawData(TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, helmetOffset + new Vector2((float)(int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)) + num8, (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f - (float)(4 * i))) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
1848 item.shader = drawinfo.cHead;
1849 drawinfo.DrawDataCache.Add(item);
1850 }
1851 }
1852 else if (drawinfo.drawPlayer.head == 265)
1853 {
1854 int verticalFrames2 = 6;
1855 Texture2D value2 = TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value;
1856 Rectangle rectangle2 = value2.Frame(1, verticalFrames2, 0, drawinfo.drawPlayer.rabbitOrderFrame.DisplayFrame);
1857 Vector2 origin2 = rectangle2.Size() / 2f;
1859 int hatStacks3 = GetHatStacks(ref drawinfo, 5004);
1860 float num9 = (float)Math.PI / 60f;
1861 float num10 = num9 * drawinfo.drawPlayer.position.X % ((float)Math.PI * 2f);
1862 int num11 = hatStacks3 * 4 + 2;
1863 int num12 = 0;
1864 bool flag4 = (Main.GlobalTimeWrappedHourly + 180f) % 600f < 60f;
1865 for (int num13 = num11 - 1; num13 >= 0; num13--)
1866 {
1867 int num14 = 0;
1868 if (num13 == num11 - 1)
1869 {
1870 rectangle2.Y = 0;
1871 num14 = 2;
1872 }
1873 else if (num13 == 0)
1874 {
1875 rectangle2.Y = rectangle2.Height * 5;
1876 }
1877 else
1878 {
1879 rectangle2.Y = rectangle2.Height * (num12++ % 4 + 1);
1880 }
1881 if (!(rectangle2.Y == rectangle2.Height * 3 && flag4))
1882 {
1883 float x2 = Vector2.UnitY.RotatedBy(num10 + num9 * (float)num13).X * ((float)num13 / 10f) * 4f - (float)num13 * 0.1f * (float)drawinfo.drawPlayer.direction;
1884 DrawData item = new DrawData(value2, vector3 + new Vector2(x2, (float)(num13 * -4 + num14) * drawinfo.drawPlayer.gravDir), rectangle2, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, origin2, 1f, drawinfo.playerEffect);
1885 item.shader = drawinfo.cHead;
1886 drawinfo.DrawDataCache.Add(item);
1887 }
1888 }
1889 }
1890 else
1891 {
1892 Rectangle bodyFrame3 = drawinfo.drawPlayer.bodyFrame;
1893 Vector2 headVect2 = drawinfo.headVect;
1894 if (drawinfo.drawPlayer.gravDir == 1f)
1895 {
1896 bodyFrame3.Height -= 4;
1897 }
1898 else
1899 {
1900 headVect2.Y -= 4f;
1901 bodyFrame3.Height -= 4;
1902 }
1903 Color color3 = drawinfo.colorArmorHead;
1904 int shader3 = drawinfo.cHead;
1905 if (ArmorIDs.Head.Sets.UseSkinColor[drawinfo.drawPlayer.head])
1906 {
1907 color3 = ((!drawinfo.drawPlayer.isDisplayDollOrInanimate) ? drawinfo.colorHead : drawinfo.colorDisplayDollSkin);
1908 shader3 = drawinfo.skinDyePacked;
1909 }
1910 DrawData item = new DrawData(TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, bodyFrame3, color3, drawinfo.drawPlayer.headRotation, headVect2, 1f, drawinfo.playerEffect);
1911 item.shader = shader3;
1912 drawinfo.DrawDataCache.Add(item);
1913 if (drawinfo.headGlowMask != -1)
1914 {
1915 if (drawinfo.headGlowMask == 309)
1916 {
1917 int num15 = DrawPlayer_Head_GetTVScreen(drawinfo.drawPlayer);
1918 if (num15 != 0)
1919 {
1920 int num16 = 0;
1921 num16 += drawinfo.drawPlayer.bodyFrame.Y / 56;
1922 if (num16 >= Main.OffsetsPlayerHeadgear.Length)
1923 {
1924 num16 = 0;
1925 }
1927 vector4.Y -= 2f;
1928 vector4 *= (float)(-drawinfo.playerEffect.HasFlag(SpriteEffects.FlipVertically).ToDirectionInt());
1929 Texture2D value3 = TextureAssets.GlowMask[drawinfo.headGlowMask].Value;
1930 int frameY = drawinfo.drawPlayer.miscCounter % 20 / 5;
1931 if (num15 == 5)
1932 {
1933 frameY = 0;
1934 if (drawinfo.drawPlayer.eyeHelper.EyeFrameToShow > 0)
1935 {
1936 frameY = 2;
1937 }
1938 }
1939 Rectangle value4 = value3.Frame(6, 4, num15, frameY, -2);
1940 item = new DrawData(value3, vector4 + helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, value4, drawinfo.headGlowColor, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
1941 item.shader = drawinfo.cHead;
1942 drawinfo.DrawDataCache.Add(item);
1943 }
1944 }
1945 else if (drawinfo.headGlowMask == 273)
1946 {
1947 for (int j = 0; j < 2; j++)
1948 {
1949 item = new DrawData(position: new Vector2((float)Main.rand.Next(-10, 10) * 0.125f, (float)Main.rand.Next(-10, 10) * 0.125f) + helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, texture: TextureAssets.GlowMask[drawinfo.headGlowMask].Value, sourceRect: bodyFrame3, color: drawinfo.headGlowColor, rotation: drawinfo.drawPlayer.headRotation, origin: headVect2, scale: 1f, effect: drawinfo.playerEffect);
1950 item.shader = drawinfo.cHead;
1951 drawinfo.DrawDataCache.Add(item);
1952 }
1953 }
1954 else
1955 {
1956 item = new DrawData(TextureAssets.GlowMask[drawinfo.headGlowMask].Value, helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, bodyFrame3, drawinfo.headGlowColor, drawinfo.drawPlayer.headRotation, headVect2, 1f, drawinfo.playerEffect);
1957 item.shader = drawinfo.cHead;
1958 drawinfo.DrawDataCache.Add(item);
1959 }
1960 }
1961 if (drawinfo.drawPlayer.head == 211)
1962 {
1963 Color color4 = new Color(100, 100, 100, 0);
1964 ulong seed = (ulong)(drawinfo.drawPlayer.miscCounter / 4 + 100);
1965 int num17 = 4;
1966 for (int k = 0; k < num17; k++)
1967 {
1968 float x3 = (float)Utils.RandomInt(ref seed, -10, 11) * 0.2f;
1969 float y = (float)Utils.RandomInt(ref seed, -14, 1) * 0.15f;
1970 item = new DrawData(TextureAssets.GlowMask[241].Value, helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + new Vector2(x3, y), drawinfo.drawPlayer.bodyFrame, color4, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
1971 item.shader = drawinfo.cHead;
1972 drawinfo.DrawDataCache.Add(item);
1973 }
1974 }
1975 }
1976 }
1977 }
1978 else if (!drawinfo.drawPlayer.invis && (drawinfo.drawPlayer.face < 0 || !ArmorIDs.Face.Sets.PreventHairDraw[drawinfo.drawPlayer.face]))
1979 {
1980 DrawData item = new DrawData(TextureAssets.PlayerHair[drawinfo.drawPlayer.hair].Value, position, drawinfo.hairFrontFrame, drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
1981 item.shader = drawinfo.hairDyePacked;
1982 drawinfo.DrawDataCache.Add(item);
1983 }
1984 if (drawinfo.drawPlayer.beard > 0 && (drawinfo.drawPlayer.head < 0 || !ArmorIDs.Head.Sets.PreventBeardDraw[drawinfo.drawPlayer.head]))
1985 {
1986 Vector2 beardDrawOffsetFromHelmet = drawinfo.drawPlayer.GetBeardDrawOffsetFromHelmet();
1987 Color color5 = drawinfo.colorArmorHead;
1988 if (ArmorIDs.Beard.Sets.UseHairColor[drawinfo.drawPlayer.beard])
1989 {
1990 color5 = drawinfo.colorHair;
1991 }
1992 DrawData item = new DrawData(TextureAssets.AccBeard[drawinfo.drawPlayer.beard].Value, beardDrawOffsetFromHelmet + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, color5, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
1993 item.shader = drawinfo.cBeard;
1994 drawinfo.DrawDataCache.Add(item);
1995 }
1996 if (drawinfo.drawPlayer.head == 205)
1997 {
1998 DrawData drawData = new DrawData(TextureAssets.Extra[77].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
1999 drawData.shader = drawinfo.skinDyePacked;
2001 drawinfo.DrawDataCache.Add(item);
2002 }
2003 if (drawinfo.drawPlayer.head == 214 && !drawinfo.drawPlayer.invis)
2004 {
2005 Rectangle bodyFrame4 = drawinfo.drawPlayer.bodyFrame;
2006 bodyFrame4.Y = 0;
2007 float num18 = (float)drawinfo.drawPlayer.miscCounter / 300f;
2008 Color color6 = new Color(0, 0, 0, 0);
2009 float num19 = 0.8f;
2010 float num20 = 0.9f;
2011 if (num18 >= num19)
2012 {
2013 color6 = Color.Lerp(Color.Transparent, new Color(200, 200, 200, 0), Utils.GetLerpValue(num19, num20, num18, clamped: true));
2014 }
2015 if (num18 >= num20)
2016 {
2017 color6 = Color.Lerp(Color.Transparent, new Color(200, 200, 200, 0), Utils.GetLerpValue(1f, num20, num18, clamped: true));
2018 }
2019 color6 *= drawinfo.stealth * (1f - drawinfo.shadow);
2020 DrawData item = new DrawData(TextureAssets.Extra[90].Value, helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect - Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height], bodyFrame4, color6, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2021 drawinfo.DrawDataCache.Add(item);
2022 }
2023 if (drawinfo.drawPlayer.head == 137)
2024 {
2025 DrawData item = new DrawData(TextureAssets.JackHat.Value, helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, new Color(255, 255, 255, 255), drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2026 drawinfo.DrawDataCache.Add(item);
2027 for (int l = 0; l < 7; l++)
2028 {
2029 Color color7 = new Color(110 - l * 10, 110 - l * 10, 110 - l * 10, 110 - l * 10);
2030 Vector2 vector5 = new Vector2((float)Main.rand.Next(-10, 11) * 0.2f, (float)Main.rand.Next(-10, 11) * 0.2f);
2031 vector5.X = drawinfo.drawPlayer.itemFlamePos[l].X;
2032 vector5.Y = drawinfo.drawPlayer.itemFlamePos[l].Y;
2033 vector5 *= 0.5f;
2034 item = new DrawData(TextureAssets.JackHat.Value, helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + vector5, drawinfo.drawPlayer.bodyFrame, color7, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2035 drawinfo.DrawDataCache.Add(item);
2036 }
2037 }
2038 if (drawinfo.drawPlayer.babyBird)
2039 {
2040 Rectangle bodyFrame5 = drawinfo.drawPlayer.bodyFrame;
2041 bodyFrame5.Y = 0;
2043 Color color8 = drawinfo.colorArmorHead;
2044 if (drawinfo.drawPlayer.mount.Active && drawinfo.drawPlayer.mount.Type == 52)
2045 {
2046 Vector2 mountedCenter = drawinfo.drawPlayer.MountedCenter;
2047 color8 = drawinfo.drawPlayer.GetImmuneAlphaPure(Lighting.GetColorClamped((int)mountedCenter.X / 16, (int)mountedCenter.Y / 16, Color.White), drawinfo.shadow);
2048 vector6 = new Vector2(0f, 6f) * drawinfo.drawPlayer.Directions;
2049 }
2050 DrawData item = new DrawData(TextureAssets.Extra[100].Value, vector6 + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height] * drawinfo.drawPlayer.gravDir, bodyFrame5, color8, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2051 drawinfo.DrawDataCache.Add(item);
2052 }
2053 }
2054
2056 {
2057 if (NPC.AnyDanger())
2058 {
2059 return 4;
2060 }
2061 if (plr.statLife <= plr.statLifeMax2 / 4)
2062 {
2063 return 1;
2064 }
2065 if (plr.ZoneCorrupt || plr.ZoneCrimson || plr.ZoneGraveyard)
2066 {
2067 return 0;
2068 }
2069 if (plr.wet)
2070 {
2071 return 2;
2072 }
2073 if (plr.townNPCs >= 3f || BirthdayParty.PartyIsUp || LanternNight.LanternsUp)
2074 {
2075 return 5;
2076 }
2077 return 3;
2078 }
2079
2081 {
2082 int num = 0;
2083 int num2 = 0;
2084 if (drawinfo.drawPlayer.armor[num2] != null && drawinfo.drawPlayer.armor[num2].type == hatItemId && drawinfo.drawPlayer.armor[num2].stack > 0)
2085 {
2086 num += drawinfo.drawPlayer.armor[num2].stack;
2087 }
2088 num2 = 10;
2089 if (drawinfo.drawPlayer.armor[num2] != null && drawinfo.drawPlayer.armor[num2].type == hatItemId && drawinfo.drawPlayer.armor[num2].stack > 0)
2090 {
2091 num += drawinfo.drawPlayer.armor[num2].stack;
2092 }
2093 if (num > 2)
2094 {
2095 num = 2;
2096 }
2097 return num;
2098 }
2099
2101 {
2102 Vector2 vector = Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height] * drawinfo.drawPlayer.Directions;
2103 Vector2 vec = drawinfo.Position - Main.screenPosition + helmetOffset + new Vector2(-drawinfo.drawPlayer.bodyFrame.Width / 2 + drawinfo.drawPlayer.width / 2, drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height + 4) + hatOffset * drawinfo.drawPlayer.Directions + vector;
2104 vec = vec.Floor();
2105 vec += drawinfo.drawPlayer.headPosition + drawinfo.headVect;
2106 if (drawinfo.drawPlayer.gravDir == -1f)
2107 {
2108 vec.Y += 12f;
2109 }
2110 return vec.Floor();
2111 }
2112
2114 {
2115 bool flag = drawinfo.drawPlayer.head == 38 || drawinfo.drawPlayer.head == 135 || drawinfo.drawPlayer.head == 269;
2116 if (!flag && drawinfo.drawPlayer.faceHead > 0 && drawinfo.drawPlayer.faceHead < ArmorIDs.Face.Count)
2117 {
2118 Vector2 faceHeadOffsetFromHelmet = drawinfo.drawPlayer.GetFaceHeadOffsetFromHelmet();
2119 DrawData item = new DrawData(TextureAssets.AccFace[drawinfo.drawPlayer.faceHead].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + faceHeadOffsetFromHelmet, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2120 item.shader = drawinfo.cFaceHead;
2121 drawinfo.DrawDataCache.Add(item);
2122 if (drawinfo.drawPlayer.face <= 0 || !ArmorIDs.Face.Sets.DrawInFaceUnderHairLayer[drawinfo.drawPlayer.face])
2123 {
2124 return;
2125 }
2126 float num = 0f;
2127 if (drawinfo.drawPlayer.face == 5)
2128 {
2129 sbyte faceHead = drawinfo.drawPlayer.faceHead;
2130 if ((uint)(faceHead - 10) <= 3u)
2131 {
2132 num = 2 * drawinfo.drawPlayer.direction;
2133 }
2134 }
2135 item = new DrawData(TextureAssets.AccFace[drawinfo.drawPlayer.face].Value, new Vector2((float)(int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)) + num, (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2136 item.shader = drawinfo.cFace;
2137 drawinfo.DrawDataCache.Add(item);
2138 }
2139 else if (!drawinfo.drawPlayer.invis && !flag)
2140 {
2141 DrawData drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 0].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2142 drawData.shader = drawinfo.skinDyePacked;
2144 drawinfo.DrawDataCache.Add(item);
2145 item = new DrawData(TextureAssets.Players[drawinfo.skinVar, 1].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorEyeWhites, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2146 drawinfo.DrawDataCache.Add(item);
2147 item = new DrawData(TextureAssets.Players[drawinfo.skinVar, 2].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorEyes, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2148 drawinfo.DrawDataCache.Add(item);
2150 if (val.IsLoaded)
2151 {
2152 Vector2 vector = Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height];
2153 vector.Y -= 2f;
2154 vector *= (float)(-drawinfo.playerEffect.HasFlag(SpriteEffects.FlipVertically).ToDirectionInt());
2155 Rectangle value = val.Frame(1, 3, 0, drawinfo.drawPlayer.eyeHelper.EyeFrameToShow);
2156 drawData = new DrawData(val.Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + vector, value, drawinfo.colorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2157 drawData.shader = drawinfo.skinDyePacked;
2158 item = drawData;
2159 drawinfo.DrawDataCache.Add(item);
2160 }
2161 if (drawinfo.drawPlayer.yoraiz0rDarkness)
2162 {
2163 drawData = new DrawData(TextureAssets.Extra[67].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2164 drawData.shader = drawinfo.skinDyePacked;
2165 item = drawData;
2166 drawinfo.DrawDataCache.Add(item);
2167 }
2168 if (drawinfo.drawPlayer.face > 0 && ArmorIDs.Face.Sets.DrawInFaceUnderHairLayer[drawinfo.drawPlayer.face])
2169 {
2170 item = new DrawData(TextureAssets.AccFace[drawinfo.drawPlayer.face].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2171 item.shader = drawinfo.cFace;
2172 drawinfo.DrawDataCache.Add(item);
2173 }
2174 }
2175 }
2176
2178 {
2179 if (drawinfo.shadow == 0f && drawinfo.drawPlayer.neck == 11 && !drawinfo.hideEntirePlayer)
2180 {
2181 Color colorArmorBody = drawinfo.colorArmorBody;
2182 Color value = new Color(140, 140, 35, 12);
2183 float amount = (float)(colorArmorBody.R + colorArmorBody.G + colorArmorBody.B) / 3f / 255f;
2185 if (!(value == Color.Transparent))
2186 {
2187 DrawData item = new DrawData(TextureAssets.GlowMask[310].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, value, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
2188 item.shader = drawinfo.cNeck;
2189 drawinfo.DrawDataCache.Add(item);
2190 }
2191 }
2192 }
2193
2195 {
2197 if (drawinfo.drawPlayer.mount.Active && drawinfo.drawPlayer.mount.Type == 52)
2198 {
2199 vector = new Vector2(28f, -2f);
2200 }
2201 vector *= drawinfo.drawPlayer.Directions;
2202 if (drawinfo.drawPlayer.face > 0 && drawinfo.drawPlayer.face < ArmorIDs.Face.Count && !ArmorIDs.Face.Sets.DrawInFaceUnderHairLayer[drawinfo.drawPlayer.face])
2203 {
2205 if (drawinfo.drawPlayer.face == 19)
2206 {
2207 vector2 = new Vector2(0f, -6f) * drawinfo.drawPlayer.Directions;
2208 }
2209 DrawData item = new DrawData(TextureAssets.AccFace[drawinfo.drawPlayer.face].Value, vector2 + vector + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2210 item.shader = drawinfo.cFace;
2211 drawinfo.DrawDataCache.Add(item);
2212 }
2213 if (drawinfo.drawPlayer.faceFlower > 0 && drawinfo.drawPlayer.faceFlower < ArmorIDs.Face.Count)
2214 {
2215 DrawData item = new DrawData(TextureAssets.AccFace[drawinfo.drawPlayer.faceFlower].Value, vector + drawinfo.helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2216 item.shader = drawinfo.cFaceFlower;
2217 drawinfo.DrawDataCache.Add(item);
2218 }
2219 if (drawinfo.drawUnicornHorn)
2220 {
2221 DrawData item = new DrawData(TextureAssets.Extra[143].Value, vector + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2222 item.shader = drawinfo.cUnicornHorn;
2223 drawinfo.DrawDataCache.Add(item);
2224 }
2225 if (drawinfo.drawAngelHalo)
2226 {
2227 Color immuneAlphaPure = drawinfo.drawPlayer.GetImmuneAlphaPure(new Color(200, 200, 200, 150), drawinfo.shadow);
2228 immuneAlphaPure *= drawinfo.drawPlayer.stealth;
2229 Main.instance.LoadAccFace(7);
2230 DrawData item = new DrawData(TextureAssets.AccFace[7].Value, vector + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.drawPlayer.bodyFrame, immuneAlphaPure, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
2231 item.shader = drawinfo.cAngelHalo;
2232 drawinfo.DrawDataCache.Add(item);
2233 }
2234 }
2235
2237 {
2238 if (drawinfo.drawPlayer.mount.Type == 34)
2239 {
2240 Texture2D value = TextureAssets.Extra[141].Value;
2241 Vector2 vector = new Vector2(0f, 4f);
2242 Color colorMount = drawinfo.colorMount;
2243 int frameY = (int)(Main.GlobalTimeWrappedHourly * 3f + drawinfo.drawPlayer.position.X / 50f) % 3;
2244 Rectangle value2 = value.Frame(1, 3, 0, frameY);
2245 Vector2 origin = new Vector2(value2.Width / 2, value2.Height);
2246 float rotation = (0f - drawinfo.drawPlayer.velocity.X) * 0.1f - drawinfo.drawPlayer.fullRotation;
2247 DrawData item = new DrawData(value, drawinfo.drawPlayer.MountedCenter + vector - Main.screenPosition, value2, colorMount, rotation, origin, 1f, drawinfo.playerEffect);
2248 drawinfo.DrawDataCache.Add(item);
2249 }
2250 }
2251
2253 {
2254 if (drawinfo.shadow != 0f)
2255 {
2256 return;
2257 }
2258 int num = Math.Min(drawinfo.drawPlayer.availableAdvancedShadowsCount - 1, 30);
2259 float num2 = 0f;
2260 for (int num3 = num; num3 > 0; num3--)
2261 {
2262 EntityShadowInfo advancedShadow = drawinfo.drawPlayer.GetAdvancedShadow(num3);
2263 EntityShadowInfo advancedShadow2 = drawinfo.drawPlayer.GetAdvancedShadow(num3 - 1);
2264 num2 += Vector2.Distance(advancedShadow.Position, advancedShadow2.Position);
2265 }
2266 float num4 = MathHelper.Clamp(num2 / 160f, 0f, 1f);
2267 Main.instance.LoadProjectile(250);
2269 float x = 1.7f;
2270 Vector2 origin = new Vector2(value.Width / 2, value.Height / 2);
2271 Vector2 vector = new Vector2(drawinfo.drawPlayer.width, drawinfo.drawPlayer.height) / 2f;
2273 white.A = 64;
2275 vector2 = drawinfo.drawPlayer.DefaultSize * new Vector2(0.5f, 1f) + new Vector2(0f, -4f);
2276 if (dirsVec.Y < 0f)
2277 {
2278 vector2 = drawinfo.drawPlayer.DefaultSize * new Vector2(0.5f, 0f) + new Vector2(0f, 4f);
2279 }
2280 for (int num5 = num; num5 > 0; num5--)
2281 {
2282 EntityShadowInfo advancedShadow3 = drawinfo.drawPlayer.GetAdvancedShadow(num5);
2283 EntityShadowInfo advancedShadow4 = drawinfo.drawPlayer.GetAdvancedShadow(num5 - 1);
2284 Vector2 pos = advancedShadow3.Position + vector2 + advancedShadow3.HeadgearOffset;
2285 Vector2 pos2 = advancedShadow4.Position + vector2 + advancedShadow4.HeadgearOffset;
2286 pos = drawinfo.drawPlayer.RotatedRelativePoint(pos, reverseRotation: true, addGfxOffY: false);
2287 pos2 = drawinfo.drawPlayer.RotatedRelativePoint(pos2, reverseRotation: true, addGfxOffY: false);
2288 float num6 = (pos2 - pos).ToRotation() - (float)Math.PI / 2f;
2289 num6 = (float)Math.PI / 2f * (float)drawinfo.drawPlayer.direction;
2290 float num7 = Math.Abs(pos2.X - pos.X);
2291 Vector2 scale = new Vector2(x, num7 / (float)value.Height);
2292 float num8 = 1f - (float)num5 / (float)num;
2293 num8 *= num8;
2294 num8 *= Utils.GetLerpValue(0f, 4f, num7, clamped: true);
2295 num8 *= 0.5f;
2296 num8 *= num8;
2297 Color color = white * num8 * num4;
2298 if (!(color == Color.Transparent))
2299 {
2300 DrawData item = new DrawData(value, pos - Main.screenPosition, null, color, num6, origin, scale, drawinfo.playerEffect);
2301 item.shader = drawinfo.cWings;
2302 drawinfo.DrawDataCache.Add(item);
2303 for (float num9 = 0.25f; num9 < 1f; num9 += 0.25f)
2304 {
2305 item = new DrawData(value, Vector2.Lerp(pos, pos2, num9) - Main.screenPosition, null, color, num6, origin, scale, drawinfo.playerEffect);
2306 item.shader = drawinfo.cWings;
2307 drawinfo.DrawDataCache.Add(item);
2308 }
2309 }
2310 }
2311 }
2312
2314 {
2315 if (drawinfo.drawPlayer.mount.Type == 33 && !(drawinfo.shadow > 0f))
2316 {
2317 int num = Math.Min(drawinfo.drawPlayer.availableAdvancedShadowsCount - 1, 20);
2318 float num2 = 0f;
2319 for (int num3 = num; num3 > 0; num3--)
2320 {
2321 EntityShadowInfo advancedShadow = drawinfo.drawPlayer.GetAdvancedShadow(num3);
2322 EntityShadowInfo advancedShadow2 = drawinfo.drawPlayer.GetAdvancedShadow(num3 - 1);
2323 num2 += Vector2.Distance(advancedShadow.Position, advancedShadow2.Position);
2324 }
2325 float num4 = MathHelper.Clamp(num2 / 160f, 0f, 1f);
2326 Main.instance.LoadProjectile(250);
2328 float x = 1.5f;
2329 Vector2 origin = new Vector2(value.Width / 2, 0f);
2330 Vector2 vector = new Vector2(drawinfo.drawPlayer.width, drawinfo.drawPlayer.height) / 2f;
2331 Vector2 vector2 = new Vector2(-drawinfo.drawPlayer.direction * 10, 15f);
2333 white.A = 127;
2336 Vector2 vector4 = drawinfo.drawPlayer.RotatedRelativePoint(drawinfo.drawPlayer.Center + vector3 + vector2) - drawinfo.drawPlayer.position;
2337 for (int num5 = num; num5 > 0; num5--)
2338 {
2339 EntityShadowInfo advancedShadow3 = drawinfo.drawPlayer.GetAdvancedShadow(num5);
2340 EntityShadowInfo advancedShadow4 = drawinfo.drawPlayer.GetAdvancedShadow(num5 - 1);
2341 Vector2 pos = advancedShadow3.Position + vector3;
2342 Vector2 pos2 = advancedShadow4.Position + vector3;
2343 pos += vector4;
2344 pos2 += vector4;
2345 pos = drawinfo.drawPlayer.RotatedRelativePoint(pos, reverseRotation: true, addGfxOffY: false);
2346 pos2 = drawinfo.drawPlayer.RotatedRelativePoint(pos2, reverseRotation: true, addGfxOffY: false);
2347 float rotation = (pos2 - pos).ToRotation() - (float)Math.PI / 2f;
2348 float num6 = Vector2.Distance(pos, pos2);
2349 Vector2 scale = new Vector2(x, num6 / (float)value.Height);
2350 float num7 = 1f - (float)num5 / (float)num;
2351 num7 *= num7;
2352 Color color = white * num7 * num4;
2353 DrawData item = new DrawData(value, pos - Main.screenPosition, null, color, rotation, origin, scale, drawinfo.playerEffect);
2354 drawinfo.DrawDataCache.Add(item);
2355 }
2356 }
2357 }
2358
2360 {
2361 if (drawinfo.drawPlayer.mount.Active)
2362 {
2363 drawinfo.drawPlayer.mount.Draw(drawinfo.DrawDataCache, 2, drawinfo.drawPlayer, drawinfo.Position, drawinfo.colorMount, drawinfo.playerEffect, drawinfo.shadow);
2364 drawinfo.drawPlayer.mount.Draw(drawinfo.DrawDataCache, 3, drawinfo.drawPlayer, drawinfo.Position, drawinfo.colorMount, drawinfo.playerEffect, drawinfo.shadow);
2365 }
2366 }
2367
2369 {
2370 if (drawinfo.drawPlayer.pulley && drawinfo.drawPlayer.itemAnimation == 0)
2371 {
2372 if (drawinfo.drawPlayer.pulleyDir == 2)
2373 {
2374 int num = -25;
2375 int num2 = 0;
2376 float rotation = 0f;
2377 DrawData item = new DrawData(TextureAssets.Pulley.Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X + (float)(drawinfo.drawPlayer.width / 2) - (float)(9 * drawinfo.drawPlayer.direction)) + num2 * drawinfo.drawPlayer.direction, (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)(drawinfo.drawPlayer.height / 2) + 2f * drawinfo.drawPlayer.gravDir + (float)num * drawinfo.drawPlayer.gravDir)), new Rectangle(0, TextureAssets.Pulley.Height() / 2 * drawinfo.drawPlayer.pulleyFrame, TextureAssets.Pulley.Width(), TextureAssets.Pulley.Height() / 2), drawinfo.colorArmorHead, rotation, new Vector2(TextureAssets.Pulley.Width() / 2, TextureAssets.Pulley.Height() / 4), 1f, drawinfo.playerEffect);
2378 drawinfo.DrawDataCache.Add(item);
2379 }
2380 else
2381 {
2382 int num3 = -26;
2383 int num4 = 10;
2384 float rotation2 = 0.35f * (float)(-drawinfo.drawPlayer.direction);
2385 DrawData item = new DrawData(TextureAssets.Pulley.Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X + (float)(drawinfo.drawPlayer.width / 2) - (float)(9 * drawinfo.drawPlayer.direction)) + num4 * drawinfo.drawPlayer.direction, (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)(drawinfo.drawPlayer.height / 2) + 2f * drawinfo.drawPlayer.gravDir + (float)num3 * drawinfo.drawPlayer.gravDir)), new Rectangle(0, TextureAssets.Pulley.Height() / 2 * drawinfo.drawPlayer.pulleyFrame, TextureAssets.Pulley.Width(), TextureAssets.Pulley.Height() / 2), drawinfo.colorArmorHead, rotation2, new Vector2(TextureAssets.Pulley.Width() / 2, TextureAssets.Pulley.Height() / 4), 1f, drawinfo.playerEffect);
2386 drawinfo.DrawDataCache.Add(item);
2387 }
2388 }
2389 }
2390
2392 {
2393 if (drawinfo.drawPlayer.shield <= 0 || drawinfo.drawPlayer.shield >= ArmorIDs.Shield.Count)
2394 {
2395 return;
2396 }
2398 if (drawinfo.drawPlayer.shieldRaised)
2399 {
2400 zero.Y -= 4f * drawinfo.drawPlayer.gravDir;
2401 }
2402 Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame;
2404 Vector2 bodyVect = drawinfo.bodyVect;
2405 if (bodyFrame.Width != TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value.Width)
2406 {
2407 bodyFrame.Width = TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value.Width;
2408 bodyVect.X += bodyFrame.Width - TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value.Width;
2409 if (drawinfo.playerEffect.HasFlag(SpriteEffects.FlipHorizontally))
2410 {
2411 bodyVect.X = (float)bodyFrame.Width - bodyVect.X;
2412 }
2413 }
2414 DrawData item;
2415 if (drawinfo.drawPlayer.shieldRaised)
2416 {
2417 float num = (float)Math.Sin(Main.GlobalTimeWrappedHourly * ((float)Math.PI * 2f));
2418 float x = 2.5f + 1.5f * num;
2419 Color colorArmorBody = drawinfo.colorArmorBody;
2420 colorArmorBody.A = 0;
2421 colorArmorBody *= 0.45f - num * 0.15f;
2422 for (float num2 = 0f; num2 < 4f; num2 += 1f)
2423 {
2424 item = new DrawData(TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value, zero2 + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2) + zero + new Vector2(x, 0f).RotatedBy(num2 / 4f * ((float)Math.PI * 2f)), bodyFrame, colorArmorBody, drawinfo.drawPlayer.bodyRotation, bodyVect, 1f, drawinfo.playerEffect);
2425 item.shader = drawinfo.cShield;
2426 drawinfo.DrawDataCache.Add(item);
2427 }
2428 }
2429 item = new DrawData(TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value, zero2 + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2) + zero, bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, bodyVect, 1f, drawinfo.playerEffect);
2430 item.shader = drawinfo.cShield;
2431 drawinfo.DrawDataCache.Add(item);
2432 if (drawinfo.drawPlayer.shieldRaised)
2433 {
2434 Color colorArmorBody2 = drawinfo.colorArmorBody;
2435 float num3 = (float)Math.Sin(Main.GlobalTimeWrappedHourly * (float)Math.PI);
2436 colorArmorBody2.A = (byte)((float)(int)colorArmorBody2.A * (0.5f + 0.5f * num3));
2437 colorArmorBody2 *= 0.5f + 0.5f * num3;
2438 item = new DrawData(TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value, zero2 + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2) + zero, bodyFrame, colorArmorBody2, drawinfo.drawPlayer.bodyRotation, bodyVect, 1f, drawinfo.playerEffect);
2439 item.shader = drawinfo.cShield;
2440 }
2441 if (drawinfo.drawPlayer.shieldRaised && drawinfo.drawPlayer.shieldParryTimeLeft > 0)
2442 {
2443 float num4 = (float)drawinfo.drawPlayer.shieldParryTimeLeft / 20f;
2444 float num5 = 1.5f * num4;
2445 Vector2 vector = zero2 + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2) + zero;
2446 Color colorArmorBody3 = drawinfo.colorArmorBody;
2447 float num6 = 1f;
2448 Vector2 vector2 = drawinfo.Position + drawinfo.drawPlayer.Size / 2f - Main.screenPosition;
2450 vector += vector3 * num5;
2451 num6 += num5;
2452 colorArmorBody3.A = (byte)((float)(int)colorArmorBody3.A * (1f - num4));
2453 colorArmorBody3 *= 1f - num4;
2454 item = new DrawData(TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value, vector, bodyFrame, colorArmorBody3, drawinfo.drawPlayer.bodyRotation, bodyVect, num6, drawinfo.playerEffect);
2455 item.shader = drawinfo.cShield;
2456 drawinfo.DrawDataCache.Add(item);
2457 }
2458 if (drawinfo.drawPlayer.mount.Cart)
2459 {
2460 drawinfo.DrawDataCache.Reverse(drawinfo.DrawDataCache.Count - 2, 2);
2461 }
2462 }
2463
2465 {
2466 if (drawinfo.drawPlayer.solarShields > 0 && drawinfo.shadow == 0f && !drawinfo.drawPlayer.dead)
2467 {
2468 Texture2D value = TextureAssets.Extra[61 + drawinfo.drawPlayer.solarShields - 1].Value;
2469 Color color = new Color(255, 255, 255, 127);
2470 float num = (drawinfo.drawPlayer.solarShieldPos[0] * new Vector2(1f, 0.5f)).ToRotation();
2471 if (drawinfo.drawPlayer.direction == -1)
2472 {
2473 num += (float)Math.PI;
2474 }
2475 num += (float)Math.PI / 50f * (float)drawinfo.drawPlayer.direction;
2476 DrawData item = new DrawData(value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)(drawinfo.drawPlayer.height / 2))) + drawinfo.drawPlayer.solarShieldPos[0], null, color, num, value.Size() / 2f, 1f, drawinfo.playerEffect);
2477 item.shader = drawinfo.cBody;
2478 drawinfo.DrawDataCache.Add(item);
2479 }
2480 }
2481
2483 {
2484 if (drawinfo.drawPlayer.JustDroppedAnItem)
2485 {
2486 return;
2487 }
2488 if (drawinfo.drawPlayer.heldProj >= 0 && drawinfo.shadow == 0f && !drawinfo.heldProjOverHand)
2489 {
2490 drawinfo.projectileDrawPosition = drawinfo.DrawDataCache.Count;
2491 }
2492 Item heldItem = drawinfo.heldItem;
2493 int num = heldItem.type;
2494 if (drawinfo.drawPlayer.UsingBiomeTorches)
2495 {
2496 switch (num)
2497 {
2498 case 8:
2499 num = drawinfo.drawPlayer.BiomeTorchHoldStyle(num);
2500 break;
2501 case 966:
2502 num = drawinfo.drawPlayer.BiomeCampfireHoldStyle(num);
2503 break;
2504 }
2505 }
2506 float adjustedItemScale = drawinfo.drawPlayer.GetAdjustedItemScale(heldItem);
2507 Main.instance.LoadItem(num);
2508 Texture2D value = TextureAssets.Item[num].Value;
2509 Vector2 position = new Vector2((int)(drawinfo.ItemLocation.X - Main.screenPosition.X), (int)(drawinfo.ItemLocation.Y - Main.screenPosition.Y));
2510 Rectangle itemDrawFrame = drawinfo.drawPlayer.GetItemDrawFrame(num);
2511 drawinfo.itemColor = Lighting.GetColor((int)((double)drawinfo.Position.X + (double)drawinfo.drawPlayer.width * 0.5) / 16, (int)(((double)drawinfo.Position.Y + (double)drawinfo.drawPlayer.height * 0.5) / 16.0));
2512 if (num == 678)
2513 {
2514 drawinfo.itemColor = Color.White;
2515 }
2516 if (drawinfo.drawPlayer.shroomiteStealth && heldItem.ranged)
2517 {
2518 float num2 = drawinfo.drawPlayer.stealth;
2519 if ((double)num2 < 0.03)
2520 {
2521 num2 = 0.03f;
2522 }
2523 float num3 = (1f + num2 * 10f) / 11f;
2524 drawinfo.itemColor = new Color((byte)((float)(int)drawinfo.itemColor.R * num2), (byte)((float)(int)drawinfo.itemColor.G * num2), (byte)((float)(int)drawinfo.itemColor.B * num3), (byte)((float)(int)drawinfo.itemColor.A * num2));
2525 }
2526 if (drawinfo.drawPlayer.setVortex && heldItem.ranged)
2527 {
2528 float num4 = drawinfo.drawPlayer.stealth;
2529 if ((double)num4 < 0.03)
2530 {
2531 num4 = 0.03f;
2532 }
2533 _ = (1f + num4 * 10f) / 11f;
2534 drawinfo.itemColor = drawinfo.itemColor.MultiplyRGBA(new Color(Vector4.Lerp(Vector4.One, new Vector4(0f, 0.12f, 0.16f, 0f), 1f - num4)));
2535 }
2536 bool flag = drawinfo.drawPlayer.itemAnimation > 0 && heldItem.useStyle != 0;
2537 bool flag2 = heldItem.holdStyle != 0 && !drawinfo.drawPlayer.pulley;
2538 if (!drawinfo.drawPlayer.CanVisuallyHoldItem(heldItem))
2539 {
2540 flag2 = false;
2541 }
2542 if (drawinfo.shadow != 0f || drawinfo.drawPlayer.frozen || !(flag || flag2) || num <= 0 || drawinfo.drawPlayer.dead || heldItem.noUseGraphic || (drawinfo.drawPlayer.wet && heldItem.noWet) || (drawinfo.drawPlayer.happyFunTorchTime && drawinfo.drawPlayer.inventory[drawinfo.drawPlayer.selectedItem].createTile == 4 && drawinfo.drawPlayer.itemAnimation == 0))
2543 {
2544 return;
2545 }
2546 _ = drawinfo.drawPlayer.name;
2547 Color color = new Color(250, 250, 250, heldItem.alpha);
2549 switch (num)
2550 {
2551 case 104:
2552 case 5094:
2553 case 5095:
2554 vector = new Vector2(4f, -4f) * drawinfo.drawPlayer.Directions;
2555 break;
2556 case 426:
2557 case 797:
2558 case 1506:
2559 case 5096:
2560 case 5097:
2561 vector = new Vector2(6f, -6f) * drawinfo.drawPlayer.Directions;
2562 break;
2563 case 46:
2564 {
2565 float amount = Utils.Remap(drawinfo.itemColor.ToVector3().Length() / 1.731f, 0.3f, 0.5f, 1f, 0f);
2566 color = Color.Lerp(Color.Transparent, new Color(255, 255, 255, 127) * 0.7f, amount);
2567 break;
2568 }
2569 case 204:
2570 vector = new Vector2(4f, -6f) * drawinfo.drawPlayer.Directions;
2571 break;
2572 case 3349:
2573 vector = new Vector2(2f, -2f) * drawinfo.drawPlayer.Directions;
2574 break;
2575 }
2576 if (num == 3823)
2577 {
2578 vector = new Vector2(7 * drawinfo.drawPlayer.direction, -7f * drawinfo.drawPlayer.gravDir);
2579 }
2580 if (num == 3827)
2581 {
2582 vector = new Vector2(13 * drawinfo.drawPlayer.direction, -13f * drawinfo.drawPlayer.gravDir);
2583 color = heldItem.GetAlpha(drawinfo.itemColor);
2584 color = Color.Lerp(color, Color.White, 0.6f);
2585 color.A = 66;
2586 }
2587 Vector2 origin = new Vector2((float)itemDrawFrame.Width * 0.5f - (float)itemDrawFrame.Width * 0.5f * (float)drawinfo.drawPlayer.direction, itemDrawFrame.Height);
2588 if (heldItem.useStyle == 9 && drawinfo.drawPlayer.itemAnimation > 0)
2589 {
2590 Vector2 vector2 = new Vector2(0.5f, 0.4f);
2591 if (heldItem.type == 5009 || heldItem.type == 5042)
2592 {
2593 vector2 = new Vector2(0.26f, 0.5f);
2594 if (drawinfo.drawPlayer.direction == -1)
2595 {
2596 vector2.X = 1f - vector2.X;
2597 }
2598 }
2599 origin = itemDrawFrame.Size() * vector2;
2600 }
2601 if (drawinfo.drawPlayer.gravDir == -1f)
2602 {
2603 origin.Y = (float)itemDrawFrame.Height - origin.Y;
2604 }
2605 origin += vector;
2606 float num5 = drawinfo.drawPlayer.itemRotation;
2607 if (heldItem.useStyle == 8)
2608 {
2609 ref float x = ref position.X;
2610 float num6 = x;
2611 _ = drawinfo.drawPlayer.direction;
2612 x = num6 - 0f;
2613 num5 -= (float)Math.PI / 2f * (float)drawinfo.drawPlayer.direction;
2614 origin.Y = 2f;
2615 origin.X += 2 * drawinfo.drawPlayer.direction;
2616 }
2617 if (num == 425 || num == 507)
2618 {
2619 if (drawinfo.drawPlayer.gravDir == 1f)
2620 {
2621 if (drawinfo.drawPlayer.direction == 1)
2622 {
2623 drawinfo.itemEffect = SpriteEffects.FlipVertically;
2624 }
2625 else
2626 {
2627 drawinfo.itemEffect = SpriteEffects.FlipHorizontally | SpriteEffects.FlipVertically;
2628 }
2629 }
2630 else if (drawinfo.drawPlayer.direction == 1)
2631 {
2632 drawinfo.itemEffect = SpriteEffects.None;
2633 }
2634 else
2635 {
2636 drawinfo.itemEffect = SpriteEffects.FlipHorizontally;
2637 }
2638 }
2639 if ((num == 946 || num == 4707) && num5 != 0f)
2640 {
2641 position.Y -= 22f * drawinfo.drawPlayer.gravDir;
2642 num5 = -1.57f * (float)(-drawinfo.drawPlayer.direction) * drawinfo.drawPlayer.gravDir;
2643 }
2644 ItemSlot.GetItemLight(ref drawinfo.itemColor, heldItem);
2645 DrawData item;
2646 switch (num)
2647 {
2648 case 3476:
2649 {
2650 Texture2D value3 = TextureAssets.Extra[64].Value;
2651 Rectangle rectangle2 = value3.Frame(1, 9, 0, drawinfo.drawPlayer.miscCounter % 54 / 6);
2652 Vector2 vector4 = new Vector2(rectangle2.Width / 2 * drawinfo.drawPlayer.direction, 0f);
2653 Vector2 origin3 = rectangle2.Size() / 2f;
2654 item = new DrawData(value3, (drawinfo.ItemLocation - Main.screenPosition + vector4).Floor(), rectangle2, heldItem.GetAlpha(drawinfo.itemColor).MultiplyRGBA(new Color(new Vector4(0.5f, 0.5f, 0.5f, 0.8f))), drawinfo.drawPlayer.itemRotation, origin3, adjustedItemScale, drawinfo.itemEffect);
2655 drawinfo.DrawDataCache.Add(item);
2656 value3 = TextureAssets.GlowMask[195].Value;
2657 item = new DrawData(value3, (drawinfo.ItemLocation - Main.screenPosition + vector4).Floor(), rectangle2, new Color(250, 250, 250, heldItem.alpha) * 0.5f, drawinfo.drawPlayer.itemRotation, origin3, adjustedItemScale, drawinfo.itemEffect);
2658 drawinfo.DrawDataCache.Add(item);
2659 return;
2660 }
2661 case 4049:
2662 {
2663 Texture2D value2 = TextureAssets.Extra[92].Value;
2664 Rectangle rectangle = value2.Frame(1, 4, 0, drawinfo.drawPlayer.miscCounter % 20 / 5);
2665 Vector2 vector3 = new Vector2(rectangle.Width / 2 * drawinfo.drawPlayer.direction, 0f);
2666 vector3 += new Vector2(-10 * drawinfo.drawPlayer.direction, 8f * drawinfo.drawPlayer.gravDir);
2667 Vector2 origin2 = rectangle.Size() / 2f;
2668 item = new DrawData(value2, (drawinfo.ItemLocation - Main.screenPosition + vector3).Floor(), rectangle, heldItem.GetAlpha(drawinfo.itemColor), drawinfo.drawPlayer.itemRotation, origin2, adjustedItemScale, drawinfo.itemEffect);
2669 drawinfo.DrawDataCache.Add(item);
2670 return;
2671 }
2672 case 3779:
2673 {
2675 Rectangle rectangle3 = texture2D.Frame();
2676 Vector2 vector5 = new Vector2(rectangle3.Width / 2 * drawinfo.drawPlayer.direction, 0f);
2677 Vector2 origin4 = rectangle3.Size() / 2f;
2678 float num7 = ((float)drawinfo.drawPlayer.miscCounter / 75f * ((float)Math.PI * 2f)).ToRotationVector2().X * 1f + 0f;
2679 Color color2 = new Color(120, 40, 222, 0) * (num7 / 2f * 0.3f + 0.85f) * 0.5f;
2680 num7 = 2f;
2681 for (float num8 = 0f; num8 < 4f; num8 += 1f)
2682 {
2683 item = new DrawData(TextureAssets.GlowMask[218].Value, (drawinfo.ItemLocation - Main.screenPosition + vector5).Floor() + (num8 * ((float)Math.PI / 2f)).ToRotationVector2() * num7, rectangle3, color2, drawinfo.drawPlayer.itemRotation, origin4, adjustedItemScale, drawinfo.itemEffect);
2684 drawinfo.DrawDataCache.Add(item);
2685 }
2686 item = new DrawData(texture2D, (drawinfo.ItemLocation - Main.screenPosition + vector5).Floor(), rectangle3, heldItem.GetAlpha(drawinfo.itemColor).MultiplyRGBA(new Color(new Vector4(0.5f, 0.5f, 0.5f, 0.8f))), drawinfo.drawPlayer.itemRotation, origin4, adjustedItemScale, drawinfo.itemEffect);
2687 drawinfo.DrawDataCache.Add(item);
2688 return;
2689 }
2690 }
2691 if (heldItem.useStyle == 5)
2692 {
2693 if (Item.staff[num])
2694 {
2695 float num9 = drawinfo.drawPlayer.itemRotation + 0.785f * (float)drawinfo.drawPlayer.direction;
2696 float num10 = 0f;
2697 float num11 = 0f;
2698 Vector2 origin5 = new Vector2(0f, itemDrawFrame.Height);
2699 if (num == 3210)
2700 {
2701 num10 = 8 * -drawinfo.drawPlayer.direction;
2702 num11 = 2 * (int)drawinfo.drawPlayer.gravDir;
2703 }
2704 if (num == 3870)
2705 {
2706 Vector2 vector6 = (drawinfo.drawPlayer.itemRotation + (float)Math.PI / 4f * (float)drawinfo.drawPlayer.direction).ToRotationVector2() * new Vector2((float)(-drawinfo.drawPlayer.direction) * 1.5f, drawinfo.drawPlayer.gravDir) * 3f;
2707 num10 = (int)vector6.X;
2708 num11 = (int)vector6.Y;
2709 }
2710 if (num == 3787)
2711 {
2712 num11 = (int)((float)(8 * (int)drawinfo.drawPlayer.gravDir) * (float)Math.Cos(num9));
2713 }
2714 if (num == 3209)
2715 {
2716 Vector2 vector7 = (new Vector2(-8f, 0f) * drawinfo.drawPlayer.Directions).RotatedBy(drawinfo.drawPlayer.itemRotation);
2717 num10 = vector7.X;
2718 num11 = vector7.Y;
2719 }
2720 if (drawinfo.drawPlayer.gravDir == -1f)
2721 {
2722 if (drawinfo.drawPlayer.direction == -1)
2723 {
2724 num9 += 1.57f;
2725 origin5 = new Vector2(itemDrawFrame.Width, 0f);
2726 num10 -= (float)itemDrawFrame.Width;
2727 }
2728 else
2729 {
2730 num9 -= 1.57f;
2732 }
2733 }
2734 else if (drawinfo.drawPlayer.direction == -1)
2735 {
2736 origin5 = new Vector2(itemDrawFrame.Width, itemDrawFrame.Height);
2737 num10 -= (float)itemDrawFrame.Width;
2738 }
2739 item = new DrawData(value, new Vector2((int)(drawinfo.ItemLocation.X - Main.screenPosition.X + origin5.X + num10), (int)(drawinfo.ItemLocation.Y - Main.screenPosition.Y + num11)), itemDrawFrame, heldItem.GetAlpha(drawinfo.itemColor), num9, origin5, adjustedItemScale, drawinfo.itemEffect);
2740 drawinfo.DrawDataCache.Add(item);
2741 if (num == 3870)
2742 {
2743 item = new DrawData(TextureAssets.GlowMask[238].Value, new Vector2((int)(drawinfo.ItemLocation.X - Main.screenPosition.X + origin5.X + num10), (int)(drawinfo.ItemLocation.Y - Main.screenPosition.Y + num11)), itemDrawFrame, new Color(255, 255, 255, 127), num9, origin5, adjustedItemScale, drawinfo.itemEffect);
2744 drawinfo.DrawDataCache.Add(item);
2745 }
2746 return;
2747 }
2748 if (num == 5118)
2749 {
2750 float rotation = drawinfo.drawPlayer.itemRotation + 1.57f * (float)drawinfo.drawPlayer.direction;
2751 Vector2 vector8 = new Vector2((float)itemDrawFrame.Width * 0.5f, (float)itemDrawFrame.Height * 0.5f);
2752 Vector2 origin6 = new Vector2((float)itemDrawFrame.Width * 0.5f, itemDrawFrame.Height);
2753 Vector2 spinningpoint = new Vector2(10f, 4f) * drawinfo.drawPlayer.Directions;
2754 spinningpoint = spinningpoint.RotatedBy(drawinfo.drawPlayer.itemRotation);
2755 item = new DrawData(value, new Vector2((int)(drawinfo.ItemLocation.X - Main.screenPosition.X + vector8.X + spinningpoint.X), (int)(drawinfo.ItemLocation.Y - Main.screenPosition.Y + vector8.Y + spinningpoint.Y)), itemDrawFrame, heldItem.GetAlpha(drawinfo.itemColor), rotation, origin6, adjustedItemScale, drawinfo.itemEffect);
2756 drawinfo.DrawDataCache.Add(item);
2757 return;
2758 }
2759 int num12 = 10;
2760 Vector2 vector9 = new Vector2(itemDrawFrame.Width / 2, itemDrawFrame.Height / 2);
2761 Vector2 vector10 = Main.DrawPlayerItemPos(drawinfo.drawPlayer.gravDir, num);
2762 num12 = (int)vector10.X;
2763 vector9.Y = vector10.Y;
2764 Vector2 origin7 = new Vector2(-num12, itemDrawFrame.Height / 2);
2765 if (drawinfo.drawPlayer.direction == -1)
2766 {
2767 origin7 = new Vector2(itemDrawFrame.Width + num12, itemDrawFrame.Height / 2);
2768 }
2769 item = new DrawData(value, new Vector2((int)(drawinfo.ItemLocation.X - Main.screenPosition.X + vector9.X), (int)(drawinfo.ItemLocation.Y - Main.screenPosition.Y + vector9.Y)), itemDrawFrame, heldItem.GetAlpha(drawinfo.itemColor), drawinfo.drawPlayer.itemRotation, origin7, adjustedItemScale, drawinfo.itemEffect);
2770 drawinfo.DrawDataCache.Add(item);
2771 if (heldItem.color != default(Color))
2772 {
2773 item = new DrawData(value, new Vector2((int)(drawinfo.ItemLocation.X - Main.screenPosition.X + vector9.X), (int)(drawinfo.ItemLocation.Y - Main.screenPosition.Y + vector9.Y)), itemDrawFrame, heldItem.GetColor(drawinfo.itemColor), drawinfo.drawPlayer.itemRotation, origin7, adjustedItemScale, drawinfo.itemEffect);
2774 drawinfo.DrawDataCache.Add(item);
2775 }
2776 if (heldItem.glowMask != -1)
2777 {
2778 item = new DrawData(TextureAssets.GlowMask[heldItem.glowMask].Value, new Vector2((int)(drawinfo.ItemLocation.X - Main.screenPosition.X + vector9.X), (int)(drawinfo.ItemLocation.Y - Main.screenPosition.Y + vector9.Y)), itemDrawFrame, new Color(250, 250, 250, heldItem.alpha), drawinfo.drawPlayer.itemRotation, origin7, adjustedItemScale, drawinfo.itemEffect);
2779 drawinfo.DrawDataCache.Add(item);
2780 }
2781 if (num == 3788)
2782 {
2783 float num13 = ((float)drawinfo.drawPlayer.miscCounter / 75f * ((float)Math.PI * 2f)).ToRotationVector2().X * 1f + 0f;
2784 Color color3 = new Color(80, 40, 252, 0) * (num13 / 2f * 0.3f + 0.85f) * 0.5f;
2785 for (float num14 = 0f; num14 < 4f; num14 += 1f)
2786 {
2787 item = new DrawData(TextureAssets.GlowMask[220].Value, new Vector2((int)(drawinfo.ItemLocation.X - Main.screenPosition.X + vector9.X), (int)(drawinfo.ItemLocation.Y - Main.screenPosition.Y + vector9.Y)) + (num14 * ((float)Math.PI / 2f) + drawinfo.drawPlayer.itemRotation).ToRotationVector2() * num13, null, color3, drawinfo.drawPlayer.itemRotation, origin7, adjustedItemScale, drawinfo.itemEffect);
2788 drawinfo.DrawDataCache.Add(item);
2789 }
2790 }
2791 return;
2792 }
2793 if (drawinfo.drawPlayer.gravDir == -1f)
2794 {
2795 item = new DrawData(value, position, itemDrawFrame, heldItem.GetAlpha(drawinfo.itemColor), num5, origin, adjustedItemScale, drawinfo.itemEffect);
2796 drawinfo.DrawDataCache.Add(item);
2797 if (heldItem.color != default(Color))
2798 {
2799 item = new DrawData(value, position, itemDrawFrame, heldItem.GetColor(drawinfo.itemColor), num5, origin, adjustedItemScale, drawinfo.itemEffect);
2800 drawinfo.DrawDataCache.Add(item);
2801 }
2802 if (heldItem.glowMask != -1)
2803 {
2804 item = new DrawData(TextureAssets.GlowMask[heldItem.glowMask].Value, position, itemDrawFrame, new Color(250, 250, 250, heldItem.alpha), num5, origin, adjustedItemScale, drawinfo.itemEffect);
2805 drawinfo.DrawDataCache.Add(item);
2806 }
2807 return;
2808 }
2809 item = new DrawData(value, position, itemDrawFrame, heldItem.GetAlpha(drawinfo.itemColor), num5, origin, adjustedItemScale, drawinfo.itemEffect);
2810 drawinfo.DrawDataCache.Add(item);
2811 if (heldItem.color != default(Color))
2812 {
2813 item = new DrawData(value, position, itemDrawFrame, heldItem.GetColor(drawinfo.itemColor), num5, origin, adjustedItemScale, drawinfo.itemEffect);
2814 drawinfo.DrawDataCache.Add(item);
2815 }
2816 if (heldItem.glowMask != -1)
2817 {
2818 item = new DrawData(TextureAssets.GlowMask[heldItem.glowMask].Value, position, itemDrawFrame, color, num5, origin, adjustedItemScale, drawinfo.itemEffect);
2819 drawinfo.DrawDataCache.Add(item);
2820 }
2821 if (!heldItem.flame || drawinfo.shadow != 0f)
2822 {
2823 return;
2824 }
2825 try
2826 {
2827 Main.instance.LoadItemFlames(num);
2828 if (TextureAssets.ItemFlame[num].IsLoaded)
2829 {
2830 Color color4 = new Color(100, 100, 100, 0);
2831 int num15 = 7;
2832 float num16 = 1f;
2833 float num17 = 0f;
2834 switch (num)
2835 {
2836 case 3045:
2838 break;
2839 case 5293:
2840 color4 = new Color(50, 50, 100, 20);
2841 break;
2842 case 5353:
2843 color4 = new Color(255, 255, 255, 200);
2844 break;
2845 case 4952:
2846 num15 = 3;
2847 num16 = 0.6f;
2848 color4 = new Color(50, 50, 50, 0);
2849 break;
2850 case 5322:
2851 color4 = new Color(100, 100, 100, 150);
2852 num17 = -2 * drawinfo.drawPlayer.direction;
2853 break;
2854 }
2855 for (int i = 0; i < num15; i++)
2856 {
2857 float num18 = drawinfo.drawPlayer.itemFlamePos[i].X * adjustedItemScale * num16;
2858 float num19 = drawinfo.drawPlayer.itemFlamePos[i].Y * adjustedItemScale * num16;
2859 item = new DrawData(TextureAssets.ItemFlame[num].Value, new Vector2((int)(position.X + num18 + num17), (int)(position.Y + num19)), itemDrawFrame, color4, num5, origin, adjustedItemScale, drawinfo.itemEffect);
2860 drawinfo.DrawDataCache.Add(item);
2861 }
2862 }
2863 }
2864 catch
2865 {
2866 }
2867 }
2868
2870 {
2871 if (drawinfo.usesCompositeTorso)
2872 {
2874 }
2875 else if (drawinfo.drawPlayer.body > 0 && drawinfo.drawPlayer.body < ArmorIDs.Body.Count)
2876 {
2877 Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame;
2878 int num = drawinfo.armorAdjust;
2879 bodyFrame.X += num;
2880 bodyFrame.Width -= num;
2881 if (drawinfo.drawPlayer.direction == -1)
2882 {
2883 num = 0;
2884 }
2885 if (drawinfo.drawPlayer.invis && (drawinfo.drawPlayer.body == 21 || drawinfo.drawPlayer.body == 22))
2886 {
2887 return;
2888 }
2889 DrawData item;
2890 if (drawinfo.missingHand && !drawinfo.drawPlayer.invis)
2891 {
2892 _ = drawinfo.drawPlayer.body;
2894 if (drawinfo.missingArm)
2895 {
2896 drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorBodySkin, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
2897 drawData.shader = drawinfo.skinDyePacked;
2898 item = drawData;
2899 drawinfo.DrawDataCache.Add(item);
2900 }
2901 drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 9].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorBodySkin, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
2902 drawData.shader = drawinfo.skinDyePacked;
2903 item = drawData;
2904 drawinfo.DrawDataCache.Add(item);
2905 }
2906 item = new DrawData(TextureAssets.ArmorArm[drawinfo.drawPlayer.body].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)) + num, (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
2907 item.shader = drawinfo.cBody;
2908 drawinfo.DrawDataCache.Add(item);
2909 if (drawinfo.armGlowMask != -1)
2910 {
2911 item = new DrawData(TextureAssets.GlowMask[drawinfo.armGlowMask].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)) + num, (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), bodyFrame, drawinfo.armGlowColor, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
2912 item.shader = drawinfo.cBody;
2913 drawinfo.DrawDataCache.Add(item);
2914 }
2915 if (drawinfo.drawPlayer.body == 205)
2916 {
2917 Color color = new Color(100, 100, 100, 0);
2918 ulong seed = (ulong)(drawinfo.drawPlayer.miscCounter / 4);
2919 int num2 = 4;
2920 for (int i = 0; i < num2; i++)
2921 {
2922 float num3 = (float)Utils.RandomInt(ref seed, -10, 11) * 0.2f;
2923 float num4 = (float)Utils.RandomInt(ref seed, -10, 1) * 0.15f;
2924 item = new DrawData(TextureAssets.GlowMask[240].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)) + num, (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + num3, (float)(drawinfo.drawPlayer.bodyFrame.Height / 2) + num4), bodyFrame, color, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
2925 item.shader = drawinfo.cBody;
2926 drawinfo.DrawDataCache.Add(item);
2927 }
2928 }
2929 }
2930 else if (!drawinfo.drawPlayer.invis)
2931 {
2932 DrawData drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorBodySkin, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
2933 drawData.shader = drawinfo.skinDyePacked;
2935 drawinfo.DrawDataCache.Add(item);
2936 item = new DrawData(TextureAssets.Players[drawinfo.skinVar, 8].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorUnderShirt, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
2937 drawinfo.DrawDataCache.Add(item);
2938 item = new DrawData(TextureAssets.Players[drawinfo.skinVar, 13].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorShirt, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
2939 drawinfo.DrawDataCache.Add(item);
2940 }
2941 }
2942
2944 {
2945 Vector2 vector = new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2);
2946 Vector2 vector2 = Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height];
2947 vector2.Y -= 2f;
2948 vector += vector2 * -drawinfo.playerEffect.HasFlag(SpriteEffects.FlipVertically).ToDirectionInt();
2949 float bodyRotation = drawinfo.drawPlayer.bodyRotation;
2950 float rotation = drawinfo.drawPlayer.bodyRotation + drawinfo.compositeFrontArmRotation;
2951 Vector2 bodyVect = drawinfo.bodyVect;
2953 bodyVect += compositeOffset_FrontArm;
2955 Vector2 position = vector + drawinfo.frontShoulderOffset;
2956 if (drawinfo.compFrontArmFrame.X / drawinfo.compFrontArmFrame.Width >= 7)
2957 {
2958 vector += new Vector2((!drawinfo.playerEffect.HasFlag(SpriteEffects.FlipHorizontally)) ? 1 : (-1), (!drawinfo.playerEffect.HasFlag(SpriteEffects.FlipVertically)) ? 1 : (-1));
2959 }
2960 _ = drawinfo.drawPlayer.invis;
2961 bool num = drawinfo.drawPlayer.body > 0 && drawinfo.drawPlayer.body < ArmorIDs.Body.Count;
2962 int num2 = (drawinfo.compShoulderOverFrontArm ? 1 : 0);
2963 int num3 = ((!drawinfo.compShoulderOverFrontArm) ? 1 : 0);
2964 int num4 = ((!drawinfo.compShoulderOverFrontArm) ? 1 : 0);
2965 bool flag = !drawinfo.hidesTopSkin;
2966 if (num)
2967 {
2968 if (!drawinfo.drawPlayer.invis || IsArmorDrawnWhenInvisible(drawinfo.drawPlayer.body))
2969 {
2970 Texture2D value = TextureAssets.ArmorBodyComposite[drawinfo.drawPlayer.body].Value;
2971 for (int i = 0; i < 2; i++)
2972 {
2973 if (!drawinfo.drawPlayer.invis && i == num4 && flag)
2974 {
2975 if (drawinfo.missingArm)
2976 {
2977 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, vector, drawinfo.compFrontArmFrame, drawinfo.colorBodySkin, rotation, bodyVect, 1f, drawinfo.playerEffect)
2978 {
2979 shader = drawinfo.skinDyePacked
2980 });
2981 }
2982 if (drawinfo.missingHand)
2983 {
2984 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 9].Value, vector, drawinfo.compFrontArmFrame, drawinfo.colorBodySkin, rotation, bodyVect, 1f, drawinfo.playerEffect)
2985 {
2986 shader = drawinfo.skinDyePacked
2987 });
2988 }
2989 }
2990 if (i == num2 && !drawinfo.hideCompositeShoulders)
2991 {
2992 DrawCompositeArmorPiece(ref drawinfo, CompositePlayerDrawContext.FrontShoulder, new DrawData(value, position, drawinfo.compFrontShoulderFrame, drawinfo.colorArmorBody, bodyRotation, bodyVect, 1f, drawinfo.playerEffect)
2993 {
2994 shader = drawinfo.cBody
2995 });
2996 }
2997 if (i == num3)
2998 {
2999 DrawCompositeArmorPiece(ref drawinfo, CompositePlayerDrawContext.FrontArm, new DrawData(value, vector, drawinfo.compFrontArmFrame, drawinfo.colorArmorBody, rotation, bodyVect, 1f, drawinfo.playerEffect)
3000 {
3001 shader = drawinfo.cBody
3002 });
3003 }
3004 }
3005 }
3006 }
3007 else if (!drawinfo.drawPlayer.invis)
3008 {
3009 for (int j = 0; j < 2; j++)
3010 {
3011 if (j == num2)
3012 {
3013 if (flag)
3014 {
3015 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, position, drawinfo.compFrontShoulderFrame, drawinfo.colorBodySkin, bodyRotation, bodyVect, 1f, drawinfo.playerEffect)
3016 {
3017 shader = drawinfo.skinDyePacked
3018 });
3019 }
3020 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 8].Value, position, drawinfo.compFrontShoulderFrame, drawinfo.colorUnderShirt, bodyRotation, bodyVect, 1f, drawinfo.playerEffect));
3021 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 13].Value, position, drawinfo.compFrontShoulderFrame, drawinfo.colorShirt, bodyRotation, bodyVect, 1f, drawinfo.playerEffect));
3022 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 6].Value, position, drawinfo.compFrontShoulderFrame, drawinfo.colorShirt, bodyRotation, bodyVect, 1f, drawinfo.playerEffect));
3023 if (drawinfo.drawPlayer.head == 269)
3024 {
3025 Vector2 position2 = drawinfo.helmetOffset + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect;
3026 DrawData item = new DrawData(TextureAssets.Extra[214].Value, position2, drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
3027 item.shader = drawinfo.cHead;
3028 drawinfo.DrawDataCache.Add(item);
3029 item = new DrawData(TextureAssets.GlowMask[308].Value, position2, drawinfo.drawPlayer.bodyFrame, drawinfo.headGlowColor, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect);
3030 item.shader = drawinfo.cHead;
3031 drawinfo.DrawDataCache.Add(item);
3032 }
3033 }
3034 if (j == num3)
3035 {
3036 if (flag)
3037 {
3038 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, vector, drawinfo.compFrontArmFrame, drawinfo.colorBodySkin, rotation, bodyVect, 1f, drawinfo.playerEffect)
3039 {
3040 shader = drawinfo.skinDyePacked
3041 });
3042 }
3043 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 8].Value, vector, drawinfo.compFrontArmFrame, drawinfo.colorUnderShirt, rotation, bodyVect, 1f, drawinfo.playerEffect));
3044 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 13].Value, vector, drawinfo.compFrontArmFrame, drawinfo.colorShirt, rotation, bodyVect, 1f, drawinfo.playerEffect));
3045 drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 6].Value, vector, drawinfo.compFrontArmFrame, drawinfo.colorShirt, rotation, bodyVect, 1f, drawinfo.playerEffect));
3046 }
3047 }
3048 }
3049 if (drawinfo.drawPlayer.handon > 0 && drawinfo.drawPlayer.handon < ArmorIDs.HandOn.Count)
3050 {
3051 Texture2D value2 = TextureAssets.AccHandsOnComposite[drawinfo.drawPlayer.handon].Value;
3052 DrawCompositeArmorPiece(ref drawinfo, CompositePlayerDrawContext.FrontArmAccessory, new DrawData(value2, vector, drawinfo.compFrontArmFrame, drawinfo.colorArmorBody, rotation, bodyVect, 1f, drawinfo.playerEffect)
3053 {
3054 shader = drawinfo.cHandOn
3055 });
3056 }
3057 }
3058
3060 {
3061 if (!drawinfo.usesCompositeFrontHandAcc && drawinfo.drawPlayer.handon > 0 && drawinfo.drawPlayer.handon < ArmorIDs.HandOn.Count)
3062 {
3063 DrawData item = new DrawData(TextureAssets.AccHandsOn[drawinfo.drawPlayer.handon].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
3064 item.shader = drawinfo.cHandOn;
3065 drawinfo.DrawDataCache.Add(item);
3066 }
3067 }
3068
3070 {
3071 Item heldItem = drawinfo.heldItem;
3072 if (heldItem.type <= -1 || !Item.claw[heldItem.type] || drawinfo.shadow != 0f)
3073 {
3074 return;
3075 }
3076 Main.instance.LoadItem(heldItem.type);
3077 Asset<Texture2D> val = TextureAssets.Item[heldItem.type];
3078 if (!drawinfo.drawPlayer.frozen && (drawinfo.drawPlayer.itemAnimation > 0 || (heldItem.holdStyle != 0 && !drawinfo.drawPlayer.pulley)) && heldItem.type > 0 && !drawinfo.drawPlayer.dead && !heldItem.noUseGraphic && (!drawinfo.drawPlayer.wet || !heldItem.noWet))
3079 {
3080 if (drawinfo.drawPlayer.gravDir == -1f)
3081 {
3082 DrawData item = new DrawData(val.Value, new Vector2((int)(drawinfo.ItemLocation.X - Main.screenPosition.X), (int)(drawinfo.ItemLocation.Y - Main.screenPosition.Y)), new Rectangle(0, 0, val.Width(), val.Height()), heldItem.GetAlpha(drawinfo.itemColor), drawinfo.drawPlayer.itemRotation, new Vector2((float)val.Width() * 0.5f - (float)val.Width() * 0.5f * (float)drawinfo.drawPlayer.direction, 0f), drawinfo.drawPlayer.GetAdjustedItemScale(heldItem), drawinfo.itemEffect);
3083 drawinfo.DrawDataCache.Add(item);
3084 }
3085 else
3086 {
3087 DrawData item = new DrawData(val.Value, new Vector2((int)(drawinfo.ItemLocation.X - Main.screenPosition.X), (int)(drawinfo.ItemLocation.Y - Main.screenPosition.Y)), new Rectangle(0, 0, val.Width(), val.Height()), heldItem.GetAlpha(drawinfo.itemColor), drawinfo.drawPlayer.itemRotation, new Vector2((float)val.Width() * 0.5f - (float)val.Width() * 0.5f * (float)drawinfo.drawPlayer.direction, val.Height()), drawinfo.drawPlayer.GetAdjustedItemScale(heldItem), drawinfo.itemEffect);
3088 drawinfo.DrawDataCache.Add(item);
3089 }
3090 }
3091 }
3092
3094 {
3095 if (drawinfo.drawPlayer.heldProj >= 0 && drawinfo.shadow == 0f && drawinfo.heldProjOverHand)
3096 {
3097 drawinfo.projectileDrawPosition = drawinfo.DrawDataCache.Count;
3098 }
3099 }
3100
3102 {
3103 if (drawinfo.drawPlayer.front > 0 && drawinfo.drawPlayer.front < ArmorIDs.Front.Count && !drawinfo.drawPlayer.mount.Active)
3104 {
3106 DrawData item = new DrawData(TextureAssets.AccFront[drawinfo.drawPlayer.front].Value, zero + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), drawinfo.drawPlayer.bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect);
3107 item.shader = drawinfo.cFront;
3108 drawinfo.DrawDataCache.Add(item);
3109 }
3110 }
3111
3113 {
3114 if (drawinfo.drawPlayer.front <= 0 || drawinfo.drawPlayer.front >= ArmorIDs.Front.Count)
3115 {
3116 return;
3117 }
3118 Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame;
3119 int num = bodyFrame.Width / 2;
3120 bodyFrame.Width -= num;
3121 Vector2 bodyVect = drawinfo.bodyVect;
3122 if (drawinfo.playerEffect.HasFlag(SpriteEffects.FlipHorizontally))
3123 {
3124 bodyVect.X -= num;
3125 }
3126 Vector2 vector = Vector2.Zero + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2);
3127 DrawData item = new DrawData(TextureAssets.AccFront[drawinfo.drawPlayer.front].Value, vector, bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, bodyVect, 1f, drawinfo.playerEffect);
3128 item.shader = drawinfo.cFront;
3129 drawinfo.DrawDataCache.Add(item);
3130 if (drawinfo.drawPlayer.front == 12)
3131 {
3132 Rectangle rectangle = bodyFrame;
3134 value.Width = 2;
3135 int num2 = 0;
3136 int num3 = rectangle.Width / 2;
3137 int num4 = 2;
3138 if (drawinfo.playerEffect.HasFlag(SpriteEffects.FlipHorizontally))
3139 {
3140 num2 = rectangle.Width - 2;
3141 num4 = -2;
3142 }
3143 for (int i = 0; i < num3; i++)
3144 {
3145 value.X = rectangle.X + 2 * i;
3146 Color immuneAlpha = drawinfo.drawPlayer.GetImmuneAlpha(LiquidRenderer.GetShimmerGlitterColor(top: true, (float)i / 16f, 0f), drawinfo.shadow);
3147 immuneAlpha *= (float)(int)drawinfo.colorArmorBody.A / 255f;
3148 item = new DrawData(TextureAssets.GlowMask[331].Value, vector + new Vector2(num2 + i * num4, 0f), value, immuneAlpha, drawinfo.drawPlayer.bodyRotation, bodyVect, 1f, drawinfo.playerEffect);
3149 item.shader = drawinfo.cFront;
3150 drawinfo.DrawDataCache.Add(item);
3151 }
3152 }
3153 }
3154
3156 {
3157 if (drawinfo.drawPlayer.front <= 0 || drawinfo.drawPlayer.front >= ArmorIDs.Front.Count)
3158 {
3159 return;
3160 }
3161 Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame;
3162 int num = bodyFrame.Width / 2;
3163 bodyFrame.Width -= num;
3164 bodyFrame.X += num;
3165 Vector2 bodyVect = drawinfo.bodyVect;
3166 if (!drawinfo.playerEffect.HasFlag(SpriteEffects.FlipHorizontally))
3167 {
3168 bodyVect.X -= num;
3169 }
3170 Vector2 vector = Vector2.Zero + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2);
3171 DrawData item = new DrawData(TextureAssets.AccFront[drawinfo.drawPlayer.front].Value, vector, bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, bodyVect, 1f, drawinfo.playerEffect);
3172 item.shader = drawinfo.cFront;
3173 drawinfo.DrawDataCache.Add(item);
3174 if (drawinfo.drawPlayer.front == 12)
3175 {
3176 Rectangle rectangle = bodyFrame;
3178 value.Width = 2;
3179 int num2 = 0;
3180 int num3 = rectangle.Width / 2;
3181 int num4 = 2;
3182 if (drawinfo.playerEffect.HasFlag(SpriteEffects.FlipHorizontally))
3183 {
3184 num2 = rectangle.Width - 2;
3185 num4 = -2;
3186 }
3187 for (int i = 0; i < num3; i++)
3188 {
3189 value.X = rectangle.X + 2 * i;
3190 Color immuneAlpha = drawinfo.drawPlayer.GetImmuneAlpha(LiquidRenderer.GetShimmerGlitterColor(top: true, (float)i / 16f, 0f), drawinfo.shadow);
3191 immuneAlpha *= (float)(int)drawinfo.colorArmorBody.A / 255f;
3192 item = new DrawData(TextureAssets.GlowMask[331].Value, vector + new Vector2(num2 + i * num4, 0f), value, immuneAlpha, drawinfo.drawPlayer.bodyRotation, bodyVect, 1f, drawinfo.playerEffect);
3193 item.shader = drawinfo.cFront;
3194 drawinfo.DrawDataCache.Add(item);
3195 }
3196 }
3197 }
3198
3200 {
3201 if (!drawinfo.drawPlayer.shimmering)
3202 {
3203 if (drawinfo.drawPlayer.frozen && drawinfo.shadow == 0f)
3204 {
3205 Color colorArmorBody = drawinfo.colorArmorBody;
3206 colorArmorBody.R = (byte)((double)(int)colorArmorBody.R * 0.55);
3207 colorArmorBody.G = (byte)((double)(int)colorArmorBody.G * 0.55);
3208 colorArmorBody.B = (byte)((double)(int)colorArmorBody.B * 0.55);
3209 colorArmorBody.A = (byte)((double)(int)colorArmorBody.A * 0.55);
3210 DrawData item = new DrawData(TextureAssets.Frozen.Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), new Rectangle(0, 0, TextureAssets.Frozen.Width(), TextureAssets.Frozen.Height()), colorArmorBody, drawinfo.drawPlayer.bodyRotation, new Vector2(TextureAssets.Frozen.Width() / 2, TextureAssets.Frozen.Height() / 2), 1f, drawinfo.playerEffect);
3211 drawinfo.DrawDataCache.Add(item);
3212 }
3213 else if (drawinfo.drawPlayer.webbed && drawinfo.shadow == 0f && drawinfo.drawPlayer.velocity.Y == 0f)
3214 {
3215 Color color = drawinfo.colorArmorBody * 0.75f;
3216 Texture2D value = TextureAssets.Extra[31].Value;
3217 int num = drawinfo.drawPlayer.height / 2;
3218 DrawData item = new DrawData(value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f + (float)num)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), null, color, drawinfo.drawPlayer.bodyRotation, value.Size() / 2f, 1f, drawinfo.playerEffect);
3219 drawinfo.DrawDataCache.Add(item);
3220 }
3221 }
3222 }
3223
3225 {
3226 if (!drawinfo.drawPlayer.electrified || drawinfo.shadow != 0f)
3227 {
3228 return;
3229 }
3231 int num = drawinfo.drawPlayer.miscCounter / 5;
3232 for (int i = 0; i < 2; i++)
3233 {
3234 num %= 7;
3235 if (num > 1 && num < 5)
3236 {
3237 DrawData item = new DrawData(value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), new Rectangle(0, num * value.Height / 7, value.Width, value.Height / 7), drawinfo.colorElectricity, drawinfo.drawPlayer.bodyRotation, new Vector2(value.Width / 2, value.Height / 14), 1f, drawinfo.playerEffect);
3238 drawinfo.DrawDataCache.Add(item);
3239 }
3240 num += 3;
3241 }
3242 }
3243
3245 {
3246 if (drawinfo.drawPlayer.iceBarrier && drawinfo.shadow == 0f)
3247 {
3248 int num = TextureAssets.IceBarrier.Height() / 12;
3250 DrawData item = new DrawData(TextureAssets.IceBarrier.Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.drawPlayer.bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(drawinfo.drawPlayer.bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2), new Rectangle(0, num * drawinfo.drawPlayer.iceBarrierFrame, TextureAssets.IceBarrier.Width(), num), white, 0f, new Vector2(TextureAssets.Frozen.Width() / 2, TextureAssets.Frozen.Height() / 2), 1f, drawinfo.playerEffect);
3251 drawinfo.DrawDataCache.Add(item);
3252 }
3253 }
3254
3256 {
3257 if (drawinfo.shadow != 0f || (byte)drawinfo.drawPlayer.ownedLargeGems <= 0)
3258 {
3259 return;
3260 }
3261 bool flag = false;
3262 BitsByte ownedLargeGems = drawinfo.drawPlayer.ownedLargeGems;
3263 float num = 0f;
3264 for (int i = 0; i < 7; i++)
3265 {
3266 if (ownedLargeGems[i])
3267 {
3268 num += 1f;
3269 }
3270 }
3271 float num2 = 1f - num * 0.06f;
3272 float num3 = (num - 1f) * 4f;
3273 switch ((int)num)
3274 {
3275 case 2:
3276 num3 += 10f;
3277 break;
3278 case 3:
3279 num3 += 8f;
3280 break;
3281 case 4:
3282 num3 += 6f;
3283 break;
3284 case 5:
3285 num3 += 6f;
3286 break;
3287 case 6:
3288 num3 += 2f;
3289 break;
3290 case 7:
3291 num3 += 0f;
3292 break;
3293 }
3294 float num4 = (float)drawinfo.drawPlayer.miscCounter / 300f * ((float)Math.PI * 2f);
3295 if (!(num > 0f))
3296 {
3297 return;
3298 }
3299 float num5 = (float)Math.PI * 2f / num;
3300 float num6 = 0f;
3301 Vector2 vector = new Vector2(1.3f, 0.65f);
3302 if (!flag)
3303 {
3304 vector = Vector2.One;
3305 }
3307 for (int j = 0; j < 7; j++)
3308 {
3309 if (!ownedLargeGems[j])
3310 {
3311 num6 += 1f;
3312 continue;
3313 }
3314 Vector2 vector2 = (num4 + num5 * ((float)j - num6)).ToRotationVector2();
3315 float num7 = num2;
3316 if (flag)
3317 {
3318 num7 = MathHelper.Lerp(num2 * 0.7f, 1f, vector2.Y / 2f + 0.5f);
3319 }
3321 DrawData item = new DrawData(value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - 80f)) + vector2 * vector * num3, null, new Color(250, 250, 250, Main.mouseTextColor / 2), 0f, value.Size() / 2f, ((float)(int)Main.mouseTextColor / 1000f + 0.8f) * num7, SpriteEffects.None);
3322 list.Add(item);
3323 }
3324 if (flag)
3325 {
3327 }
3328 drawinfo.DrawDataCache.AddRange(list);
3329 }
3330
3332 {
3333 if ((!drawinfo.drawPlayer.beetleOffense && !drawinfo.drawPlayer.beetleDefense) || drawinfo.shadow != 0f)
3334 {
3335 return;
3336 }
3337 for (int i = 0; i < drawinfo.drawPlayer.beetleOrbs; i++)
3338 {
3339 DrawData item;
3340 for (int j = 0; j < 5; j++)
3341 {
3342 Color colorArmorBody = drawinfo.colorArmorBody;
3343 float num = (float)j * 0.1f;
3344 num = 0.5f - num;
3345 colorArmorBody.R = (byte)((float)(int)colorArmorBody.R * num);
3346 colorArmorBody.G = (byte)((float)(int)colorArmorBody.G * num);
3347 colorArmorBody.B = (byte)((float)(int)colorArmorBody.B * num);
3348 colorArmorBody.A = (byte)((float)(int)colorArmorBody.A * num);
3349 Vector2 vector = -drawinfo.drawPlayer.beetleVel[i] * j;
3350 item = new DrawData(TextureAssets.Beetle.Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)(drawinfo.drawPlayer.height / 2))) + drawinfo.drawPlayer.beetlePos[i] + vector, new Rectangle(0, TextureAssets.Beetle.Height() / 3 * drawinfo.drawPlayer.beetleFrame + 1, TextureAssets.Beetle.Width(), TextureAssets.Beetle.Height() / 3 - 2), colorArmorBody, 0f, new Vector2(TextureAssets.Beetle.Width() / 2, TextureAssets.Beetle.Height() / 6), 1f, drawinfo.playerEffect);
3351 drawinfo.DrawDataCache.Add(item);
3352 }
3353 item = new DrawData(TextureAssets.Beetle.Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)(drawinfo.drawPlayer.height / 2))) + drawinfo.drawPlayer.beetlePos[i], new Rectangle(0, TextureAssets.Beetle.Height() / 3 * drawinfo.drawPlayer.beetleFrame + 1, TextureAssets.Beetle.Width(), TextureAssets.Beetle.Height() / 3 - 2), drawinfo.colorArmorBody, 0f, new Vector2(TextureAssets.Beetle.Width() / 2, TextureAssets.Beetle.Height() / 6), 1f, drawinfo.playerEffect);
3354 drawinfo.DrawDataCache.Add(item);
3355 }
3356 }
3357
3359 {
3360 if (drawinfo.drawPlayer.eyebrellaCloud && drawinfo.shadow == 0f)
3361 {
3363 int frameY = drawinfo.drawPlayer.miscCounter % 18 / 6;
3364 Rectangle value2 = value.Frame(1, 6, 0, frameY);
3365 Vector2 origin = new Vector2(value2.Width / 2, value2.Height / 2);
3366 Vector2 vector = new Vector2(0f, -70f);
3367 Vector2 vector2 = drawinfo.drawPlayer.MountedCenter - new Vector2(0f, (float)drawinfo.drawPlayer.height * 0.5f) + vector - Main.screenPosition;
3368 Color color = Lighting.GetColor((drawinfo.drawPlayer.Top + new Vector2(0f, -30f)).ToTileCoordinates());
3369 int num = 170;
3370 int g;
3371 int b;
3372 int r = (g = (b = num));
3373 if (color.R < num)
3374 {
3375 r = color.R;
3376 }
3377 if (color.G < num)
3378 {
3379 g = color.G;
3380 }
3381 if (color.B < num)
3382 {
3383 b = color.B;
3384 }
3385 Color color2 = new Color(r, g, b, 100);
3386 float num2 = (float)(drawinfo.drawPlayer.miscCounter % 50) / 50f;
3387 float num3 = 3f;
3388 DrawData item;
3389 for (int i = 0; i < 2; i++)
3390 {
3391 Vector2 vector3 = new Vector2((i == 0) ? (0f - num3) : num3, 0f).RotatedBy(num2 * ((float)Math.PI * 2f) * ((i == 0) ? 1f : (-1f)));
3392 item = new DrawData(value, vector2 + vector3, value2, color2 * 0.65f, 0f, origin, 1f, (drawinfo.drawPlayer.gravDir == -1f) ? SpriteEffects.FlipVertically : SpriteEffects.None);
3393 item.shader = drawinfo.cHead;
3394 item.ignorePlayerRotation = true;
3395 drawinfo.DrawDataCache.Add(item);
3396 }
3397 item = new DrawData(value, vector2, value2, color2, 0f, origin, 1f, (drawinfo.drawPlayer.gravDir == -1f) ? SpriteEffects.FlipVertically : SpriteEffects.None);
3398 item.shader = drawinfo.cHead;
3399 item.ignorePlayerRotation = true;
3400 drawinfo.DrawDataCache.Add(item);
3401 }
3402 }
3403
3405 {
3406 return new Vector2(6 * ((!drawinfo.playerEffect.HasFlag(SpriteEffects.FlipHorizontally)) ? 1 : (-1)), 2 * ((!drawinfo.playerEffect.HasFlag(SpriteEffects.FlipVertically)) ? 1 : (-1)));
3407 }
3408
3410 {
3411 return new Vector2(-5 * ((!drawinfo.playerEffect.HasFlag(SpriteEffects.FlipHorizontally)) ? 1 : (-1)), 0f);
3412 }
3413
3415 {
3416 _ = drawinfo.rotation;
3417 _ = 0f;
3418 Vector2 vector = drawinfo.Position - Main.screenPosition + drawinfo.rotationOrigin;
3419 Vector2 vector2 = drawinfo.drawPlayer.position + drawinfo.rotationOrigin;
3420 Matrix matrix = Matrix.CreateRotationZ(drawinfo.rotation);
3421 for (int i = 0; i < drawinfo.DustCache.Count; i++)
3422 {
3423 Vector2 position = Main.dust[drawinfo.DustCache[i]].position - vector2;
3424 position = Vector2.Transform(position, matrix);
3425 Main.dust[drawinfo.DustCache[i]].position = position + vector2;
3426 }
3427 for (int j = 0; j < drawinfo.GoreCache.Count; j++)
3428 {
3429 Vector2 position2 = Main.gore[drawinfo.GoreCache[j]].position - vector2;
3431 Main.gore[drawinfo.GoreCache[j]].position = position2 + vector2;
3432 }
3433 for (int k = 0; k < drawinfo.DrawDataCache.Count; k++)
3434 {
3435 DrawData value = drawinfo.DrawDataCache[k];
3436 if (!value.ignorePlayerRotation)
3437 {
3438 Vector2 position3 = value.position - vector;
3440 value.position = position3 + vector;
3441 value.rotation += drawinfo.rotation;
3442 drawinfo.DrawDataCache[k] = value;
3443 }
3444 }
3445 }
3446
3447 public static void DrawPlayer_ScaleDrawData(ref PlayerDrawSet drawinfo, float scale)
3448 {
3449 if (scale != 1f)
3450 {
3451 Vector2 vector = drawinfo.Position + drawinfo.drawPlayer.Size * new Vector2(0.5f, 1f) - Main.screenPosition;
3452 for (int i = 0; i < drawinfo.DrawDataCache.Count; i++)
3453 {
3454 DrawData value = drawinfo.DrawDataCache[i];
3455 Vector2 vector2 = value.position - vector;
3456 value.position = vector + vector2 * scale;
3457 value.scale *= scale;
3458 drawinfo.DrawDataCache[i] = value;
3459 }
3460 }
3461 }
3462
3464 {
3465 if (!(drawinfo.selectionGlowColor == Color.Transparent))
3466 {
3467 Color selectionGlowColor = drawinfo.selectionGlowColor;
3469 list.AddRange(GetFlatColoredCloneData(ref drawinfo, new Vector2(0f, -2f), selectionGlowColor));
3470 list.AddRange(GetFlatColoredCloneData(ref drawinfo, new Vector2(0f, 2f), selectionGlowColor));
3471 list.AddRange(GetFlatColoredCloneData(ref drawinfo, new Vector2(2f, 0f), selectionGlowColor));
3472 list.AddRange(GetFlatColoredCloneData(ref drawinfo, new Vector2(-2f, 0f), selectionGlowColor));
3473 list.AddRange(drawinfo.DrawDataCache);
3474 drawinfo.DrawDataCache = list;
3475 }
3476 }
3477
3479 {
3480 if (!drawinfo.drawPlayer.isFirstFractalAfterImage)
3481 {
3482 if (drawinfo.drawPlayer.HeldItem.type == 4722)
3483 {
3484 _ = drawinfo.drawPlayer.itemAnimation > 0;
3485 }
3486 else
3487 _ = 0;
3488 return;
3489 }
3490 for (int i = 0; i < drawinfo.DrawDataCache.Count; i++)
3491 {
3492 DrawData value = drawinfo.DrawDataCache[i];
3493 value.color *= drawinfo.drawPlayer.firstFractalAfterImageOpacity;
3494 value.color.A = (byte)((float)(int)value.color.A * 0.8f);
3495 drawinfo.DrawDataCache[i] = value;
3496 }
3497 }
3498
3500 {
3501 List<DrawData> drawDataCache = drawinfo.DrawDataCache;
3502 if (spriteBuffer == null)
3503 {
3504 spriteBuffer = new SpriteDrawBuffer(Main.graphics.GraphicsDevice, 200);
3505 }
3506 else
3507 {
3508 spriteBuffer.CheckGraphicsDevice(Main.graphics.GraphicsDevice);
3509 }
3510 foreach (DrawData item in drawDataCache)
3511 {
3512 if (item.texture != null)
3513 {
3514 item.Draw(spriteBuffer);
3515 }
3516 }
3517 spriteBuffer.UploadAndBind();
3518 DrawData cdd = default(DrawData);
3519 int num = 0;
3520 for (int i = 0; i <= drawDataCache.Count; i++)
3521 {
3522 if (drawinfo.projectileDrawPosition == i)
3523 {
3524 if (cdd.shader != 0)
3525 {
3526 Main.pixelShader.CurrentTechnique.Passes[0].Apply();
3527 }
3528 spriteBuffer.Unbind();
3529 DrawHeldProj(drawinfo, Main.projectile[drawinfo.drawPlayer.heldProj]);
3530 spriteBuffer.Bind();
3531 }
3532 if (i != drawDataCache.Count)
3533 {
3534 cdd = drawDataCache[i];
3535 if (!cdd.sourceRect.HasValue)
3536 {
3537 cdd.sourceRect = cdd.texture.Frame();
3538 }
3540 if (cdd.texture != null)
3541 {
3542 spriteBuffer.DrawSingle(num++);
3543 }
3544 }
3545 }
3546 spriteBuffer.Unbind();
3547 Main.pixelShader.CurrentTechnique.Passes[0].Apply();
3548 }
3549
3551 {
3553 {
3554 proj.gfxOffY = drawinfo.drawPlayer.gfxOffY;
3555 }
3556 try
3557 {
3558 Main.instance.DrawProjDirect(proj);
3559 }
3560 catch
3561 {
3562 proj.active = false;
3563 }
3564 }
3565
3567 {
3568 int num = -1;
3569 List<DrawData> drawDataCache = drawinfo.DrawDataCache;
3570 Effect pixelShader = Main.pixelShader;
3571 Projectile[] projectile = Main.projectile;
3572 SpriteBatch spriteBatch = Main.spriteBatch;
3573 for (int i = 0; i <= drawDataCache.Count; i++)
3574 {
3575 if (drawinfo.projectileDrawPosition == i)
3576 {
3577 if (!ProjectileID.Sets.HeldProjDoesNotUsePlayerGfxOffY[projectile[drawinfo.drawPlayer.heldProj].type])
3578 {
3579 projectile[drawinfo.drawPlayer.heldProj].gfxOffY = drawinfo.drawPlayer.gfxOffY;
3580 }
3581 if (num != 0)
3582 {
3583 pixelShader.CurrentTechnique.Passes[0].Apply();
3584 num = 0;
3585 }
3586 try
3587 {
3588 Main.instance.DrawProj(drawinfo.drawPlayer.heldProj);
3589 }
3590 catch
3591 {
3592 projectile[drawinfo.drawPlayer.heldProj].active = false;
3593 }
3594 }
3595 if (i != drawDataCache.Count)
3596 {
3598 if (!cdd.sourceRect.HasValue)
3599 {
3600 cdd.sourceRect = cdd.texture.Frame();
3601 }
3603 num = cdd.shader;
3604 if (cdd.texture != null)
3605 {
3606 cdd.Draw(spriteBatch);
3607 }
3608 }
3609 }
3610 pixelShader.CurrentTechnique.Passes[0].Apply();
3611 }
3612
3618
3619 private static bool IsArmorDrawnWhenInvisible(int torsoID)
3620 {
3621 if ((uint)(torsoID - 21) <= 1u)
3622 {
3623 return false;
3624 }
3625 return true;
3626 }
3627
3629 {
3631 DrawData[] array = new DrawData[drawinfo.DrawDataCache.Count];
3632 for (int i = 0; i < drawinfo.DrawDataCache.Count; i++)
3633 {
3634 DrawData drawData = drawinfo.DrawDataCache[i];
3635 drawData.position += offset;
3636 drawData.shader = colorOnlyShaderIndex;
3637 drawData.color = color;
3638 array[i] = drawData;
3639 }
3640 return array;
3641 }
3642}
unsafe EffectTechnique CurrentTechnique
Definition Effect.cs:34
static float Lerp(float value1, float value2, float amount)
Definition MathHelper.cs:53
static float Clamp(float value, float min, float max)
Definition MathHelper.cs:46
void AddRange(IEnumerable< KeyValuePair< TKey, TValue > > collection)
void Add(TKey key, TValue value)
static double Cos(double d)
static byte Min(byte val1, byte val2)
Definition Math.cs:912
static double Abs(double value)
static double Sin(double a)
const double PI
Definition Math.cs:16
static void SetShaderForData(Player player, int cHead, ref DrawData cdd)
static void DrawPlayer_JimsDroneRadio(ref PlayerDrawSet drawinfo)
static void DrawStarboardRainbowTrail(ref PlayerDrawSet drawinfo, Vector2 commonWingPosPreFloor, Vector2 dirsVec)
static void DrawPlayer_05_ForbiddenSetRing(ref PlayerDrawSet drawinfo)
static void DrawPlayer_03_PortableStool(ref PlayerDrawSet drawinfo)
static void DrawMeowcartTrail(ref PlayerDrawSet drawinfo)
static void DrawPlayer_12_Skin_Composite(ref PlayerDrawSet drawinfo)
static void DrawPlayer_33_FrozenOrWebbedDebuff(ref PlayerDrawSet drawinfo)
static void DrawPlayer_37_BeetleBuff(ref PlayerDrawSet drawinfo)
static void DrawPlayer_02_MountBehindPlayer(ref PlayerDrawSet drawinfo)
static void DrawPlayer_ScaleDrawData(ref PlayerDrawSet drawinfo, float scale)
static void DrawPlayer_RenderAllLayersSlow(ref PlayerDrawSet drawinfo)
static bool ShouldOverrideLegs_CheckPants(ref PlayerDrawSet drawinfo)
static void DrawPlayer_14_Shoes(ref PlayerDrawSet drawinfo)
static void DrawPlayer_29_OnhandAcc(ref PlayerDrawSet drawinfo)
static void DrawPlayer_17_Torso(ref PlayerDrawSet drawinfo)
static void DrawPlayer_30_BladedGlove(ref PlayerDrawSet drawinfo)
static void DrawPlayer_08_Backpacks(ref PlayerDrawSet drawinfo)
static void DrawHeldProj(PlayerDrawSet drawinfo, Projectile proj)
static int GetHatStacks(ref PlayerDrawSet drawinfo, int hatItemId)
static void DrawPlayer_18_OffhandAcc(ref PlayerDrawSet drawinfo)
static void DrawCompositeArmorPiece(ref PlayerDrawSet drawinfo, CompositePlayerDrawContext context, DrawData data)
static void DrawPlayer_03_Carpet(ref PlayerDrawSet drawinfo)
static DrawData[] GetFlatColoredCloneData(ref PlayerDrawSet drawinfo, Vector2 offset, Color color)
static bool ShouldOverrideLegs_CheckShoes(ref PlayerDrawSet drawinfo)
static void DrawPlayer_28_ArmOverItem(ref PlayerDrawSet drawinfo)
static void DrawPlayer_extra_MountMinus(ref PlayerDrawSet drawinfo)
static void DrawPlayer_AddSelectionGlow(ref PlayerDrawSet drawinfo)
static void DrawPlayer_extra_MountPlus(ref PlayerDrawSet drawinfo)
static void DrawPlayer_32_FrontAcc_FrontPart(ref PlayerDrawSet drawinfo)
static void DrawPlayer_28_ArmOverItemComposite(ref PlayerDrawSet drawinfo)
static void DrawPlayer_21_1_Magiluminescence(ref PlayerDrawSet drawinfo)
static void DrawPlayer_MakeIntoFirstFractalAfterImage(ref PlayerDrawSet drawinfo)
static Vector2 GetCompositeOffset_BackArm(ref PlayerDrawSet drawinfo)
static void DrawPlayer_09_Wings(ref PlayerDrawSet drawinfo)
static void DrawPlayer_32_FrontAcc(ref PlayerDrawSet drawinfo)
static void DrawPlayer_35_IceBarrier(ref PlayerDrawSet drawinfo)
static void DrawPlayer_05_2_SafemanSun(ref PlayerDrawSet drawinfo)
static void DrawPlayer_31_ProjectileOverArm(ref PlayerDrawSet drawinfo)
static void DrawPlayer_01_2_JimsCloak(ref PlayerDrawSet drawinfo)
static void DrawPlayer_23_MountFront(ref PlayerDrawSet drawinfo)
static void DrawPlayer_25_Shield(ref PlayerDrawSet drawinfo)
static bool IsArmorDrawnWhenInvisible(int torsoID)
static void DrawPlayer_27_HeldItem(ref PlayerDrawSet drawinfo)
static void DrawPlayer_16_ArmorLongCoat(ref PlayerDrawSet drawinfo)
static void DrawPlayer_01_BackHair(ref PlayerDrawSet drawinfo)
static void DrawPlayer_19_WaistAcc(ref PlayerDrawSet drawinfo)
static void DrawPlayer_13_Leggings(ref PlayerDrawSet drawinfo)
static void DrawPlayer_34_ElectrifiedDebuffFront(ref PlayerDrawSet drawinfo)
static void DrawPlayer_24_Pulley(ref PlayerDrawSet drawinfo)
static void DrawPlayer_15_SkinLongCoat(ref PlayerDrawSet drawinfo)
static void DrawPlayer_11_Balloons(ref PlayerDrawSet drawinfo)
static void DrawPlayer_20_NeckAcc(ref PlayerDrawSet drawinfo)
static bool IsBottomOverridden(ref PlayerDrawSet drawinfo)
static void DrawPlayer_DrawSelectionRect(ref PlayerDrawSet drawinfo)
static void DrawPlayer_extra_TorsoPlus(ref PlayerDrawSet drawinfo)
static Vector2 GetCompositeOffset_FrontArm(ref PlayerDrawSet drawinfo)
static void DrawSittingLegs(ref PlayerDrawSet drawinfo, Texture2D textureToDraw, Color matchingColor, int shaderIndex=0, bool glowmask=false)
static void DrawPlayer_RenderAllLayers(ref PlayerDrawSet drawinfo)
static void DrawTiedBalloons(ref PlayerDrawSet drawinfo)
static void DrawPlayer_12_Skin(ref PlayerDrawSet drawinfo)
static void DrawPlayer_01_3_BackHead(ref PlayerDrawSet drawinfo)
static void DrawPlayer_36_CTG(ref PlayerDrawSet drawinfo)
static void DrawSittingLongCoats(ref PlayerDrawSet drawinfo, int specialLegCoat, Texture2D textureToDraw, Color matchingColor, int shaderIndex=0, bool glowmask=false)
static void DrawPlayer_TransformDrawData(ref PlayerDrawSet drawinfo)
static Vector2 DrawPlayer_21_Head_GetSpecialHatDrawPosition(ref PlayerDrawSet drawinfo, ref Vector2 helmetOffset, Vector2 hatOffset)
static void DrawPlayer_08_1_Tails(ref PlayerDrawSet drawinfo)
static void DrawPlayer_21_Head_TheFace(ref PlayerDrawSet drawinfo)
static void DrawPlayer_22_FaceAcc(ref PlayerDrawSet drawinfo)
static void DrawPlayer_12_1_BalloonFronts(ref PlayerDrawSet drawinfo)
static void DrawPlayer_07_LeinforsHairShampoo(ref PlayerDrawSet drawinfo)
static void DrawPlayer_10_BackAcc(ref PlayerDrawSet drawinfo)
static void DrawPlayer_06_WebbedDebuffBack(ref PlayerDrawSet drawinfo)
static void DrawPlayer_38_EyebrellaCloud(ref PlayerDrawSet drawinfo)
static void DrawPlayer_14_2_GlassSlipperSparkles(ref PlayerDrawSet drawinfo)
static bool DrawPlayer_08_PlayerVisuallyHasFullArmorSet(PlayerDrawSet drawinfo, int head, int body, int legs)
static void DrawPlayer_17_TorsoComposite(ref PlayerDrawSet drawinfo)
static void DrawPlayer_extra_TorsoMinus(ref PlayerDrawSet drawinfo)
static void DrawPlayer_04_ElectrifiedDebuffBack(ref PlayerDrawSet drawinfo)
static void DrawPlayer_12_SkinComposite_BackArmShirt(ref PlayerDrawSet drawinfo)
static void DrawPlayer_26_SolarShield(ref PlayerDrawSet drawinfo)
static void DrawPlayer_21_Head(ref PlayerDrawSet drawinfo)
static void DrawPlayer_32_FrontAcc_BackPart(ref PlayerDrawSet drawinfo)
static int CompareDrawSorterByYScale(DrawData a, DrawData b)
static int NewDust(Vector2 Position, int Width, int Height, int Type, float SpeedX=0f, float SpeedY=0f, int Alpha=0, Color newColor=default(Color), float Scale=1f)
Definition Dust.cs:73
static Color GetShimmerGlitterColor(bool top, float worldPositionX, float worldPositionY)
static PlayerRainbowWingsTextureContent PlayerRainbowWings
static Asset< Texture2D >[] AccWaist
static Asset< Texture2D >[] PlayerHair
static Asset< Texture2D >[] AccHandsOffComposite
static Asset< Texture2D >[] ArmorHead
static Asset< Texture2D >[] AccHandsOnComposite
static Asset< Texture2D >[] AccShoes
static Asset< Texture2D >[] FemaleBody
static Asset< Texture2D >[] AccShield
static Asset< Texture2D >[] ArmorBodyComposite
static Asset< Texture2D >[] Projectile
static Asset< Texture2D >[] AccBalloon
static Asset< Texture2D >[] GlowMask
static Asset< Texture2D > Beetle
static Asset< Texture2D > Pulley
static Asset< Texture2D >[] Wings
static Asset< Texture2D >[] BackPack
static Asset< Texture2D > JackHat
static Asset< Texture2D > IceBarrier
static Asset< Texture2D >[] AccFront
static Asset< Texture2D >[] Item
static Asset< Texture2D >[] ArmorLeg
static Asset< Texture2D >[] Extra
static Asset< Texture2D >[] PlayerHairAlt
static Asset< Texture2D >[] Flames
static Asset< Texture2D >[,] Players
static Asset< Texture2D >[] ArmorArm
static Asset< Texture2D >[] ItemFlame
static Asset< Texture2D >[] AccHandsOff
static Asset< Texture2D >[] AccBeard
static Asset< Texture2D >[] AccHandsOn
static Asset< Texture2D > FlyingCarpet
static Asset< Texture2D >[] AccFace
static Asset< Texture2D >[] AccBack
static Asset< Texture2D >[] Gem
static Asset< Texture2D >[] ArmorBody
static Asset< Texture2D > Frozen
static Asset< Texture2D >[] AccNeck
static ArmorShaderDataSet Armor
Definition GameShaders.cs:7
static readonly int Count
Definition ArmorIDs.cs:1668
static readonly int Count
Definition ArmorIDs.cs:2088
static readonly int Count
Definition ArmorIDs.cs:1032
static bool[] DrawInFaceUnderHairLayer
Definition ArmorIDs.cs:1985
static readonly sbyte Count
Definition ArmorIDs.cs:2036
static readonly int Count
Definition ArmorIDs.cs:1704
static readonly int Count
Definition ArmorIDs.cs:1582
static readonly int Count
Definition ArmorIDs.cs:1536
static bool[] PreventBeardDraw
Definition ArmorIDs.cs:18
static readonly int Count
Definition ArmorIDs.cs:587
static readonly int Count
Definition ArmorIDs.cs:1470
static readonly int Count
Definition ArmorIDs.cs:1972
static readonly int Count
Definition ArmorIDs.cs:1943
static readonly int Count
Definition ArmorIDs.cs:1770
static readonly int Count
Definition ArmorIDs.cs:1818
static bool[] HeldProjDoesNotUsePlayerGfxOffY
Color GetColor(Color newColor)
Definition Item.cs:47907
static bool[] staff
Definition Item.cs:75
int useStyle
Definition Item.cs:139
static bool[] claw
Definition Item.cs:77
bool noUseGraphic
Definition Item.cs:253
bool noWet
Definition Item.cs:269
Color GetAlpha(Color newColor)
Definition Item.cs:47743
short glowMask
Definition Item.cs:187
bool ranged
Definition Item.cs:301
int holdStyle
Definition Item.cs:137
bool flame
Definition Item.cs:79
int alpha
Definition Item.cs:185
Color color
Definition Item.cs:183
static Color GetColor(Point tileCoords)
Definition Lighting.cs:182
static Color GetColorClamped(int x, int y, Color oldColor)
Definition Lighting.cs:209
static bool autoPause
Definition Main.cs:1324
static SpriteBatch spriteBatch
Definition Main.cs:974
static Effect pixelShader
Definition Main.cs:2764
static int DiscoR
Definition Main.cs:1062
static Vector2[] OffsetsPlayerHeadgear
Definition Main.cs:520
static Gore[] gore
Definition Main.cs:1687
static Vector2[] OffsetsPlayerOffhand
Definition Main.cs:472
static Main instance
Definition Main.cs:283
static Vector2 screenPosition
Definition Main.cs:1715
static byte mouseTextColor
Definition Main.cs:1751
static Vector2 DrawPlayerItemPos(float gravdir, int itemtype)
Definition Main.cs:3063
static int DiscoG
Definition Main.cs:1066
static Projectile[] projectile
Definition Main.cs:1691
static int DiscoB
Definition Main.cs:1064
static UnifiedRandom rand
Definition Main.cs:1387
static byte gFade
Definition Main.cs:714
static Vector3 rgbToHsl(Microsoft.Xna.Framework.Color newColor)
Definition Main.cs:44972
static bool gameMenu
Definition Main.cs:1926
static float GlobalTimeWrappedHourly
Definition Main.cs:405
static GraphicsDeviceManager graphics
Definition Main.cs:972
static Dust[] dust
Definition Main.cs:1677
static bool AnyDanger(bool quickBossNPCCheck=false, bool ignorePillarsAndMoonlordCountdown=false)
Definition NPC.cs:77014
static void GetItemLight(ref Color currentColor, Item item, bool outInTheWorld=false)
Definition ItemSlot.cs:2899
static float Remap(float fromValue, float fromMin, float fromMax, float toMin, float toMax, bool clamped=true)
Definition Utils.cs:233
static int RandomInt(ref ulong seed, int max)
Definition Utils.cs:1648
static float GetLerpValue(float from, float to, float t, bool clamped=false)
Definition Utils.cs:203
static void DrawRect(SpriteBatch spriteBatch, Rectangle rect, Color color)
Definition Utils.cs:2090
static Rectangle CenteredRectangle(Vector2 center, Vector2 size)
Definition Utils.cs:604
static Color Transparent
Definition Color.cs:76
static Color Lerp(Color value1, Color value2, float amount)
Definition Color.cs:491
static Matrix CreateRotationZ(float radians)
Definition Matrix.cs:746
static Vector2 Transform(Vector2 position, Matrix matrix)
Definition Vector2.cs:317
static float Distance(Vector2 value1, Vector2 value2)
Definition Vector2.cs:91
static Vector2 Lerp(Vector2 value1, Vector2 value2, float amount)
Definition Vector2.cs:227
static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount)
Definition Vector4.cs:277
static void GetDrawBoundary(List< DrawData > playerDrawData, out Vector2 lowest, out Vector2 highest)