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

◆ GetAnglerReward_MainReward()

void Terraria.Player.GetAnglerReward_MainReward ( IEntitySource source,
int questsDone,
float rarityReduction,
int questItemType,
ref GetItemSettings anglerRewardSettings )
inlineprivate

Definition at line 52803 of file Player.cs.

52804 {
52805 Item item = new Item();
52806 item.type = 0;
52807 switch (questsDone)
52808 {
52809 case 5:
52810 item.SetDefaults(2428);
52811 break;
52812 case 10:
52813 item.SetDefaults(2367);
52814 break;
52815 case 15:
52816 item.SetDefaults(2368);
52817 break;
52818 case 20:
52819 item.SetDefaults(2369);
52820 break;
52821 case 25:
52822 item.SetDefaults(3031);
52823 break;
52824 case 30:
52825 item.SetDefaults(2294);
52826 break;
52827 default:
52828 {
52829 if (questItemType == 2451 && Main.hardMode)
52830 {
52831 item.SetDefaults((Main.rand.Next(2) == 0) ? 5303 : 5302);
52832 break;
52833 }
52834 if (questItemType == 2451 && !Main.hardMode && Main.rand.Next(2) == 0)
52835 {
52836 item.SetDefaults((Main.rand.Next(2) == 0) ? 5303 : 5302);
52837 break;
52838 }
52839 List<int> list = new List<int> { 2373, 2374, 2375, 3120, 3037, 3096, 5139 };
52840 float num = 1f;
52841 for (int i = 0; i < 3; i++)
52842 {
52843 num *= 1f - 1f / (float)(int)(40f * rarityReduction);
52844 }
52845 for (int j = 0; j < 3; j++)
52846 {
52847 num *= 1f - 1f / (float)(int)(30f * rarityReduction);
52848 }
52849 num *= 1f - 1f / (float)(int)(25f * rarityReduction);
52850 float num2 = 1f - num;
52851 num2 *= 0.8f;
52852 if (questsDone > 75 && Main.rand.Next((int)(250f * rarityReduction)) == 0)
52853 {
52854 item.SetDefaults(2294);
52855 break;
52856 }
52857 if (Main.hardMode && questsDone > 25 && Main.rand.Next((int)(100f * rarityReduction)) == 0)
52858 {
52859 item.SetDefaults(2422);
52860 break;
52861 }
52862 if (Main.hardMode && questsDone > 10 && Main.rand.Next((int)(70f * rarityReduction)) == 0)
52863 {
52864 item.SetDefaults(2494);
52865 break;
52866 }
52867 if (questsDone > 10 && Main.rand.Next((int)(70f * rarityReduction)) == 0)
52868 {
52869 item.SetDefaults(3031);
52870 break;
52871 }
52872 if (questsDone > 10 && Main.rand.Next((int)(70f * rarityReduction)) == 0)
52873 {
52874 item.SetDefaults(3032);
52875 break;
52876 }
52877 if (Main.rand.Next((int)(80f * rarityReduction)) == 0)
52878 {
52879 item.SetDefaults(3183);
52880 break;
52881 }
52882 if (Main.rand.Next((int)(60f * rarityReduction)) == 0)
52883 {
52884 item.SetDefaults(2360);
52885 break;
52886 }
52887 if (Main.rand.Next((int)(60f * rarityReduction)) == 0)
52888 {
52889 item.SetDefaults(4067);
52890 break;
52891 }
52892 if (Main.rand.Next((int)(80f * rarityReduction)) == 0)
52893 {
52894 item.SetDefaults(2417);
52895 break;
52896 }
52897 if (Main.rand.Next((int)(80f * rarityReduction)) == 0)
52898 {
52899 item.SetDefaults(2498);
52900 break;
52901 }
52903 {
52904 item.SetDefaults(itemIdToDrop);
52905 break;
52906 }
52907 if (!botheredRollingForADrop && Main.rand.NextDouble() < (double)num2)
52908 {
52909 int defaults = Utils.SelectRandom(Main.rand, list.ToArray());
52910 item.SetDefaults(defaults);
52911 break;
52912 }
52913 switch (Main.rand.Next(3))
52914 {
52915 case 0:
52916 item.SetDefaults(2354);
52917 item.stack = Main.rand.Next(2, 6);
52918 break;
52919 case 1:
52920 item.SetDefaults(2355);
52921 item.stack = Main.rand.Next(2, 6);
52922 break;
52923 default:
52924 item.SetDefaults(2356);
52925 item.stack = Main.rand.Next(2, 6);
52926 break;
52927 }
52928 break;
52929 }
52930 }
52931 item.position = base.Center;
52933 if (item2.stack > 0)
52934 {
52935 int number = Item.NewItem(source, (int)position.X, (int)position.Y, width, height, item2.type, item2.stack, noBroadcast: false, 0, noGrabDelay: true);
52936 if (Main.netMode == 1)
52937 {
52938 NetMessage.SendData(21, -1, -1, null, number, 1f);
52939 }
52940 }
52941 if (item.type == 2417)
52942 {
52943 Item item3 = new Item();
52944 Item item4 = new Item();
52945 item3.SetDefaults(2418);
52946 item3.position = base.Center;
52948 if (item2.stack > 0)
52949 {
52950 int number2 = Item.NewItem(source, (int)position.X, (int)position.Y, width, height, item2.type, item2.stack, noBroadcast: false, 0, noGrabDelay: true);
52951 if (Main.netMode == 1)
52952 {
52953 NetMessage.SendData(21, -1, -1, null, number2, 1f);
52954 }
52955 }
52956 item4.SetDefaults(2419);
52957 item4.position = base.Center;
52959 if (item2.stack > 0)
52960 {
52961 int number3 = Item.NewItem(source, (int)position.X, (int)position.Y, width, height, item2.type, item2.stack, noBroadcast: false, 0, noGrabDelay: true);
52962 if (Main.netMode == 1)
52963 {
52964 NetMessage.SendData(21, -1, -1, null, number3, 1f);
52965 }
52966 }
52967 }
52968 else
52969 {
52970 if (item.type != 2498)
52971 {
52972 return;
52973 }
52974 Item item5 = new Item();
52975 Item item6 = new Item();
52976 item5.SetDefaults(2499);
52977 item5.position = base.Center;
52979 if (item2.stack > 0)
52980 {
52981 int number4 = Item.NewItem(source, (int)position.X, (int)position.Y, width, height, item2.type, item2.stack, noBroadcast: false, 0, noGrabDelay: true);
52982 if (Main.netMode == 1)
52983 {
52984 NetMessage.SendData(21, -1, -1, null, number4, 1f);
52985 }
52986 }
52987 item6.SetDefaults(2500);
52988 item6.position = base.Center;
52990 if (item2.stack > 0)
52991 {
52992 int number5 = Item.NewItem(source, (int)position.X, (int)position.Y, width, height, item2.type, item2.stack, noBroadcast: false, 0, noGrabDelay: true);
52993 if (Main.netMode == 1)
52994 {
52995 NetMessage.SendData(21, -1, -1, null, number5, 1f);
52996 }
52997 }
52998 }
52999 }
Vector2 position
Definition Entity.cs:14
Item GetItem(int plr, Item newItem, GetItemSettings settings)
Definition Player.cs:37130
bool DropAnglerAccByMissing(List< int > itemIdsOfAccsWeWant, float totalChance, out bool botheredRollingForADrop, out int itemIdToDrop)
Definition Player.cs:53154

References Terraria.Main.hardMode, System.item, System.list, Terraria.Main.netMode, Terraria.Item.NewItem(), Terraria.Main.rand, Terraria.NetMessage.SendData(), and System.source.