Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Mount.cs
Go to the documentation of this file.
1using System;
12using Terraria.ID;
13
14namespace Terraria;
15
16public class Mount
17{
18 private class DrillBeam
19 {
21
22 public int cooldown;
23
24 public int lastPurpose;
25
26 public DrillBeam()
27 {
29 cooldown = 0;
30 lastPurpose = 0;
31 }
32 }
33
34 private class DrillMountData
35 {
36 public float diodeRotationTarget;
37
38 public float diodeRotation;
39
40 public float outerRingRotation;
41
42 public DrillBeam[] beams;
43
44 public int beamCooldown;
45
47
49 {
50 beams = new DrillBeam[8];
51 for (int i = 0; i < beams.Length; i++)
52 {
53 beams[i] = new DrillBeam();
54 }
55 }
56 }
57
58 private class BooleanMountData
59 {
60 public bool boolean;
61
63 {
64 boolean = false;
65 }
66 }
67
68 private class ExtraFrameMountData
69 {
70 public int frame;
71
72 public float frameCounter;
73
75 {
76 frame = 0;
77 frameCounter = 0f;
78 }
79 }
80
105
106 private class MountData
107 {
109
111
113
115
117
119
121
123
124 public int textureWidth;
125
126 public int textureHeight;
127
128 public int xOffset;
129
130 public int yOffset;
131
132 public int[] playerYOffsets;
133
134 public int bodyFrame;
135
137
138 public int heightBoost;
139
140 public int buff;
141
142 public int extraBuff;
143
144 public int flightTimeMax;
145
146 public bool usesHover;
147
148 public float runSpeed;
149
150 public float dashSpeed;
151
152 public float swimSpeed;
153
154 public float acceleration;
155
156 public float jumpSpeed;
157
158 public int jumpHeight;
159
160 public float fallDamage;
161
162 public int fatigueMax;
163
164 public bool constantJump;
165
166 public bool blockExtraJumps;
167
169
170 public int abilityDuration;
171
172 public int abilityCooldown;
173
174 public int spawnDust;
175
177
178 public int totalFrames;
179
181
183
185
187
189
191
193
195
197
198 public int inAirFrameStart;
199
200 public int inAirFrameCount;
201
202 public int inAirFrameDelay;
203
204 public int idleFrameStart;
205
206 public int idleFrameCount;
207
208 public int idleFrameDelay;
209
210 public bool idleFrameLoop;
211
212 public int swimFrameStart;
213
214 public int swimFrameCount;
215
216 public int swimFrameDelay;
217
219
221
223
224 public bool Minecart;
225
227
229
230 public bool emitsLight;
231
233
234 public int playerXOffset;
235 }
236
237 public static int currentShader = 0;
238
239 public const int FrameStanding = 0;
240
241 public const int FrameRunning = 1;
242
243 public const int FrameInAir = 2;
244
245 public const int FrameFlying = 3;
246
247 public const int FrameSwimming = 4;
248
249 public const int FrameDashing = 5;
250
251 public const int DrawBack = 0;
252
253 public const int DrawBackExtra = 1;
254
255 public const int DrawFront = 2;
256
257 public const int DrawFrontExtra = 3;
258
259 private static MountData[] mounts;
260
261 private static Vector2[] scutlixEyePositions;
262
264
265 public const int scutlixBaseDamage = 50;
266
267 public static Vector2 drillDiodePoint1 = new Vector2(36f, -6f);
268
269 public static Vector2 drillDiodePoint2 = new Vector2(36f, 8f);
270
272
273 public const int drillTextureWidth = 80;
274
275 public const float drillRotationChange = (float)Math.PI / 60f;
276
277 public static int drillPickPower = 210;
278
279 public static int drillPickTime = 1;
280
281 public static int amountOfBeamsAtOnce = 2;
282
283 public const float maxDrillLength = 48f;
284
286
288
289 private int _type;
290
291 private bool _flipDraw;
292
293 private int _frame;
294
295 private float _frameCounter;
296
297 private int _frameExtra;
298
299 private float _frameExtraCounter;
300
301 private int _frameState;
302
303 private int _flyTime;
304
305 private int _idleTime;
306
307 private int _idleTimeNext;
308
309 private float _fatigue;
310
311 private float _fatigueMax;
312
313 private bool _abilityCharging;
314
315 private int _abilityCharge;
316
317 private int _abilityCooldown;
318
319 private int _abilityDuration;
320
321 private bool _abilityActive;
322
323 private bool _aiming;
324
325 private bool _shouldSuperCart;
326
328
329 private object _mountSpecificData;
330
331 private bool _active;
332
333 public static float SuperCartRunSpeed = 20f;
334
335 public static float SuperCartDashSpeed = 20f;
336
337 public static float SuperCartAcceleration = 0.1f;
338
339 public static int SuperCartJumpHeight = 15;
340
341 public static float SuperCartJumpSpeed = 5.15f;
342
344
345 public bool Active => _active;
346
347 public int Type => _type;
348
349 public int FlyTime => _flyTime;
350
351 public int BuffType => _data.buff;
352
353 public int BodyFrame => _data.bodyFrame;
354
355 public int XOffset => _data.xOffset;
356
357 public int YOffset => _data.yOffset;
358
360
361 public int PlayerOffset
362 {
363 get
364 {
365 if (!_active)
366 {
367 return 0;
368 }
369 if (_frame >= _data.totalFrames)
370 {
371 return 0;
372 }
374 }
375 }
376
378 {
379 get
380 {
381 if (!_active)
382 {
383 return 0;
384 }
386 }
387 }
388
390 {
391 get
392 {
393 if (!_active)
394 {
395 return 0;
396 }
397 return _data.playerHeadOffset;
398 }
399 }
400
402
403 public float RunSpeed
404 {
405 get
406 {
407 if (_type == 4 && _frameState == 4)
408 {
409 return _data.swimSpeed;
410 }
411 if ((_type == 12 || _type == 44 || _type == 49) && _frameState == 4)
412 {
413 return _data.swimSpeed;
414 }
415 if (_type == 12 && _frameState == 2)
416 {
417 return _data.runSpeed + 13.5f;
418 }
419 if (_type == 44 && _frameState == 2)
420 {
421 return _data.runSpeed + 4f;
422 }
423 if (_type == 5 && _frameState == 2)
424 {
425 float num = _fatigue / _fatigueMax;
426 return _data.runSpeed + 4f * (1f - num);
427 }
428 if (_type == 50 && _frameState == 2)
429 {
430 return _data.runSpeed + 2f;
431 }
433 {
434 return SuperCartRunSpeed;
435 }
436 return _data.runSpeed;
437 }
438 }
439
440 public float DashSpeed
441 {
442 get
443 {
445 {
446 return SuperCartDashSpeed;
447 }
448 return _data.dashSpeed;
449 }
450 }
451
452 public float Acceleration
453 {
454 get
455 {
457 {
459 }
460 return _data.acceleration;
461 }
462 }
463
464 public float FallDamage => _data.fallDamage;
465
467
469
471 {
472 get
473 {
474 if (_type != 3)
475 {
476 return _type == 50;
477 }
478 return true;
479 }
480 }
481
482 public bool Cart
483 {
484 get
485 {
486 if (_data == null || !_active)
487 {
488 return false;
489 }
490 return _data.Minecart;
491 }
492 }
493
494 public bool Directional
495 {
496 get
497 {
498 if (_data == null)
499 {
500 return true;
501 }
503 }
504 }
505
507 {
508 get
509 {
510 if (_data == null)
511 {
513 }
514 return _data.delegations;
515 }
516 }
517
518 public Vector2 Origin => new Vector2((float)_data.textureWidth / 2f, (float)_data.textureHeight / (2f * (float)_data.totalFrames));
519
521
523
524 public float AbilityCharge => (float)_abilityCharge / (float)_data.abilityChargeMax;
525
527 {
528 get
529 {
530 int type = _type;
531 if (type == 9)
532 {
533 return _abilityCooldown < _data.abilityCooldown / 2;
534 }
535 return true;
536 }
537 }
538
539 private static void MeowcartLandingSound(Player Player, Vector2 Position, int Width, int Height)
540 {
541 SoundEngine.PlaySound(37, (int)Position.X + Width / 2, (int)Position.Y + Height / 2, 5);
542 }
543
544 private static void MeowcartBumperSound(Player Player, Vector2 Position, int Width, int Height)
545 {
546 SoundEngine.PlaySound(37, (int)Position.X + Width / 2, (int)Position.Y + Height / 2, 3);
547 }
548
549 public Mount()
550 {
552 Reset();
553 }
554
555 public void Reset()
556 {
557 _active = false;
558 _type = -1;
559 _flipDraw = false;
560 _frame = 0;
561 _frameCounter = 0f;
562 _frameExtra = 0;
564 _frameState = 0;
565 _flyTime = 0;
566 _idleTime = 0;
567 _idleTimeNext = -1;
568 _fatigueMax = 0f;
569 _abilityCharging = false;
570 _abilityCharge = 0;
571 _aiming = false;
572 _shouldSuperCart = false;
573 }
574
575 public static void Initialize()
576 {
579 mounts[0] = mountData;
580 mountData.spawnDust = 57;
581 mountData.spawnDustNoGravity = false;
582 mountData.buff = 90;
583 mountData.heightBoost = 20;
584 mountData.flightTimeMax = 160;
585 mountData.runSpeed = 5.5f;
586 mountData.dashSpeed = 12f;
587 mountData.acceleration = 0.09f;
588 mountData.jumpHeight = 17;
589 mountData.jumpSpeed = 5.31f;
590 mountData.totalFrames = 12;
591 int[] array = new int[mountData.totalFrames];
592 for (int i = 0; i < array.Length; i++)
593 {
594 array[i] = 30;
595 }
596 array[1] += 2;
597 array[11] += 2;
598 mountData.playerYOffsets = array;
599 mountData.xOffset = 13;
600 mountData.bodyFrame = 3;
601 mountData.yOffset = -7;
602 mountData.playerHeadOffset = 22;
603 mountData.standingFrameCount = 1;
604 mountData.standingFrameDelay = 12;
605 mountData.standingFrameStart = 0;
606 mountData.runningFrameCount = 6;
607 mountData.runningFrameDelay = 12;
608 mountData.runningFrameStart = 6;
609 mountData.flyingFrameCount = 6;
610 mountData.flyingFrameDelay = 6;
611 mountData.flyingFrameStart = 6;
612 mountData.inAirFrameCount = 1;
613 mountData.inAirFrameDelay = 12;
614 mountData.inAirFrameStart = 1;
615 mountData.idleFrameCount = 4;
616 mountData.idleFrameDelay = 30;
617 mountData.idleFrameStart = 2;
618 mountData.idleFrameLoop = true;
619 mountData.swimFrameCount = mountData.inAirFrameCount;
620 mountData.swimFrameDelay = mountData.inAirFrameDelay;
621 mountData.swimFrameStart = mountData.inAirFrameStart;
622 if (Main.netMode != 2)
623 {
624 mountData.backTexture = TextureAssets.RudolphMount[0];
625 mountData.backTextureExtra = Asset<Texture2D>.Empty;
626 mountData.frontTexture = TextureAssets.RudolphMount[1];
627 mountData.frontTextureExtra = TextureAssets.RudolphMount[2];
628 mountData.textureWidth = mountData.backTexture.Width();
629 mountData.textureHeight = mountData.backTexture.Height();
630 }
631 mountData = new MountData();
632 mounts[2] = mountData;
633 mountData.spawnDust = 58;
634 mountData.buff = 129;
635 mountData.heightBoost = 20;
636 mountData.flightTimeMax = 160;
637 mountData.runSpeed = 5f;
638 mountData.dashSpeed = 9f;
639 mountData.acceleration = 0.08f;
640 mountData.jumpHeight = 10;
641 mountData.jumpSpeed = 6.01f;
642 mountData.totalFrames = 16;
643 array = new int[mountData.totalFrames];
644 for (int j = 0; j < array.Length; j++)
645 {
646 array[j] = 22;
647 }
648 array[12] += 2;
649 array[13] += 4;
650 array[14] += 2;
651 mountData.playerYOffsets = array;
652 mountData.xOffset = 1;
653 mountData.bodyFrame = 3;
654 mountData.yOffset = 8;
655 mountData.playerHeadOffset = 22;
656 mountData.standingFrameCount = 1;
657 mountData.standingFrameDelay = 12;
658 mountData.standingFrameStart = 7;
659 mountData.runningFrameCount = 5;
660 mountData.runningFrameDelay = 12;
661 mountData.runningFrameStart = 11;
662 mountData.flyingFrameCount = 6;
663 mountData.flyingFrameDelay = 6;
664 mountData.flyingFrameStart = 1;
665 mountData.inAirFrameCount = 1;
666 mountData.inAirFrameDelay = 12;
667 mountData.inAirFrameStart = 0;
668 mountData.idleFrameCount = 3;
669 mountData.idleFrameDelay = 30;
670 mountData.idleFrameStart = 8;
671 mountData.idleFrameLoop = false;
672 mountData.swimFrameCount = mountData.inAirFrameCount;
673 mountData.swimFrameDelay = mountData.inAirFrameDelay;
674 mountData.swimFrameStart = mountData.inAirFrameStart;
675 if (Main.netMode != 2)
676 {
677 mountData.backTexture = TextureAssets.PigronMount;
678 mountData.backTextureExtra = Asset<Texture2D>.Empty;
679 mountData.frontTexture = Asset<Texture2D>.Empty;
680 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
681 mountData.textureWidth = mountData.backTexture.Width();
682 mountData.textureHeight = mountData.backTexture.Height();
683 }
684 mountData = new MountData();
685 mounts[1] = mountData;
686 mountData.spawnDust = 15;
687 mountData.buff = 128;
688 mountData.heightBoost = 20;
689 mountData.flightTimeMax = 0;
690 mountData.fallDamage = 0.8f;
691 mountData.runSpeed = 4f;
692 mountData.dashSpeed = 7.8f;
693 mountData.acceleration = 0.13f;
694 mountData.jumpHeight = 15;
695 mountData.jumpSpeed = 5.01f;
696 mountData.totalFrames = 7;
697 array = new int[mountData.totalFrames];
698 for (int k = 0; k < array.Length; k++)
699 {
700 array[k] = 14;
701 }
702 array[2] += 2;
703 array[3] += 4;
704 array[4] += 8;
705 array[5] += 8;
706 mountData.playerYOffsets = array;
707 mountData.xOffset = 1;
708 mountData.bodyFrame = 3;
709 mountData.yOffset = 4;
710 mountData.playerHeadOffset = 22;
711 mountData.standingFrameCount = 1;
712 mountData.standingFrameDelay = 12;
713 mountData.standingFrameStart = 0;
714 mountData.runningFrameCount = 7;
715 mountData.runningFrameDelay = 12;
716 mountData.runningFrameStart = 0;
717 mountData.flyingFrameCount = 6;
718 mountData.flyingFrameDelay = 6;
719 mountData.flyingFrameStart = 1;
720 mountData.inAirFrameCount = 1;
721 mountData.inAirFrameDelay = 12;
722 mountData.inAirFrameStart = 5;
723 mountData.idleFrameCount = 0;
724 mountData.idleFrameDelay = 0;
725 mountData.idleFrameStart = 0;
726 mountData.idleFrameLoop = false;
727 mountData.swimFrameCount = mountData.inAirFrameCount;
728 mountData.swimFrameDelay = mountData.inAirFrameDelay;
729 mountData.swimFrameStart = mountData.inAirFrameStart;
730 if (Main.netMode != 2)
731 {
732 mountData.backTexture = TextureAssets.BunnyMount;
733 mountData.backTextureExtra = Asset<Texture2D>.Empty;
734 mountData.frontTexture = Asset<Texture2D>.Empty;
735 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
736 mountData.textureWidth = mountData.backTexture.Width();
737 mountData.textureHeight = mountData.backTexture.Height();
738 }
739 mountData = new MountData();
740 mounts[3] = mountData;
741 mountData.spawnDust = 56;
742 mountData.buff = 130;
743 mountData.heightBoost = 20;
744 mountData.flightTimeMax = 0;
745 mountData.fallDamage = 0.5f;
746 mountData.runSpeed = 4f;
747 mountData.dashSpeed = 4f;
748 mountData.acceleration = 0.18f;
749 mountData.jumpHeight = 12;
750 mountData.jumpSpeed = 8.25f;
751 mountData.constantJump = true;
752 mountData.totalFrames = 4;
753 array = new int[mountData.totalFrames];
754 for (int l = 0; l < array.Length; l++)
755 {
756 array[l] = 20;
757 }
758 array[1] += 2;
759 array[3] -= 2;
760 mountData.playerYOffsets = array;
761 mountData.xOffset = 1;
762 mountData.bodyFrame = 3;
763 mountData.yOffset = 11;
764 mountData.playerHeadOffset = 22;
765 mountData.standingFrameCount = 1;
766 mountData.standingFrameDelay = 12;
767 mountData.standingFrameStart = 0;
768 mountData.runningFrameCount = 4;
769 mountData.runningFrameDelay = 12;
770 mountData.runningFrameStart = 0;
771 mountData.flyingFrameCount = 0;
772 mountData.flyingFrameDelay = 0;
773 mountData.flyingFrameStart = 0;
774 mountData.inAirFrameCount = 1;
775 mountData.inAirFrameDelay = 12;
776 mountData.inAirFrameStart = 1;
777 mountData.idleFrameCount = 0;
778 mountData.idleFrameDelay = 0;
779 mountData.idleFrameStart = 0;
780 mountData.idleFrameLoop = false;
781 if (Main.netMode != 2)
782 {
783 mountData.backTexture = TextureAssets.SlimeMount;
784 mountData.backTextureExtra = Asset<Texture2D>.Empty;
785 mountData.frontTexture = Asset<Texture2D>.Empty;
786 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
787 mountData.textureWidth = mountData.backTexture.Width();
788 mountData.textureHeight = mountData.backTexture.Height();
789 }
790 mountData = new MountData();
791 mounts[6] = mountData;
792 mountData.Minecart = true;
793 mountData.MinecartDirectional = true;
794 mountData.delegations = new MountDelegatesData();
795 mountData.delegations.MinecartDust = DelegateMethods.Minecart.Sparks;
796 mountData.spawnDust = 213;
797 mountData.buff = 118;
798 mountData.extraBuff = 138;
799 mountData.heightBoost = 10;
800 mountData.flightTimeMax = 0;
801 mountData.fallDamage = 1f;
802 mountData.runSpeed = 13f;
803 mountData.dashSpeed = 13f;
804 mountData.acceleration = 0.04f;
805 mountData.jumpHeight = 15;
806 mountData.jumpSpeed = 5.15f;
807 mountData.blockExtraJumps = true;
808 mountData.totalFrames = 3;
809 array = new int[mountData.totalFrames];
810 for (int m = 0; m < array.Length; m++)
811 {
812 array[m] = 8;
813 }
814 mountData.playerYOffsets = array;
815 mountData.xOffset = 1;
816 mountData.bodyFrame = 3;
817 mountData.yOffset = 13;
818 mountData.playerHeadOffset = 14;
819 mountData.standingFrameCount = 1;
820 mountData.standingFrameDelay = 12;
821 mountData.standingFrameStart = 0;
822 mountData.runningFrameCount = 3;
823 mountData.runningFrameDelay = 12;
824 mountData.runningFrameStart = 0;
825 mountData.flyingFrameCount = 0;
826 mountData.flyingFrameDelay = 0;
827 mountData.flyingFrameStart = 0;
828 mountData.inAirFrameCount = 0;
829 mountData.inAirFrameDelay = 0;
830 mountData.inAirFrameStart = 0;
831 mountData.idleFrameCount = 0;
832 mountData.idleFrameDelay = 0;
833 mountData.idleFrameStart = 0;
834 mountData.idleFrameLoop = false;
835 if (Main.netMode != 2)
836 {
837 mountData.backTexture = Asset<Texture2D>.Empty;
838 mountData.backTextureExtra = Asset<Texture2D>.Empty;
839 mountData.frontTexture = TextureAssets.MinecartMount;
840 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
841 mountData.textureWidth = mountData.frontTexture.Width();
842 mountData.textureHeight = mountData.frontTexture.Height();
843 }
844 mountData = new MountData();
845 mounts[15] = mountData;
847 mountData = new MountData();
848 mounts[18] = mountData;
850 mountData = new MountData();
851 mounts[19] = mountData;
853 mountData = new MountData();
854 mounts[20] = mountData;
856 mountData = new MountData();
857 mounts[21] = mountData;
859 mountData = new MountData();
860 mounts[22] = mountData;
862 mountData = new MountData();
863 mounts[24] = mountData;
865 mountData.frontTextureGlow = TextureAssets.Extra[116];
866 mountData = new MountData();
867 mounts[25] = mountData;
869 mountData = new MountData();
870 mounts[26] = mountData;
872 mountData = new MountData();
873 mounts[27] = mountData;
875 mountData = new MountData();
876 mounts[28] = mountData;
878 mountData = new MountData();
879 mounts[29] = mountData;
881 mountData = new MountData();
882 mounts[30] = mountData;
884 mountData = new MountData();
885 mounts[31] = mountData;
887 mountData = new MountData();
888 mounts[32] = mountData;
890 mountData = new MountData();
891 mounts[33] = mountData;
893 mountData.delegations.MinecartDust = DelegateMethods.Minecart.SparksMeow;
894 mountData.delegations.MinecartLandingSound = MeowcartLandingSound;
895 mountData.delegations.MinecartBumperSound = MeowcartBumperSound;
896 mountData = new MountData();
897 mounts[34] = mountData;
899 mountData = new MountData();
900 mounts[35] = mountData;
902 mountData = new MountData();
903 mounts[36] = mountData;
905 mountData = new MountData();
906 mounts[38] = mountData;
908 if (Main.netMode != 2)
909 {
910 mountData.backTexture = mountData.frontTexture;
911 }
912 mountData = new MountData();
913 mounts[39] = mountData;
915 mountData.yOffset -= 2;
916 if (Main.netMode != 2)
917 {
918 mountData.frontTextureExtra = TextureAssets.Extra[165];
919 }
920 mountData.runSpeed = 6f;
921 mountData.dashSpeed = 6f;
922 mountData.acceleration = 0.02f;
923 mountData = new MountData();
924 mounts[16] = mountData;
925 mountData.Minecart = true;
926 mountData.delegations = new MountDelegatesData();
927 mountData.delegations.MinecartDust = DelegateMethods.Minecart.Sparks;
928 mountData.spawnDust = 213;
929 mountData.buff = 211;
930 mountData.extraBuff = 210;
931 mountData.heightBoost = 10;
932 mountData.flightTimeMax = 0;
933 mountData.fallDamage = 1f;
934 mountData.runSpeed = 13f;
935 mountData.dashSpeed = 13f;
936 mountData.acceleration = 0.04f;
937 mountData.jumpHeight = 15;
938 mountData.jumpSpeed = 5.15f;
939 mountData.blockExtraJumps = true;
940 mountData.totalFrames = 3;
941 array = new int[mountData.totalFrames];
942 for (int n = 0; n < array.Length; n++)
943 {
944 array[n] = 8;
945 }
946 mountData.playerYOffsets = array;
947 mountData.xOffset = 1;
948 mountData.bodyFrame = 3;
949 mountData.yOffset = 13;
950 mountData.playerHeadOffset = 14;
951 mountData.standingFrameCount = 1;
952 mountData.standingFrameDelay = 12;
953 mountData.standingFrameStart = 0;
954 mountData.runningFrameCount = 3;
955 mountData.runningFrameDelay = 12;
956 mountData.runningFrameStart = 0;
957 mountData.flyingFrameCount = 0;
958 mountData.flyingFrameDelay = 0;
959 mountData.flyingFrameStart = 0;
960 mountData.inAirFrameCount = 0;
961 mountData.inAirFrameDelay = 0;
962 mountData.inAirFrameStart = 0;
963 mountData.idleFrameCount = 0;
964 mountData.idleFrameDelay = 0;
965 mountData.idleFrameStart = 0;
966 mountData.idleFrameLoop = false;
967 if (Main.netMode != 2)
968 {
969 mountData.backTexture = Asset<Texture2D>.Empty;
970 mountData.backTextureExtra = Asset<Texture2D>.Empty;
971 mountData.frontTexture = TextureAssets.FishMinecartMount;
972 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
973 mountData.textureWidth = mountData.frontTexture.Width();
974 mountData.textureHeight = mountData.frontTexture.Height();
975 }
976 mountData = new MountData();
977 mounts[51] = mountData;
978 SetAsMinecart(mountData, 339, 338, TextureAssets.Extra[246], -10, -8);
979 mountData.spawnDust = 211;
980 mountData.delegations.MinecartDust = DelegateMethods.Minecart.SparksFart;
981 mountData.delegations.MinecartBumperSound = DelegateMethods.Minecart.BumperSoundFart;
982 mountData.delegations.MinecartLandingSound = DelegateMethods.Minecart.LandingSoundFart;
983 mountData.delegations.MinecartJumpingSound = DelegateMethods.Minecart.JumpingSoundFart;
984 mountData = new MountData();
985 mounts[53] = mountData;
986 SetAsMinecart(mountData, 347, 346, TextureAssets.Extra[251], -10, -8);
987 mountData.spawnDust = 211;
988 mountData.delegations.MinecartDust = DelegateMethods.Minecart.SparksTerraFart;
989 mountData.delegations.MinecartBumperSound = DelegateMethods.Minecart.BumperSoundFart;
990 mountData.delegations.MinecartLandingSound = DelegateMethods.Minecart.LandingSoundFart;
991 mountData.delegations.MinecartJumpingSound = DelegateMethods.Minecart.JumpingSoundFart;
992 mountData = new MountData();
993 mounts[4] = mountData;
994 mountData.spawnDust = 56;
995 mountData.buff = 131;
996 mountData.heightBoost = 26;
997 mountData.flightTimeMax = 0;
998 mountData.fallDamage = 1f;
999 mountData.runSpeed = 2f;
1000 mountData.dashSpeed = 5f;
1001 mountData.swimSpeed = 10f;
1002 mountData.acceleration = 0.08f;
1003 mountData.jumpHeight = 12;
1004 mountData.jumpSpeed = 3.7f;
1005 mountData.totalFrames = 12;
1006 array = new int[mountData.totalFrames];
1007 for (int num = 0; num < array.Length; num++)
1008 {
1009 array[num] = 26;
1010 }
1011 mountData.playerYOffsets = array;
1012 mountData.xOffset = 1;
1013 mountData.bodyFrame = 3;
1014 mountData.yOffset = 13;
1015 mountData.playerHeadOffset = 28;
1016 mountData.standingFrameCount = 1;
1017 mountData.standingFrameDelay = 12;
1018 mountData.standingFrameStart = 0;
1019 mountData.runningFrameCount = 6;
1020 mountData.runningFrameDelay = 12;
1021 mountData.runningFrameStart = 0;
1022 mountData.flyingFrameCount = 0;
1023 mountData.flyingFrameDelay = 0;
1024 mountData.flyingFrameStart = 0;
1025 mountData.inAirFrameCount = 1;
1026 mountData.inAirFrameDelay = 12;
1027 mountData.inAirFrameStart = 3;
1028 mountData.idleFrameCount = 0;
1029 mountData.idleFrameDelay = 0;
1030 mountData.idleFrameStart = 0;
1031 mountData.idleFrameLoop = false;
1032 mountData.swimFrameCount = 6;
1033 mountData.swimFrameDelay = 12;
1034 mountData.swimFrameStart = 6;
1035 if (Main.netMode != 2)
1036 {
1037 mountData.backTexture = TextureAssets.TurtleMount;
1038 mountData.backTextureExtra = Asset<Texture2D>.Empty;
1039 mountData.frontTexture = Asset<Texture2D>.Empty;
1040 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1041 mountData.textureWidth = mountData.backTexture.Width();
1042 mountData.textureHeight = mountData.backTexture.Height();
1043 }
1044 mountData = new MountData();
1045 mounts[5] = mountData;
1046 mountData.spawnDust = 152;
1047 mountData.buff = 132;
1048 mountData.heightBoost = 16;
1049 mountData.flightTimeMax = 320;
1050 mountData.fatigueMax = 320;
1051 mountData.fallDamage = 0f;
1052 mountData.usesHover = true;
1053 mountData.runSpeed = 2f;
1054 mountData.dashSpeed = 2f;
1055 mountData.acceleration = 0.16f;
1056 mountData.jumpHeight = 10;
1057 mountData.jumpSpeed = 4f;
1058 mountData.blockExtraJumps = true;
1059 mountData.totalFrames = 12;
1060 array = new int[mountData.totalFrames];
1061 for (int num2 = 0; num2 < array.Length; num2++)
1062 {
1063 array[num2] = 16;
1064 }
1065 array[8] = 18;
1066 mountData.playerYOffsets = array;
1067 mountData.xOffset = 1;
1068 mountData.bodyFrame = 3;
1069 mountData.yOffset = 4;
1070 mountData.playerHeadOffset = 18;
1071 mountData.standingFrameCount = 1;
1072 mountData.standingFrameDelay = 12;
1073 mountData.standingFrameStart = 0;
1074 mountData.runningFrameCount = 5;
1075 mountData.runningFrameDelay = 12;
1076 mountData.runningFrameStart = 0;
1077 mountData.flyingFrameCount = 3;
1078 mountData.flyingFrameDelay = 12;
1079 mountData.flyingFrameStart = 5;
1080 mountData.inAirFrameCount = 3;
1081 mountData.inAirFrameDelay = 12;
1082 mountData.inAirFrameStart = 5;
1083 mountData.idleFrameCount = 4;
1084 mountData.idleFrameDelay = 12;
1085 mountData.idleFrameStart = 8;
1086 mountData.idleFrameLoop = true;
1087 mountData.swimFrameCount = 0;
1088 mountData.swimFrameDelay = 12;
1089 mountData.swimFrameStart = 0;
1090 if (Main.netMode != 2)
1091 {
1092 mountData.backTexture = TextureAssets.BeeMount[0];
1093 mountData.backTextureExtra = TextureAssets.BeeMount[1];
1094 mountData.frontTexture = Asset<Texture2D>.Empty;
1095 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1096 mountData.textureWidth = mountData.backTexture.Width();
1097 mountData.textureHeight = mountData.backTexture.Height();
1098 }
1099 mountData = new MountData();
1100 mounts[7] = mountData;
1101 mountData.spawnDust = 226;
1102 mountData.spawnDustNoGravity = true;
1103 mountData.buff = 141;
1104 mountData.heightBoost = 16;
1105 mountData.flightTimeMax = 320;
1106 mountData.fatigueMax = 320;
1107 mountData.fallDamage = 0f;
1108 mountData.usesHover = true;
1109 mountData.runSpeed = 8f;
1110 mountData.dashSpeed = 8f;
1111 mountData.acceleration = 0.16f;
1112 mountData.jumpHeight = 10;
1113 mountData.jumpSpeed = 4f;
1114 mountData.blockExtraJumps = true;
1115 mountData.totalFrames = 8;
1116 array = new int[mountData.totalFrames];
1117 for (int num3 = 0; num3 < array.Length; num3++)
1118 {
1119 array[num3] = 16;
1120 }
1121 mountData.playerYOffsets = array;
1122 mountData.xOffset = 1;
1123 mountData.bodyFrame = 3;
1124 mountData.yOffset = 4;
1125 mountData.playerHeadOffset = 18;
1126 mountData.standingFrameCount = 8;
1127 mountData.standingFrameDelay = 4;
1128 mountData.standingFrameStart = 0;
1129 mountData.runningFrameCount = 8;
1130 mountData.runningFrameDelay = 4;
1131 mountData.runningFrameStart = 0;
1132 mountData.flyingFrameCount = 8;
1133 mountData.flyingFrameDelay = 4;
1134 mountData.flyingFrameStart = 0;
1135 mountData.inAirFrameCount = 8;
1136 mountData.inAirFrameDelay = 4;
1137 mountData.inAirFrameStart = 0;
1138 mountData.idleFrameCount = 0;
1139 mountData.idleFrameDelay = 12;
1140 mountData.idleFrameStart = 0;
1141 mountData.idleFrameLoop = true;
1142 mountData.swimFrameCount = 0;
1143 mountData.swimFrameDelay = 12;
1144 mountData.swimFrameStart = 0;
1145 if (Main.netMode != 2)
1146 {
1147 mountData.backTexture = Asset<Texture2D>.Empty;
1148 mountData.backTextureExtra = Asset<Texture2D>.Empty;
1149 mountData.frontTexture = TextureAssets.UfoMount[0];
1150 mountData.frontTextureExtra = TextureAssets.UfoMount[1];
1151 mountData.textureWidth = mountData.frontTexture.Width();
1152 mountData.textureHeight = mountData.frontTexture.Height();
1153 }
1154 mountData = new MountData();
1155 mounts[8] = mountData;
1156 mountData.spawnDust = 226;
1157 mountData.buff = 142;
1158 mountData.heightBoost = 16;
1159 mountData.flightTimeMax = 320;
1160 mountData.fatigueMax = 320;
1161 mountData.fallDamage = 1f;
1162 mountData.usesHover = true;
1163 mountData.swimSpeed = 4f;
1164 mountData.runSpeed = 6f;
1165 mountData.dashSpeed = 4f;
1166 mountData.acceleration = 0.16f;
1167 mountData.jumpHeight = 10;
1168 mountData.jumpSpeed = 4f;
1169 mountData.blockExtraJumps = true;
1170 mountData.emitsLight = true;
1171 mountData.lightColor = new Vector3(0.3f, 0.3f, 0.4f);
1172 mountData.totalFrames = 1;
1173 array = new int[mountData.totalFrames];
1174 for (int num4 = 0; num4 < array.Length; num4++)
1175 {
1176 array[num4] = 4;
1177 }
1178 mountData.playerYOffsets = array;
1179 mountData.xOffset = 1;
1180 mountData.bodyFrame = 3;
1181 mountData.yOffset = 4;
1182 mountData.playerHeadOffset = 18;
1183 mountData.standingFrameCount = 1;
1184 mountData.standingFrameDelay = 12;
1185 mountData.standingFrameStart = 0;
1186 mountData.runningFrameCount = 1;
1187 mountData.runningFrameDelay = 12;
1188 mountData.runningFrameStart = 0;
1189 mountData.flyingFrameCount = 1;
1190 mountData.flyingFrameDelay = 12;
1191 mountData.flyingFrameStart = 0;
1192 mountData.inAirFrameCount = 1;
1193 mountData.inAirFrameDelay = 12;
1194 mountData.inAirFrameStart = 0;
1195 mountData.idleFrameCount = 0;
1196 mountData.idleFrameDelay = 12;
1197 mountData.idleFrameStart = 8;
1198 mountData.swimFrameCount = 0;
1199 mountData.swimFrameDelay = 12;
1200 mountData.swimFrameStart = 0;
1201 if (Main.netMode != 2)
1202 {
1203 mountData.backTexture = TextureAssets.DrillMount[0];
1204 mountData.backTextureGlow = TextureAssets.DrillMount[3];
1205 mountData.backTextureExtra = Asset<Texture2D>.Empty;
1206 mountData.backTextureExtraGlow = Asset<Texture2D>.Empty;
1207 mountData.frontTexture = TextureAssets.DrillMount[1];
1208 mountData.frontTextureGlow = TextureAssets.DrillMount[4];
1209 mountData.frontTextureExtra = TextureAssets.DrillMount[2];
1210 mountData.frontTextureExtraGlow = TextureAssets.DrillMount[5];
1211 mountData.textureWidth = mountData.frontTexture.Width();
1212 mountData.textureHeight = mountData.frontTexture.Height();
1213 }
1214 drillTextureSize = new Vector2(80f, 80f);
1215 if (!Main.dedServ)
1216 {
1217 Vector2 vector = new Vector2(mountData.textureWidth, mountData.textureHeight / mountData.totalFrames);
1218 if (drillTextureSize != vector)
1219 {
1220 throw new Exception("Be sure to update the Drill texture origin to match the actual texture size of " + mountData.textureWidth + ", " + mountData.textureHeight + ".");
1221 }
1222 }
1223 mountData = new MountData();
1224 mounts[9] = mountData;
1225 mountData.spawnDust = 15;
1226 mountData.buff = 143;
1227 mountData.heightBoost = 16;
1228 mountData.flightTimeMax = 0;
1229 mountData.fatigueMax = 0;
1230 mountData.fallDamage = 0f;
1231 mountData.abilityChargeMax = 40;
1232 mountData.abilityCooldown = 20;
1233 mountData.abilityDuration = 0;
1234 mountData.runSpeed = 8f;
1235 mountData.dashSpeed = 8f;
1236 mountData.acceleration = 0.4f;
1237 mountData.jumpHeight = 22;
1238 mountData.jumpSpeed = 10.01f;
1239 mountData.blockExtraJumps = false;
1240 mountData.totalFrames = 12;
1241 array = new int[mountData.totalFrames];
1242 for (int num5 = 0; num5 < array.Length; num5++)
1243 {
1244 array[num5] = 16;
1245 }
1246 mountData.playerYOffsets = array;
1247 mountData.xOffset = 1;
1248 mountData.bodyFrame = 3;
1249 mountData.yOffset = 6;
1250 mountData.playerHeadOffset = 18;
1251 mountData.standingFrameCount = 6;
1252 mountData.standingFrameDelay = 12;
1253 mountData.standingFrameStart = 6;
1254 mountData.runningFrameCount = 6;
1255 mountData.runningFrameDelay = 12;
1256 mountData.runningFrameStart = 0;
1257 mountData.flyingFrameCount = 0;
1258 mountData.flyingFrameDelay = 12;
1259 mountData.flyingFrameStart = 0;
1260 mountData.inAirFrameCount = 1;
1261 mountData.inAirFrameDelay = 12;
1262 mountData.inAirFrameStart = 1;
1263 mountData.idleFrameCount = 0;
1264 mountData.idleFrameDelay = 12;
1265 mountData.idleFrameStart = 6;
1266 mountData.idleFrameLoop = true;
1267 mountData.swimFrameCount = 0;
1268 mountData.swimFrameDelay = 12;
1269 mountData.swimFrameStart = 0;
1270 if (Main.netMode != 2)
1271 {
1272 mountData.backTexture = TextureAssets.ScutlixMount[0];
1273 mountData.backTextureExtra = Asset<Texture2D>.Empty;
1274 mountData.frontTexture = TextureAssets.ScutlixMount[1];
1275 mountData.frontTextureExtra = TextureAssets.ScutlixMount[2];
1276 mountData.textureWidth = mountData.backTexture.Width();
1277 mountData.textureHeight = mountData.backTexture.Height();
1278 }
1279 scutlixEyePositions = new Vector2[10];
1280 scutlixEyePositions[0] = new Vector2(60f, 2f);
1281 scutlixEyePositions[1] = new Vector2(70f, 6f);
1282 scutlixEyePositions[2] = new Vector2(68f, 6f);
1283 scutlixEyePositions[3] = new Vector2(76f, 12f);
1284 scutlixEyePositions[4] = new Vector2(80f, 10f);
1285 scutlixEyePositions[5] = new Vector2(84f, 18f);
1286 scutlixEyePositions[6] = new Vector2(74f, 20f);
1287 scutlixEyePositions[7] = new Vector2(76f, 24f);
1288 scutlixEyePositions[8] = new Vector2(70f, 34f);
1289 scutlixEyePositions[9] = new Vector2(76f, 34f);
1290 scutlixTextureSize = new Vector2(45f, 54f);
1291 if (!Main.dedServ)
1292 {
1293 Vector2 vector2 = new Vector2(mountData.textureWidth / 2, mountData.textureHeight / mountData.totalFrames);
1295 {
1296 throw new Exception("Be sure to update the Scutlix texture origin to match the actual texture size of " + mountData.textureWidth + ", " + mountData.textureHeight + ".");
1297 }
1298 }
1299 for (int num6 = 0; num6 < scutlixEyePositions.Length; num6++)
1300 {
1302 }
1303 mountData = new MountData();
1304 mounts[10] = mountData;
1305 mountData.spawnDust = 15;
1306 mountData.buff = 162;
1307 mountData.heightBoost = 34;
1308 mountData.flightTimeMax = 0;
1309 mountData.fallDamage = 0.2f;
1310 mountData.runSpeed = 4f;
1311 mountData.dashSpeed = 12f;
1312 mountData.acceleration = 0.3f;
1313 mountData.jumpHeight = 10;
1314 mountData.jumpSpeed = 8.01f;
1315 mountData.totalFrames = 16;
1316 array = new int[mountData.totalFrames];
1317 for (int num7 = 0; num7 < array.Length; num7++)
1318 {
1319 array[num7] = 28;
1320 }
1321 array[3] += 2;
1322 array[4] += 2;
1323 array[7] += 2;
1324 array[8] += 2;
1325 array[12] += 2;
1326 array[13] += 2;
1327 array[15] += 4;
1328 mountData.playerYOffsets = array;
1329 mountData.xOffset = 5;
1330 mountData.bodyFrame = 3;
1331 mountData.yOffset = 1;
1332 mountData.playerHeadOffset = 34;
1333 mountData.standingFrameCount = 1;
1334 mountData.standingFrameDelay = 12;
1335 mountData.standingFrameStart = 0;
1336 mountData.runningFrameCount = 7;
1337 mountData.runningFrameDelay = 15;
1338 mountData.runningFrameStart = 1;
1339 mountData.dashingFrameCount = 6;
1340 mountData.dashingFrameDelay = 40;
1341 mountData.dashingFrameStart = 9;
1342 mountData.flyingFrameCount = 6;
1343 mountData.flyingFrameDelay = 6;
1344 mountData.flyingFrameStart = 1;
1345 mountData.inAirFrameCount = 1;
1346 mountData.inAirFrameDelay = 12;
1347 mountData.inAirFrameStart = 15;
1348 mountData.idleFrameCount = 0;
1349 mountData.idleFrameDelay = 0;
1350 mountData.idleFrameStart = 0;
1351 mountData.idleFrameLoop = false;
1352 mountData.swimFrameCount = mountData.inAirFrameCount;
1353 mountData.swimFrameDelay = mountData.inAirFrameDelay;
1354 mountData.swimFrameStart = mountData.inAirFrameStart;
1355 if (Main.netMode != 2)
1356 {
1357 mountData.backTexture = TextureAssets.UnicornMount;
1358 mountData.backTextureExtra = Asset<Texture2D>.Empty;
1359 mountData.frontTexture = Asset<Texture2D>.Empty;
1360 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1361 mountData.textureWidth = mountData.backTexture.Width();
1362 mountData.textureHeight = mountData.backTexture.Height();
1363 }
1364 mountData = new MountData();
1365 mounts[11] = mountData;
1366 mountData.Minecart = true;
1367 mountData.delegations = new MountDelegatesData();
1368 mountData.delegations.MinecartDust = DelegateMethods.Minecart.SparksMech;
1369 mountData.spawnDust = 213;
1370 mountData.buff = 167;
1371 mountData.extraBuff = 166;
1372 mountData.heightBoost = 12;
1373 mountData.flightTimeMax = 0;
1374 mountData.fallDamage = 1f;
1375 mountData.runSpeed = 13f;
1376 mountData.dashSpeed = 13f;
1377 mountData.acceleration = 0.04f;
1378 mountData.jumpHeight = 15;
1379 mountData.jumpSpeed = 5.15f;
1380 mountData.blockExtraJumps = true;
1381 mountData.totalFrames = 3;
1382 array = new int[mountData.totalFrames];
1383 for (int num8 = 0; num8 < array.Length; num8++)
1384 {
1385 array[num8] = 9;
1386 }
1387 mountData.playerYOffsets = array;
1388 mountData.xOffset = -1;
1389 mountData.bodyFrame = 3;
1390 mountData.yOffset = 11;
1391 mountData.playerHeadOffset = 14;
1392 mountData.standingFrameCount = 1;
1393 mountData.standingFrameDelay = 12;
1394 mountData.standingFrameStart = 0;
1395 mountData.runningFrameCount = 3;
1396 mountData.runningFrameDelay = 12;
1397 mountData.runningFrameStart = 0;
1398 mountData.flyingFrameCount = 0;
1399 mountData.flyingFrameDelay = 0;
1400 mountData.flyingFrameStart = 0;
1401 mountData.inAirFrameCount = 0;
1402 mountData.inAirFrameDelay = 0;
1403 mountData.inAirFrameStart = 0;
1404 mountData.idleFrameCount = 0;
1405 mountData.idleFrameDelay = 0;
1406 mountData.idleFrameStart = 0;
1407 mountData.idleFrameLoop = false;
1408 if (Main.netMode != 2)
1409 {
1410 mountData.backTexture = Asset<Texture2D>.Empty;
1411 mountData.backTextureExtra = Asset<Texture2D>.Empty;
1412 mountData.frontTexture = TextureAssets.MinecartMechMount[0];
1413 mountData.frontTextureGlow = TextureAssets.MinecartMechMount[1];
1414 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1415 mountData.textureWidth = mountData.frontTexture.Width();
1416 mountData.textureHeight = mountData.frontTexture.Height();
1417 }
1418 mountData = new MountData();
1419 mounts[12] = mountData;
1420 mountData.spawnDust = 15;
1421 mountData.buff = 168;
1422 mountData.heightBoost = 14;
1423 mountData.flightTimeMax = 320;
1424 mountData.fatigueMax = 320;
1425 mountData.fallDamage = 0f;
1426 mountData.usesHover = true;
1427 mountData.runSpeed = 2f;
1428 mountData.dashSpeed = 1f;
1429 mountData.acceleration = 0.2f;
1430 mountData.jumpHeight = 4;
1431 mountData.jumpSpeed = 3f;
1432 mountData.swimSpeed = 16f;
1433 mountData.blockExtraJumps = true;
1434 mountData.totalFrames = 23;
1435 array = new int[mountData.totalFrames];
1436 for (int num9 = 0; num9 < array.Length; num9++)
1437 {
1438 array[num9] = 12;
1439 }
1440 mountData.playerYOffsets = array;
1441 mountData.xOffset = 2;
1442 mountData.bodyFrame = 3;
1443 mountData.yOffset = 16;
1444 mountData.playerHeadOffset = 16;
1445 mountData.standingFrameCount = 1;
1446 mountData.standingFrameDelay = 12;
1447 mountData.standingFrameStart = 8;
1448 mountData.runningFrameCount = 7;
1449 mountData.runningFrameDelay = 14;
1450 mountData.runningFrameStart = 8;
1451 mountData.flyingFrameCount = 8;
1452 mountData.flyingFrameDelay = 16;
1453 mountData.flyingFrameStart = 0;
1454 mountData.inAirFrameCount = 8;
1455 mountData.inAirFrameDelay = 6;
1456 mountData.inAirFrameStart = 0;
1457 mountData.idleFrameCount = 0;
1458 mountData.idleFrameDelay = 0;
1459 mountData.idleFrameStart = 0;
1460 mountData.idleFrameLoop = false;
1461 mountData.swimFrameCount = 8;
1462 mountData.swimFrameDelay = 4;
1463 mountData.swimFrameStart = 15;
1464 if (Main.netMode != 2)
1465 {
1466 mountData.backTexture = TextureAssets.CuteFishronMount[0];
1467 mountData.backTextureGlow = TextureAssets.CuteFishronMount[1];
1468 mountData.frontTexture = Asset<Texture2D>.Empty;
1469 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1470 mountData.textureWidth = mountData.backTexture.Width();
1471 mountData.textureHeight = mountData.backTexture.Height();
1472 }
1473 mountData = new MountData();
1474 mounts[13] = mountData;
1475 mountData.Minecart = true;
1476 mountData.MinecartDirectional = true;
1477 mountData.delegations = new MountDelegatesData();
1478 mountData.delegations.MinecartDust = DelegateMethods.Minecart.Sparks;
1479 mountData.spawnDust = 213;
1480 mountData.buff = 184;
1481 mountData.extraBuff = 185;
1482 mountData.heightBoost = 10;
1483 mountData.flightTimeMax = 0;
1484 mountData.fallDamage = 1f;
1485 mountData.runSpeed = 10f;
1486 mountData.dashSpeed = 10f;
1487 mountData.acceleration = 0.03f;
1488 mountData.jumpHeight = 12;
1489 mountData.jumpSpeed = 5.15f;
1490 mountData.blockExtraJumps = true;
1491 mountData.totalFrames = 3;
1492 array = new int[mountData.totalFrames];
1493 for (int num10 = 0; num10 < array.Length; num10++)
1494 {
1495 array[num10] = 8;
1496 }
1497 mountData.playerYOffsets = array;
1498 mountData.xOffset = 1;
1499 mountData.bodyFrame = 3;
1500 mountData.yOffset = 13;
1501 mountData.playerHeadOffset = 14;
1502 mountData.standingFrameCount = 1;
1503 mountData.standingFrameDelay = 12;
1504 mountData.standingFrameStart = 0;
1505 mountData.runningFrameCount = 3;
1506 mountData.runningFrameDelay = 12;
1507 mountData.runningFrameStart = 0;
1508 mountData.flyingFrameCount = 0;
1509 mountData.flyingFrameDelay = 0;
1510 mountData.flyingFrameStart = 0;
1511 mountData.inAirFrameCount = 0;
1512 mountData.inAirFrameDelay = 0;
1513 mountData.inAirFrameStart = 0;
1514 mountData.idleFrameCount = 0;
1515 mountData.idleFrameDelay = 0;
1516 mountData.idleFrameStart = 0;
1517 mountData.idleFrameLoop = false;
1518 if (Main.netMode != 2)
1519 {
1520 mountData.backTexture = Asset<Texture2D>.Empty;
1521 mountData.backTextureExtra = Asset<Texture2D>.Empty;
1522 mountData.frontTexture = TextureAssets.MinecartWoodMount;
1523 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1524 mountData.textureWidth = mountData.frontTexture.Width();
1525 mountData.textureHeight = mountData.frontTexture.Height();
1526 }
1527 mountData = new MountData();
1528 mounts[14] = mountData;
1529 mountData.spawnDust = 15;
1530 mountData.buff = 193;
1531 mountData.heightBoost = 8;
1532 mountData.flightTimeMax = 0;
1533 mountData.fallDamage = 0.2f;
1534 mountData.runSpeed = 8f;
1535 mountData.acceleration = 0.25f;
1536 mountData.jumpHeight = 20;
1537 mountData.jumpSpeed = 8.01f;
1538 mountData.totalFrames = 8;
1539 array = new int[mountData.totalFrames];
1540 for (int num11 = 0; num11 < array.Length; num11++)
1541 {
1542 array[num11] = 8;
1543 }
1544 array[1] += 2;
1545 array[3] += 2;
1546 array[6] += 2;
1547 mountData.playerYOffsets = array;
1548 mountData.xOffset = 4;
1549 mountData.bodyFrame = 3;
1550 mountData.yOffset = 9;
1551 mountData.playerHeadOffset = 10;
1552 mountData.standingFrameCount = 1;
1553 mountData.standingFrameDelay = 12;
1554 mountData.standingFrameStart = 0;
1555 mountData.runningFrameCount = 6;
1556 mountData.runningFrameDelay = 30;
1557 mountData.runningFrameStart = 2;
1558 mountData.inAirFrameCount = 1;
1559 mountData.inAirFrameDelay = 12;
1560 mountData.inAirFrameStart = 1;
1561 mountData.idleFrameCount = 0;
1562 mountData.idleFrameDelay = 0;
1563 mountData.idleFrameStart = 0;
1564 mountData.idleFrameLoop = false;
1565 mountData.swimFrameCount = mountData.inAirFrameCount;
1566 mountData.swimFrameDelay = mountData.inAirFrameDelay;
1567 mountData.swimFrameStart = mountData.inAirFrameStart;
1568 if (Main.netMode != 2)
1569 {
1570 mountData.backTexture = TextureAssets.BasiliskMount;
1571 mountData.backTextureExtra = Asset<Texture2D>.Empty;
1572 mountData.frontTexture = Asset<Texture2D>.Empty;
1573 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1574 mountData.textureWidth = mountData.backTexture.Width();
1575 mountData.textureHeight = mountData.backTexture.Height();
1576 }
1577 mountData = new MountData();
1578 mounts[17] = mountData;
1579 mountData.spawnDust = 15;
1580 mountData.buff = 212;
1581 mountData.heightBoost = 16;
1582 mountData.flightTimeMax = 0;
1583 mountData.fallDamage = 0.2f;
1584 mountData.runSpeed = 8f;
1585 mountData.acceleration = 0.25f;
1586 mountData.jumpHeight = 20;
1587 mountData.jumpSpeed = 8.01f;
1588 mountData.totalFrames = 4;
1589 array = new int[mountData.totalFrames];
1590 for (int num12 = 0; num12 < array.Length; num12++)
1591 {
1592 array[num12] = 8;
1593 }
1594 mountData.playerYOffsets = array;
1595 mountData.xOffset = 2;
1596 mountData.bodyFrame = 3;
1597 mountData.yOffset = 17 - mountData.heightBoost;
1598 mountData.playerHeadOffset = 18;
1599 mountData.standingFrameCount = 1;
1600 mountData.standingFrameDelay = 12;
1601 mountData.standingFrameStart = 0;
1602 mountData.runningFrameCount = 4;
1603 mountData.runningFrameDelay = 12;
1604 mountData.runningFrameStart = 0;
1605 mountData.inAirFrameCount = 1;
1606 mountData.inAirFrameDelay = 12;
1607 mountData.inAirFrameStart = 1;
1608 mountData.idleFrameCount = 0;
1609 mountData.idleFrameDelay = 0;
1610 mountData.idleFrameStart = 0;
1611 mountData.idleFrameLoop = false;
1612 mountData.swimFrameCount = mountData.inAirFrameCount;
1613 mountData.swimFrameDelay = mountData.inAirFrameDelay;
1614 mountData.swimFrameStart = mountData.inAirFrameStart;
1615 if (Main.netMode != 2)
1616 {
1617 mountData.backTexture = TextureAssets.Extra[97];
1618 mountData.backTextureExtra = TextureAssets.Extra[96];
1619 mountData.frontTexture = Asset<Texture2D>.Empty;
1620 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1621 mountData.textureWidth = mountData.backTextureExtra.Width();
1622 mountData.textureHeight = mountData.backTextureExtra.Height();
1623 }
1624 mountData = new MountData();
1625 mounts[23] = mountData;
1626 mountData.spawnDust = 43;
1627 mountData.spawnDustNoGravity = true;
1628 mountData.buff = 230;
1629 mountData.heightBoost = 0;
1630 mountData.flightTimeMax = 320;
1631 mountData.fatigueMax = 320;
1632 mountData.fallDamage = 0f;
1633 mountData.usesHover = true;
1634 mountData.runSpeed = 9f;
1635 mountData.dashSpeed = 9f;
1636 mountData.acceleration = 0.16f;
1637 mountData.jumpHeight = 10;
1638 mountData.jumpSpeed = 4f;
1639 mountData.blockExtraJumps = true;
1640 mountData.totalFrames = 6;
1641 array = new int[mountData.totalFrames];
1642 for (int num13 = 0; num13 < array.Length; num13++)
1643 {
1644 array[num13] = 6;
1645 }
1646 mountData.playerYOffsets = array;
1647 mountData.xOffset = -2;
1648 mountData.bodyFrame = 0;
1649 mountData.yOffset = 8;
1650 mountData.playerHeadOffset = 0;
1651 mountData.standingFrameCount = 1;
1652 mountData.standingFrameDelay = 0;
1653 mountData.standingFrameStart = 0;
1654 mountData.runningFrameCount = 1;
1655 mountData.runningFrameDelay = 0;
1656 mountData.runningFrameStart = 0;
1657 mountData.flyingFrameCount = 1;
1658 mountData.flyingFrameDelay = 0;
1659 mountData.flyingFrameStart = 0;
1660 mountData.inAirFrameCount = 6;
1661 mountData.inAirFrameDelay = 8;
1662 mountData.inAirFrameStart = 0;
1663 mountData.idleFrameCount = 0;
1664 mountData.idleFrameDelay = 0;
1665 mountData.idleFrameStart = 0;
1666 mountData.idleFrameLoop = true;
1667 mountData.swimFrameCount = 0;
1668 mountData.swimFrameDelay = 0;
1669 mountData.swimFrameStart = 0;
1670 if (Main.netMode != 2)
1671 {
1672 mountData.backTexture = TextureAssets.Extra[113];
1673 mountData.backTextureExtra = Asset<Texture2D>.Empty;
1674 mountData.frontTexture = Asset<Texture2D>.Empty;
1675 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1676 mountData.textureWidth = mountData.backTexture.Width();
1677 mountData.textureHeight = mountData.backTexture.Height();
1678 }
1679 mountData = new MountData();
1680 mounts[37] = mountData;
1681 mountData.spawnDust = 282;
1682 mountData.buff = 265;
1683 mountData.heightBoost = 12;
1684 mountData.flightTimeMax = 0;
1685 mountData.fallDamage = 0.2f;
1686 mountData.runSpeed = 6f;
1687 mountData.acceleration = 0.15f;
1688 mountData.jumpHeight = 14;
1689 mountData.jumpSpeed = 6.01f;
1690 mountData.totalFrames = 10;
1691 array = new int[mountData.totalFrames];
1692 for (int num14 = 0; num14 < array.Length; num14++)
1693 {
1694 array[num14] = 20;
1695 }
1696 mountData.playerYOffsets = array;
1697 mountData.xOffset = 5;
1698 mountData.bodyFrame = 4;
1699 mountData.yOffset = 1;
1700 mountData.playerHeadOffset = 20;
1701 mountData.standingFrameCount = 1;
1702 mountData.standingFrameDelay = 12;
1703 mountData.standingFrameStart = 0;
1704 mountData.runningFrameCount = 7;
1705 mountData.runningFrameDelay = 20;
1706 mountData.runningFrameStart = 2;
1707 mountData.inAirFrameCount = 1;
1708 mountData.inAirFrameDelay = 12;
1709 mountData.inAirFrameStart = 1;
1710 mountData.idleFrameCount = 0;
1711 mountData.idleFrameDelay = 0;
1712 mountData.idleFrameStart = 0;
1713 mountData.idleFrameLoop = false;
1714 mountData.swimFrameCount = mountData.runningFrameCount;
1715 mountData.swimFrameDelay = 10;
1716 mountData.swimFrameStart = mountData.runningFrameStart;
1717 if (Main.netMode != 2)
1718 {
1719 mountData.backTexture = TextureAssets.Extra[149];
1720 mountData.backTextureExtra = Asset<Texture2D>.Empty;
1721 mountData.frontTexture = Asset<Texture2D>.Empty;
1722 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1723 mountData.textureWidth = mountData.backTexture.Width();
1724 mountData.textureHeight = mountData.backTexture.Height();
1725 }
1726 mountData = new MountData();
1727 mounts[40] = mountData;
1729 mountData = new MountData();
1730 mounts[41] = mountData;
1732 mountData = new MountData();
1733 mounts[42] = mountData;
1735 mountData = new MountData();
1736 mounts[43] = mountData;
1737 mountData.spawnDust = 15;
1738 mountData.buff = 278;
1739 mountData.heightBoost = 12;
1740 mountData.flightTimeMax = 0;
1741 mountData.fallDamage = 0.4f;
1742 mountData.runSpeed = 5f;
1743 mountData.acceleration = 0.1f;
1744 mountData.jumpHeight = 8;
1745 mountData.jumpSpeed = 8f;
1746 mountData.constantJump = true;
1747 mountData.totalFrames = 4;
1748 array = new int[mountData.totalFrames];
1749 for (int num15 = 0; num15 < array.Length; num15++)
1750 {
1751 array[num15] = 14;
1752 }
1753 mountData.playerYOffsets = array;
1754 mountData.xOffset = 5;
1755 mountData.bodyFrame = 4;
1756 mountData.yOffset = 10;
1757 mountData.playerHeadOffset = 10;
1758 mountData.standingFrameCount = 1;
1759 mountData.standingFrameDelay = 5;
1760 mountData.standingFrameStart = 0;
1761 mountData.runningFrameCount = 4;
1762 mountData.runningFrameDelay = 5;
1763 mountData.runningFrameStart = 0;
1764 mountData.inAirFrameCount = 1;
1765 mountData.inAirFrameDelay = 5;
1766 mountData.inAirFrameStart = 0;
1767 mountData.idleFrameCount = 0;
1768 mountData.idleFrameDelay = 0;
1769 mountData.idleFrameStart = 0;
1770 mountData.idleFrameLoop = false;
1771 mountData.swimFrameCount = 1;
1772 mountData.swimFrameDelay = 5;
1773 mountData.swimFrameStart = 0;
1774 if (Main.netMode != 2)
1775 {
1776 mountData.backTexture = Asset<Texture2D>.Empty;
1777 mountData.backTextureExtra = Asset<Texture2D>.Empty;
1778 mountData.frontTexture = TextureAssets.Extra[164];
1779 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1780 mountData.textureWidth = mountData.frontTexture.Width();
1781 mountData.textureHeight = mountData.frontTexture.Height();
1782 }
1783 mountData = new MountData();
1784 mounts[44] = mountData;
1785 mountData.spawnDust = 228;
1786 mountData.buff = 279;
1787 mountData.heightBoost = 24;
1788 mountData.flightTimeMax = 320;
1789 mountData.fatigueMax = 320;
1790 mountData.fallDamage = 0f;
1791 mountData.usesHover = true;
1792 mountData.runSpeed = 3f;
1793 mountData.dashSpeed = 6f;
1794 mountData.acceleration = 0.12f;
1795 mountData.jumpHeight = 3;
1796 mountData.jumpSpeed = 1f;
1797 mountData.swimSpeed = mountData.runSpeed;
1798 mountData.blockExtraJumps = true;
1799 mountData.totalFrames = 10;
1800 array = new int[mountData.totalFrames];
1801 for (int num16 = 0; num16 < array.Length; num16++)
1802 {
1803 array[num16] = 9;
1804 }
1805 mountData.playerYOffsets = array;
1806 mountData.xOffset = 0;
1807 mountData.bodyFrame = 3;
1808 mountData.yOffset = 8;
1809 mountData.playerHeadOffset = 16;
1810 mountData.runningFrameCount = 10;
1811 mountData.runningFrameDelay = 8;
1812 mountData.runningFrameStart = 0;
1813 if (Main.netMode != 2)
1814 {
1815 mountData.backTexture = Asset<Texture2D>.Empty;
1816 mountData.backTextureExtra = Asset<Texture2D>.Empty;
1817 mountData.frontTexture = TextureAssets.Extra[166];
1818 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1819 mountData.textureWidth = mountData.frontTexture.Width();
1820 mountData.textureHeight = mountData.frontTexture.Height();
1821 }
1822 mountData = new MountData();
1823 mounts[45] = mountData;
1824 mountData.spawnDust = 6;
1825 mountData.buff = 280;
1826 mountData.heightBoost = 25;
1827 mountData.flightTimeMax = 0;
1828 mountData.fallDamage = 0.1f;
1829 mountData.runSpeed = 12f;
1830 mountData.dashSpeed = 16f;
1831 mountData.acceleration = 0.5f;
1832 mountData.jumpHeight = 14;
1833 mountData.jumpSpeed = 7f;
1834 mountData.emitsLight = true;
1835 mountData.lightColor = new Vector3(0.6f, 0.4f, 0.35f);
1836 mountData.totalFrames = 8;
1837 array = new int[mountData.totalFrames];
1838 for (int num17 = 0; num17 < array.Length; num17++)
1839 {
1840 array[num17] = 30;
1841 }
1842 mountData.playerYOffsets = array;
1843 mountData.xOffset = 0;
1844 mountData.bodyFrame = 0;
1845 mountData.xOffset = 2;
1846 mountData.yOffset = 1;
1847 mountData.playerHeadOffset = 20;
1848 mountData.standingFrameCount = 1;
1849 mountData.standingFrameDelay = 20;
1850 mountData.standingFrameStart = 0;
1851 mountData.runningFrameCount = 6;
1852 mountData.runningFrameDelay = 20;
1853 mountData.runningFrameStart = 2;
1854 mountData.inAirFrameCount = 1;
1855 mountData.inAirFrameDelay = 20;
1856 mountData.inAirFrameStart = 1;
1857 mountData.swimFrameCount = mountData.runningFrameCount;
1858 mountData.swimFrameDelay = 20;
1859 mountData.swimFrameStart = mountData.runningFrameStart;
1860 if (Main.netMode != 2)
1861 {
1862 mountData.backTexture = TextureAssets.Extra[167];
1863 mountData.backTextureGlow = TextureAssets.GlowMask[283];
1864 mountData.frontTexture = Asset<Texture2D>.Empty;
1865 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1866 mountData.textureWidth = mountData.backTexture.Width();
1867 mountData.textureHeight = mountData.backTexture.Height();
1868 }
1869 mountData = new MountData();
1870 mounts[46] = mountData;
1871 mountData.spawnDust = 15;
1872 mountData.buff = 281;
1873 mountData.heightBoost = 0;
1874 mountData.flightTimeMax = 0;
1875 mountData.fatigueMax = 0;
1876 mountData.fallDamage = 0f;
1877 mountData.abilityChargeMax = 40;
1878 mountData.abilityCooldown = 40;
1879 mountData.abilityDuration = 0;
1880 mountData.runSpeed = 8f;
1881 mountData.dashSpeed = 8f;
1882 mountData.acceleration = 0.4f;
1883 mountData.jumpHeight = 8;
1884 mountData.jumpSpeed = 9.01f;
1885 mountData.blockExtraJumps = false;
1886 mountData.totalFrames = 27;
1887 array = new int[mountData.totalFrames];
1888 for (int num18 = 0; num18 < array.Length; num18++)
1889 {
1890 array[num18] = 4;
1891 if (num18 == 1 || num18 == 2 || num18 == 7 || num18 == 8)
1892 {
1893 array[num18] += 2;
1894 }
1895 }
1896 mountData.playerYOffsets = array;
1897 mountData.xOffset = 1;
1898 mountData.bodyFrame = 3;
1899 mountData.yOffset = 1;
1900 mountData.playerHeadOffset = 2;
1901 mountData.standingFrameCount = 1;
1902 mountData.standingFrameDelay = 12;
1903 mountData.standingFrameStart = 0;
1904 mountData.runningFrameCount = 11;
1905 mountData.runningFrameDelay = 12;
1906 mountData.runningFrameStart = 0;
1907 mountData.inAirFrameCount = 11;
1908 mountData.inAirFrameDelay = 12;
1909 mountData.inAirFrameStart = 1;
1910 mountData.swimFrameCount = mountData.runningFrameCount;
1911 mountData.swimFrameDelay = mountData.runningFrameDelay;
1912 mountData.swimFrameStart = mountData.runningFrameStart;
1913 santankTextureSize = new Vector2(23f, 2f);
1914 if (Main.netMode != 2)
1915 {
1916 mountData.backTexture = Asset<Texture2D>.Empty;
1917 mountData.backTextureExtra = Asset<Texture2D>.Empty;
1918 mountData.frontTexture = TextureAssets.Extra[168];
1919 mountData.frontTextureExtra = TextureAssets.Extra[168];
1920 mountData.textureWidth = mountData.frontTexture.Width();
1921 mountData.textureHeight = mountData.frontTexture.Height();
1922 }
1923 mountData = new MountData();
1924 mounts[47] = mountData;
1925 mountData.spawnDust = 5;
1926 mountData.buff = 282;
1927 mountData.heightBoost = 34;
1928 mountData.flightTimeMax = 0;
1929 mountData.fallDamage = 0.2f;
1930 mountData.runSpeed = 4f;
1931 mountData.dashSpeed = 12f;
1932 mountData.acceleration = 0.3f;
1933 mountData.jumpHeight = 10;
1934 mountData.jumpSpeed = 8.01f;
1935 mountData.totalFrames = 16;
1936 array = new int[mountData.totalFrames];
1937 for (int num19 = 0; num19 < array.Length; num19++)
1938 {
1939 array[num19] = 30;
1940 }
1941 array[3] += 2;
1942 array[4] += 2;
1943 array[7] += 2;
1944 array[8] += 2;
1945 array[12] += 2;
1946 array[13] += 2;
1947 array[15] += 4;
1948 mountData.playerYOffsets = array;
1949 mountData.xOffset = 5;
1950 mountData.bodyFrame = 3;
1951 mountData.yOffset = -1;
1952 mountData.playerHeadOffset = 34;
1953 mountData.standingFrameCount = 1;
1954 mountData.standingFrameDelay = 12;
1955 mountData.standingFrameStart = 0;
1956 mountData.runningFrameCount = 7;
1957 mountData.runningFrameDelay = 15;
1958 mountData.runningFrameStart = 1;
1959 mountData.dashingFrameCount = 6;
1960 mountData.dashingFrameDelay = 40;
1961 mountData.dashingFrameStart = 9;
1962 mountData.flyingFrameCount = 6;
1963 mountData.flyingFrameDelay = 6;
1964 mountData.flyingFrameStart = 1;
1965 mountData.inAirFrameCount = 1;
1966 mountData.inAirFrameDelay = 12;
1967 mountData.inAirFrameStart = 15;
1968 mountData.idleFrameCount = 0;
1969 mountData.idleFrameDelay = 0;
1970 mountData.idleFrameStart = 0;
1971 mountData.idleFrameLoop = false;
1972 mountData.swimFrameCount = mountData.inAirFrameCount;
1973 mountData.swimFrameDelay = mountData.inAirFrameDelay;
1974 mountData.swimFrameStart = mountData.inAirFrameStart;
1975 if (Main.netMode != 2)
1976 {
1977 mountData.backTexture = TextureAssets.Extra[169];
1978 mountData.backTextureGlow = TextureAssets.GlowMask[284];
1979 mountData.frontTexture = Asset<Texture2D>.Empty;
1980 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
1981 mountData.textureWidth = mountData.backTexture.Width();
1982 mountData.textureHeight = mountData.backTexture.Height();
1983 }
1984 mountData = new MountData();
1985 mounts[48] = mountData;
1986 mountData.spawnDust = 62;
1987 mountData.buff = 283;
1988 mountData.heightBoost = 14;
1989 mountData.flightTimeMax = 320;
1990 mountData.fallDamage = 0f;
1991 mountData.usesHover = true;
1992 mountData.runSpeed = 8f;
1993 mountData.dashSpeed = 8f;
1994 mountData.acceleration = 0.2f;
1995 mountData.jumpHeight = 5;
1996 mountData.jumpSpeed = 6f;
1997 mountData.swimSpeed = mountData.runSpeed;
1998 mountData.totalFrames = 6;
1999 array = new int[mountData.totalFrames];
2000 for (int num20 = 0; num20 < array.Length; num20++)
2001 {
2002 array[num20] = 9;
2003 }
2004 array[0] += 6;
2005 array[1] += 6;
2006 array[2] += 4;
2007 array[3] += 4;
2008 array[4] += 4;
2009 array[5] += 6;
2010 mountData.playerYOffsets = array;
2011 mountData.xOffset = 1;
2012 mountData.bodyFrame = 0;
2013 mountData.yOffset = 16;
2014 mountData.playerHeadOffset = 16;
2015 mountData.runningFrameCount = 6;
2016 mountData.runningFrameDelay = 8;
2017 mountData.runningFrameStart = 0;
2018 if (Main.netMode != 2)
2019 {
2020 mountData.backTexture = TextureAssets.Extra[170];
2021 mountData.backTextureExtra = Asset<Texture2D>.Empty;
2022 mountData.frontTexture = Asset<Texture2D>.Empty;
2023 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
2024 mountData.textureWidth = mountData.backTexture.Width();
2025 mountData.textureHeight = mountData.backTexture.Height();
2026 }
2027 mountData = new MountData();
2028 mounts[49] = mountData;
2029 mountData.spawnDust = 35;
2030 mountData.buff = 305;
2031 mountData.heightBoost = 8;
2032 mountData.runSpeed = 2f;
2033 mountData.dashSpeed = 1f;
2034 mountData.acceleration = 0.4f;
2035 mountData.jumpHeight = 4;
2036 mountData.jumpSpeed = 3f;
2037 mountData.swimSpeed = 14f;
2038 mountData.blockExtraJumps = true;
2039 mountData.flightTimeMax = 0;
2040 mountData.fatigueMax = 320;
2041 mountData.usesHover = true;
2042 mountData.emitsLight = true;
2043 mountData.lightColor = new Vector3(0.3f, 0.15f, 0.1f);
2044 mountData.totalFrames = 8;
2045 array = new int[mountData.totalFrames];
2046 for (int num21 = 0; num21 < array.Length; num21++)
2047 {
2048 array[num21] = 10;
2049 }
2050 mountData.playerYOffsets = array;
2051 mountData.xOffset = 2;
2052 mountData.bodyFrame = 3;
2053 mountData.yOffset = 1;
2054 mountData.playerHeadOffset = 16;
2055 mountData.standingFrameCount = 1;
2056 mountData.standingFrameDelay = 12;
2057 mountData.standingFrameStart = 4;
2058 mountData.runningFrameCount = 4;
2059 mountData.runningFrameDelay = 14;
2060 mountData.runningFrameStart = 4;
2061 mountData.inAirFrameCount = 1;
2062 mountData.inAirFrameDelay = 6;
2063 mountData.inAirFrameStart = 4;
2064 mountData.swimFrameCount = 4;
2065 mountData.swimFrameDelay = 16;
2066 mountData.swimFrameStart = 0;
2067 if (Main.netMode != 2)
2068 {
2069 mountData.backTexture = TextureAssets.Extra[172];
2070 mountData.backTextureGlow = TextureAssets.GlowMask[285];
2071 mountData.frontTexture = Asset<Texture2D>.Empty;
2072 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
2073 mountData.textureWidth = mountData.backTexture.Width();
2074 mountData.textureHeight = mountData.backTexture.Height();
2075 }
2076 mountData = new MountData();
2077 mounts[50] = mountData;
2078 mountData.spawnDust = 243;
2079 mountData.buff = 318;
2080 mountData.heightBoost = 20;
2081 mountData.flightTimeMax = 160;
2082 mountData.fallDamage = 0.5f;
2083 mountData.runSpeed = 5.5f;
2084 mountData.dashSpeed = 5.5f;
2085 mountData.acceleration = 0.2f;
2086 mountData.jumpHeight = 10;
2087 mountData.jumpSpeed = 7.25f;
2088 mountData.constantJump = true;
2089 mountData.totalFrames = 8;
2090 array = new int[mountData.totalFrames];
2091 for (int num22 = 0; num22 < array.Length; num22++)
2092 {
2093 array[num22] = 20;
2094 }
2095 array[1] += 2;
2096 array[4] += 2;
2097 array[5] += 2;
2098 mountData.playerYOffsets = array;
2099 mountData.xOffset = 1;
2100 mountData.bodyFrame = 3;
2101 mountData.yOffset = -1;
2102 mountData.playerHeadOffset = 22;
2103 mountData.standingFrameCount = 1;
2104 mountData.standingFrameDelay = 12;
2105 mountData.standingFrameStart = 0;
2106 mountData.runningFrameCount = 5;
2107 mountData.runningFrameDelay = 16;
2108 mountData.runningFrameStart = 0;
2109 mountData.flyingFrameCount = 0;
2110 mountData.flyingFrameDelay = 0;
2111 mountData.flyingFrameStart = 0;
2112 mountData.inAirFrameCount = 1;
2113 mountData.inAirFrameDelay = 12;
2114 mountData.inAirFrameStart = 5;
2115 mountData.idleFrameCount = 0;
2116 mountData.idleFrameDelay = 0;
2117 mountData.idleFrameStart = 0;
2118 mountData.idleFrameLoop = false;
2119 if (Main.netMode != 2)
2120 {
2121 mountData.backTexture = TextureAssets.Extra[204];
2122 mountData.backTextureExtra = Asset<Texture2D>.Empty;
2123 mountData.frontTexture = Asset<Texture2D>.Empty;
2124 mountData.frontTextureExtra = Asset<Texture2D>.Empty;
2125 mountData.textureWidth = mountData.backTexture.Width();
2126 mountData.textureHeight = mountData.backTexture.Height();
2127 }
2128 mountData = new MountData();
2129 mounts[52] = mountData;
2130 mountData.delegations = new MountDelegatesData();
2131 mountData.delegations.MouthPosition = DelegateMethods.Mount.WolfMouthPosition;
2132 mountData.delegations.HandPosition = DelegateMethods.Mount.NoHandPosition;
2133 mountData.spawnDust = 31;
2134 mountData.buff = 342;
2135 mountData.flightTimeMax = 0;
2136 mountData.fallDamage = 0.1f;
2137 mountData.runSpeed = 9.5f;
2138 mountData.acceleration = 0.18f;
2139 mountData.jumpHeight = 18;
2140 mountData.jumpSpeed = 9.01f;
2141 mountData.totalFrames = 15;
2142 array = new int[mountData.totalFrames];
2143 for (int num23 = 0; num23 < array.Length; num23++)
2144 {
2145 array[num23] = 0;
2146 }
2147 array[1] += -14;
2148 array[2] += -10;
2149 array[3] += -8;
2150 array[4] += 18;
2151 array[5] += -2;
2152 ref int reference = ref array[6];
2154 array[7] += 2;
2155 array[8] += 4;
2156 array[9] += 4;
2157 array[10] += 2;
2158 ref int reference2 = ref array[11];
2160 array[12] += 4;
2161 array[13] += 2;
2162 array[14] += -4;
2163 mountData.playerYOffsets = array;
2164 mountData.xOffset = 4;
2165 mountData.bodyFrame = 3;
2166 mountData.yOffset = -1;
2167 mountData.standingFrameCount = 1;
2168 mountData.standingFrameDelay = 12;
2169 mountData.standingFrameStart = 0;
2170 mountData.runningFrameCount = 6;
2171 mountData.runningFrameDelay = 20;
2172 mountData.runningFrameStart = 5;
2173 mountData.inAirFrameCount = 3;
2174 mountData.inAirFrameDelay = 12;
2175 mountData.inAirFrameStart = 12;
2176 mountData.idleFrameCount = 0;
2177 mountData.idleFrameDelay = 0;
2178 mountData.idleFrameStart = 0;
2179 mountData.idleFrameLoop = false;
2180 mountData.swimFrameCount = mountData.inAirFrameCount;
2181 mountData.swimFrameDelay = mountData.inAirFrameDelay;
2182 mountData.swimFrameStart = mountData.inAirFrameStart;
2183 if (Main.netMode != 2)
2184 {
2185 mountData.backTexture = Asset<Texture2D>.Empty;
2186 mountData.backTextureExtra = Asset<Texture2D>.Empty;
2187 mountData.frontTexture = TextureAssets.Extra[253];
2188 mountData.frontTextureExtra = TextureAssets.Extra[254];
2189 mountData.textureWidth = mountData.frontTexture.Width();
2190 mountData.textureHeight = mountData.frontTexture.Height();
2191 }
2192 }
2193
2194 private static void SetAsHorse(MountData newMount, int buff, Asset<Texture2D> texture)
2195 {
2196 newMount.spawnDust = 3;
2197 newMount.buff = buff;
2198 newMount.heightBoost = 34;
2199 newMount.flightTimeMax = 0;
2200 newMount.fallDamage = 0.5f;
2201 newMount.runSpeed = 3f;
2202 newMount.dashSpeed = 9f;
2203 newMount.acceleration = 0.25f;
2204 newMount.jumpHeight = 6;
2205 newMount.jumpSpeed = 7.01f;
2206 newMount.totalFrames = 16;
2207 int[] array = new int[newMount.totalFrames];
2208 for (int i = 0; i < array.Length; i++)
2209 {
2210 array[i] = 28;
2211 }
2212 array[3] += 2;
2213 array[4] += 2;
2214 array[7] += 2;
2215 array[8] += 2;
2216 array[12] += 2;
2217 array[13] += 2;
2218 array[15] += 4;
2219 newMount.playerYOffsets = array;
2220 newMount.xOffset = 5;
2221 newMount.bodyFrame = 3;
2222 newMount.yOffset = 1;
2223 newMount.playerHeadOffset = 34;
2224 newMount.standingFrameCount = 1;
2225 newMount.standingFrameDelay = 12;
2226 newMount.standingFrameStart = 0;
2227 newMount.runningFrameCount = 7;
2228 newMount.runningFrameDelay = 15;
2229 newMount.runningFrameStart = 1;
2230 newMount.dashingFrameCount = 6;
2231 newMount.dashingFrameDelay = 40;
2232 newMount.dashingFrameStart = 9;
2233 newMount.flyingFrameCount = 6;
2234 newMount.flyingFrameDelay = 6;
2235 newMount.flyingFrameStart = 1;
2236 newMount.inAirFrameCount = 1;
2237 newMount.inAirFrameDelay = 12;
2238 newMount.inAirFrameStart = 15;
2239 newMount.idleFrameCount = 0;
2240 newMount.idleFrameDelay = 0;
2241 newMount.idleFrameStart = 0;
2242 newMount.idleFrameLoop = false;
2243 newMount.swimFrameCount = newMount.inAirFrameCount;
2244 newMount.swimFrameDelay = newMount.inAirFrameDelay;
2245 newMount.swimFrameStart = newMount.inAirFrameStart;
2246 if (Main.netMode != 2)
2247 {
2248 newMount.backTexture = texture;
2249 newMount.backTextureExtra = Asset<Texture2D>.Empty;
2250 newMount.frontTexture = Asset<Texture2D>.Empty;
2251 newMount.frontTextureExtra = Asset<Texture2D>.Empty;
2252 newMount.textureWidth = newMount.backTexture.Width();
2253 newMount.textureHeight = newMount.backTexture.Height();
2254 }
2255 }
2256
2258 {
2259 newMount.Minecart = true;
2260 newMount.delegations = new MountDelegatesData();
2261 newMount.delegations.MinecartDust = DelegateMethods.Minecart.Sparks;
2262 newMount.spawnDust = 213;
2263 newMount.buff = buffToLeft;
2264 newMount.extraBuff = buffToRight;
2265 newMount.heightBoost = 10;
2266 newMount.flightTimeMax = 0;
2267 newMount.fallDamage = 1f;
2268 newMount.runSpeed = 13f;
2269 newMount.dashSpeed = 13f;
2270 newMount.acceleration = 0.04f;
2271 newMount.jumpHeight = 15;
2272 newMount.jumpSpeed = 5.15f;
2273 newMount.blockExtraJumps = true;
2274 newMount.totalFrames = 3;
2275 int[] array = new int[newMount.totalFrames];
2276 for (int i = 0; i < array.Length; i++)
2277 {
2279 }
2280 newMount.playerYOffsets = array;
2281 newMount.xOffset = 1;
2282 newMount.bodyFrame = 3;
2283 newMount.yOffset = 13 + verticalOffset;
2284 newMount.playerHeadOffset = 14;
2285 newMount.standingFrameCount = 1;
2286 newMount.standingFrameDelay = 12;
2287 newMount.standingFrameStart = 0;
2288 newMount.runningFrameCount = 3;
2289 newMount.runningFrameDelay = 12;
2290 newMount.runningFrameStart = 0;
2291 newMount.flyingFrameCount = 0;
2292 newMount.flyingFrameDelay = 0;
2293 newMount.flyingFrameStart = 0;
2294 newMount.inAirFrameCount = 0;
2295 newMount.inAirFrameDelay = 0;
2296 newMount.inAirFrameStart = 0;
2297 newMount.idleFrameCount = 0;
2298 newMount.idleFrameDelay = 0;
2299 newMount.idleFrameStart = 0;
2300 newMount.idleFrameLoop = false;
2301 if (Main.netMode != 2)
2302 {
2303 newMount.backTexture = Asset<Texture2D>.Empty;
2304 newMount.backTextureExtra = Asset<Texture2D>.Empty;
2305 newMount.frontTexture = texture;
2306 newMount.frontTextureExtra = Asset<Texture2D>.Empty;
2307 newMount.textureWidth = newMount.frontTexture.Width();
2308 newMount.textureHeight = newMount.frontTexture.Height();
2309 }
2310 }
2311
2312 public static int GetHeightBoost(int MountType)
2313 {
2315 {
2316 return 0;
2317 }
2318 return mounts[MountType].heightBoost;
2319 }
2320
2321 public int JumpHeight(float xVelocity)
2322 {
2323 int num = _data.jumpHeight;
2324 switch (_type)
2325 {
2326 case 0:
2327 num += (int)(Math.Abs(xVelocity) / 4f);
2328 break;
2329 case 1:
2330 num += (int)(Math.Abs(xVelocity) / 2.5f);
2331 break;
2332 case 4:
2333 case 49:
2334 if (_frameState == 4)
2335 {
2336 num += 5;
2337 }
2338 break;
2339 }
2340 if (_shouldSuperCart)
2341 {
2342 num = SuperCartJumpHeight;
2343 }
2344 return num;
2345 }
2346
2347 public float JumpSpeed(float xVelocity)
2348 {
2349 float num = _data.jumpSpeed;
2350 switch (_type)
2351 {
2352 case 0:
2353 case 1:
2354 num += Math.Abs(xVelocity) / 7f;
2355 break;
2356 case 4:
2357 case 49:
2358 if (_frameState == 4)
2359 {
2360 num += 2.5f;
2361 }
2362 break;
2363 }
2364 if (_shouldSuperCart)
2365 {
2366 num = SuperCartJumpSpeed;
2367 }
2368 return num;
2369 }
2370
2371 public bool CanFly()
2372 {
2373 if (!_active || _data.flightTimeMax == 0)
2374 {
2375 return false;
2376 }
2377 if (_type == 48)
2378 {
2379 return false;
2380 }
2381 return true;
2382 }
2383
2384 public bool CanHover()
2385 {
2386 if (!_active || !_data.usesHover)
2387 {
2388 return false;
2389 }
2390 if (_type == 49)
2391 {
2392 return _frameState == 4;
2393 }
2394 if (!_data.usesHover)
2395 {
2396 return false;
2397 }
2398 return true;
2399 }
2400
2405
2407 {
2408 if (Main.myPlayer == mountedPlayer.whoAmI)
2409 {
2410 int type = _type;
2411 if (type == 9)
2412 {
2413 int type2 = 441;
2414 float num = Main.screenPosition.X + (float)Main.mouseX;
2415 float num2 = Main.screenPosition.Y + (float)Main.mouseY;
2416 float ai = num - mountedPlayer.position.X;
2417 float ai2 = num2 - mountedPlayer.position.Y;
2419 _abilityCharging = true;
2420 }
2421 }
2422 else
2423 {
2424 int type = _type;
2425 if (type == 9)
2426 {
2427 _abilityCharging = true;
2428 }
2429 }
2430 }
2431
2432 public void StopAbilityCharge()
2433 {
2434 int type = _type;
2435 if (type == 9 || type == 46)
2436 {
2437 _abilityCharging = false;
2440 }
2441 }
2442
2443 public bool CheckBuff(int buffID)
2444 {
2445 if (_data.buff != buffID)
2446 {
2447 return _data.extraBuff == buffID;
2448 }
2449 return true;
2450 }
2451
2452 public void AbilityRecovery()
2453 {
2454 if (_abilityCharging)
2455 {
2457 {
2459 }
2460 }
2461 else if (_abilityCharge > 0)
2462 {
2464 }
2465 if (_abilityCooldown > 0)
2466 {
2468 }
2469 if (_abilityDuration > 0)
2470 {
2472 }
2473 }
2474
2475 public void FatigueRecovery()
2476 {
2477 if (_fatigue > 2f)
2478 {
2479 _fatigue -= 2f;
2480 }
2481 else
2482 {
2483 _fatigue = 0f;
2484 }
2485 }
2486
2487 public bool Flight()
2488 {
2489 if (_flyTime <= 0)
2490 {
2491 return false;
2492 }
2493 _flyTime--;
2494 return true;
2495 }
2496
2497 public void UpdateDrill(Player mountedPlayer, bool controlUp, bool controlDown)
2498 {
2500 for (int i = 0; i < drillMountData.beams.Length; i++)
2501 {
2503 if (drillBeam.cooldown > 1)
2504 {
2505 drillBeam.cooldown--;
2506 }
2507 else if (drillBeam.cooldown == 1)
2508 {
2509 drillBeam.cooldown = 0;
2510 drillBeam.curTileTarget = Point16.NegativeOne;
2511 }
2512 }
2513 drillMountData.diodeRotation = drillMountData.diodeRotation * 0.85f + 0.15f * drillMountData.diodeRotationTarget;
2514 if (drillMountData.beamCooldown > 0)
2515 {
2516 drillMountData.beamCooldown--;
2517 }
2518 }
2519
2521 {
2522 if (_type != 8 || !_abilityActive)
2523 {
2524 return;
2525 }
2527 bool flag = mountedPlayer.whoAmI == Main.myPlayer;
2528 if (mountedPlayer.controlUseItem)
2529 {
2530 for (int i = 0; i < amountOfBeamsAtOnce; i++)
2531 {
2532 if (drillMountData.beamCooldown != 0)
2533 {
2534 break;
2535 }
2536 for (int j = 0; j < drillMountData.beams.Length; j++)
2537 {
2539 if (drillBeam.cooldown != 0)
2540 {
2541 continue;
2542 }
2544 if (point == Point16.NegativeOne)
2545 {
2546 continue;
2547 }
2548 drillBeam.curTileTarget = point;
2550 if (flag)
2551 {
2552 bool flag2 = true;
2553 if (WorldGen.InWorld(point.X, point.Y) && Main.tile[point.X, point.Y] != null && Main.tile[point.X, point.Y].type == 26 && !Main.hardMode)
2554 {
2555 flag2 = false;
2556 mountedPlayer.Hurt(PlayerDeathReason.ByOther(4), mountedPlayer.statLife / 2, -mountedPlayer.direction);
2557 }
2558 if (mountedPlayer.noBuilding)
2559 {
2560 flag2 = false;
2561 }
2562 if (flag2)
2563 {
2564 mountedPlayer.PickTile(point.X, point.Y, pickPower);
2565 }
2566 }
2567 Vector2 vector = new Vector2((float)(point.X << 4) + 8f, (float)(point.Y << 4) + 8f);
2568 float num = (vector - mountedPlayer.Center).ToRotation();
2569 for (int k = 0; k < 2; k++)
2570 {
2571 float num2 = num + ((Main.rand.Next(2) == 1) ? (-1f) : 1f) * ((float)Math.PI / 2f);
2572 float num3 = (float)Main.rand.NextDouble() * 2f + 2f;
2573 Vector2 vector2 = new Vector2((float)Math.Cos(num2) * num3, (float)Math.Sin(num2) * num3);
2574 int num4 = Dust.NewDust(vector, 0, 0, 230, vector2.X, vector2.Y);
2575 Main.dust[num4].noGravity = true;
2576 Main.dust[num4].customData = mountedPlayer;
2577 }
2578 if (flag)
2579 {
2580 Tile.SmoothSlope(point.X, point.Y, applyToNeighbors: true, sync: true);
2581 }
2582 drillBeam.cooldown = drillPickTime;
2583 drillBeam.lastPurpose = 0;
2584 break;
2585 }
2586 }
2587 }
2588 if (!mountedPlayer.controlUseTile)
2589 {
2590 return;
2591 }
2592 for (int l = 0; l < amountOfBeamsAtOnce; l++)
2593 {
2594 if (drillMountData.beamCooldown != 0)
2595 {
2596 break;
2597 }
2598 for (int m = 0; m < drillMountData.beams.Length; m++)
2599 {
2601 if (drillBeam2.cooldown != 0)
2602 {
2603 continue;
2604 }
2606 if (point2 == Point16.NegativeOne)
2607 {
2608 continue;
2609 }
2610 drillBeam2.curTileTarget = point2;
2611 int damage = drillPickPower;
2612 if (flag)
2613 {
2614 bool flag3 = true;
2615 if (mountedPlayer.noBuilding)
2616 {
2617 flag3 = false;
2618 }
2619 if (flag3)
2620 {
2621 mountedPlayer.PickWall(point2.X, point2.Y, damage);
2622 }
2623 }
2624 Vector2 vector3 = new Vector2((float)(point2.X << 4) + 8f, (float)(point2.Y << 4) + 8f);
2625 float num5 = (vector3 - mountedPlayer.Center).ToRotation();
2626 for (int n = 0; n < 2; n++)
2627 {
2628 float num6 = num5 + ((Main.rand.Next(2) == 1) ? (-1f) : 1f) * ((float)Math.PI / 2f);
2629 float num7 = (float)Main.rand.NextDouble() * 2f + 2f;
2630 Vector2 vector4 = new Vector2((float)Math.Cos(num6) * num7, (float)Math.Sin(num6) * num7);
2631 int num8 = Dust.NewDust(vector3, 0, 0, 230, vector4.X, vector4.Y);
2632 Main.dust[num8].noGravity = true;
2633 Main.dust[num8].customData = mountedPlayer;
2634 }
2635 drillBeam2.cooldown = drillPickTime;
2636 drillBeam2.lastPurpose = 1;
2637 break;
2638 }
2639 }
2640 }
2641
2643 {
2644 Vector2 vector = ((mountedPlayer.whoAmI != Main.myPlayer) ? data.crosshairPosition : (Main.screenPosition + new Vector2(Main.mouseX, Main.mouseY)));
2645 Vector2 center = mountedPlayer.Center;
2647 float num = vector2.Length();
2648 if (num > 224f)
2649 {
2650 num = 224f;
2651 }
2652 num += 32f;
2653 vector2.Normalize();
2654 Vector2 end = center + vector2 * num;
2655 Point16 tilePoint = new Point16(-1, -1);
2656 if (!Utils.PlotTileLine(center, end, 65.6f, delegate(int x, int y)
2657 {
2658 tilePoint = new Point16(x, y);
2659 for (int i = 0; i < data.beams.Length; i++)
2660 {
2661 if (data.beams[i].curTileTarget == tilePoint && data.beams[i].lastPurpose == 0)
2662 {
2663 return true;
2664 }
2665 }
2666 if (!WorldGen.CanKillTile(x, y))
2667 {
2668 return true;
2669 }
2670 return (Main.tile[x, y] == null || Main.tile[x, y].inActive() || !Main.tile[x, y].active()) ? true : false;
2671 }))
2672 {
2673 return tilePoint;
2674 }
2675 return new Point16(-1, -1);
2676 }
2677
2679 {
2680 Vector2 vector = ((mountedPlayer.whoAmI != Main.myPlayer) ? data.crosshairPosition : (Main.screenPosition + new Vector2(Main.mouseX, Main.mouseY)));
2681 Vector2 center = mountedPlayer.Center;
2683 float num = vector2.Length();
2684 if (num > 224f)
2685 {
2686 num = 224f;
2687 }
2688 num += 32f;
2689 num += 16f;
2690 vector2.Normalize();
2691 Vector2 end = center + vector2 * num;
2692 Point16 tilePoint = new Point16(-1, -1);
2693 if (!Utils.PlotTileLine(center, end, 97.6f, delegate(int x, int y)
2694 {
2695 tilePoint = new Point16(x, y);
2696 for (int i = 0; i < data.beams.Length; i++)
2697 {
2698 if (data.beams[i].curTileTarget == tilePoint && data.beams[i].lastPurpose == 1)
2699 {
2700 return true;
2701 }
2702 }
2703 Tile tile = Main.tile[x, y];
2704 if (tile == null)
2705 {
2706 return false;
2707 }
2708 return (tile.wall <= 0 || !Player.CanPlayerSmashWall(x, y)) ? true : false;
2709 }))
2710 {
2711 return tilePoint;
2712 }
2713 return new Point16(-1, -1);
2714 }
2715
2717 {
2718 switch (_type)
2719 {
2720 case 9:
2721 {
2722 if (Main.myPlayer != mountedPlayer.whoAmI)
2723 {
2724 break;
2725 }
2726 int type2 = 606;
2728 Vector2 vector5 = default(Vector2);
2729 vector5.X = mountedPlayer.position.X + (float)(mountedPlayer.width / 2);
2730 vector5.Y = mountedPlayer.position.Y + (float)mountedPlayer.height;
2731 int num3 = (_frameExtra - 6) * 2;
2732 Vector2 vector6 = default(Vector2);
2733 for (int i = 0; i < 2; i++)
2734 {
2735 vector6.Y = vector5.Y + scutlixEyePositions[num3 + i].Y + (float)_data.yOffset;
2736 if (mountedPlayer.direction == -1)
2737 {
2738 vector6.X = vector5.X - scutlixEyePositions[num3 + i].X - (float)_data.xOffset;
2739 }
2740 else
2741 {
2742 vector6.X = vector5.X + scutlixEyePositions[num3 + i].X + (float)_data.xOffset;
2743 }
2745 vector7.Normalize();
2746 vector7 *= 14f;
2747 int damage3 = 150;
2748 vector6 += vector7;
2750 }
2751 break;
2752 }
2753 case 46:
2754 if (Main.myPlayer == mountedPlayer.whoAmI)
2755 {
2756 if (_abilityCooldown <= 10)
2757 {
2758 int damage = 120;
2759 Vector2 vector = mountedPlayer.Center + new Vector2(mountedPlayer.width * -mountedPlayer.direction, 26f);
2760 Vector2 vector2 = new Vector2(0f, -4f).RotatedByRandom(0.10000000149011612);
2762 SoundEngine.PlaySound(SoundID.Item89.SoundId, (int)vector.X, (int)vector.Y, SoundID.Item89.Style, 0.2f);
2763 }
2764 int type = 14;
2765 int damage2 = 100;
2767 Vector2 vector3 = default(Vector2);
2768 vector3.X = mountedPlayer.position.X + (float)(mountedPlayer.width / 2);
2769 vector3.Y = mountedPlayer.position.Y + (float)mountedPlayer.height;
2770 Vector2 vector4 = new Vector2(vector3.X + (float)(mountedPlayer.width * mountedPlayer.direction), vector3.Y - 12f);
2772 v = v.SafeNormalize(Vector2.Zero);
2773 v *= 12f;
2774 v = v.RotatedByRandom(0.20000000298023224);
2776 SoundEngine.PlaySound(SoundID.Item11.SoundId, (int)vector4.X, (int)vector4.Y, SoundID.Item11.Style, 0.2f);
2777 }
2778 break;
2779 case 8:
2780 if (Main.myPlayer == mountedPlayer.whoAmI)
2781 {
2782 if (!toggleOn)
2783 {
2784 _abilityActive = false;
2785 }
2786 else if (!_abilityActive)
2787 {
2788 if (mountedPlayer.whoAmI == Main.myPlayer)
2789 {
2790 float num = Main.screenPosition.X + (float)Main.mouseX;
2791 float num2 = Main.screenPosition.Y + (float)Main.mouseY;
2792 float ai = num - mountedPlayer.position.X;
2793 float ai2 = num2 - mountedPlayer.position.Y;
2794 Projectile.NewProjectile(GetProjectileSpawnSource(mountedPlayer), num, num2, 0f, 0f, 453, 0, 0f, mountedPlayer.whoAmI, ai, ai2);
2795 }
2796 _abilityActive = true;
2797 }
2798 }
2799 else
2800 {
2802 }
2803 break;
2804 }
2805 }
2806
2808 {
2809 bool flag = DoesHoverIgnoresFatigue();
2810 bool flag2 = _frameState == 2 || _frameState == 4;
2811 if (_type == 49)
2812 {
2813 flag2 = _frameState == 4;
2814 }
2815 if (flag2)
2816 {
2817 bool flag3 = true;
2818 float num = 1f;
2819 float num2 = mountedPlayer.gravity / Player.defaultGravity;
2820 if (mountedPlayer.slowFall)
2821 {
2822 num2 /= 3f;
2823 }
2824 if (num2 < 0.25f)
2825 {
2826 num2 = 0.25f;
2827 }
2828 if (!flag)
2829 {
2830 if (_flyTime > 0)
2831 {
2832 _flyTime--;
2833 }
2834 else if (_fatigue < _fatigueMax)
2835 {
2836 _fatigue += num2;
2837 }
2838 else
2839 {
2840 flag3 = false;
2841 }
2842 }
2843 if (_type == 12 && !mountedPlayer.MountFishronSpecial)
2844 {
2845 num = 0.5f;
2846 }
2847 float num3 = _fatigue / _fatigueMax;
2848 if (flag)
2849 {
2850 num3 = 0f;
2851 }
2852 bool flag4 = true;
2853 if (_type == 48)
2854 {
2855 flag4 = false;
2856 }
2857 float num4 = 4f * num3;
2858 float num5 = 4f * num3;
2859 bool flag5 = false;
2860 if (_type == 48)
2861 {
2862 num4 = 0f;
2863 num5 = 0f;
2864 if (!flag3)
2865 {
2866 flag5 = true;
2867 }
2868 if (mountedPlayer.controlDown)
2869 {
2870 num5 = 8f;
2871 }
2872 }
2873 if (num4 == 0f)
2874 {
2875 num4 = -0.001f;
2876 }
2877 if (num5 == 0f)
2878 {
2879 num5 = -0.001f;
2880 }
2881 float num6 = mountedPlayer.velocity.Y;
2882 if (flag4 && (mountedPlayer.controlUp || mountedPlayer.controlJump) && flag3)
2883 {
2884 num4 = -2f - 6f * (1f - num3);
2885 if (_type == 48)
2886 {
2887 num4 /= 3f;
2888 }
2889 num6 -= _data.acceleration * num;
2890 }
2891 else if (mountedPlayer.controlDown)
2892 {
2893 num6 += _data.acceleration * num;
2894 num5 = 8f;
2895 }
2896 else if (flag5)
2897 {
2898 float num7 = mountedPlayer.gravity * mountedPlayer.gravDir;
2899 num6 += num7;
2900 num5 = 4f;
2901 }
2902 else
2903 {
2904 _ = mountedPlayer.jump;
2905 }
2906 if (num6 < num4)
2907 {
2908 num6 = ((!(num4 - num6 < _data.acceleration)) ? (num6 + _data.acceleration * num) : num4);
2909 }
2910 else if (num6 > num5)
2911 {
2912 num6 = ((!(num6 - num5 < _data.acceleration)) ? (num6 - _data.acceleration * num) : num5);
2913 }
2914 mountedPlayer.velocity.Y = num6;
2915 if (num4 == -0.001f && num5 == -0.001f && num6 == -0.001f)
2916 {
2917 mountedPlayer.position.Y -= -0.001f;
2918 }
2919 mountedPlayer.fallStart = (int)(mountedPlayer.position.Y / 16f);
2920 }
2921 else if (!flag)
2922 {
2923 mountedPlayer.velocity.Y += mountedPlayer.gravity * mountedPlayer.gravDir;
2924 }
2925 else if (mountedPlayer.velocity.Y == 0f)
2926 {
2927 Vector2 velocity = Vector2.UnitY * mountedPlayer.gravDir * 1f;
2928 if (Collision.TileCollision(mountedPlayer.position, velocity, mountedPlayer.width, mountedPlayer.height, fallThrough: false, fall2: false, (int)mountedPlayer.gravDir).Y != 0f || mountedPlayer.controlDown)
2929 {
2930 mountedPlayer.velocity.Y = 0.001f;
2931 }
2932 }
2933 else if (mountedPlayer.velocity.Y == -0.001f)
2934 {
2935 mountedPlayer.velocity.Y -= -0.001f;
2936 }
2937 if (_type == 7)
2938 {
2939 float num8 = mountedPlayer.velocity.X / _data.dashSpeed;
2940 if ((double)num8 > 0.95)
2941 {
2942 num8 = 0.95f;
2943 }
2944 if ((double)num8 < -0.95)
2945 {
2946 num8 = -0.95f;
2947 }
2948 float fullRotation = (float)Math.PI / 4f * num8 / 2f;
2949 float num9 = Math.Abs(2f - (float)_frame / 2f) / 2f;
2950 Lighting.AddLight((int)(mountedPlayer.position.X + (float)(mountedPlayer.width / 2)) / 16, (int)(mountedPlayer.position.Y + (float)(mountedPlayer.height / 2)) / 16, 0.4f, 0.2f * num9, 0f);
2951 mountedPlayer.fullRotation = fullRotation;
2952 }
2953 else if (_type == 8)
2954 {
2955 float num10 = mountedPlayer.velocity.X / _data.dashSpeed;
2956 if ((double)num10 > 0.95)
2957 {
2958 num10 = 0.95f;
2959 }
2960 if ((double)num10 < -0.95)
2961 {
2962 num10 = -0.95f;
2963 }
2964 float fullRotation2 = (float)Math.PI / 4f * num10 / 2f;
2965 mountedPlayer.fullRotation = fullRotation2;
2967 float outerRingRotation = obj.outerRingRotation;
2968 outerRingRotation += mountedPlayer.velocity.X / 80f;
2969 if (outerRingRotation > (float)Math.PI)
2970 {
2971 outerRingRotation -= (float)Math.PI * 2f;
2972 }
2973 else if (outerRingRotation < -(float)Math.PI)
2974 {
2975 outerRingRotation += (float)Math.PI * 2f;
2976 }
2977 obj.outerRingRotation = outerRingRotation;
2978 }
2979 else if (_type == 23)
2980 {
2981 float value = (0f - mountedPlayer.velocity.Y) / _data.dashSpeed;
2982 value = MathHelper.Clamp(value, -1f, 1f);
2983 float value2 = mountedPlayer.velocity.X / _data.dashSpeed;
2984 value2 = MathHelper.Clamp(value2, -1f, 1f);
2985 float num11 = -(float)Math.PI / 16f * value * (float)mountedPlayer.direction;
2986 float num12 = (float)Math.PI / 16f * value2;
2987 float fullRotation3 = num11 + num12;
2988 mountedPlayer.fullRotation = fullRotation3;
2989 mountedPlayer.fullRotationOrigin = new Vector2(mountedPlayer.width / 2, mountedPlayer.height);
2990 }
2991 return true;
2992 }
2993
2995 {
2996 if (_type != 7 && _type != 8 && _type != 12 && _type != 23 && _type != 44)
2997 {
2998 return _type == 49;
2999 }
3000 return true;
3001 }
3002
3004 {
3005 float num = Utils.Clamp(player.velocity.X / 10f, -1f, 1f);
3006 float num2 = 0f;
3007 Point point = player.Center.ToTileCoordinates();
3008 float num3 = 0.5f;
3009 if (WorldGen.InAPlaceWithWind(point.X, point.Y, 1, 1))
3010 {
3011 num3 = 1f;
3012 }
3013 num2 = (float)Math.Sin((float)player.miscCounter / 300f * ((float)Math.PI * 2f) * 3f) * ((float)Math.PI / 4f) * Math.Abs(Main.WindForVisuals) * 0.5f + (float)Math.PI / 4f * (0f - Main.WindForVisuals) * 0.5f;
3014 num2 *= num3;
3015 return num * (float)Math.Sin((float)player.miscCounter / 150f * ((float)Math.PI * 2f) * 3f) * ((float)Math.PI / 4f) * 0.5f + num * ((float)Math.PI / 4f) * 0.5f + num2;
3016 }
3017
3019 {
3020 return new Vector2(29 * player.direction, -4f);
3021 }
3022
3023 public void UpdateFrame(Player mountedPlayer, int state, Vector2 velocity)
3024 {
3025 if (_frameState != state)
3026 {
3028 if (_type != 48 || (state != 1 && state != 2))
3029 {
3030 _frameCounter = 0f;
3031 }
3032 }
3033 if (state != 0)
3034 {
3035 _idleTime = 0;
3036 }
3037 if (_data.emitsLight)
3038 {
3039 Point point = mountedPlayer.Center.ToTileCoordinates();
3041 }
3042 switch (_type)
3043 {
3044 case 52:
3045 if (state == 4)
3046 {
3047 state = 2;
3048 }
3049 break;
3050 case 17:
3052 break;
3053 case 5:
3054 if (state != 2)
3055 {
3056 _frameExtra = 0;
3057 _frameExtraCounter = 0f;
3058 }
3059 break;
3060 case 7:
3061 state = 2;
3062 break;
3063 case 49:
3064 {
3065 if (state != 4 && mountedPlayer.wet)
3066 {
3067 _frameState = (state = 4);
3068 }
3069 velocity.Length();
3070 float num5 = mountedPlayer.velocity.Y * 0.05f;
3071 if (mountedPlayer.direction < 0)
3072 {
3073 num5 *= -1f;
3074 }
3075 mountedPlayer.fullRotation = num5;
3076 mountedPlayer.fullRotationOrigin = new Vector2(mountedPlayer.width / 2, mountedPlayer.height / 2);
3077 break;
3078 }
3079 case 43:
3080 if (mountedPlayer.velocity.Y == 0f)
3081 {
3082 mountedPlayer.isPerformingPogostickTricks = false;
3083 }
3084 if (mountedPlayer.isPerformingPogostickTricks)
3085 {
3086 mountedPlayer.fullRotation += (float)mountedPlayer.direction * ((float)Math.PI * 2f) / 30f;
3087 }
3088 else
3089 {
3090 mountedPlayer.fullRotation = (float)Math.Sign(mountedPlayer.velocity.X) * Utils.GetLerpValue(0f, RunSpeed - 0.2f, Math.Abs(mountedPlayer.velocity.X), clamped: true) * 0.4f;
3091 }
3092 mountedPlayer.fullRotationOrigin = new Vector2(mountedPlayer.width / 2, (float)mountedPlayer.height * 0.8f);
3093 break;
3094 case 9:
3095 if (_aiming)
3096 {
3097 break;
3098 }
3099 _frameExtraCounter += 1f;
3100 if (_frameExtraCounter >= 12f)
3101 {
3102 _frameExtraCounter = 0f;
3103 _frameExtra++;
3104 if (_frameExtra >= 6)
3105 {
3106 _frameExtra = 0;
3107 }
3108 }
3109 break;
3110 case 46:
3111 if (state != 0)
3112 {
3113 state = 1;
3114 }
3115 if (!_aiming)
3116 {
3117 if (state == 0)
3118 {
3119 _frameExtra = 12;
3120 _frameExtraCounter = 0f;
3121 break;
3122 }
3123 if (_frameExtra < 12)
3124 {
3125 _frameExtra = 12;
3126 }
3127 _frameExtraCounter += Math.Abs(velocity.X);
3128 if (_frameExtraCounter >= 8f)
3129 {
3130 _frameExtraCounter = 0f;
3131 _frameExtra++;
3132 if (_frameExtra >= 24)
3133 {
3134 _frameExtra = 12;
3135 }
3136 }
3137 break;
3138 }
3139 if (_frameExtra < 24)
3140 {
3141 _frameExtra = 24;
3142 }
3143 _frameExtraCounter += 1f;
3144 if (_frameExtraCounter >= 3f)
3145 {
3146 _frameExtraCounter = 0f;
3147 _frameExtra++;
3148 if (_frameExtra >= 27)
3149 {
3150 _frameExtra = 24;
3151 }
3152 }
3153 break;
3154 case 8:
3155 {
3156 if (state != 0 && state != 1)
3157 {
3158 break;
3159 }
3160 Vector2 position = default(Vector2);
3161 position.X = mountedPlayer.position.X;
3162 position.Y = mountedPlayer.position.Y + (float)mountedPlayer.height;
3163 int num6 = (int)(position.X / 16f);
3164 _ = position.Y / 16f;
3165 float num7 = 0f;
3166 float num8 = mountedPlayer.width;
3167 while (num8 > 0f)
3168 {
3169 float num9 = (float)((num6 + 1) * 16) - position.X;
3170 if (num9 > num8)
3171 {
3172 num9 = num8;
3173 }
3174 num7 += Collision.GetTileRotation(position) * num9;
3175 num8 -= num9;
3176 position.X += num9;
3177 num6++;
3178 }
3179 float num10 = num7 / (float)mountedPlayer.width - mountedPlayer.fullRotation;
3180 float num11 = 0f;
3181 float num12 = (float)Math.PI / 20f;
3182 if (num10 < 0f)
3183 {
3184 num11 = ((!(num10 > 0f - num12)) ? (0f - num12) : num10);
3185 }
3186 else if (num10 > 0f)
3187 {
3188 num11 = ((!(num10 < num12)) ? num12 : num10);
3189 }
3190 if (num11 != 0f)
3191 {
3192 mountedPlayer.fullRotation += num11;
3193 if (mountedPlayer.fullRotation > (float)Math.PI / 4f)
3194 {
3195 mountedPlayer.fullRotation = (float)Math.PI / 4f;
3196 }
3197 if (mountedPlayer.fullRotation < -(float)Math.PI / 4f)
3198 {
3199 mountedPlayer.fullRotation = -(float)Math.PI / 4f;
3200 }
3201 }
3202 break;
3203 }
3204 case 10:
3205 case 40:
3206 case 41:
3207 case 42:
3208 case 47:
3209 {
3210 bool flag5 = Math.Abs(velocity.X) > DashSpeed - RunSpeed / 2f;
3211 if (state == 1)
3212 {
3213 bool flag6 = false;
3214 if (flag5)
3215 {
3216 state = 5;
3217 if (_frameExtra < 6)
3218 {
3219 flag6 = true;
3220 }
3221 _frameExtra++;
3222 }
3223 else
3224 {
3225 _frameExtra = 0;
3226 }
3227 if ((_type == 10 || _type == 47) && flag6)
3228 {
3229 int type = 6;
3230 if (_type == 10)
3231 {
3232 type = Utils.SelectRandom<int>(Main.rand, 176, 177, 179);
3233 }
3234 Vector2 vector8 = mountedPlayer.Center + new Vector2(mountedPlayer.width * mountedPlayer.direction, 0f);
3235 Vector2 vector9 = new Vector2(40f, 30f);
3236 float num22 = (float)Math.PI * 2f * Main.rand.NextFloat();
3237 for (float num23 = 0f; num23 < 14f; num23 += 1f)
3238 {
3240 Vector2 vector10 = Vector2.UnitY.RotatedBy(num23 * ((float)Math.PI * 2f) / 14f + num22);
3241 vector10 *= 0.2f * (float)_frameExtra;
3242 dust5.position = vector8 + vector10 * vector9;
3243 dust5.velocity = vector10 + new Vector2(RunSpeed - (float)(Math.Sign(velocity.X) * _frameExtra * 2), 0f);
3244 dust5.noGravity = true;
3245 if (_type == 47)
3246 {
3247 dust5.noLightEmittence = true;
3248 }
3249 dust5.scale = 1f + Main.rand.NextFloat() * 0.8f;
3250 dust5.fadeIn = Main.rand.NextFloat() * 2f;
3251 dust5.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer);
3252 }
3253 }
3254 }
3255 if (_type == 10 && flag5)
3256 {
3257 Dust obj3 = Main.dust[Dust.NewDust(mountedPlayer.position, mountedPlayer.width, mountedPlayer.height, Utils.SelectRandom<int>(Main.rand, 176, 177, 179))];
3258 obj3.velocity = Vector2.Zero;
3259 obj3.noGravity = true;
3260 obj3.scale = 0.5f + Main.rand.NextFloat() * 0.8f;
3261 obj3.fadeIn = 1f + Main.rand.NextFloat() * 2f;
3262 obj3.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer);
3263 }
3264 if (_type == 47 && flag5 && velocity.Y == 0f)
3265 {
3266 int num24 = (int)mountedPlayer.Center.X / 16;
3267 int num25 = (int)(mountedPlayer.position.Y + (float)mountedPlayer.height - 1f) / 16;
3268 Tile tile = Main.tile[num24, num25 + 1];
3269 if (tile != null && tile.active() && tile.liquid == 0 && WorldGen.SolidTileAllowBottomSlope(num24, num25 + 1))
3270 {
3272 {
3273 PositionInWorld = new Vector2(num24 * 16 + 8, num25 * 16 + 16)
3274 }, mountedPlayer.whoAmI);
3275 }
3276 }
3277 break;
3278 }
3279 case 44:
3280 {
3281 state = 1;
3282 bool flag3 = Math.Abs(velocity.X) > DashSpeed - RunSpeed / 4f;
3283 if (_mountSpecificData == null)
3284 {
3285 _mountSpecificData = false;
3286 }
3288 if (flag4 && !flag3)
3289 {
3290 _mountSpecificData = false;
3291 }
3292 else if (!flag4 && flag3)
3293 {
3294 _mountSpecificData = true;
3295 Vector2 vector5 = mountedPlayer.Center + new Vector2(mountedPlayer.width * mountedPlayer.direction, 0f);
3296 Vector2 vector6 = new Vector2(40f, 30f);
3297 float num17 = (float)Math.PI * 2f * Main.rand.NextFloat();
3298 for (float num18 = 0f; num18 < 20f; num18 += 1f)
3299 {
3300 Dust dust4 = Main.dust[Dust.NewDust(vector5, 0, 0, 228)];
3301 Vector2 vector7 = Vector2.UnitY.RotatedBy(num18 * ((float)Math.PI * 2f) / 20f + num17);
3302 vector7 *= 0.8f;
3303 dust4.position = vector5 + vector7 * vector6;
3304 dust4.velocity = vector7 + new Vector2(RunSpeed - (float)Math.Sign(velocity.Length()), 0f);
3305 if (velocity.X > 0f)
3306 {
3307 dust4.velocity.X *= -1f;
3308 }
3309 if (Main.rand.Next(2) == 0)
3310 {
3311 dust4.velocity *= 0.5f;
3312 }
3313 dust4.noGravity = true;
3314 dust4.scale = 1.5f + Main.rand.NextFloat() * 0.8f;
3315 dust4.fadeIn = 0f;
3316 dust4.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer);
3317 }
3318 }
3319 int num19 = (int)RunSpeed - (int)Math.Abs(velocity.X);
3320 if (num19 <= 0)
3321 {
3322 num19 = 1;
3323 }
3324 if (Main.rand.Next(num19) == 0)
3325 {
3326 int num20 = 22;
3327 int num21 = mountedPlayer.width / 2 + 10;
3328 Vector2 bottom = mountedPlayer.Bottom;
3329 bottom.X -= num21;
3330 bottom.Y -= num20 - 6;
3331 Dust obj2 = Main.dust[Dust.NewDust(bottom, num21 * 2, num20, 228)];
3332 obj2.velocity = Vector2.Zero;
3333 obj2.noGravity = true;
3334 obj2.noLight = true;
3335 obj2.scale = 0.25f + Main.rand.NextFloat() * 0.8f;
3336 obj2.fadeIn = 0.5f + Main.rand.NextFloat() * 2f;
3337 obj2.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer);
3338 }
3339 break;
3340 }
3341 case 45:
3342 {
3343 bool flag = Math.Abs(velocity.X) > DashSpeed * 0.9f;
3344 if (_mountSpecificData == null)
3345 {
3346 _mountSpecificData = false;
3347 }
3349 if (flag2 && !flag)
3350 {
3351 _mountSpecificData = false;
3352 }
3353 else if (!flag2 && flag)
3354 {
3355 _mountSpecificData = true;
3356 Vector2 vector2 = mountedPlayer.Center + new Vector2(mountedPlayer.width * mountedPlayer.direction, 0f);
3357 Vector2 vector3 = new Vector2(40f, 30f);
3358 float num13 = (float)Math.PI * 2f * Main.rand.NextFloat();
3359 for (float num14 = 0f; num14 < 20f; num14 += 1f)
3360 {
3361 Dust dust2 = Main.dust[Dust.NewDust(vector2, 0, 0, 6)];
3362 Vector2 vector4 = Vector2.UnitY.RotatedBy(num14 * ((float)Math.PI * 2f) / 20f + num13);
3363 vector4 *= 0.8f;
3364 dust2.position = vector2 + vector4 * vector3;
3365 dust2.velocity = vector4 + new Vector2(RunSpeed - (float)Math.Sign(velocity.Length()), 0f);
3366 if (velocity.X > 0f)
3367 {
3368 dust2.velocity.X *= -1f;
3369 }
3370 if (Main.rand.Next(2) == 0)
3371 {
3372 dust2.velocity *= 0.5f;
3373 }
3374 dust2.noGravity = true;
3375 dust2.scale = 1.5f + Main.rand.NextFloat() * 0.8f;
3376 dust2.fadeIn = 0f;
3377 dust2.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer);
3378 }
3379 }
3380 if (flag)
3381 {
3382 int num15 = Utils.SelectRandom(Main.rand, new short[3] { 6, 6, 31 });
3383 int num16 = 6;
3384 Dust dust3 = Main.dust[Dust.NewDust(mountedPlayer.Center - new Vector2(num16, num16 - 12), num16 * 2, num16 * 2, num15)];
3385 dust3.velocity = mountedPlayer.velocity * 0.1f;
3386 if (Main.rand.Next(2) == 0)
3387 {
3388 dust3.noGravity = true;
3389 }
3390 dust3.scale = 0.7f + Main.rand.NextFloat() * 0.8f;
3391 if (Main.rand.Next(3) == 0)
3392 {
3393 dust3.fadeIn = 0.1f;
3394 }
3395 if (num15 == 31)
3396 {
3397 dust3.noGravity = true;
3398 dust3.scale *= 1.5f;
3399 dust3.fadeIn = 0.2f;
3400 }
3401 dust3.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer);
3402 }
3403 break;
3404 }
3405 case 48:
3406 state = 1;
3407 break;
3408 case 39:
3409 _frameExtraCounter += 1f;
3410 if (_frameExtraCounter > 6f)
3411 {
3412 _frameExtraCounter = 0f;
3413 _frameExtra++;
3414 if (_frameExtra > 5)
3415 {
3416 _frameExtra = 0;
3417 }
3418 }
3419 break;
3420 case 50:
3421 if (mountedPlayer.velocity.Y == 0f)
3422 {
3423 _frameExtraCounter = 0f;
3424 _frameExtra = 3;
3425 break;
3426 }
3427 _frameExtraCounter += 1f;
3428 if (Flight())
3429 {
3430 _frameExtraCounter += 1f;
3431 }
3432 if (_frameExtraCounter > 7f)
3433 {
3434 _frameExtraCounter = 0f;
3435 _frameExtra++;
3436 if (_frameExtra > 3)
3437 {
3438 _frameExtra = 0;
3439 }
3440 }
3441 break;
3442 case 14:
3443 {
3444 bool num = Math.Abs(velocity.X) > RunSpeed / 2f;
3445 float num2 = Math.Sign(mountedPlayer.velocity.X);
3446 float num3 = 12f;
3447 float num4 = 40f;
3448 if (!num)
3449 {
3450 mountedPlayer.basiliskCharge = 0f;
3451 }
3452 else
3453 {
3454 mountedPlayer.basiliskCharge = Utils.Clamp(mountedPlayer.basiliskCharge + 1f / 180f, 0f, 1f);
3455 }
3456 if ((double)mountedPlayer.position.Y > Main.worldSurface * 16.0 + 160.0)
3457 {
3458 Lighting.AddLight(mountedPlayer.Center, 0.5f, 0.1f, 0.1f);
3459 }
3460 if (num && velocity.Y == 0f)
3461 {
3462 for (int i = 0; i < 2; i++)
3463 {
3464 Dust obj = Main.dust[Dust.NewDust(mountedPlayer.BottomLeft, mountedPlayer.width, 6, 31)];
3465 obj.velocity = new Vector2(velocity.X * 0.15f, Main.rand.NextFloat() * -2f);
3466 obj.noLight = true;
3467 obj.scale = 0.5f + Main.rand.NextFloat() * 0.8f;
3468 obj.fadeIn = 0.5f + Main.rand.NextFloat() * 1f;
3469 obj.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer);
3470 }
3471 if (mountedPlayer.cMount == 0)
3472 {
3473 mountedPlayer.position += new Vector2(num2 * 24f, 0f);
3474 mountedPlayer.FloorVisuals(Falling: true);
3475 mountedPlayer.position -= new Vector2(num2 * 24f, 0f);
3476 }
3477 }
3478 if (num2 != (float)mountedPlayer.direction)
3479 {
3480 break;
3481 }
3482 for (int j = 0; j < (int)(3f * mountedPlayer.basiliskCharge); j++)
3483 {
3484 Dust dust = Main.dust[Dust.NewDust(mountedPlayer.BottomLeft, mountedPlayer.width, 6, 6)];
3485 Vector2 vector = mountedPlayer.Center + new Vector2(num2 * num4, num3);
3486 dust.position = mountedPlayer.Center + new Vector2(num2 * (num4 - 2f), num3 - 6f + Main.rand.NextFloat() * 12f);
3487 dust.velocity = (dust.position - vector).SafeNormalize(Vector2.Zero) * (3.5f + Main.rand.NextFloat() * 0.5f);
3488 if (dust.velocity.Y < 0f)
3489 {
3490 dust.velocity.Y *= 1f + 2f * Main.rand.NextFloat();
3491 }
3492 dust.velocity += mountedPlayer.velocity * 0.55f;
3493 dust.velocity *= mountedPlayer.velocity.Length() / RunSpeed;
3494 dust.velocity *= mountedPlayer.basiliskCharge;
3495 dust.noGravity = true;
3496 dust.noLight = true;
3497 dust.scale = 0.5f + Main.rand.NextFloat() * 0.8f;
3498 dust.fadeIn = 0.5f + Main.rand.NextFloat() * 1f;
3499 dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer);
3500 }
3501 break;
3502 }
3503 }
3504 switch (state)
3505 {
3506 case 0:
3507 if (_data.idleFrameCount != 0)
3508 {
3509 if (_type == 5)
3510 {
3511 if (_fatigue != 0f)
3512 {
3513 if (_idleTime == 0)
3514 {
3516 }
3517 }
3518 else
3519 {
3520 _idleTime = 0;
3521 _idleTimeNext = 2;
3522 }
3523 }
3524 else if (_idleTime == 0)
3525 {
3526 _idleTimeNext = Main.rand.Next(900, 1500);
3527 if (_type == 17)
3528 {
3529 _idleTimeNext = Main.rand.Next(120, 300);
3530 }
3531 }
3532 _idleTime++;
3533 }
3534 _frameCounter += 1f;
3536 {
3537 float num29 = _data.idleFrameDelay;
3538 if (_type == 5)
3539 {
3540 num29 *= 2f - 1f * _fatigue / _fatigueMax;
3541 }
3542 int num30 = (int)((float)(_idleTime - _idleTimeNext) / num29);
3543 int idleFrameCount = _data.idleFrameCount;
3544 if (num30 >= idleFrameCount)
3545 {
3546 if (_data.idleFrameLoop)
3547 {
3550 }
3551 else
3552 {
3553 _frameCounter = 0f;
3555 _idleTime = 0;
3556 }
3557 }
3558 else
3559 {
3560 _frame = _data.idleFrameStart + num30;
3561 if (_data.idleFrameLoop)
3562 {
3564 {
3566 }
3567 }
3569 {
3571 }
3572 }
3573 if (_type == 5)
3574 {
3576 }
3577 if (_type == 17)
3578 {
3580 _frame = 0;
3581 }
3582 }
3583 else
3584 {
3586 {
3588 _frame++;
3589 }
3591 {
3593 }
3594 }
3595 break;
3596 case 1:
3597 {
3598 float num26;
3599 switch (_type)
3600 {
3601 case 9:
3602 case 46:
3603 num26 = ((!_flipDraw) ? Math.Abs(velocity.X) : (0f - Math.Abs(velocity.X)));
3604 break;
3605 case 44:
3606 num26 = Math.Max(1f, Math.Abs(velocity.X) * 0.25f);
3607 break;
3608 case 48:
3609 num26 = Math.Max(0.5f, velocity.Length() * 0.125f);
3610 break;
3611 case 6:
3612 num26 = (_flipDraw ? velocity.X : (0f - velocity.X));
3613 break;
3614 case 13:
3615 num26 = (_flipDraw ? velocity.X : (0f - velocity.X));
3616 break;
3617 case 50:
3618 num26 = Math.Abs(velocity.X) * 0.5f;
3619 break;
3620 default:
3621 num26 = Math.Abs(velocity.X);
3622 break;
3623 }
3625 if (num26 >= 0f)
3626 {
3628 {
3630 _frame++;
3631 }
3633 {
3635 }
3636 }
3637 else
3638 {
3639 if (_frameCounter < 0f)
3640 {
3642 _frame--;
3643 }
3645 {
3646 _frame = _data.runningFrameStart + _data.runningFrameCount - 1;
3647 }
3648 }
3649 break;
3650 }
3651 case 3:
3652 _frameCounter += 1f;
3654 {
3656 _frame++;
3657 }
3659 {
3661 }
3662 break;
3663 case 2:
3664 _frameCounter += 1f;
3665 if (_frameCounter > (float)_data.inAirFrameDelay)
3666 {
3668 _frame++;
3669 }
3671 {
3673 }
3674 if (_type == 4)
3675 {
3676 if (velocity.Y < 0f)
3677 {
3678 _frame = 3;
3679 }
3680 else
3681 {
3682 _frame = 6;
3683 }
3684 }
3685 else if (_type == 52)
3686 {
3687 if (velocity.Y < 0f)
3688 {
3690 }
3692 {
3693 _frameCounter = 0f;
3694 }
3695 }
3696 else if (_type == 5)
3697 {
3698 float num27 = _fatigue / _fatigueMax;
3699 _frameExtraCounter += 6f - 4f * num27;
3701 {
3702 _frameExtra++;
3704 }
3706 {
3708 }
3709 }
3710 else if (_type == 23)
3711 {
3712 float num28 = mountedPlayer.velocity.Length();
3713 if (num28 < 1f)
3714 {
3715 _frame = 0;
3716 _frameCounter = 0f;
3717 }
3718 else if (num28 > 5f)
3719 {
3720 _frameCounter += 1f;
3721 }
3722 }
3723 break;
3724 case 4:
3725 {
3726 int num31 = (int)((Math.Abs(velocity.X) + Math.Abs(velocity.Y)) / 2f);
3728 if (_frameCounter > (float)_data.swimFrameDelay)
3729 {
3731 _frame++;
3732 }
3734 {
3736 }
3737 if (Type == 37 && velocity.X == 0f)
3738 {
3739 _frame = 4;
3740 }
3741 break;
3742 }
3743 case 5:
3744 {
3745 float num26 = _type switch
3746 {
3747 9 => (!_flipDraw) ? Math.Abs(velocity.X) : (0f - Math.Abs(velocity.X)),
3748 6 => _flipDraw ? velocity.X : (0f - velocity.X),
3749 13 => _flipDraw ? velocity.X : (0f - velocity.X),
3750 _ => Math.Abs(velocity.X),
3751 };
3753 if (num26 >= 0f)
3754 {
3756 {
3758 _frame++;
3759 }
3761 {
3763 }
3764 }
3765 else
3766 {
3767 if (_frameCounter < 0f)
3768 {
3770 _frame--;
3771 }
3773 {
3774 _frame = _data.dashingFrameStart + _data.dashingFrameCount - 1;
3775 }
3776 }
3777 break;
3778 }
3779 }
3780 }
3781
3783 {
3784 if (_frameState == state || (state != 2 && state != 3) || !CanHover() || mountedPlayer.controlUp || mountedPlayer.controlDown || mountedPlayer.controlJump)
3785 {
3786 return;
3787 }
3788 Vector2 velocity = Vector2.UnitY * mountedPlayer.gravDir;
3789 if (Collision.TileCollision(mountedPlayer.position + new Vector2(0f, -0.001f), velocity, mountedPlayer.width, mountedPlayer.height, fallThrough: false, fall2: false, (int)mountedPlayer.gravDir).Y != 0f)
3790 {
3792 {
3793 mountedPlayer.position.Y += -0.001f;
3794 return;
3795 }
3796 float num = mountedPlayer.gravity * mountedPlayer.gravDir;
3797 mountedPlayer.position.Y -= mountedPlayer.velocity.Y;
3798 mountedPlayer.velocity.Y -= num;
3799 }
3800 }
3801
3803 {
3804 if (mountedPlayer.velocity.X == 0f || ((mountedPlayer.slippy || mountedPlayer.slippy2 || mountedPlayer.windPushed) && !mountedPlayer.controlLeft && !mountedPlayer.controlRight))
3805 {
3806 return 0;
3807 }
3808 return 1;
3809 }
3810
3812 {
3813 if ((_frameState == 3 || _frameState == 2) && !mountedPlayer.controlUp && !mountedPlayer.controlDown && !mountedPlayer.controlJump)
3814 {
3815 Vector2 velocity = Vector2.UnitY * mountedPlayer.gravDir * 4f;
3816 if (Collision.TileCollision(mountedPlayer.position, velocity, mountedPlayer.width, mountedPlayer.height, fallThrough: false, fall2: false, (int)mountedPlayer.gravDir).Y == 0f)
3817 {
3819 }
3820 }
3821 }
3822
3824 {
3825 if (state != 2)
3826 {
3827 if (_frameExtraCounter != 0f || _frameExtra != 0)
3828 {
3829 if (_frameExtraCounter == -1f)
3830 {
3831 _frameExtraCounter = 0f;
3832 _frameExtra = 1;
3833 }
3834 if ((_frameExtraCounter += 1f) >= 6f)
3835 {
3836 _frameExtraCounter = 0f;
3837 if (_frameExtra > 0)
3838 {
3839 _frameExtra--;
3840 }
3841 }
3842 }
3843 else
3844 {
3845 _frameExtra = 0;
3846 _frameExtraCounter = 0f;
3847 }
3848 }
3849 else if (velocity.Y >= 0f)
3850 {
3851 if (_frameExtra < 1)
3852 {
3853 _frameExtra = 1;
3854 }
3855 if (_frameExtra == 2)
3856 {
3857 _frameExtraCounter = -1f;
3858 }
3859 else if ((_frameExtraCounter += 1f) >= 6f)
3860 {
3861 _frameExtraCounter = 0f;
3862 if (_frameExtra < 2)
3863 {
3864 _frameExtra++;
3865 }
3866 }
3867 }
3868 if (state != 2 && state != 0 && state != 3 && state != 4)
3869 {
3870 EmitGolfCartWheelDust(mountedPlayer, mountedPlayer.Bottom + new Vector2(mountedPlayer.direction * -20, 0f));
3871 EmitGolfCartWheelDust(mountedPlayer, mountedPlayer.Bottom + new Vector2(mountedPlayer.direction * 20, 0f));
3872 }
3873 EmitGolfCartlight(mountedPlayer.Bottom + new Vector2(mountedPlayer.direction * 40, -20f), mountedPlayer.direction);
3874 }
3875
3877 {
3878 Vector2 position = mountedPlayer.Bottom + new Vector2(-mountedPlayer.direction * 34, (0f - mountedPlayer.gravDir) * 12f);
3879 Dust dust = Dust.NewDustDirect(position, 0, 0, 31, -mountedPlayer.direction, (0f - mountedPlayer.gravDir) * 0.24f, 100);
3880 dust.position = position;
3881 dust.velocity *= 0.1f;
3882 dust.velocity += new Vector2(-mountedPlayer.direction, (0f - mountedPlayer.gravDir) * 0.25f);
3883 dust.scale = 0.5f;
3884 if (mountedPlayer.velocity.X != 0f)
3885 {
3886 dust.velocity += new Vector2((float)Math.Sign(mountedPlayer.velocity.X) * 1.3f, 0f);
3887 }
3888 if (rushing)
3889 {
3890 dust.fadeIn = 0.8f;
3891 }
3892 }
3893
3895 {
3896 float num = 0f;
3897 if (playerDirection == -1)
3898 {
3899 num = (float)Math.PI;
3900 }
3901 float num2 = (float)Math.PI / 32f;
3902 int num3 = 5;
3903 float num4 = 200f;
3904 DelegateMethods.v2_1 = worldLocation.ToTileCoordinates().ToVector2();
3905 DelegateMethods.f_1 = num4 / 16f;
3906 DelegateMethods.v3_1 = new Vector3(0.7f, 0.7f, 0.7f);
3907 for (float num5 = 0f; num5 < (float)num3; num5 += 1f)
3908 {
3909 Vector2 vector = (num + num2 * (num5 - (float)(num3 / 2))).ToRotationVector2();
3911 }
3912 }
3913
3914 private static bool ShouldGolfCartEmitLight()
3915 {
3916 return true;
3917 }
3918
3920 {
3921 if (Main.rand.Next(5) != 0)
3922 {
3923 return;
3924 }
3925 Point p = (legSpot + new Vector2(0f, mountedPlayer.gravDir * 2f)).ToTileCoordinates();
3926 if (!WorldGen.InWorld(p.X, p.Y, 10))
3927 {
3928 return;
3929 }
3931 if (WorldGen.SolidTile(p))
3932 {
3934 if (num > 1)
3935 {
3936 num = 1;
3937 }
3938 Vector2 vector = new Vector2(-mountedPlayer.direction, (0f - mountedPlayer.gravDir) * 1f);
3939 for (int i = 0; i < num; i++)
3940 {
3942 obj.velocity *= 0.2f;
3943 obj.velocity += vector;
3944 obj.position = legSpot;
3945 obj.scale *= 0.8f;
3946 obj.fadeIn *= 0.8f;
3947 }
3948 }
3949 }
3950
3952 {
3953 if (Main.rand.Next(10) == 0)
3954 {
3955 Vector2 vector = Main.rand.NextVector2Square(-1f, 1f) * new Vector2(22f, 10f);
3956 Vector2 vector2 = new Vector2(0f, 10f) * mountedPlayer.Directions;
3957 Vector2 pos = mountedPlayer.Center + vector2 + vector;
3958 pos = mountedPlayer.RotatedRelativePoint(pos);
3959 Dust dust = Dust.NewDustPerfect(pos, dustType);
3960 dust.noGravity = true;
3961 dust.fadeIn = 0.6f;
3962 dust.scale = 0.4f;
3963 dust.velocity *= 0.25f;
3964 dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMinecart, mountedPlayer);
3965 }
3966 }
3967
3969 {
3970 float num = Math.Abs(mountedPlayer.velocity.X);
3971 if (!(num < 1f) && (!(num < 6f) || _frame == 0))
3972 {
3973 Vector2 vector = Main.rand.NextVector2Square(-1f, 1f) * new Vector2(3f, 3f);
3974 Vector2 vector2 = new Vector2(-10f, -4f) * mountedPlayer.Directions;
3975 Vector2 pos = mountedPlayer.Center + vector2 + vector;
3976 pos = mountedPlayer.RotatedRelativePoint(pos);
3977 Dust dust = Dust.NewDustPerfect(pos, dustType);
3978 dust.noGravity = true;
3979 dust.fadeIn = 0.6f;
3980 dust.scale = 1.8f;
3981 dust.velocity *= 0.25f;
3982 dust.velocity.Y -= 2f;
3983 dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMinecart, mountedPlayer);
3984 }
3985 }
3986
3988 {
3989 float num = mountedPlayer.velocity.Length();
3990 if (num < 1f && Main.rand.Next(4) != 0)
3991 {
3992 return;
3993 }
3994 int num2 = 1 + (int)num / 6;
3995 while (num2 > 0)
3996 {
3997 num2--;
3998 Vector2 vector = Main.rand.NextVector2Square(-1f, 1f) * new Vector2(3f, 3f);
3999 Vector2 vector2 = new Vector2(-18f, 20f) * mountedPlayer.Directions;
4000 if (num > 6f)
4001 {
4002 vector2.X += 4 * mountedPlayer.direction;
4003 }
4004 if (num2 > 0)
4005 {
4006 vector2 += mountedPlayer.velocity * (num2 / 3);
4007 }
4008 Vector2 pos = mountedPlayer.Center + vector2 + vector;
4009 pos = mountedPlayer.RotatedRelativePoint(pos);
4010 Dust dust = Dust.NewDustPerfect(pos, dustType);
4011 dust.noGravity = true;
4012 dust.fadeIn = 0.6f;
4013 dust.scale = 1.2f;
4014 dust.velocity *= 0.2f;
4015 if (num < 1f)
4016 {
4017 dust.velocity.X -= 0.5f * (float)mountedPlayer.direction;
4018 }
4019 dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMinecart, mountedPlayer);
4020 }
4021 }
4022
4024 {
4025 float num = mountedPlayer.velocity.Length();
4026 if ((num < 1f && Main.rand.Next(6) != 0) || (num < 3f && Main.rand.Next(3) != 0))
4027 {
4028 return;
4029 }
4030 int num2 = 1 + (int)num / 6;
4031 while (num2 > 0)
4032 {
4033 num2--;
4034 float num3 = Main.rand.NextFloat() * 2f;
4035 Vector2 vector = Main.rand.NextVector2Square(-1f, 1f) * new Vector2(3f, 8f);
4036 Vector2 vector2 = new Vector2(-18f, 4f) * mountedPlayer.Directions;
4037 vector2.X += num * (float)mountedPlayer.direction * 0.5f + (float)(mountedPlayer.direction * num2) * num3;
4038 if (num2 > 0)
4039 {
4040 vector2 += mountedPlayer.velocity * (num2 / 3);
4041 }
4042 Vector2 pos = mountedPlayer.Center + vector2 + vector;
4043 pos = mountedPlayer.RotatedRelativePoint(pos);
4044 Dust dust = Dust.NewDustPerfect(pos, 139 + Main.rand.Next(4));
4045 dust.noGravity = true;
4046 dust.fadeIn = 0.6f;
4047 dust.scale = 0.5f + num3 / 2f;
4048 dust.velocity *= 0.2f;
4049 if (num < 1f)
4050 {
4051 dust.velocity.X -= 0.5f * (float)mountedPlayer.direction;
4052 }
4053 dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMinecart, mountedPlayer);
4054 }
4055 }
4056
4058 {
4059 mountedPlayer.autoJump = AutoJump;
4060 _shouldSuperCart = MountID.Sets.Cart[_type] && mountedPlayer.UsingSuperCart;
4061 if (_shouldSuperCart)
4062 {
4064 float num = 1f + Math.Abs(mountedPlayer.velocity.X) / RunSpeed * 2.5f;
4065 mountedPlayer.statDefense += (int)(2f * num);
4066 }
4067 switch (_type)
4068 {
4069 case 23:
4070 {
4071 Vector2 pos3 = mountedPlayer.Center + GetWitchBroomTrinketOriginOffset(mountedPlayer) + (GetWitchBroomTrinketRotation(mountedPlayer) + (float)Math.PI / 2f).ToRotationVector2() * 11f;
4072 Vector3 rgb = new Vector3(1f, 0.75f, 0.5f) * 0.85f;
4073 Vector2 vector11 = mountedPlayer.RotatedRelativePoint(pos3);
4075 if (Main.rand.Next(45) == 0)
4076 {
4077 Vector2 vector12 = Main.rand.NextVector2Circular(4f, 4f);
4078 Dust dust2 = Dust.NewDustPerfect(vector11 + vector12, 43, Vector2.Zero, 254, new Color(255, 255, 0, 255), 0.3f);
4079 if (vector12 != Vector2.Zero)
4080 {
4081 dust2.velocity = vector11.DirectionTo(dust2.position) * 0.2f;
4082 }
4083 dust2.fadeIn = 0.3f;
4084 dust2.noLightEmittence = true;
4085 dust2.customData = mountedPlayer;
4086 dust2.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer);
4087 }
4088 float num13 = 0.1f;
4089 num13 += mountedPlayer.velocity.Length() / 30f;
4090 Vector2 pos4 = mountedPlayer.Center + new Vector2(18f - 20f * Main.rand.NextFloat() * (float)mountedPlayer.direction, 12f);
4091 Vector2 pos5 = mountedPlayer.Center + new Vector2(52 * mountedPlayer.direction, -6f);
4092 pos4 = mountedPlayer.RotatedRelativePoint(pos4);
4093 pos5 = mountedPlayer.RotatedRelativePoint(pos5);
4094 if (!(Main.rand.NextFloat() <= num13))
4095 {
4096 break;
4097 }
4098 float num14 = Main.rand.NextFloat();
4099 for (float num15 = 0f; num15 < 1f; num15 += 0.125f)
4100 {
4101 if (Main.rand.Next(15) == 0)
4102 {
4103 Vector2 spinningpoint = ((float)Math.PI * 2f * num15 + num14).ToRotationVector2() * new Vector2(0.5f, 1f) * 4f;
4104 spinningpoint = spinningpoint.RotatedBy(mountedPlayer.fullRotation);
4105 Dust dust3 = Dust.NewDustPerfect(pos4 + spinningpoint, 43, Vector2.Zero, 254, new Color(255, 255, 0, 255), 0.3f);
4106 dust3.velocity = spinningpoint * 0.025f + pos5.DirectionTo(dust3.position) * 0.5f;
4107 dust3.fadeIn = 0.3f;
4108 dust3.noLightEmittence = true;
4109 dust3.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMount, mountedPlayer);
4110 }
4111 }
4112 break;
4113 }
4114 case 25:
4116 break;
4117 case 26:
4119 break;
4120 case 27:
4122 break;
4123 case 28:
4125 break;
4126 case 29:
4128 break;
4129 case 30:
4131 break;
4132 case 31:
4134 break;
4135 case 9:
4136 case 46:
4137 {
4138 if (_type == 46)
4139 {
4140 mountedPlayer.hasJumpOption_Santank = true;
4141 }
4142 Vector2 center = mountedPlayer.Center;
4144 bool flag = false;
4145 float num9 = 1500f;
4146 float num10 = 850f;
4147 for (int i = 0; i < 200; i++)
4148 {
4149 NPC nPC = Main.npc[i];
4150 if (!nPC.CanBeChasedBy(this))
4151 {
4152 continue;
4153 }
4154 Vector2 v = nPC.Center - center;
4155 float num11 = v.Length();
4156 if (num11 < num10 && ((Vector2.Distance(vector10, center) > num11 && num11 < num9) || !flag))
4157 {
4158 bool flag2 = true;
4159 float num12 = Math.Abs(v.ToRotation());
4160 if (mountedPlayer.direction == 1 && (double)num12 > 1.047197594907988)
4161 {
4162 flag2 = false;
4163 }
4164 else if (mountedPlayer.direction == -1 && (double)num12 < 2.0943951461045853)
4165 {
4166 flag2 = false;
4167 }
4168 if (Collision.CanHitLine(center, 0, 0, nPC.position, nPC.width, nPC.height) && flag2)
4169 {
4170 num9 = num11;
4171 vector10 = nPC.Center;
4172 flag = true;
4173 }
4174 }
4175 }
4176 if (flag)
4177 {
4178 bool flag3 = _abilityCooldown == 0;
4179 if (_type == 46)
4180 {
4181 flag3 = _abilityCooldown % 10 == 0;
4182 }
4183 if (flag3 && mountedPlayer.whoAmI == Main.myPlayer)
4184 {
4186 if (_abilityCooldown == 0)
4187 {
4189 }
4191 }
4192 else
4193 {
4195 _abilityCharging = true;
4196 }
4197 }
4198 else
4199 {
4200 _abilityCharging = false;
4202 }
4203 break;
4204 }
4205 case 10:
4206 mountedPlayer.hasJumpOption_Unicorn = true;
4207 if (Math.Abs(mountedPlayer.velocity.X) > mountedPlayer.mount.DashSpeed - mountedPlayer.mount.RunSpeed / 2f)
4208 {
4209 mountedPlayer.noKnockback = true;
4210 }
4211 if (mountedPlayer.itemAnimation > 0 && mountedPlayer.inventory[mountedPlayer.selectedItem].type == 1260)
4212 {
4214 }
4215 break;
4216 case 47:
4217 mountedPlayer.hasJumpOption_WallOfFleshGoat = true;
4218 if (Math.Abs(mountedPlayer.velocity.X) > mountedPlayer.mount.DashSpeed - mountedPlayer.mount.RunSpeed / 2f)
4219 {
4220 mountedPlayer.noKnockback = true;
4221 }
4222 break;
4223 case 14:
4224 mountedPlayer.hasJumpOption_Basilisk = true;
4225 if (Math.Abs(mountedPlayer.velocity.X) > mountedPlayer.mount.DashSpeed - mountedPlayer.mount.RunSpeed / 2f)
4226 {
4227 mountedPlayer.noKnockback = true;
4228 }
4229 break;
4230 case 40:
4231 case 41:
4232 case 42:
4233 if (Math.Abs(mountedPlayer.velocity.X) > mountedPlayer.mount.DashSpeed - mountedPlayer.mount.RunSpeed / 2f)
4234 {
4235 mountedPlayer.noKnockback = true;
4236 }
4237 break;
4238 case 12:
4239 if (mountedPlayer.MountFishronSpecial)
4240 {
4242 vector9 *= 0.4f;
4243 Point point = (mountedPlayer.Center + Vector2.UnitX * mountedPlayer.direction * 20f + mountedPlayer.velocity * 10f).ToTileCoordinates();
4244 if (!WorldGen.SolidTile(point.X, point.Y))
4245 {
4246 Lighting.AddLight(point.X, point.Y, vector9.X, vector9.Y, vector9.Z);
4247 }
4248 else
4249 {
4250 Lighting.AddLight(mountedPlayer.Center + Vector2.UnitX * mountedPlayer.direction * 20f, vector9.X, vector9.Y, vector9.Z);
4251 }
4252 mountedPlayer.meleeDamage += 0.15f;
4253 mountedPlayer.rangedDamage += 0.15f;
4254 mountedPlayer.magicDamage += 0.15f;
4255 mountedPlayer.minionDamage += 0.15f;
4256 }
4257 if (mountedPlayer.statLife <= mountedPlayer.statLifeMax2 / 2)
4258 {
4259 mountedPlayer.MountFishronSpecialCounter = 60f;
4260 }
4262 {
4263 mountedPlayer.MountFishronSpecialCounter = 420f;
4264 }
4265 break;
4266 case 8:
4267 if (mountedPlayer.ownedProjectileCounts[453] < 1)
4268 {
4269 _abilityActive = false;
4270 }
4271 break;
4272 case 11:
4273 {
4274 Vector3 vector4 = new Vector3(0.4f, 0.12f, 0.15f);
4275 float num4 = 1f + Math.Abs(mountedPlayer.velocity.X) / RunSpeed * 2.5f;
4276 int num5 = Math.Sign(mountedPlayer.velocity.X);
4277 if (num5 == 0)
4278 {
4279 num5 = mountedPlayer.direction;
4280 }
4281 if (Main.netMode == 2)
4282 {
4283 break;
4284 }
4285 vector4 *= num4;
4291 float num6 = -24f;
4292 if (mountedPlayer.direction != num5)
4293 {
4294 num6 = -22f;
4295 }
4296 if (num5 == -1)
4297 {
4298 num6 += 1f;
4299 }
4300 Vector2 vector5 = new Vector2(num6 * (float)num5, -19f).RotatedBy(mountedPlayer.fullRotation);
4301 Vector2 vector6 = new Vector2(MathHelper.Lerp(0f, -8f, mountedPlayer.fullRotation / ((float)Math.PI / 4f)), MathHelper.Lerp(0f, 2f, Math.Abs(mountedPlayer.fullRotation / ((float)Math.PI / 4f)))).RotatedBy(mountedPlayer.fullRotation);
4302 if (num5 == Math.Sign(mountedPlayer.fullRotation))
4303 {
4304 vector6 *= MathHelper.Lerp(1f, 0.6f, Math.Abs(mountedPlayer.fullRotation / ((float)Math.PI / 4f)));
4305 }
4306 Vector2 vector7 = mountedPlayer.Bottom + vector5 + vector6;
4307 Vector2 vector8 = mountedPlayer.oldPosition + mountedPlayer.Size * new Vector2(0.5f, 1f) + vector5 + vector6;
4308 if (Vector2.Distance(vector7, vector8) > 3f)
4309 {
4310 int num7 = (int)Vector2.Distance(vector7, vector8) / 3;
4311 if (Vector2.Distance(vector7, vector8) % 3f != 0f)
4312 {
4313 num7++;
4314 }
4315 for (float num8 = 1f; num8 <= (float)num7; num8 += 1f)
4316 {
4317 Dust obj = Main.dust[Dust.NewDust(mountedPlayer.Center, 0, 0, 182)];
4318 obj.position = Vector2.Lerp(vector8, vector7, num8 / (float)num7);
4319 obj.noGravity = true;
4320 obj.velocity = Vector2.Zero;
4321 obj.customData = mountedPlayer;
4322 obj.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMinecart, mountedPlayer);
4323 }
4324 }
4325 else
4326 {
4327 Dust obj2 = Main.dust[Dust.NewDust(mountedPlayer.Center, 0, 0, 182)];
4328 obj2.position = vector7;
4329 obj2.noGravity = true;
4330 obj2.velocity = Vector2.Zero;
4331 obj2.customData = mountedPlayer;
4332 obj2.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMinecart, mountedPlayer);
4333 }
4334 break;
4335 }
4336 case 22:
4337 {
4338 mountedPlayer.lavaMax += 420;
4339 Vector2 vector = mountedPlayer.Center + new Vector2(20f, 10f) * mountedPlayer.Directions;
4340 Vector2 pos = vector + mountedPlayer.velocity;
4341 Vector2 pos2 = vector + new Vector2(-1f, -0.5f) * mountedPlayer.Directions;
4342 vector = mountedPlayer.RotatedRelativePoint(vector);
4343 pos = mountedPlayer.RotatedRelativePoint(pos);
4344 pos2 = mountedPlayer.RotatedRelativePoint(pos2);
4345 Vector2 value = mountedPlayer.shadowPos[2] - mountedPlayer.position + vector;
4346 Vector2 vector2 = pos - vector;
4347 vector += vector2;
4348 value += vector2;
4349 Vector2 vector3 = pos - pos2;
4350 float num2 = MathHelper.Clamp(mountedPlayer.velocity.Length() / 5f, 0f, 1f);
4351 for (float num3 = 0f; num3 <= 1f; num3 += 0.1f)
4352 {
4353 if (!(Main.rand.NextFloat() < num2))
4354 {
4355 Dust dust = Dust.NewDustPerfect(Vector2.Lerp(value, vector, num3), 65, Main.rand.NextVector2Circular(0.5f, 0.5f) * num2);
4356 dust.scale = 0.6f;
4357 dust.fadeIn = 0f;
4358 dust.customData = mountedPlayer;
4359 dust.velocity *= -1f;
4360 dust.noGravity = true;
4361 dust.velocity -= vector3;
4362 dust.shader = GameShaders.Armor.GetSecondaryShader(mountedPlayer.cMinecart, mountedPlayer);
4363 if (Main.rand.Next(10) == 0)
4364 {
4365 dust.fadeIn = 1.3f;
4366 dust.velocity = Main.rand.NextVector2Circular(3f, 3f) * num2;
4367 }
4368 }
4369 }
4370 break;
4371 }
4372 case 16:
4373 mountedPlayer.ignoreWater = true;
4374 break;
4375 case 24:
4376 DelegateMethods.v3_1 = new Vector3(0.1f, 0.3f, 1f) * 0.4f;
4377 Utils.PlotTileLine(mountedPlayer.MountedCenter, mountedPlayer.MountedCenter + mountedPlayer.velocity * 6f, 40f, DelegateMethods.CastLightOpen);
4379 break;
4380 case 36:
4382 break;
4383 case 32:
4385 break;
4386 case 34:
4388 break;
4389 case 37:
4390 mountedPlayer.canFloatInWater = true;
4391 mountedPlayer.accFlipper = true;
4392 break;
4393 case 13:
4394 case 15:
4395 case 17:
4396 case 18:
4397 case 19:
4398 case 20:
4399 case 21:
4400 case 33:
4401 case 35:
4402 case 38:
4403 case 39:
4404 case 43:
4405 case 44:
4406 case 45:
4407 break;
4408 }
4409 }
4410
4412 {
4413 int num = Math.Sign(mountedPlayer.velocity.X);
4414 if (num == 0)
4415 {
4416 num = mountedPlayer.direction;
4417 }
4418 if (mountedPlayer.whoAmI != Main.myPlayer || mountedPlayer.velocity.X == 0f)
4419 {
4420 return;
4421 }
4423 int damage = 60;
4424 int num2 = 0;
4425 float num3 = 0f;
4426 for (int i = 0; i < 200; i++)
4427 {
4428 NPC nPC = Main.npc[i];
4429 if (nPC.active && nPC.immune[mountedPlayer.whoAmI] <= 0 && !nPC.dontTakeDamage && nPC.Distance(minecartMechPoint) < 300f && nPC.CanBeChasedBy(mountedPlayer) && Collision.CanHitLine(nPC.position, nPC.width, nPC.height, minecartMechPoint, 0, 0) && Math.Abs(MathHelper.WrapAngle(MathHelper.WrapAngle(nPC.AngleFrom(minecartMechPoint)) - MathHelper.WrapAngle((mountedPlayer.fullRotation + (float)num == -1f) ? ((float)Math.PI) : 0f))) < (float)Math.PI / 4f)
4430 {
4432 Vector2 v = nPC.position + nPC.Size * Utils.RandomVector2(Main.rand, 0f, 1f) - minecartMechPoint;
4433 num3 += v.ToRotation();
4434 num2++;
4436 Main.projectile[num4].Center = nPC.Center;
4437 Main.projectile[num4].damage = damage;
4438 Main.projectile[num4].Damage();
4439 Main.projectile[num4].damage = 0;
4441 }
4442 }
4443 }
4444
4446 {
4447 int num = Math.Sign(mountedPlayer.velocity.X);
4448 if (num == 0)
4449 {
4450 num = mountedPlayer.direction;
4451 }
4452 float num2 = offX;
4453 int num3 = Math.Sign(offX);
4454 if (mountedPlayer.direction != num)
4455 {
4456 num2 -= (float)num3;
4457 }
4458 if (num == -1)
4459 {
4460 num2 -= (float)num3;
4461 }
4462 Vector2 vector = new Vector2(num2 * (float)num, offY).RotatedBy(mountedPlayer.fullRotation);
4463 Vector2 vector2 = new Vector2(MathHelper.Lerp(0f, -8f, mountedPlayer.fullRotation / ((float)Math.PI / 4f)), MathHelper.Lerp(0f, 2f, Math.Abs(mountedPlayer.fullRotation / ((float)Math.PI / 4f)))).RotatedBy(mountedPlayer.fullRotation);
4464 if (num == Math.Sign(mountedPlayer.fullRotation))
4465 {
4466 vector2 *= MathHelper.Lerp(1f, 0.6f, Math.Abs(mountedPlayer.fullRotation / ((float)Math.PI / 4f)));
4467 }
4468 return mountedPlayer.Bottom + vector + vector2;
4469 }
4470
4471 public void ResetFlightTime(float xVelocity)
4472 {
4473 _flyTime = (_active ? _data.flightTimeMax : 0);
4474 if (_type == 0)
4475 {
4476 _flyTime += (int)(Math.Abs(xVelocity) * 20f);
4477 }
4478 }
4479
4481 {
4482 if (_type == -1)
4483 {
4484 return;
4485 }
4486 for (int i = 0; i < Player.maxBuffs; i++)
4487 {
4488 if (mountedPlayer.buffType[i] == _data.buff || (Cart && mountedPlayer.buffType[i] == _data.extraBuff))
4489 {
4490 return;
4491 }
4492 }
4494 }
4495
4496 public void ResetHeadPosition()
4497 {
4498 if (_aiming)
4499 {
4500 _aiming = false;
4501 if (_type != 46)
4502 {
4503 _frameExtra = 0;
4504 }
4505 _flipDraw = false;
4506 }
4507 }
4508
4510 {
4511 int num;
4512 int num2;
4513 switch (_type)
4514 {
4515 case 9:
4516 num = (int)scutlixTextureSize.Y;
4517 num2 = (int)scutlixTextureSize.X;
4518 break;
4519 case 46:
4520 num = (int)santankTextureSize.Y;
4521 num2 = (int)santankTextureSize.X;
4522 break;
4523 case 8:
4524 num = (int)drillTextureSize.Y;
4525 num2 = (int)drillTextureSize.X;
4526 break;
4527 default:
4528 return position;
4529 }
4530 Vector2 center = mountedPlayer.Center;
4531 position -= center;
4532 if (position.X > (float)(-num2) && position.X < (float)num2 && position.Y > (float)(-num) && position.Y < (float)num)
4533 {
4534 float num3 = (float)num2 / Math.Abs(position.X);
4535 float num4 = (float)num / Math.Abs(position.Y);
4536 if (num3 > num4)
4537 {
4538 position *= num4;
4539 }
4540 else
4541 {
4542 position *= num3;
4543 }
4544 }
4545 return position + center;
4546 }
4547
4549 {
4550 _aiming = true;
4551 switch (_type)
4552 {
4553 case 9:
4554 {
4555 int frameExtra = _frameExtra;
4556 int direction = mountedPlayer.direction;
4558 if (num3 > 90f)
4559 {
4560 mountedPlayer.direction = -1;
4561 num3 = 180f - num3;
4562 }
4563 else if (num3 < -90f)
4564 {
4565 mountedPlayer.direction = -1;
4566 num3 = -180f - num3;
4567 }
4568 else
4569 {
4570 mountedPlayer.direction = 1;
4571 }
4572 if ((mountedPlayer.direction > 0 && mountedPlayer.velocity.X < 0f) || (mountedPlayer.direction < 0 && mountedPlayer.velocity.X > 0f))
4573 {
4574 _flipDraw = true;
4575 }
4576 else
4577 {
4578 _flipDraw = false;
4579 }
4580 if (num3 >= 0f)
4581 {
4582 if ((double)num3 < 22.5)
4583 {
4584 _frameExtra = 8;
4585 }
4586 else if ((double)num3 < 67.5)
4587 {
4588 _frameExtra = 9;
4589 }
4590 else if ((double)num3 < 112.5)
4591 {
4592 _frameExtra = 10;
4593 }
4594 }
4595 else if ((double)num3 > -22.5)
4596 {
4597 _frameExtra = 8;
4598 }
4599 else if ((double)num3 > -67.5)
4600 {
4601 _frameExtra = 7;
4602 }
4603 else if ((double)num3 > -112.5)
4604 {
4605 _frameExtra = 6;
4606 }
4608 if (abilityCharge > 0f)
4609 {
4610 Vector2 vector = default(Vector2);
4611 vector.X = mountedPlayer.position.X + (float)(mountedPlayer.width / 2);
4612 vector.Y = mountedPlayer.position.Y + (float)mountedPlayer.height;
4613 int num4 = (_frameExtra - 6) * 2;
4614 Vector2 vector2 = default(Vector2);
4615 for (int i = 0; i < 2; i++)
4616 {
4617 vector2.Y = vector.Y + scutlixEyePositions[num4 + i].Y;
4618 if (mountedPlayer.direction == -1)
4619 {
4620 vector2.X = vector.X - scutlixEyePositions[num4 + i].X - (float)_data.xOffset;
4621 }
4622 else
4623 {
4624 vector2.X = vector.X + scutlixEyePositions[num4 + i].X + (float)_data.xOffset;
4625 }
4626 Lighting.AddLight((int)(vector2.X / 16f), (int)(vector2.Y / 16f), 1f * abilityCharge, 0f, 0f);
4627 }
4628 }
4629 if (_frameExtra == frameExtra)
4630 {
4631 return mountedPlayer.direction != direction;
4632 }
4633 return true;
4634 }
4635 case 46:
4636 {
4637 int frameExtra = _frameExtra;
4638 int direction = mountedPlayer.direction;
4640 if (num3 > 90f)
4641 {
4642 mountedPlayer.direction = -1;
4643 num3 = 180f - num3;
4644 }
4645 else if (num3 < -90f)
4646 {
4647 mountedPlayer.direction = -1;
4648 num3 = -180f - num3;
4649 }
4650 else
4651 {
4652 mountedPlayer.direction = 1;
4653 }
4654 if ((mountedPlayer.direction > 0 && mountedPlayer.velocity.X < 0f) || (mountedPlayer.direction < 0 && mountedPlayer.velocity.X > 0f))
4655 {
4656 _flipDraw = true;
4657 }
4658 else
4659 {
4660 _flipDraw = false;
4661 }
4663 if (abilityCharge > 0f)
4664 {
4665 Vector2 vector3 = default(Vector2);
4666 vector3.X = mountedPlayer.position.X + (float)(mountedPlayer.width / 2);
4667 vector3.Y = mountedPlayer.position.Y + (float)mountedPlayer.height;
4668 for (int j = 0; j < 2; j++)
4669 {
4670 Vector2 vector4 = new Vector2(vector3.X + (float)(mountedPlayer.width * mountedPlayer.direction), vector3.Y - 12f);
4671 Lighting.AddLight((int)(vector4.X / 16f), (int)(vector4.Y / 16f), 0.7f, 0.4f, 0.4f);
4672 }
4673 }
4674 if (_frameExtra == frameExtra)
4675 {
4676 return mountedPlayer.direction != direction;
4677 }
4678 return true;
4679 }
4680 case 8:
4681 {
4684 float num = v.ToRotation();
4685 if (num < 0f)
4686 {
4687 num += (float)Math.PI * 2f;
4688 }
4689 drillMountData.diodeRotationTarget = num;
4690 float num2 = drillMountData.diodeRotation % ((float)Math.PI * 2f);
4691 if (num2 < 0f)
4692 {
4693 num2 += (float)Math.PI * 2f;
4694 }
4695 if (num2 < num)
4696 {
4697 if (num - num2 > (float)Math.PI)
4698 {
4699 num2 += (float)Math.PI * 2f;
4700 }
4701 }
4702 else if (num2 - num > (float)Math.PI)
4703 {
4704 num2 -= (float)Math.PI * 2f;
4705 }
4706 drillMountData.diodeRotation = num2;
4707 drillMountData.crosshairPosition = mousePosition;
4708 return true;
4709 }
4710 default:
4711 return false;
4712 }
4713 }
4714
4715 public void Draw(List<DrawData> playerDrawData, int drawType, Player drawPlayer, Vector2 Position, Color drawColor, SpriteEffects playerEffect, float shadow)
4716 {
4717 if (playerDrawData == null)
4718 {
4719 return;
4720 }
4723 switch (drawType)
4724 {
4725 case 0:
4728 break;
4729 case 1:
4732 break;
4733 case 2:
4734 if (_type == 0 && _idleTime >= _idleTimeNext)
4735 {
4736 return;
4737 }
4740 break;
4741 case 3:
4744 break;
4745 default:
4746 texture2D = null;
4747 texture2D2 = null;
4748 break;
4749 }
4750 int type = _type;
4751 if (type == 50 && texture2D != null)
4752 {
4754 queenSlimeMount.Request();
4755 if (queenSlimeMount.IsReady)
4756 {
4757 texture2D = queenSlimeMount.GetTarget();
4758 }
4759 }
4760 if (texture2D == null)
4761 {
4762 return;
4763 }
4764 type = _type;
4765 if ((type == 0 || type == 9) && drawType == 3 && shadow != 0f)
4766 {
4767 return;
4768 }
4769 int num = XOffset;
4770 int num2 = YOffset + PlayerOffset;
4771 if (drawPlayer.direction <= 0 && (!Cart || !Directional))
4772 {
4773 num *= -1;
4774 }
4775 Position.X = (int)(Position.X - Main.screenPosition.X + (float)(drawPlayer.width / 2) + (float)num);
4776 Position.Y = (int)(Position.Y - Main.screenPosition.Y + (float)(drawPlayer.height / 2) + (float)num2);
4777 int num3 = 0;
4778 bool flag = true;
4779 int num4 = _data.totalFrames;
4780 int num5 = _data.textureHeight;
4781 switch (_type)
4782 {
4783 case 23:
4784 num3 = _frame;
4785 break;
4786 case 9:
4787 num3 = drawType switch
4788 {
4789 0 => _frame,
4790 2 => _frameExtra,
4791 3 => _frameExtra,
4792 _ => 0,
4793 };
4794 break;
4795 case 46:
4796 num3 = drawType switch
4797 {
4798 2 => _frame,
4799 3 => _frameExtra,
4800 _ => 0,
4801 };
4802 break;
4803 case 5:
4804 num3 = drawType switch
4805 {
4806 0 => _frame,
4807 1 => _frameExtra,
4808 _ => 0,
4809 };
4810 break;
4811 case 17:
4812 num5 = texture2D.Height;
4813 switch (drawType)
4814 {
4815 case 0:
4816 num3 = _frame;
4817 num4 = 4;
4818 break;
4819 case 1:
4820 num3 = _frameExtra;
4821 num4 = 4;
4822 break;
4823 default:
4824 num3 = 0;
4825 break;
4826 }
4827 break;
4828 case 52:
4829 if (drawType == 3)
4830 {
4831 if (drawPlayer.itemAnimation > 0)
4832 {
4833 Rectangle bodyFrame = drawPlayer.bodyFrame;
4834 int num6 = bodyFrame.Y / bodyFrame.Height;
4835 int useStyle = drawPlayer.lastVisualizedSelectedItem.useStyle;
4836 num3 = Utils.Clamp(num6, 1, 4);
4837 if (num3 == 3 || num6 == 0 || useStyle == 13)
4838 {
4839 num3 = _frame;
4840 }
4841 if (useStyle == 12 && drawPlayer.itemAnimation > drawPlayer.itemAnimationMax / 2)
4842 {
4843 num3 = 3;
4844 }
4845 }
4846 else
4847 {
4849 num3 = _frame;
4850 }
4851 }
4852 else
4853 {
4854 num3 = _frame;
4855 }
4856 break;
4857 case 39:
4858 num5 = texture2D.Height;
4859 switch (drawType)
4860 {
4861 case 2:
4862 num3 = _frame;
4863 num4 = 3;
4864 break;
4865 case 3:
4866 num3 = _frameExtra;
4867 num4 = 6;
4868 break;
4869 default:
4870 num3 = 0;
4871 break;
4872 }
4873 break;
4874 default:
4875 num3 = _frame;
4876 break;
4877 }
4878 int num7 = num5 / num4;
4880 if (flag)
4881 {
4882 value.Height -= 2;
4883 }
4884 switch (_type)
4885 {
4886 case 0:
4887 if (drawType == 3)
4888 {
4890 }
4891 break;
4892 case 9:
4893 if (drawType == 3)
4894 {
4895 if (_abilityCharge == 0)
4896 {
4897 return;
4898 }
4900 drawColor.A = 0;
4901 }
4902 break;
4903 case 7:
4904 if (drawType == 3)
4905 {
4906 drawColor = new Color(250, 250, 250, 255) * drawPlayer.stealth * (1f - shadow);
4907 }
4908 break;
4909 }
4910 Color color = new Color(drawColor.ToVector4() * 0.25f + new Vector4(0.75f));
4911 switch (_type)
4912 {
4913 case 45:
4914 if (drawType == 2)
4915 {
4916 color = new Color(150, 110, 110, 100);
4917 }
4918 break;
4919 case 11:
4920 if (drawType == 2)
4921 {
4922 color = Color.White;
4923 color.A = 127;
4924 }
4925 break;
4926 case 12:
4927 if (drawType == 0)
4928 {
4929 float num8 = MathHelper.Clamp(drawPlayer.MountFishronSpecialCounter / 60f, 0f, 1f);
4930 color = Colors.CurrentLiquidColor;
4931 if (color == Color.Transparent)
4932 {
4933 color = Color.White;
4934 }
4935 color.A = 127;
4936 color *= num8;
4937 }
4938 break;
4939 case 24:
4940 if (drawType == 2)
4941 {
4942 color = Color.SkyBlue * 0.5f;
4943 color.A = 20;
4944 }
4945 break;
4946 }
4947 float num9 = 0f;
4948 switch (_type)
4949 {
4950 case 8:
4951 {
4953 switch (drawType)
4954 {
4955 case 0:
4956 num9 = drillMountData.outerRingRotation - num9;
4957 break;
4958 case 3:
4959 num9 = drillMountData.diodeRotation - num9 - drawPlayer.fullRotation;
4960 break;
4961 }
4962 break;
4963 }
4964 case 7:
4965 num9 = drawPlayer.fullRotation;
4966 break;
4967 }
4968 Vector2 origin = Origin;
4969 type = _type;
4970 _ = 8;
4971 float scale = 1f;
4973 switch (_type)
4974 {
4975 case 7:
4977 break;
4978 case 8:
4979 spriteEffects = ((drawPlayer.direction == 1 && drawType == 2) ? SpriteEffects.FlipHorizontally : SpriteEffects.None);
4980 break;
4981 case 6:
4982 case 13:
4983 spriteEffects = (_flipDraw ? SpriteEffects.FlipHorizontally : SpriteEffects.None);
4984 break;
4985 default:
4986 spriteEffects = playerEffect;
4987 break;
4988 }
4990 {
4991 spriteEffects = ((Math.Sign(drawPlayer.velocity.X) == -drawPlayer.direction) ? (playerEffect ^ SpriteEffects.FlipHorizontally) : playerEffect);
4992 }
4993 bool flag2 = false;
4994 switch (_type)
4995 {
4996 case 50:
4997 if (drawType == 0)
4998 {
4999 Vector2 position = Position + new Vector2(0f, 8 - PlayerOffset + 20);
5001 if (flag)
5002 {
5003 value6.Height -= 2;
5004 }
5005 DrawData item = new DrawData(TextureAssets.Extra[207].Value, position, value6, drawColor, num9, origin, scale, spriteEffects);
5006 item.shader = currentShader;
5008 }
5009 break;
5010 case 35:
5011 {
5012 if (drawType != 2)
5013 {
5014 break;
5015 }
5017 int num11 = -36;
5018 if (spriteEffects.HasFlag(SpriteEffects.FlipHorizontally))
5019 {
5020 num11 *= -1;
5021 }
5022 Vector2 vector2 = new Vector2(num11, -26f);
5023 if (shadow == 0f)
5024 {
5025 if (Math.Abs(drawPlayer.velocity.X) > 1f)
5026 {
5027 extraFrameMountData.frameCounter += Math.Min(2f, Math.Abs(drawPlayer.velocity.X * 0.4f));
5028 while (extraFrameMountData.frameCounter > 6f)
5029 {
5030 extraFrameMountData.frameCounter -= 6f;
5031 extraFrameMountData.frame++;
5032 if ((extraFrameMountData.frame > 2 && extraFrameMountData.frame < 5) || extraFrameMountData.frame > 7)
5033 {
5034 extraFrameMountData.frame = 0;
5035 }
5036 }
5037 }
5038 else
5039 {
5040 extraFrameMountData.frameCounter += 1f;
5041 while (extraFrameMountData.frameCounter > 6f)
5042 {
5043 extraFrameMountData.frameCounter -= 6f;
5044 extraFrameMountData.frame++;
5045 if (extraFrameMountData.frame > 5)
5046 {
5047 extraFrameMountData.frame = 5;
5048 }
5049 }
5050 }
5051 }
5052 Texture2D value4 = TextureAssets.Extra[142].Value;
5053 Rectangle value5 = value4.Frame(1, 8, 0, extraFrameMountData.frame);
5054 if (flag)
5055 {
5056 value5.Height -= 2;
5057 }
5059 item.shader = currentShader;
5061 break;
5062 }
5063 case 38:
5064 if (drawType == 0)
5065 {
5066 int num10 = 0;
5067 if (spriteEffects.HasFlag(SpriteEffects.FlipHorizontally))
5068 {
5069 num10 = 22;
5070 }
5071 Vector2 vector = new Vector2(num10, -10f);
5072 Texture2D value2 = TextureAssets.Extra[151].Value;
5073 Rectangle value3 = value2.Frame();
5075 item.shader = currentShader;
5077 flag2 = true;
5078 }
5079 break;
5080 }
5081 if (!flag2)
5082 {
5084 item.shader = currentShader;
5086 if (texture2D2 != null)
5087 {
5088 item = new DrawData(texture2D2, Position, value, color * ((float)(int)drawColor.A / 255f), num9, origin, scale, spriteEffects);
5089 item.shader = currentShader;
5090 }
5092 }
5093 switch (_type)
5094 {
5095 case 50:
5096 if (drawType == 0)
5097 {
5098 texture2D = TextureAssets.Extra[205].Value;
5100 item.shader = currentShader;
5102 Vector2 position3 = Position + new Vector2(0f, 8 - PlayerOffset + 20);
5104 if (flag)
5105 {
5106 value8.Height -= 2;
5107 }
5108 texture2D = TextureAssets.Extra[206].Value;
5110 item.shader = currentShader;
5112 }
5113 break;
5114 case 45:
5115 {
5116 if (drawType != 0 || shadow != 0f)
5117 {
5118 break;
5119 }
5120 if (Math.Abs(drawPlayer.velocity.X) > DashSpeed * 0.9f)
5121 {
5122 color = new Color(255, 220, 220, 200);
5123 scale = 1.1f;
5124 }
5125 for (int k = 0; k < 2; k++)
5126 {
5127 Vector2 position2 = Position + new Vector2((float)Main.rand.Next(-10, 11) * 0.1f, (float)Main.rand.Next(-10, 11) * 0.1f);
5128 value = new Rectangle(0, num7 * 3, _data.textureWidth, num7);
5129 if (flag)
5130 {
5131 value.Height -= 2;
5132 }
5133 DrawData item = new DrawData(texture2D2, position2, value, color, num9, origin, scale, spriteEffects);
5134 item.shader = currentShader;
5136 }
5137 break;
5138 }
5139 case 17:
5140 if (drawType == 1 && ShouldGolfCartEmitLight())
5141 {
5142 value = new Rectangle(0, num7 * 3, _data.textureWidth, num7);
5143 if (flag)
5144 {
5145 value.Height -= 2;
5146 }
5147 drawColor = Color.White * 1f;
5148 drawColor.A = 0;
5150 item.shader = currentShader;
5152 }
5153 break;
5154 case 23:
5155 if (drawType == 0)
5156 {
5157 texture2D = TextureAssets.Extra[114].Value;
5158 value = texture2D.Frame(2);
5159 int width = value.Width;
5160 value.Width -= 2;
5164 origin = new Vector2(value.Width / 2, 0f);
5165 DrawData item = new DrawData(texture2D, vector7.Floor(), value, drawColor, num9, origin, scale, spriteEffects);
5166 item.shader = currentShader;
5168 Color color3 = new Color(new Vector3(0.9f, 0.85f, 0f));
5169 color3.A /= 2;
5170 float num13 = ((float)drawPlayer.miscCounter / 75f * ((float)Math.PI * 2f)).ToRotationVector2().X * 1f;
5171 Color color4 = new Color(80, 70, 40, 0) * (num13 / 8f + 0.5f) * 0.8f;
5172 value.X += width;
5173 for (int l = 0; l < 4; l++)
5174 {
5175 item = new DrawData(texture2D, (vector7 + ((float)l * ((float)Math.PI / 2f)).ToRotationVector2() * num13).Floor(), value, color4, num9, origin, scale, spriteEffects);
5176 item.shader = currentShader;
5178 }
5179 }
5180 break;
5181 case 8:
5182 {
5183 if (drawType != 3)
5184 {
5185 break;
5186 }
5188 Rectangle value7 = new Rectangle(0, 0, 1, 1);
5189 Vector2 vector3 = drillDiodePoint1.RotatedBy(drillMountData2.diodeRotation);
5190 Vector2 vector4 = drillDiodePoint2.RotatedBy(drillMountData2.diodeRotation);
5191 for (int i = 0; i < drillMountData2.beams.Length; i++)
5192 {
5194 if (drillBeam.curTileTarget == Point16.NegativeOne)
5195 {
5196 continue;
5197 }
5198 for (int j = 0; j < 2; j++)
5199 {
5200 Vector2 vector5 = new Vector2(drillBeam.curTileTarget.X * 16 + 8, drillBeam.curTileTarget.Y * 16 + 8) - Main.screenPosition - Position;
5202 Color color2;
5203 if (j == 0)
5204 {
5205 vector6 = vector3;
5207 }
5208 else
5209 {
5210 vector6 = vector4;
5212 }
5213 color2.A = 128;
5214 color2 *= 0.5f;
5215 Vector2 v = vector5 - vector6;
5216 float num12 = v.ToRotation();
5217 float y = v.Length();
5218 DrawData item = new DrawData(scale: new Vector2(2f, y), texture: TextureAssets.MagicPixel.Value, position: vector6 + Position, sourceRect: value7, color: color2, rotation: num12 - (float)Math.PI / 2f, origin: Vector2.Zero, effect: SpriteEffects.None);
5219 item.ignorePlayerRotation = true;
5220 item.shader = currentShader;
5222 }
5223 }
5224 break;
5225 }
5226 }
5227 }
5228
5230 {
5231 if (_active)
5232 {
5233 bool cart = Cart;
5234 _active = false;
5235 mountedPlayer.ClearBuff(_data.buff);
5236 _mountSpecificData = null;
5237 _ = _type;
5238 if (cart)
5239 {
5240 mountedPlayer.ClearBuff(_data.extraBuff);
5241 mountedPlayer.cartFlip = false;
5242 mountedPlayer.lastBoost = Vector2.Zero;
5243 }
5244 mountedPlayer.fullRotation = 0f;
5245 mountedPlayer.fullRotationOrigin = Vector2.Zero;
5247 Reset();
5248 mountedPlayer.position.Y += mountedPlayer.height;
5249 mountedPlayer.height = 42;
5250 mountedPlayer.position.Y -= mountedPlayer.height;
5251 if (mountedPlayer.whoAmI == Main.myPlayer)
5252 {
5253 NetMessage.SendData(13, -1, -1, null, mountedPlayer.whoAmI);
5254 }
5255 }
5256 }
5257
5258 public void SetMount(int m, Player mountedPlayer, bool faceLeft = false)
5259 {
5260 if (_type == m || m <= -1 || m >= MountID.Count || (m == 5 && mountedPlayer.wet))
5261 {
5262 return;
5263 }
5264 if (_active)
5265 {
5266 mountedPlayer.ClearBuff(_data.buff);
5267 if (Cart)
5268 {
5269 mountedPlayer.ClearBuff(_data.extraBuff);
5270 mountedPlayer.cartFlip = false;
5271 mountedPlayer.lastBoost = Vector2.Zero;
5272 }
5273 mountedPlayer.fullRotation = 0f;
5274 mountedPlayer.fullRotationOrigin = Vector2.Zero;
5275 _mountSpecificData = null;
5276 }
5277 else
5278 {
5279 _active = true;
5280 }
5281 _flyTime = 0;
5282 _type = m;
5283 _data = mounts[m];
5285 if (Cart && !faceLeft && !Directional)
5286 {
5287 mountedPlayer.AddBuff(_data.extraBuff, 3600);
5288 _flipDraw = true;
5289 }
5290 else
5291 {
5292 mountedPlayer.AddBuff(_data.buff, 3600);
5293 _flipDraw = false;
5294 }
5295 if (_type == 44)
5296 {
5297 mountedPlayer.velocity *= 0.2f;
5298 mountedPlayer.dash = 0;
5299 mountedPlayer.dashType = 0;
5300 mountedPlayer.dashDelay = 0;
5301 mountedPlayer.dashTime = 0;
5302 }
5303 if (_type == 9 && _abilityCooldown < 20)
5304 {
5305 _abilityCooldown = 20;
5306 }
5307 if (_type == 46 && _abilityCooldown < 40)
5308 {
5309 _abilityCooldown = 40;
5310 }
5311 mountedPlayer.position.Y += mountedPlayer.height;
5312 for (int i = 0; i < mountedPlayer.shadowPos.Length; i++)
5313 {
5314 mountedPlayer.shadowPos[i].Y += mountedPlayer.height;
5315 }
5316 mountedPlayer.height = 42 + _data.heightBoost;
5317 mountedPlayer.position.Y -= mountedPlayer.height;
5318 for (int j = 0; j < mountedPlayer.shadowPos.Length; j++)
5319 {
5320 mountedPlayer.shadowPos[j].Y -= mountedPlayer.height;
5321 }
5322 mountedPlayer.ResetAdvancedShadows();
5323 if (_type == 7 || _type == 8)
5324 {
5325 mountedPlayer.fullRotationOrigin = new Vector2(mountedPlayer.width / 2, mountedPlayer.height / 2);
5326 }
5327 if (_type == 8)
5328 {
5330 }
5331 if (_type == 35)
5332 {
5334 }
5336 if (mountedPlayer.whoAmI == Main.myPlayer)
5337 {
5338 NetMessage.SendData(13, -1, -1, null, mountedPlayer.whoAmI);
5339 }
5340 }
5341
5343 {
5344 if (Main.netMode == 2)
5345 {
5346 return;
5347 }
5348 if (_type == 52)
5349 {
5350 for (int i = 0; i < 100; i++)
5351 {
5352 _ = _data.spawnDust;
5353 Dust dust = Dust.NewDustDirect(new Vector2(mountedPlayer.position.X - 20f, mountedPlayer.position.Y), mountedPlayer.width + 40, mountedPlayer.height, 267, 0f, 0f, 60, new Color(130, 60, 255, 70));
5354 dust.scale += (float)Main.rand.Next(-10, 21) * 0.01f;
5355 dust.noGravity = true;
5356 dust.velocity += mountedPlayer.velocity * 0.8f;
5357 dust.velocity *= Main.rand.NextFloat();
5358 dust.velocity.Y += 2f * Main.rand.NextFloatDirection();
5359 dust.noLight = true;
5360 if (Main.rand.Next(3) == 0)
5361 {
5362 Dust dust2 = Dust.CloneDust(dust);
5363 dust2.color = Color.White;
5364 dust2.scale *= 0.5f;
5365 dust2.alpha = 0;
5366 }
5367 }
5368 return;
5369 }
5371 if (_type == 23)
5372 {
5373 newColor = new Color(255, 255, 0, 255);
5374 }
5375 for (int j = 0; j < 100; j++)
5376 {
5377 if (MountID.Sets.Cart[_type])
5378 {
5379 if (j % 10 == 0)
5380 {
5381 int type = Main.rand.Next(61, 64);
5382 int num = Gore.NewGore(new Vector2(mountedPlayer.position.X - 20f, mountedPlayer.position.Y), Vector2.Zero, type);
5383 Main.gore[num].alpha = 100;
5384 Main.gore[num].velocity = Vector2.Transform(new Vector2(1f, 0f), Matrix.CreateRotationZ((float)(Main.rand.NextDouble() * 6.2831854820251465)));
5385 }
5386 continue;
5387 }
5388 int type2 = _data.spawnDust;
5389 float scale = 1f;
5390 int alpha = 0;
5391 if (_type == 40 || _type == 41 || _type == 42)
5392 {
5393 type2 = ((Main.rand.Next(2) != 0) ? 16 : 31);
5394 scale = 0.9f;
5395 alpha = 50;
5396 if (_type == 42)
5397 {
5398 type2 = 31;
5399 }
5400 if (_type == 41)
5401 {
5402 type2 = 16;
5403 }
5404 }
5405 int num2 = Dust.NewDust(new Vector2(mountedPlayer.position.X - 20f, mountedPlayer.position.Y), mountedPlayer.width + 40, mountedPlayer.height, type2, 0f, 0f, alpha, newColor, scale);
5406 Main.dust[num2].scale += (float)Main.rand.Next(-10, 21) * 0.01f;
5408 {
5409 Main.dust[num2].noGravity = true;
5410 }
5411 else if (Main.rand.Next(2) == 0)
5412 {
5413 Main.dust[num2].scale *= 1.3f;
5414 Main.dust[num2].noGravity = true;
5415 }
5416 else
5417 {
5418 Main.dust[num2].velocity *= 0.5f;
5419 }
5420 Main.dust[num2].velocity += mountedPlayer.velocity * 0.8f;
5421 if (_type == 40 || _type == 41 || _type == 42)
5422 {
5423 Main.dust[num2].velocity *= Main.rand.NextFloat();
5424 }
5425 }
5426 if (_type == 40 || _type == 41 || _type == 42)
5427 {
5428 for (int k = 0; k < 5; k++)
5429 {
5430 int type3 = Main.rand.Next(61, 64);
5431 if (_type == 41 || (_type == 40 && Main.rand.Next(2) == 0))
5432 {
5433 type3 = Main.rand.Next(11, 14);
5434 }
5435 int num3 = Gore.NewGore(new Vector2(mountedPlayer.position.X + (float)(mountedPlayer.direction * 8), mountedPlayer.position.Y + 20f), Vector2.Zero, type3);
5436 Main.gore[num3].alpha = 100;
5437 Main.gore[num3].velocity = Vector2.Transform(new Vector2(1f, 0f), Matrix.CreateRotationZ((float)(Main.rand.NextDouble() * 6.2831854820251465))) * 1.4f;
5438 }
5439 }
5440 if (_type == 23)
5441 {
5442 for (int l = 0; l < 4; l++)
5443 {
5444 int type4 = Main.rand.Next(61, 64);
5445 int num4 = Gore.NewGore(new Vector2(mountedPlayer.position.X - 20f, mountedPlayer.position.Y), Vector2.Zero, type4);
5446 Main.gore[num4].alpha = 100;
5447 Main.gore[num4].velocity = Vector2.Transform(new Vector2(1f, 0f), Matrix.CreateRotationZ((float)(Main.rand.NextDouble() * 6.2831854820251465)));
5448 }
5449 }
5450 }
5451
5453 {
5454 return mountingPlayer.CanFitSpace(mounts[m].heightBoost);
5455 }
5456
5457 public bool FindTileHeight(Vector2 position, int maxTilesDown, out float tileHeight)
5458 {
5459 int num = (int)(position.X / 16f);
5460 int num2 = (int)(position.Y / 16f);
5461 for (int i = 0; i <= maxTilesDown; i++)
5462 {
5463 Tile tile = Main.tile[num, num2];
5464 bool flag = Main.tileSolid[tile.type];
5465 bool flag2 = Main.tileSolidTop[tile.type];
5466 if (!tile.active() || !flag || flag2)
5467 {
5468 }
5469 num2++;
5470 }
5471 tileHeight = 0f;
5472 return true;
5473 }
5474}
static float Lerp(float value1, float value2, float amount)
Definition MathHelper.cs:53
static float ToDegrees(float radians)
Definition MathHelper.cs:26
static float WrapAngle(float angle)
Definition MathHelper.cs:87
static float Clamp(float value, float min, float max)
Definition MathHelper.cs:46
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 int Sign(decimal value)
Definition Math.cs:1202
static byte Max(byte val1, byte val2)
Definition Math.cs:738
static void PlaySound(int type, Vector2 position, int style=1)
static float GetTileRotation(Vector2 position)
static bool CanHitLine(Vector2 Position1, int Width1, int Height1, Vector2 Position2, int Width2, int Height2)
Definition Collision.cs:551
static Vector2 TileCollision(Vector2 Position, Vector2 Velocity, int Width, int Height, bool fallThrough=false, bool fall2=false, int gravDir=1)
static PlayerDeathReason ByOther(int type)
static void LandingSoundFart(Player Player, Vector2 Position, int Width, int Height)
static void JumpingSoundFart(Player Player, Vector2 Position, int Width, int Height)
static void SparksMech(Vector2 dustPosition)
static void SparksFart(Vector2 dustPosition)
static void LandingSound(Player Player, Vector2 Position, int Width, int Height)
static void SparksTerraFart(Vector2 dustPosition)
static void SparksMeow(Vector2 dustPosition)
static void BumperSound(Player Player, Vector2 Position, int Width, int Height)
static void Sparks(Vector2 dustPosition)
static void BumperSoundFart(Player Player, Vector2 Position, int Width, int Height)
static void JumpingSound(Player Player, Vector2 Position, int Width, int Height)
static bool WolfMouthPosition(Player player, out Vector2? position)
static bool NoHandPosition(Player player, out Vector2? position)
static bool CastLightOpen_StopForSolids_ScaleWithDistance(int x, int y)
static bool CastLightOpen(int x, int y)
static Dust CloneDust(int dustIndex)
Definition Dust.cs:233
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 Dust NewDustPerfect(Vector2 Position, int Type, Vector2? Velocity=null, int Alpha=0, Color newColor=default(Color), float Scale=1f)
Definition Dust.cs:52
static Dust NewDustDirect(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:63
Vector2 velocity
Definition Dust.cs:22
Vector2 Center
Definition Entity.cs:43
Vector2 velocity
Definition Entity.cs:16
static Tile GetTileSafely(Vector2 position)
Definition Framing.cs:419
static void HandleSpecialEvent(Player player, int eventID)
static void RequestParticleSpawn(bool clientOnly, ParticleOrchestraType type, ParticleOrchestraSettings settings, int? overrideInvokingPlayerIndex=null)
static PlayerQueenSlimeMountTextureContent QueenSlimeMount
static Asset< Texture2D > BunnyMount
static Asset< Texture2D > PigronMount
static Asset< Texture2D >[] MinecartMechMount
static Asset< Texture2D > MinecartMount
static Asset< Texture2D > UnicornMount
static Asset< Texture2D >[] GlowMask
static Asset< Texture2D >[] RudolphMount
static Asset< Texture2D > TurtleMount
static Asset< Texture2D >[] UfoMount
static Asset< Texture2D >[] DrillMount
static Asset< Texture2D >[] BeeMount
static Asset< Texture2D >[] CuteFishronMount
static Asset< Texture2D >[] Extra
static Asset< Texture2D > MinecartWoodMount
static Asset< Texture2D >[] ScutlixMount
static Asset< Texture2D > SlimeMount
static Asset< Texture2D > FishMinecartMount
static Asset< Texture2D > MagicPixel
static Asset< Texture2D > DesertMinecartMount
static Asset< Texture2D > BasiliskMount
static int NewGore(Vector2 Position, Vector2 Velocity, int Type, float Scale=1f)
Definition Gore.cs:1288
static ArmorShaderDataSet Armor
Definition GameShaders.cs:7
static Color CurrentLiquidColor
Definition Colors.cs:98
static bool[] FacePlayersVelocity
Definition MountID.cs:11
static bool[] Cart
Definition MountID.cs:9
static int Count
Definition MountID.cs:124
static readonly LegacySoundStyle Item89
Definition SoundID.cs:592
static readonly LegacySoundStyle Item11
Definition SoundID.cs:436
int useStyle
Definition Item.cs:139
int holdStyle
Definition Item.cs:137
static void AddLight(Vector2 position, Vector3 rgb)
Definition Lighting.cs:137
static bool raining
Definition Main.cs:1310
static bool[] tileSolidTop
Definition Main.cs:1469
static double worldSurface
Definition Main.cs:1272
static int myPlayer
Definition Main.cs:1801
static int netMode
Definition Main.cs:2095
static Gore[] gore
Definition Main.cs:1687
static bool dedServ
Definition Main.cs:1226
static float WindForVisuals
Definition Main.cs:2827
static Vector2 screenPosition
Definition Main.cs:1715
static bool[] tileSolid
Definition Main.cs:1471
static Tile[,] tile
Definition Main.cs:1675
static Projectile[] projectile
Definition Main.cs:1691
static UnifiedRandom rand
Definition Main.cs:1387
static NPC[] npc
Definition Main.cs:1685
static int mouseY
Definition Main.cs:606
static bool hardMode
Definition Main.cs:1022
static int mouseX
Definition Main.cs:604
static Dust[] dust
Definition Main.cs:1677
Asset< Texture2D > frontTextureGlow
Definition Mount.cs:118
MountDelegatesData delegations
Definition Mount.cs:232
Asset< Texture2D > frontTexture
Definition Mount.cs:116
Asset< Texture2D > frontTextureExtra
Definition Mount.cs:120
Asset< Texture2D > backTextureExtraGlow
Definition Mount.cs:114
Asset< Texture2D > backTextureGlow
Definition Mount.cs:110
Asset< Texture2D > backTextureExtra
Definition Mount.cs:112
Asset< Texture2D > backTexture
Definition Mount.cs:108
Asset< Texture2D > frontTextureExtraGlow
Definition Mount.cs:122
OverridePositionMethod MouthPosition
Definition Mount.cs:93
OverridePositionMethod HandPosition
Definition Mount.cs:95
delegate bool OverridePositionMethod(Player player, out Vector2? position)
Action< Player, Vector2, int, int > MinecartJumpingSound
Definition Mount.cs:87
Action< Player, Vector2, int, int > MinecartLandingSound
Definition Mount.cs:89
Action< Player, Vector2, int, int > MinecartBumperSound
Definition Mount.cs:91
Action< Vector2 > MinecartDust
Definition Mount.cs:85
static Vector2 santankTextureSize
Definition Mount.cs:285
static int drillPickPower
Definition Mount.cs:277
bool _abilityCharging
Definition Mount.cs:313
void CheckMountBuff(Player mountedPlayer)
Definition Mount.cs:4480
float _frameCounter
Definition Mount.cs:295
bool IsConsideredASlimeMount
Definition Mount.cs:471
int _abilityCharge
Definition Mount.cs:315
float _frameExtraCounter
Definition Mount.cs:299
const int FrameSwimming
Definition Mount.cs:247
const float drillRotationChange
Definition Mount.cs:275
void CastSuperCartLaser(Player mountedPlayer)
Definition Mount.cs:4411
bool CheckBuff(int buffID)
Definition Mount.cs:2443
static Vector2[] scutlixEyePositions
Definition Mount.cs:261
static float SuperCartDashSpeed
Definition Mount.cs:335
int _abilityCooldown
Definition Mount.cs:317
const int DrawBack
Definition Mount.cs:251
bool AimAbility(Player mountedPlayer, Vector2 mousePosition)
Definition Mount.cs:4548
void DoConfettiMinecartEffect(Player mountedPlayer)
Definition Mount.cs:4023
bool _flipDraw
Definition Mount.cs:291
bool _active
Definition Mount.cs:331
void UseAbility(Player mountedPlayer, Vector2 mousePosition, bool toggleOn)
Definition Mount.cs:2716
static void SetAsMinecart(MountData newMount, int buffToLeft, int buffToRight, Asset< Texture2D > texture, int verticalOffset=0, int playerVerticalOffset=0)
Definition Mount.cs:2257
const int drillTextureWidth
Definition Mount.cs:273
float GetWitchBroomTrinketRotation(Player player)
Definition Mount.cs:3003
static void EmitGolfCartlight(Vector2 worldLocation, int playerDirection)
Definition Mount.cs:3894
int PlayerXOFfset
Definition Mount.cs:359
void TryBeginningFlight(Player mountedPlayer, int state)
Definition Mount.cs:3782
int GetIntendedGroundedFrame(Player mountedPlayer)
Definition Mount.cs:3802
void Dismount(Player mountedPlayer)
Definition Mount.cs:5229
void DoSteamMinecartEffect(Player mountedPlayer, int dustType)
Definition Mount.cs:3968
MountData _data
Definition Mount.cs:287
float FallDamage
Definition Mount.cs:464
void ResetHeadPosition()
Definition Mount.cs:4496
MountDelegatesData Delegations
Definition Mount.cs:507
const int DrawFront
Definition Mount.cs:255
void DoSpawnDust(Player mountedPlayer, bool isDismounting)
Definition Mount.cs:5342
bool _aiming
Definition Mount.cs:323
bool Directional
Definition Mount.cs:495
int BodyFrame
Definition Mount.cs:353
static int currentShader
Definition Mount.cs:237
bool AbilityCharging
Definition Mount.cs:520
static float SuperCartJumpSpeed
Definition Mount.cs:341
bool CanMount(int m, Player mountingPlayer)
Definition Mount.cs:5452
static Vector2 drillDiodePoint1
Definition Mount.cs:267
float JumpSpeed(float xVelocity)
Definition Mount.cs:2347
bool Hover(Player mountedPlayer)
Definition Mount.cs:2807
void Draw(List< DrawData > playerDrawData, int drawType, Player drawPlayer, Vector2 Position, Color drawColor, SpriteEffects playerEffect, float shadow)
Definition Mount.cs:4715
object _mountSpecificData
Definition Mount.cs:329
static float SuperCartRunSpeed
Definition Mount.cs:333
const int FrameInAir
Definition Mount.cs:243
static void MeowcartBumperSound(Player Player, Vector2 Position, int Width, int Height)
Definition Mount.cs:544
bool Active
Definition Mount.cs:345
float _fatigue
Definition Mount.cs:309
const int FrameStanding
Definition Mount.cs:239
bool BlockExtraJumps
Definition Mount.cs:468
void UpdateEffects(Player mountedPlayer)
Definition Mount.cs:4057
int _idleTimeNext
Definition Mount.cs:307
int _frameExtra
Definition Mount.cs:297
bool FindTileHeight(Vector2 position, int maxTilesDown, out float tileHeight)
Definition Mount.cs:5457
int _abilityDuration
Definition Mount.cs:319
void UpdateDrill(Player mountedPlayer, bool controlUp, bool controlDown)
Definition Mount.cs:2497
static MountData[] mounts
Definition Mount.cs:259
Vector2 Origin
Definition Mount.cs:518
float Acceleration
Definition Mount.cs:453
bool CanFly()
Definition Mount.cs:2371
void TryLanding(Player mountedPlayer)
Definition Mount.cs:3811
bool _shouldSuperCart
Definition Mount.cs:325
const int FrameDashing
Definition Mount.cs:249
Vector2 GetWitchBroomTrinketOriginOffset(Player player)
Definition Mount.cs:3018
void Reset()
Definition Mount.cs:555
bool AbilityActive
Definition Mount.cs:522
static int drillPickTime
Definition Mount.cs:279
void UseDrill(Player mountedPlayer)
Definition Mount.cs:2520
static bool ShouldGolfCartEmitLight()
Definition Mount.cs:3914
static void EmitGolfCartSmoke(Player mountedPlayer, bool rushing)
Definition Mount.cs:3876
static Vector2 GetMinecartMechPoint(Player mountedPlayer, int offX, int offY)
Definition Mount.cs:4445
static void EmitGolfCartWheelDust(Player mountedPlayer, Vector2 legSpot)
Definition Mount.cs:3919
bool DoesHoverIgnoresFatigue()
Definition Mount.cs:2994
const int scutlixBaseDamage
Definition Mount.cs:265
void SetMount(int m, Player mountedPlayer, bool faceLeft=false)
Definition Mount.cs:5258
void FatigueRecovery()
Definition Mount.cs:2475
static int GetHeightBoost(int MountType)
Definition Mount.cs:2312
int JumpHeight(float xVelocity)
Definition Mount.cs:2321
static int SuperCartJumpHeight
Definition Mount.cs:339
void AbilityRecovery()
Definition Mount.cs:2452
static void Initialize()
Definition Mount.cs:575
const int FrameFlying
Definition Mount.cs:245
static void SetAsHorse(MountData newMount, int buff, Asset< Texture2D > texture)
Definition Mount.cs:2194
static float SuperCartAcceleration
Definition Mount.cs:337
static Vector2 drillDiodePoint2
Definition Mount.cs:269
int PlayerOffsetHitbox
Definition Mount.cs:378
static int amountOfBeamsAtOnce
Definition Mount.cs:281
int PlayerHeadOffset
Definition Mount.cs:390
Point16 DrillSmartCursor_Walls(Player mountedPlayer, DrillMountData data)
Definition Mount.cs:2678
bool CanHover()
Definition Mount.cs:2384
int _frameState
Definition Mount.cs:301
int _idleTime
Definition Mount.cs:305
float RunSpeed
Definition Mount.cs:404
MountDelegatesData _defaultDelegatesData
Definition Mount.cs:343
const float maxDrillLength
Definition Mount.cs:283
static Vector2 scutlixTextureSize
Definition Mount.cs:263
void ResetFlightTime(float xVelocity)
Definition Mount.cs:4471
bool AllowDirectionChange
Definition Mount.cs:527
float _fatigueMax
Definition Mount.cs:311
void StartAbilityCharge(Player mountedPlayer)
Definition Mount.cs:2406
void UpdateFrame_GolfCart(Player mountedPlayer, int state, Vector2 velocity)
Definition Mount.cs:3823
void DoExhaustMinecartEffect(Player mountedPlayer, int dustType)
Definition Mount.cs:3987
int HeightBoost
Definition Mount.cs:401
List< DrillDebugDraw > _debugDraw
Definition Mount.cs:327
const int FrameRunning
Definition Mount.cs:241
void StopAbilityCharge()
Definition Mount.cs:2432
bool _abilityActive
Definition Mount.cs:321
bool Flight()
Definition Mount.cs:2487
Vector2 ClampToDeadZone(Player mountedPlayer, Vector2 position)
Definition Mount.cs:4509
static Vector2 drillTextureSize
Definition Mount.cs:271
float AbilityCharge
Definition Mount.cs:524
static void MeowcartLandingSound(Player Player, Vector2 Position, int Width, int Height)
Definition Mount.cs:539
const int DrawBackExtra
Definition Mount.cs:253
void DoGemMinecartEffect(Player mountedPlayer, int dustType)
Definition Mount.cs:3951
int PlayerOffset
Definition Mount.cs:362
bool AutoJump
Definition Mount.cs:466
float DashSpeed
Definition Mount.cs:441
const int DrawFrontExtra
Definition Mount.cs:257
IEntitySource GetProjectileSpawnSource(Player mountedPlayer)
Definition Mount.cs:2401
void UpdateFrame(Player mountedPlayer, int state, Vector2 velocity)
Definition Mount.cs:3023
Point16 DrillSmartCursor_Blocks(Player mountedPlayer, DrillMountData data)
Definition Mount.cs:2642
static void SendData(int msgType, int remoteClient=-1, int ignoreClient=-1, NetworkText text=null, int number=0, float number2=0f, float number3=0f, float number4=0f, int number5=0, int number6=0, int number7=0)
Definition NetMessage.cs:88
int itemAnimationMax
Definition Player.cs:2567
static readonly int maxBuffs
Definition Player.cs:1191
float MountFishronSpecialCounter
Definition Player.cs:2557
Item lastVisualizedSelectedItem
Definition Player.cs:1261
static bool CanPlayerSmashWall(int X, int Y)
Definition Player.cs:43698
Rectangle bodyFrame
Definition Player.cs:1373
static float defaultGravity
Definition Player.cs:2087
float fullRotation
Definition Player.cs:1291
static int NewProjectile(IEntitySource spawnSource, Vector2 position, Vector2 velocity, int Type, int Damage, float KnockBack, int Owner=-1, float ai0=0f, float ai1=0f, float ai2=0f)
static void SmoothSlope(int x, int y, bool applyToNeighbors=true, bool sync=false)
Definition Tile.cs:759
ushort type
Definition Tile.cs:8
bool active()
Definition Tile.cs:565
ushort wall
Definition Tile.cs:10
static Vector2 RandomVector2(UnifiedRandom random, float min, float max)
Definition Utils.cs:1823
static float GetLerpValue(float from, float to, float t, bool clamped=false)
Definition Utils.cs:203
static bool PlotTileLine(Vector2 start, Vector2 end, float width, TileActionAttempt plot)
Definition Utils.cs:1670
static bool SolidTile(Tile testTile)
static bool CanKillTile(int i, int j, SpecialKillTileContext context)
static bool InAPlaceWithWind(Vector2 position, int width, int height)
static int KillTile_MakeTileDust(int i, int j, Tile tileCache)
static bool SolidTileAllowBottomSlope(int i, int j)
static int KillTile_GetTileDustAmount(bool fail, Tile tileCache)
static bool InWorld(int x, int y, int fluff=0)
Definition WorldGen.cs:5816
static Color CornflowerBlue
Definition Color.cs:112
static Color Multiply(Color value, float scale)
Definition Color.cs:513
static Color Transparent
Definition Color.cs:76
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