Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
OneFromOptionsDropRule.cs
Go to the documentation of this file.
2
4
6{
7 public int[] dropIds;
8
9 public int chanceDenominator;
10
11 public int chanceNumerator;
12
13 public List<IItemDropRuleChainAttempt> ChainedRules { get; private set; }
14
16 {
17 this.chanceDenominator = chanceDenominator;
18 this.chanceNumerator = chanceNumerator;
19 dropIds = options;
21 }
22
23 public bool CanDrop(DropAttemptInfo info)
24 {
25 return true;
26 }
27
29 {
31 if (info.player.RollLuck(chanceDenominator) < chanceNumerator)
32 {
33 CommonCode.DropItemFromNPC(info.npc, dropIds[info.rng.Next(dropIds.Length)], 1);
34 result = default(ItemDropAttemptResult);
35 result.State = ItemDropAttemptResultState.Success;
36 return result;
37 }
38 result = default(ItemDropAttemptResult);
39 result.State = ItemDropAttemptResultState.FailedRandomRoll;
40 return result;
41 }
42
44 {
45 float num = (float)chanceNumerator / (float)chanceDenominator;
46 float num2 = num * ratesInfo.parentDroprateChance;
47 float dropRate = 1f / (float)dropIds.Length * num2;
48 for (int i = 0; i < dropIds.Length; i++)
49 {
50 drops.Add(new DropRateInfo(dropIds[i], 1, 1, dropRate, ratesInfo.conditions));
51 }
53 }
54}
void Add(TKey key, TValue value)
static void ReportDroprates(List< IItemDropRuleChainAttempt > ChainedRules, float personalDropRate, List< DropRateInfo > drops, DropRateInfoChainFeed ratesInfo)
Definition Chains.cs:85
static void DropItemFromNPC(NPC npc, int itemId, int stack, bool scattered=false)
Definition CommonCode.cs:9
void ReportDroprates(List< DropRateInfo > drops, DropRateInfoChainFeed ratesInfo)
OneFromOptionsDropRule(int chanceDenominator, int chanceNumerator, params int[] options)
ItemDropAttemptResult TryDroppingItem(DropAttemptInfo info)