Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ItemDropDatabase.cs
Go to the documentation of this file.
2using System.Linq;
3using Terraria.ID;
4
6
7public class ItemDropDatabase
8{
10
12
14
15 private int _masterModeDropRng = 4;
16
18 {
20 foreach (KeyValuePair<int, NPC> item in ContentSamples.NpcsByNetId.Where((KeyValuePair<int, NPC> x) => x.Key < 0))
21 {
22 if (!_npcNetIdsByType.ContainsKey(item.Value.type))
23 {
24 _npcNetIdsByType[item.Value.type] = new List<int>();
25 }
26 _npcNetIdsByType[item.Value.type].Add(item.Value.netID);
27 }
28 }
29
31 {
32 for (int i = -65; i < 0; i++)
33 {
35 {
36 _entriesByNpcNetId[i] = value.Distinct().ToList();
37 }
38 }
39 }
40
42 {
45 {
46 list.AddRange(_globalEntries);
47 }
49 {
50 list.AddRange(value);
51 }
52 return list;
53 }
54
60
62 {
64 if (type > 0 && _npcNetIdsByType.TryGetValue(type, out var value))
65 {
66 for (int i = 0; i < value.Count; i++)
67 {
68 RegisterToNPCNetId(value[i], entry);
69 }
70 }
71 return entry;
72 }
73
82
84 {
85 for (int i = 0; i < npcNetIds.Length; i++)
86 {
88 }
89 return entry;
90 }
91
93 {
94 for (int i = 0; i < npcNetIds.Length; i++)
95 {
97 }
98 return entry;
99 }
100
102 {
103 for (int i = 0; i < npcNetIds.Length; i++)
104 {
106 }
107 return entry;
108 }
109
117
119 {
121 if (type > 0 && _npcNetIdsByType.TryGetValue(type, out var value))
122 {
123 for (int i = 0; i < value.Count; i++)
124 {
125 RemoveFromNPCNetId(value[i], entry);
126 }
127 }
128 return entry;
129 }
130
132 {
133 for (int i = 0; i < npcNetIds.Length; i++)
134 {
136 }
137 return entry;
138 }
139
163
165 {
166 RegisterToMultipleNPCs(ItemDropRule.Common(4608, 2, 4, 6), 587, 586);
167 RegisterToMultipleNPCs(ItemDropRule.Common(4608, 2, 7, 10), 620, 621, 618);
171 RegisterToMultipleNPCs(ItemDropRule.Common(3213, 15), 587, 586);
172 RegisterToNPC(620, ItemDropRule.Common(4270, 8));
173 RegisterToNPC(620, ItemDropRule.Common(4317, 8));
174 RegisterToNPC(621, ItemDropRule.Common(4272, 8));
175 RegisterToNPC(621, ItemDropRule.Common(4317, 8));
176 RegisterToNPC(618, ItemDropRule.NormalvsExpert(4269, 2, 1));
177 RegisterToNPC(618, ItemDropRule.Common(4054, 10));
178 RegisterToNPC(618, ItemDropRule.NormalvsExpert(4271, 2, 1));
179 RegisterToMultipleNPCs(ItemDropRule.Common(4271, 5), 53, 536);
181 RegisterToMultipleNPCs(ItemDropRule.ByCondition(condition, 4271, 100), 489, 490);
182 RegisterToMultipleNPCs(ItemDropRule.ByCondition(condition, 4271, 25), 587, 586, 621, 620);
183 }
184
185 private void RegisterEclipse()
186 {
190 RegisterToNPC(251, ItemDropRule.Common(5239, 15));
191 RegisterToNPC(251, ItemDropRule.Common(5236, 15));
192 RegisterToNPC(477, ItemDropRule.Common(5237, 15));
193 RegisterToNPC(253, ItemDropRule.Common(5223, 60));
194 RegisterToNPC(460, ItemDropRule.Common(5227, 60));
195 RegisterToNPC(469, ItemDropRule.Common(5260, 60));
196 RegisterToMultipleNPCs(ItemDropRule.Common(5261, 450), 166, 162);
197 RegisterToNPC(462, ItemDropRule.Common(5262, 60));
202 rule.OnSuccess(ItemDropRule.ExpertGetsRerolls(1570, 4, 1));
203 rule2.OnSuccess(ItemDropRule.ExpertGetsRerolls(2770, 20, 1));
204 rule2.OnSuccess(ItemDropRule.ExpertGetsRerolls(3292, 3, 1));
205 RegisterToNPC(253, new LeadingConditionRule(condition)).OnSuccess(ItemDropRule.ExpertGetsRerolls(1327, 40, 1));
217 itemDropRule.OnSuccess(ItemDropRule.Common(3108, 1, 100, 200), hideLootReport: true);
218 itemDropRule2.OnSuccess(ItemDropRule.Common(3108, 1, 100, 200), hideLootReport: true);
220 }
221
222 private void RegisterMimic()
223 {
224 RegisterToNPC(85, new LeadingConditionRule(new Conditions.NotRemixSeed())).OnSuccess(ItemDropRule.OneFromOptions(1, 437, 517, 535, 536, 532, 554));
225 RegisterToNPC(85, new LeadingConditionRule(new Conditions.RemixSeedHardmode())).OnSuccess(ItemDropRule.OneFromOptions(1, 437, 3069, 535, 536, 532, 554));
226 RegisterToNPC(85, new LeadingConditionRule(new Conditions.RemixSeedEasymode())).OnSuccess(ItemDropRule.OneFromOptions(1, 49, 50, 53, 54, 5011, 975));
228 itemDropRule.OnFailedRoll(new LeadingConditionRule(new Conditions.NotRemixSeed())).OnSuccess(ItemDropRule.OneFromOptions(1, 676, 725, 1264));
229 itemDropRule.OnFailedRoll(new LeadingConditionRule(new Conditions.RemixSeedHardmode())).OnSuccess(ItemDropRule.OneFromOptions(1, 676, 1319, 1264));
230 itemDropRule.OnFailedRoll(new LeadingConditionRule(new Conditions.RemixSeedEasymode())).OnSuccess(ItemDropRule.OneFromOptions(1, 670, 724, 950, 725, 987, 1579));
232 }
233
235 {
236 int[] npcNetIds = new int[12]
237 {
238 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
239 279, 280
240 };
259 RegisterToNPC(288, ItemDropRule.Common(1508, 1, 1, 2));
260 }
261
287
303
320
322 {
327 RegisterToNPC(315, ItemDropRule.ByCondition(condition, 1857, 20));
328 int[] npcNetIds = new int[10] { 305, 306, 307, 308, 309, 310, 311, 312, 313, 314 };
329 RegisterToMultipleNPCs(new LeadingConditionRule(condition), npcNetIds).OnSuccess(ItemDropRule.OneFromOptions(10, 1788, 1789, 1790));
332 itemDropRule.OnSuccess(ItemDropRule.Common(1836, 1, 30, 60), hideLootReport: true);
334 rule.OnSuccess(ItemDropRule.ByCondition(condition2, 1855));
335 rule.OnSuccess(ItemDropRule.ByCondition(new Conditions.IsExpert(), 4444, 5));
336 rule.OnSuccess(ItemDropRule.MasterModeCommonDrop(4941));
339 itemDropRule2.OnSuccess(ItemDropRule.Common(1783, 1, 50, 100), hideLootReport: true);
341 itemDropRule3.OnSuccess(ItemDropRule.Common(1785, 1, 25, 50), hideLootReport: true);
344 rule2.OnSuccess(ItemDropRule.ByCondition(condition2, 1856));
345 rule2.OnSuccess(ItemDropRule.MasterModeCommonDrop(4942));
347 RegisterToNPC(326, new DropBasedOnMasterAndExpertMode(new CommonDrop(1729, 1, 1, 3), new CommonDrop(1729, 1, 1, 4), new CommonDrop(1729, 1, 2, 4)));
348 RegisterToNPC(325, new DropBasedOnMasterAndExpertMode(new CommonDrop(1729, 1, 15, 30), new CommonDrop(1729, 1, 25, 40), new CommonDrop(1729, 1, 30, 50)));
349 }
350
352 {
357 rule.OnSuccess(ItemDropRule.ByCondition(condition2, 1962));
358 rule.OnSuccess(ItemDropRule.Common(1871, 15)).OnFailedRoll(ItemDropRule.OneFromOptions(1, 1916, 1928, 1930));
359 rule.OnSuccess(ItemDropRule.MasterModeCommonDrop(4944));
362 rule2.OnSuccess(ItemDropRule.ByCondition(condition2, 1960));
363 rule2.OnSuccess(ItemDropRule.ByCondition(condition3, 1914, 15));
364 rule2.OnSuccess(ItemDropRule.Common(1959, 15)).OnFailedRoll(ItemDropRule.OneFromOptions(1, 1931, 1946, 1947));
365 rule2.OnSuccess(ItemDropRule.MasterModeCommonDrop(4943));
368 rule3.OnSuccess(ItemDropRule.ByCondition(condition2, 1961));
369 rule3.OnSuccess(ItemDropRule.OneFromOptions(1, 1910, 1929));
370 rule3.OnSuccess(ItemDropRule.MasterModeCommonDrop(4945));
372 int[] npcNetIds = new int[3] { 338, 339, 340 };
375 }
376
391
413
415 {
416 Conditions.NotExpert condition = new Conditions.NotExpert();
417 short type = 127;
421 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 2107, 7));
422 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 1225, 1, 15, 30));
423 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 547, 1, 25, 40));
425 }
426
428 {
429 Conditions.NotExpert condition = new Conditions.NotExpert();
430 short type = 134;
434 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 2113, 7));
435 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 1225, 1, 15, 30));
436 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 548, 1, 25, 40));
438 }
439
454
473
474 private void RegisterBoss_BOC()
475 {
476 Conditions.NotExpert condition = new Conditions.NotExpert();
477 short type = 266;
481 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 880, 1, 40, 90));
482 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 2104, 7));
483 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 3060, 20));
484 short type2 = 267;
485 RegisterToNPC(type2, new DropBasedOnMasterAndExpertMode(new CommonDrop(1329, 3, 2, 5, 2), new CommonDrop(1329, 3, 1, 3, 2), new CommonDrop(1329, 4, 1, 2, 2)));
486 RegisterToNPC(type2, new DropBasedOnMasterAndExpertMode(new CommonDrop(880, 3, 5, 12, 2), new CommonDrop(880, 3, 5, 7, 2), new CommonDrop(880, 3, 2, 4, 2)));
487 }
488
504
506 {
507 Conditions.NotExpert condition = new Conditions.NotExpert();
508 short type = 668;
512 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 5109, 7));
513 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 5098, 3));
514 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 5101, 3));
515 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 5113, 3));
516 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 5385, 14));
517 RegisterToNPC(type, new LeadingConditionRule(condition)).OnSuccess(new OneFromRulesRule(1, ItemDropRule.OneFromOptionsNotScalingWithLuck(1, 5117, 5118, 5119, 5095)));
518 }
519
521 {
522 Conditions.NotExpert condition = new Conditions.NotExpert();
523 short type = 222;
527 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 2108, 7));
529 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 1132, 3));
530 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 1170, 15));
531 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 2502, 20));
532 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 1129, 3)).OnFailedRoll(ItemDropRule.OneFromOptionsNotScalingWithLuck(2, 842, 843, 844));
533 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 1130, 4, 10, 30, 3));
534 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 2431, 1, 16, 26));
535 }
536
538 {
539 Conditions.NotExpert condition = new Conditions.NotExpert();
540 short type = 35;
544 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 1281, 7)).OnFailedRoll(ItemDropRule.Common(1273, 7)).OnFailedRoll(ItemDropRule.Common(1313, 7));
545 RegisterToNPC(type, ItemDropRule.Common(4993, 7));
546 }
547
548 private void RegisterBoss_WOF()
549 {
550 Conditions.NotExpert condition = new Conditions.NotExpert();
551 short type = 113;
555 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 2105, 7));
556 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 367));
557 RegisterToNPC(type, new LeadingConditionRule(condition)).OnSuccess(ItemDropRule.OneFromOptionsNotScalingWithLuck(1, 490, 491, 489, 2998));
558 RegisterToNPC(type, new LeadingConditionRule(condition)).OnSuccess(ItemDropRule.OneFromOptionsNotScalingWithLuck(1, 426, 434, 514, 4912));
559 }
560
562 {
563 short type = 439;
566 RegisterToNPC(type, ItemDropRule.Common(3372, 7));
567 RegisterToNPC(type, ItemDropRule.Common(3549));
568 }
569
571 {
572 Conditions.NotExpert condition = new Conditions.NotExpert();
573 short type = 398;
577 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 3373, 7));
578 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 4469, 10));
579 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 3384));
580 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 3460, 1, 70, 90));
581 RegisterToNPC(type, new LeadingConditionRule(condition)).OnSuccess(new FromOptionsWithoutRepeatsDropRule(2, 3063, 3389, 3065, 1553, 3930, 3541, 3570, 3571, 3569));
582 }
583
585 {
586 DropOneByOne.Parameters parameters = default(DropOneByOne.Parameters);
587 parameters.MinimumItemDropsCount = 12;
588 parameters.MaximumItemDropsCount = 20;
589 parameters.ChanceNumerator = 1;
590 parameters.ChanceDenominator = 1;
591 parameters.MinimumStackPerChunkBase = 1;
592 parameters.MaximumStackPerChunkBase = 3;
593 parameters.BonusMinDropsPerChunkPerPlayer = 0;
594 parameters.BonusMaxDropsPerChunkPerPlayer = 0;
597 parameters3.BonusMinDropsPerChunkPerPlayer = 1;
598 parameters3.BonusMaxDropsPerChunkPerPlayer = 1;
599 parameters3.MinimumStackPerChunkBase = (int)((float)parameters2.MinimumStackPerChunkBase * 1.5f);
600 parameters3.MaximumStackPerChunkBase = (int)((float)parameters2.MaximumStackPerChunkBase * 1.5f);
605 }
606
607 private void RegisterBoss_Betsy()
608 {
609 Conditions.NotExpert condition = new Conditions.NotExpert();
610 short type = 551;
614 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 3863, 7));
615 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 3883, 4));
616 RegisterToNPC(type, new LeadingConditionRule(condition)).OnSuccess(ItemDropRule.OneFromOptionsNotScalingWithLuck(1, 3827, 3859, 3870, 3858));
617 }
618
619 private void RegisterBoss_Golem()
620 {
621 Conditions.NotExpert condition = new Conditions.NotExpert();
622 short type = 245;
626 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 2110, 7));
627 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 1294, 4));
629 itemDropRule.OnSuccess(ItemDropRule.Common(1261, 1, 60, 180), hideLootReport: true);
631 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 2218, 1, 4, 8));
632 }
633
635 {
636 Conditions.NotExpert condition = new Conditions.NotExpert();
637 short type = 370;
641 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 2588, 7));
642 RegisterToNPC(type, ItemDropRule.ByCondition(condition, 2609, 15));
643 RegisterToNPC(type, new LeadingConditionRule(new Conditions.NotRemixSeed())).OnSuccess(new LeadingConditionRule(condition)).OnSuccess(ItemDropRule.OneFromOptions(1, 2611, 2624, 2622, 2621, 2623));
644 RegisterToNPC(type, new LeadingConditionRule(new Conditions.RemixSeed())).OnSuccess(new LeadingConditionRule(condition)).OnSuccess(ItemDropRule.OneFromOptions(1, 2611, 2624, 2622, 2621, 157));
645 }
646
647 private void RegisterWeirdRules()
648 {
650 }
651
652 private void RegisterGlobalRules()
653 {
656 RegisterToGlobal(ItemDropRule.ByCondition(new Conditions.HalloweenWeapons(), 1825, 2000)).OnFailedRoll(ItemDropRule.Common(1827, 2000));
669 }
670
671 private void RegisterFoodDrops()
672 {
673 RegisterToNPC(48, ItemDropRule.Food(4016, 50));
674 RegisterToNPC(224, ItemDropRule.Food(4021, 50));
675 RegisterToNPC(44, ItemDropRule.Food(4037, 10));
676 RegisterToNPC(469, ItemDropRule.Food(4037, 100));
677 RegisterToMultipleNPCs(ItemDropRule.Food(4020, 30), 163, 238, 164, 165, 530, 531);
678 RegisterToMultipleNPCs(ItemDropRule.Food(4029, 50), 480, 481);
679 RegisterToMultipleNPCs(ItemDropRule.Food(4030, 75), 498, 499, 500, 501, 502, 503, 504, 505, 506, 496, 497, 494, 495);
680 RegisterToMultipleNPCs(ItemDropRule.Food(4036, 50), 482, 483);
681 RegisterToMultipleNPCs(ItemDropRule.Food(4015, 100), 6, 173);
682 RegisterToMultipleNPCs(ItemDropRule.Food(4026, 150), 150, 147, 184);
683 RegisterToMultipleNPCs(ItemDropRule.Food(4027, 75), 154, 206);
684 RegisterToMultipleNPCs(ItemDropRule.Food(3532, 15), 170, 180, 171);
685 RegisterToNPC(289, ItemDropRule.Food(4018, 35));
686 RegisterToNPC(34, ItemDropRule.Food(4018, 70));
687 RegisterToMultipleNPCs(ItemDropRule.Food(4013, 21), 293, 291, 292);
688 RegisterToMultipleNPCs(ItemDropRule.Food(5042, 30), 43, 175, 56);
689 RegisterToNPC(287, ItemDropRule.Food(5042, 10));
690 RegisterToMultipleNPCs(ItemDropRule.Food(5041, 150), 21, 201, 202, 203, 322, 323, 324, 635, 449, 450, 451, 452);
691 RegisterToNPC(290, ItemDropRule.Food(4013, 7));
692 RegisterToMultipleNPCs(ItemDropRule.Food(4025, 30), 39, 156);
693 RegisterToMultipleNPCs(ItemDropRule.Food(4023, 40), 177, 152);
694 RegisterToMultipleNPCs(ItemDropRule.Food(4012, 50), 581, 509, 580, 508, 69);
695 RegisterToMultipleNPCs(ItemDropRule.Food(4028, 30), 546, 542, 544, 543, 545);
696 RegisterToMultipleNPCs(ItemDropRule.Food(4035, 50), 67, 65);
697 RegisterToMultipleNPCs(ItemDropRule.Food(4011, 150), 120, 137, 138);
698 RegisterToNPC(122, ItemDropRule.Food(4017, 75));
699 }
700
701 private void RegisterTownNPCDrops()
702 {
703 RegisterToNPC(22, new ItemDropWithConditionRule(867, 1, 1, 1, new Conditions.NamedNPC("Andrew")));
704 RegisterToNPC(178, new ItemDropWithConditionRule(4372, 1, 1, 1, new Conditions.NamedNPC("Whitney")));
705 RegisterToNPC(227, new ItemDropWithConditionRule(5290, 1, 1, 1, new Conditions.NamedNPC("Jim")));
706 RegisterToNPC(353, ItemDropRule.Common(3352, 8));
707 RegisterToNPC(441, ItemDropRule.Common(3351, 8));
708 RegisterToNPC(227, ItemDropRule.Common(3350, 10));
709 RegisterToNPC(550, ItemDropRule.Common(3821, 6));
710 RegisterToNPC(208, ItemDropRule.Common(3548, 4, 30, 60));
711 RegisterToNPC(207, ItemDropRule.Common(3349, 8));
712 RegisterToNPC(124, ItemDropRule.Common(4818, 8));
716 }
717
719 {
720 new Conditions.IsExpert();
721 RegisterToNPC(576, new CommonDropNotScalingWithLuck(3865, 7, 1, 1));
723 RegisterToNPC(576, ItemDropRule.NormalvsExpertOneFromOptionsNotScalingWithLuck(2, 1, 3852, 3854, 3823, 3835, 3836));
725 RegisterToNPC(577, new CommonDropNotScalingWithLuck(3865, 14, 1, 1));
729 RegisterToNPC(577, ItemDropRule.OneFromOptionsNotScalingWithLuck(4, 3852, 3854, 3823, 3835, 3836));
730 RegisterToNPC(577, ItemDropRule.Common(3856, 10));
731 RegisterToNPC(564, ItemDropRule.Common(3864, 7));
737 RegisterToNPC(565, ItemDropRule.Common(3864, 14));
744 }
745
747 {
748 RegisterToNPC(156, ItemDropRule.Common(1518, 50));
749 RegisterToNPC(243, ItemDropRule.Common(1519, 3));
750 RegisterToMultipleNPCs(ItemDropRule.Common(1517, 300), 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280);
751 RegisterToMultipleNPCs(ItemDropRule.Common(1520, 40), 159, 158);
752 RegisterToNPC(48, ItemDropRule.Common(1516, 150));
753 RegisterToNPC(176, new ItemDropWithConditionRule(1521, 100, 1, 1, new Conditions.BeatAnyMechBoss()));
755 }
756
757 private void RegisterYoyos()
758 {
764 }
765
767 {
768 RegisterToMultipleNPCs(ItemDropRule.StatusImmunityItem(885, 100), 104, 102, 269, 270, 271, 272);
769 RegisterToMultipleNPCs(ItemDropRule.StatusImmunityItem(886, 100), 77, 273, 274, 275, 276);
770 RegisterToMultipleNPCs(ItemDropRule.StatusImmunityItem(887, 100), 141, 176, 42, 231, 232, 233, 234, 235);
771 RegisterToMultipleNPCs(ItemDropRule.StatusImmunityItem(888, 100), 81, 79, 183, 630);
773 RegisterToMultipleNPCs(ItemDropRule.StatusImmunityItem(890, 100), 103, 75, 79, 630);
774 RegisterToMultipleNPCs(ItemDropRule.StatusImmunityItem(891, 100), 34, 83, 84, 179, 289);
777 }
778
779 private void RegisterPirateDrops()
780 {
781 int[] npcNetIds = new int[4] { 212, 213, 214, 215 };
815 RegisterToNPC(216, ItemDropRule.Common(905, 1000));
816 RegisterToNPC(216, ItemDropRule.Common(855, 500));
817 RegisterToNPC(216, ItemDropRule.Common(854, 250));
818 RegisterToNPC(216, ItemDropRule.Common(2584, 250));
819 RegisterToNPC(216, ItemDropRule.Common(3033, 125));
820 RegisterToNPC(216, ItemDropRule.Common(672, 50));
821 RegisterToNPC(491, ItemDropRule.Common(905, 50));
822 RegisterToNPC(491, ItemDropRule.Common(855, 15));
823 RegisterToNPC(491, ItemDropRule.Common(854, 15));
824 RegisterToNPC(491, ItemDropRule.Common(2584, 15));
825 RegisterToNPC(491, ItemDropRule.Common(3033, 15));
826 RegisterToNPC(491, ItemDropRule.Common(4471, 20));
827 RegisterToNPC(491, ItemDropRule.Common(672, 10));
830 RegisterToNPC(491, ItemDropRule.OneFromOptions(1, 1704, 1705, 1710, 1716, 1720, 2379, 2389, 2405, 2843, 3885, 2663, 3910, 2238, 2133, 2137, 2143, 2147, 2151, 2155));
831 }
832
834 {
835 }
836
837 private void RegisterBossTrophies()
838 {
840 RegisterToNPC(4, ItemDropRule.ByCondition(condition, 1360, 10));
841 RegisterToNPC(13, ItemDropRule.ByCondition(condition, 1361, 10));
842 RegisterToNPC(14, ItemDropRule.ByCondition(condition, 1361, 10));
843 RegisterToNPC(15, ItemDropRule.ByCondition(condition, 1361, 10));
844 RegisterToNPC(266, ItemDropRule.ByCondition(condition, 1362, 10));
845 RegisterToNPC(35, ItemDropRule.ByCondition(condition, 1363, 10));
846 RegisterToNPC(222, ItemDropRule.ByCondition(condition, 1364, 10));
847 RegisterToNPC(113, ItemDropRule.ByCondition(condition, 1365, 10));
848 RegisterToNPC(134, ItemDropRule.ByCondition(condition, 1366, 10));
849 RegisterToNPC(127, ItemDropRule.ByCondition(condition, 1367, 10));
850 RegisterToNPC(262, ItemDropRule.ByCondition(condition, 1370, 10));
851 RegisterToNPC(245, ItemDropRule.ByCondition(condition, 1371, 10));
852 RegisterToNPC(50, ItemDropRule.ByCondition(condition, 2489, 10));
853 RegisterToNPC(370, ItemDropRule.ByCondition(condition, 2589, 10));
854 RegisterToNPC(439, ItemDropRule.ByCondition(condition, 3357, 10));
855 RegisterToNPC(395, ItemDropRule.ByCondition(condition, 3358, 10));
856 RegisterToNPC(398, ItemDropRule.ByCondition(condition, 3595, 10));
857 RegisterToNPC(636, ItemDropRule.ByCondition(condition, 4783, 10));
858 RegisterToNPC(657, ItemDropRule.ByCondition(condition, 4958, 10));
859 RegisterToNPC(668, ItemDropRule.ByCondition(condition, 5108, 10));
860 RegisterToNPC(125, ItemDropRule.Common(1368, 10));
861 RegisterToNPC(126, ItemDropRule.Common(1369, 10));
862 RegisterToNPC(491, ItemDropRule.Common(3359, 10));
863 RegisterToNPC(551, ItemDropRule.Common(3866, 10));
864 RegisterToNPC(564, ItemDropRule.Common(3867, 10));
865 RegisterToNPC(565, ItemDropRule.Common(3867, 10));
866 RegisterToNPC(576, ItemDropRule.Common(3868, 10));
867 RegisterToNPC(577, ItemDropRule.Common(3868, 10));
868 }
869
870 private void RegisterMartianDrops()
871 {
872 RegisterToMultipleNPCs(ItemDropRule.Common(2860, 8, 8, 20), 520, 383, 389, 385, 382, 381, 390, 386);
873 int[] npcNetIds = new int[8] { 520, 383, 389, 385, 382, 381, 390, 386 };
877 int[] npcNetIds2 = new int[3] { 383, 389, 386 };
881 int[] npcNetIds3 = new int[4] { 385, 382, 381, 390 };
885 RegisterToNPC(395, ItemDropRule.OneFromOptionsNotScalingWithLuck(1, 2797, 2749, 2795, 2796, 2880, 2769));
888 RegisterToNPC(390, ItemDropRule.Common(2771, 30));
889 }
890
891 private void RegisterMiscDrops()
892 {
894 RegisterToMultipleNPCs(ItemDropRule.Common(3086, 1, 5, 10), 483, 482);
895 RegisterToNPC(77, ItemDropRule.Common(723, 150));
897 RegisterToNPC(471, ItemDropRule.NormalvsExpertOneFromOptions(2, 1, 3052, 3053, 3054));
898 RegisterToNPC(153, ItemDropRule.Common(1328, 12));
899 RegisterToNPC(59, new LeadingConditionRule(new Conditions.RemixSeed())).OnSuccess(ItemDropRule.Common(23, 1, 1, 2));
900 RegisterToNPC(59, new LeadingConditionRule(new Conditions.RemixSeed())).OnSuccess(ItemDropRule.NormalvsExpert(1309, 8000, 5600));
903 RegisterToNPC(49, new LeadingConditionRule(new Conditions.NotRemixSeed())).OnSuccess(ItemDropRule.Common(1325, 250));
904 RegisterToNPC(49, new LeadingConditionRule(new Conditions.RemixSeed())).OnSuccess(ItemDropRule.Common(1314, 250));
906 RegisterToNPC(109, new LeadingConditionRule(new Conditions.RemixSeed())).OnSuccess(ItemDropRule.Common(1325, 5));
908 RegisterToNPC(156, new LeadingConditionRule(new Conditions.RemixSeed())).OnSuccess(ItemDropRule.Common(112, 30));
909 RegisterToNPC(634, ItemDropRule.Common(4764, 40));
910 RegisterToNPC(185, ItemDropRule.Common(951, 150));
911 RegisterToNPC(185, new DropBasedOnExpertMode(ItemDropRule.Common(5070, 1, 1, 2), new CommonDrop(5070, 1, 1, 3)));
912 RegisterToNPC(44, ItemDropRule.Common(1320, 20));
913 RegisterToNPC(44, ItemDropRule.Common(88, 20));
914 RegisterToNPC(60, ItemDropRule.Common(1322, 150));
915 RegisterToNPC(151, ItemDropRule.Common(1322, 50));
916 RegisterToNPC(24, ItemDropRule.Common(1323, 20));
917 RegisterToNPC(109, ItemDropRule.Common(1324, 10));
918 RegisterToNPC(109, ItemDropRule.Common(4271, 10));
919 int[] npcNetIds = new int[2] { 163, 238 };
921 RegisterToMultipleNPCs(new DropBasedOnExpertMode(ItemDropRule.Common(2607, 2, 1, 3), new CommonDrop(2607, 10, 1, 3, 9)), npcNetIds);
922 RegisterToMultipleNPCs(ItemDropRule.Common(1306, 100), 197, 206, 169, 154);
923 RegisterToNPC(244, ItemDropRule.Common(23, 1, 1, 20));
924 RegisterToNPC(244, ItemDropRule.Common(662, 1, 30, 60));
925 RegisterToNPC(250, ItemDropRule.Common(1244, 15));
928 RegisterToNPC(110, ItemDropRule.Common(682, 200));
929 RegisterToNPC(110, ItemDropRule.Common(1321, 40));
930 RegisterToMultipleNPCs(ItemDropRule.Common(4428, 100), 170, 180, 171);
932 RegisterToMultipleNPCs(new ItemDropWithConditionRule(5096, 10, 1, 1, new Conditions.DontStarveIsUp()), 170, 180, 171);
933 RegisterToMultipleNPCs(new ItemDropWithConditionRule(5096, 25, 1, 1, new Conditions.DontStarveIsNotUp()), 170, 180, 171);
934 RegisterToNPC(154, ItemDropRule.Common(1253, 50));
935 RegisterToMultipleNPCs(ItemDropRule.Common(726, 50), 169, 206);
937 RegisterToNPC(155, ItemDropRule.NormalvsExpert(5130, 30, 25));
938 RegisterToNPC(480, ItemDropRule.Common(3269, 25));
939 RegisterToNPC(480, ItemDropRule.NormalvsExpert(3781, 40, 20));
940 int[] npcNetIds2 = new int[3] { 198, 199, 226 };
944 int[] npcNetIds3 = new int[4] { 78, 79, 80, 630 };
948 RegisterToNPC(473, ItemDropRule.OneFromOptions(1, 3008, 3014, 3012, 3015, 3023));
949 RegisterToNPC(474, ItemDropRule.OneFromOptions(1, 3006, 3007, 3013, 3016, 3020));
950 RegisterToNPC(475, ItemDropRule.OneFromOptions(1, 3029, 3030, 3051, 3022));
951 RegisterToNPC(476, ItemDropRule.Common(52, 3));
952 RegisterToNPC(476, ItemDropRule.Common(1724, 3));
953 RegisterToNPC(476, ItemDropRule.Common(2353, 3, 5, 10));
954 RegisterToNPC(476, ItemDropRule.Common(1922, 3));
955 RegisterToNPC(476, ItemDropRule.Common(678, 3, 3, 5));
956 RegisterToNPC(476, ItemDropRule.Common(1336, 3));
957 RegisterToNPC(476, ItemDropRule.Common(2676, 3, 2, 4));
958 RegisterToNPC(476, ItemDropRule.Common(2272, 3));
959 RegisterToNPC(476, ItemDropRule.Common(5395, 3));
960 RegisterToNPC(476, ItemDropRule.Common(4986, 3, 69, 69));
961 int[] npcNetIds4 = new int[3] { 473, 474, 475 };
965 RegisterToNPC(87, new DropBasedOnExpertMode(ItemDropRule.Common(575, 1, 5, 10), ItemDropRule.Common(575, 1, 10, 20)));
966 RegisterToMultipleNPCs(ItemDropRule.OneFromOptions(10, 803, 804, 805), 161, 431);
972 RegisterToNPC(167, ItemDropRule.Common(879, 50));
973 RegisterToNPC(628, ItemDropRule.Common(313, 2, 1, 2));
974 int[] npcNetIds5 = new int[3] { 143, 144, 145 };
976 RegisterToMultipleNPCs(ItemDropRule.Common(527, 10), 79, 630);
977 RegisterToNPC(80, ItemDropRule.Common(528, 10));
978 RegisterToNPC(524, ItemDropRule.Common(3794, 10, 1, 3));
979 RegisterToNPC(525, ItemDropRule.Common(3794, 10));
980 RegisterToNPC(525, ItemDropRule.Common(522, 3, 1, 3));
981 RegisterToNPC(525, ItemDropRule.Common(527, 15));
982 RegisterToNPC(526, ItemDropRule.Common(3794, 10));
983 RegisterToNPC(526, ItemDropRule.Common(1332, 3, 1, 3));
984 RegisterToNPC(526, ItemDropRule.Common(527, 15));
985 RegisterToNPC(527, ItemDropRule.Common(3794, 10));
986 RegisterToNPC(527, ItemDropRule.Common(528, 15));
987 RegisterToNPC(513, ItemDropRule.Common(3380, 2, 1, 2));
988 RegisterToNPC(532, ItemDropRule.Common(3380, 1, 1, 3));
989 RegisterToNPC(532, ItemDropRule.Common(3771, 50));
990 RegisterToNPC(528, ItemDropRule.Common(2802, 25));
991 RegisterToNPC(528, ItemDropRule.OneFromOptions(60, 3786, 3785, 3784));
992 RegisterToNPC(529, ItemDropRule.Common(2801, 25));
993 RegisterToNPC(529, ItemDropRule.OneFromOptions(40, 3786, 3785, 3784));
994 RegisterToMultipleNPCs(ItemDropRule.Common(18, 100), 49, 51, 150, 93, 634);
995 RegisterToMultipleNPCs(new ItemDropWithConditionRule(5097, 250, 1, 1, new Conditions.DontStarveIsNotUp()), 49, 51, 150, 93, 634, 151, 60, 137, 152);
996 RegisterToMultipleNPCs(new ItemDropWithConditionRule(5097, 100, 1, 1, new Conditions.DontStarveIsUp()), 49, 51, 150, 93, 634, 151, 60, 137, 152);
997 RegisterToMultipleNPCs(ItemDropRule.Common(393, 50), 16, 185, 167, 197);
998 RegisterToNPC(58, ItemDropRule.Common(393, 75));
999 int[] npcNetIds6 = new int[13]
1000 {
1001 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
1002 504, 505, 506
1003 };
1004 RegisterToMultipleNPCs(ItemDropRule.Common(18, 80), npcNetIds6).OnFailedRoll(ItemDropRule.Common(393, 80)).OnFailedRoll(ItemDropRule.Common(3285, 25));
1005 int[] npcNetIds7 = new int[12]
1006 {
1007 21, 201, 202, 203, 322, 323, 324, 635, 449, 450,
1008 451, 452
1009 };
1010 RegisterToMultipleNPCs(ItemDropRule.Common(954, 100), npcNetIds7).OnFailedRoll(ItemDropRule.Common(955, 200)).OnFailedRoll(ItemDropRule.Common(1166, 200)).OnFailedRoll(ItemDropRule.Common(1274, 500));
1011 RegisterToNPC(6, ItemDropRule.OneFromOptions(175, 956, 957, 958));
1012 int[] npcNetIds8 = new int[7] { 42, 43, 231, 232, 233, 234, 235 };
1014 int[] npcNetIds9 = new int[5] { 31, 32, 294, 295, 296 };
1017 RegisterToMultipleNPCs(ItemDropRule.Common(996, 200), 174, 179, 182, 183, 98, 83, 94, 81, 101);
1018 RegisterToMultipleNPCs(ItemDropRule.Common(522, 1, 2, 5), 101, 98);
1021 RegisterToNPC(86, ItemDropRule.Common(856, 100));
1023 RegisterToNPC(224, ItemDropRule.Common(4057, 100));
1024 RegisterToMultipleNPCs(ItemDropRule.Common(40, 1, 1, 9), 186, 432);
1025 RegisterToNPC(225, ItemDropRule.Common(1243, 45)).OnFailedRoll(ItemDropRule.Common(23, 1, 2, 6));
1026 RegisterToNPC(537, ItemDropRule.Common(23, 1, 2, 3));
1027 RegisterToNPC(537, ItemDropRule.NormalvsExpert(1309, 8000, 5600));
1028 int[] npcNetIds10 = new int[4] { 335, 336, 333, 334 };
1030 RegisterToNPC(-4, ItemDropRule.Common(3111, 1, 25, 50));
1031 RegisterToNPC(-4, ItemDropRule.NormalvsExpert(1309, 100, 70));
1032 int[] npcNetIds11 = new int[18]
1033 {
1034 1, 16, 138, 141, 147, 184, 187, 433, 204, 302,
1035 333, 334, 335, 336, 535, 658, 659, 660
1036 };
1037 int[] npcNetIds12 = new int[4] { -6, -7, -8, -9 };
1038 int[] npcNetIds13 = new int[5] { -6, -7, -8, -9, -4 };
1045 RegisterToNPC(75, ItemDropRule.Common(501, 1, 1, 3));
1046 RegisterToMultipleNPCs(ItemDropRule.Common(23, 1, 2, 4), 81, 183);
1047 RegisterToNPC(122, ItemDropRule.Common(23, 1, 5, 10));
1049 int[] npcNetIds14 = new int[9] { 2, 317, 318, 190, 191, 192, 193, 194, 133 };
1052 RegisterToNPC(104, ItemDropRule.Common(485, 60));
1053 RegisterToNPC(58, ItemDropRule.Common(263, 250)).OnFailedRoll(ItemDropRule.Common(118, 30));
1054 RegisterToNPC(102, ItemDropRule.Common(263, 250));
1055 int[] npcNetIds15 = new int[23]
1056 {
1057 3, 591, 590, 331, 332, 132, 161, 186, 187, 188,
1058 189, 200, 223, 319, 320, 321, 430, 431, 432, 433,
1059 434, 435, 436
1060 };
1064 RegisterToMultipleNPCs(ItemDropRule.Common(8, 1, 5, 20), 590, 591);
1065 RegisterToMultipleNPCs(ItemDropRule.NormalvsExpert(3212, 150, 75), 489, 490);
1066 RegisterToMultipleNPCs(ItemDropRule.NormalvsExpert(3213, 200, 100), 489, 490);
1067 RegisterToNPC(223, ItemDropRule.OneFromOptions(20, 1135, 1136));
1069 RegisterToMultipleNPCs(ItemDropRule.Common(272, 35), 62, 66);
1072 RegisterToNPC(536, ItemDropRule.Common(3478));
1073 RegisterToNPC(536, ItemDropRule.Common(3479));
1074 RegisterToMultipleNPCs(ItemDropRule.Common(323, 3, 1, 2), 69, 581, 580, 508, 509);
1075 RegisterToNPC(582, ItemDropRule.Common(323, 6));
1076 RegisterToMultipleNPCs(ItemDropRule.Common(3772, 50), 581, 580, 508, 509);
1077 RegisterToNPC(73, ItemDropRule.Common(362, 1, 1, 2));
1078 int[] npcNetIds16 = new int[2] { 483, 482 };
1082 RegisterToMultipleNPCs(ItemDropRule.Common(1330, 3), 181, 173, 239, 182, 240);
1083 RegisterToMultipleNPCs(ItemDropRule.Common(68, 3, 1, 2), 7, 8, 9);
1084 RegisterToMultipleNPCs(ItemDropRule.Common(69, 1, 3, 8), 7, 8, 9);
1085 RegisterToMultipleNPCs(new ItemDropWithConditionRule(5094, 100, 1, 1, new Conditions.DontStarveIsUp()), 6, 7, 8, 9, 173, 181, 239, 240);
1086 RegisterToMultipleNPCs(new ItemDropWithConditionRule(5094, 525, 1, 1, new Conditions.DontStarveIsNotUp()), 6, 7, 8, 9, 173, 181, 239, 240);
1087 RegisterToMultipleNPCs(new ItemDropWithConditionRule(5091, 500, 1, 1, new Conditions.DontStarveIsUp()), 6, 7, 8, 9, 94, 81, 101, 173, 181, 239, 240, 174, 183, 242, 241, 268, 182, 98, 99, 100);
1088 RegisterToMultipleNPCs(new ItemDropWithConditionRule(5091, 1500, 1, 1, new Conditions.DontStarveIsNotUp()), 6, 7, 8, 9, 94, 81, 101, 173, 181, 239, 240, 174, 183, 242, 241, 268, 182, 98, 99, 100);
1089 RegisterToMultipleNPCs(new DropBasedOnExpertMode(ItemDropRule.Common(215, 50), ItemDropRule.WithRerolls(215, 1, 50)), 10, 11, 12, 95, 96, 97);
1090 RegisterToMultipleNPCs(ItemDropRule.Common(243, 75), 47, 464);
1091 RegisterToMultipleNPCs(ItemDropRule.OneFromOptions(50, 3757, 3758, 3759), 168, 470);
1092 RegisterToNPC(533, ItemDropRule.Common(3795, 40)).OnFailedRoll(ItemDropRule.Common(3770, 30));
1093 int[] npcNetIds17 = new int[3] { 63, 103, 64 };
1096 RegisterToMultipleNPCs(ItemDropRule.Common(282, 1, 1, 4), 223);
1097 RegisterToMultipleNPCs(ItemDropRule.Common(282, 1, 1, 4), 224);
1100 RegisterToNPC(481, ItemDropRule.Common(3094, 2, 40, 80));
1101 RegisterToNPC(481, ItemDropRule.OneFromOptions(7, 3187, 3188, 3189));
1102 RegisterToNPC(481, ItemDropRule.Common(4463, 20));
1103 int[] npcNetIds18 = new int[13]
1104 {
1105 21, 167, 201, 202, 481, 203, 322, 323, 324, 449,
1106 450, 451, 452
1107 };
1109 RegisterToNPC(44, ItemDropRule.Common(118, 25)).OnFailedRoll(ItemDropRule.OneFromOptions(4, 410, 411)).OnFailedRoll(ItemDropRule.Common(166, 1, 1, 3));
1111 RegisterToNPC(23, ItemDropRule.Common(116, 50));
1112 RegisterToNPC(24, ItemDropRule.Common(244, 250));
1113 int[] npcNetIds19 = new int[6] { 31, 32, 34, 294, 295, 296 };
1114 RegisterToMultipleNPCs(ItemDropRule.Common(932, 250), npcNetIds19).OnFailedRoll(ItemDropRule.Common(3095, 100)).OnFailedRoll(ItemDropRule.Common(327, 65)).OnFailedRoll(ItemDropRule.ByCondition(new Conditions.NotExpert(), 154, 1, 1, 3));
1116 int[] npcNetIds20 = new int[5] { 26, 27, 28, 29, 111 };
1117 RegisterToMultipleNPCs(ItemDropRule.Common(160, 200), npcNetIds20).OnFailedRoll(ItemDropRule.Common(161, 2, 1, 5));
1118 RegisterToNPC(175, ItemDropRule.Common(1265, 100));
1120 RegisterToMultipleNPCs(new DropBasedOnExpertMode(new CommonDrop(209, 3, 1, 1, 2), ItemDropRule.Common(209)), 42, 231, 232, 233, 234, 235);
1121 RegisterToNPC(176, ItemDropRule.Common(209, 6));
1122 RegisterToNPC(177, new ItemDropWithConditionRule(5089, 100, 1, 1, new Conditions.DontStarveIsNotUp()));
1123 RegisterToNPC(177, new ItemDropWithConditionRule(5089, 40, 1, 1, new Conditions.DontStarveIsUp()));
1124 RegisterToNPC(204, ItemDropRule.NormalvsExpert(209, 2, 1));
1129 RegisterToNPC(65, ItemDropRule.Common(268, 20)).OnFailedRoll(ItemDropRule.Common(319));
1131 RegisterToNPC(541, ItemDropRule.Common(3783));
1132 RegisterToMultipleNPCs(ItemDropRule.Common(319, 8), 542, 543, 544, 545);
1134 RegisterToNPC(543, ItemDropRule.Common(527, 25));
1135 RegisterToNPC(544, ItemDropRule.Common(527, 25));
1136 RegisterToNPC(545, ItemDropRule.Common(528, 25));
1139 RegisterToNPC(268, ItemDropRule.Common(1332, 1, 2, 5));
1140 RegisterToNPC(631, ItemDropRule.Common(3, 1, 10, 20));
1141 RegisterToNPC(631, ItemDropRule.Common(4761, 10));
1142 int[] npcNetIds21 = new int[1] { 594 };
1144 int[] options = new int[0];
1146 int chanceDenominator = 9;
1147 rule.OnSuccess(new CommonDrop(4367, chanceDenominator));
1148 rule.OnSuccess(new CommonDrop(4368, chanceDenominator));
1149 rule.OnSuccess(new CommonDrop(4369, chanceDenominator));
1150 rule.OnSuccess(new CommonDrop(4370, chanceDenominator));
1151 rule.OnSuccess(new CommonDrop(4371, chanceDenominator));
1152 rule.OnSuccess(new CommonDrop(4612, chanceDenominator));
1153 rule.OnSuccess(new CommonDrop(4674, chanceDenominator));
1154 rule.OnSuccess(new CommonDrop(4343, chanceDenominator, 2, 5));
1155 rule.OnSuccess(new CommonDrop(4344, chanceDenominator, 2, 5));
1157 }
1158}
bool TryGetValue(TKey key, [MaybeNullWhen(false)] out TValue value)
bool ICollection< KeyValuePair< TKey, TValue > >. Remove(KeyValuePair< TKey, TValue > keyValuePair)
void Add(TKey key, TValue value)
IItemDropRule RegisterToMultipleNPCs(IItemDropRule entry, params int[] npcNetIds)
IItemDropRule RegisterToNPC(int type, IItemDropRule entry)
IItemDropRule RegisterToMultipleNPCsRemixSeed(IItemDropRule entry, params int[] npcNetIds)
Dictionary< int, List< IItemDropRule > > _entriesByNpcNetId
IItemDropRule RegisterToMultipleNPCsNotRemixSeed(IItemDropRule entry, params int[] npcNetIds)
IItemDropRule RemoveFromNPC(int type, IItemDropRule entry)
IItemDropRule RemoveFromMultipleNPCs(IItemDropRule entry, params int[] npcNetIds)
IItemDropRule RegisterToGlobal(IItemDropRule entry)
List< IItemDropRule > GetRulesForNPCID(int npcNetId, bool includeGlobalDrops=true)
void RemoveFromNPCNetId(int npcNetId, IItemDropRule entry)
void RegisterToNPCNetId(int npcNetId, IItemDropRule entry)
static IItemDropRule StatusImmunityItem(int itemId, int dropsOutOfX)
static IItemDropRule NormalvsExpertNotScalingWithLuck(int itemId, int chanceDenominatorInNormal, int chanceDenominatorInExpert)
static IItemDropRule OneFromOptionsNotScalingWithLuck(int chanceDenominator, params int[] options)
static IItemDropRule ByCondition(IItemDropRuleCondition condition, int itemId, int chanceDenominator=1, int minimumDropped=1, int maximumDropped=1, int chanceNumerator=1)
static IItemDropRule BossBagByCondition(IItemDropRuleCondition condition, int itemId)
static IItemDropRule NormalvsExpertOneFromOptions(int chanceDenominatorInNormal, int chanceDenominatorInExpert, params int[] options)
static IItemDropRule ExpertGetsRerolls(int itemId, int chanceDenominator, int expertRerolls)
static IItemDropRule Common(int itemId, int chanceDenominator=1, int minimumDropped=1, int maximumDropped=1)
static IItemDropRule Food(int itemId, int chanceDenominator, int minimumDropped=1, int maximumDropped=1)
static IItemDropRule MasterModeCommonDrop(int itemId)
static IItemDropRule NotScalingWithLuck(int itemId, int chanceDenominator=1, int minimumDropped=1, int maximumDropped=1)
static IItemDropRule NormalvsExpertOneFromOptionsNotScalingWithLuck(int chanceDenominatorInNormal, int chanceDenominatorInExpert, params int[] options)
static IItemDropRule OneFromOptions(int chanceDenominator, params int[] options)
static IItemDropRule WithRerolls(int itemId, int rerolls, int chanceDenominator=1, int minimumDropped=1, int maximumDropped=1)
static IItemDropRule NormalvsExpert(int itemId, int chanceDenominatorInNormal, int chanceDenominatorInExpert)
static IItemDropRule BossBag(int itemId)
static IItemDropRule MasterModeDropOnAllPlayers(int itemId, int chanceDenominator=1)
static Dictionary< int, NPC > NpcsByNetId