public void ReportDroprates(List <DropRateInfo> drops, DropRateInfoChainFeed ratesInfo) { float personalDropRate = 1f; float dropRate = 1f / dropIds.Length * (personalDropRate * ratesInfo.parentDroprateChance); for (int index = 0; index < dropIds.Length; ++index) { drops.Add(new DropRateInfo(dropIds[index], 1, 1, dropRate, ratesInfo.conditions)); } Chains.ReportDroprates(ChainedRules, personalDropRate, drops, ratesInfo); }
public void ReportDroprates(List <DropRateInfo> drops, DropRateInfoChainFeed ratesInfo) { DropRateInfoChainFeed ratesInfo1 = ratesInfo.With(1f); ratesInfo1.AddCondition(new EModeDropCondition()); ruleForEMode.ReportDroprates(drops, ratesInfo1); DropRateInfoChainFeed ratesInfo2 = ratesInfo.With(1f); ratesInfo2.AddCondition(new NotEModeDropCondition()); ruleForDefault.ReportDroprates(drops, ratesInfo2); Chains.ReportDroprates(ChainedRules, 1f, drops, ratesInfo); }
public override void ReportDroprates(List <DropRateInfo> drops, DropRateInfoChainFeed ratesInfo) { float chance = chanceNumerator / (float)chanceDenominator; float inverseChance = 1f - chance; float finalChance = chance; //First roll could be a success finalChance += inverseChance * rerollChance * chance; //Other success is when first roll fails, reroll happens, and it rolls a success float dropRate = finalChance * ratesInfo.parentDroprateChance; drops.Add(new DropRateInfo(itemId, amountDroppedMinimum, amountDroppedMaximum, dropRate, ratesInfo.conditions)); Chains.ReportDroprates(base.ChainedRules, finalChance, drops, ratesInfo); }
private void ExtractDropsForNPC(ItemDropDatabase dropsDatabase, int npcId) { BestiaryEntry bestiaryEntry = FindEntryByNPCID(npcId); if (bestiaryEntry != null) { List <IItemDropRule> rulesForNPCID = dropsDatabase.GetRulesForNPCID(npcId, includeGlobalDrops: false); List <DropRateInfo> list = new List <DropRateInfo>(); DropRateInfoChainFeed ratesInfo = new DropRateInfoChainFeed(1f); foreach (IItemDropRule item in rulesForNPCID) { item.ReportDroprates(list, ratesInfo); } foreach (DropRateInfo item2 in list) { bestiaryEntry.Info.Add(new ItemDropBestiaryInfoElement(item2)); } } }
private void ExtractDropsForNPC(ItemDropDatabase dropsDatabase, int npcId) { BestiaryEntry entryByNpcid = this.FindEntryByNPCID(npcId); if (entryByNpcid == null) { return; } List <IItemDropRule> rulesForNpcid = dropsDatabase.GetRulesForNPCID(npcId, false); List <DropRateInfo> drops = new List <DropRateInfo>(); DropRateInfoChainFeed ratesInfo = new DropRateInfoChainFeed(1f); foreach (IItemDropRule itemDropRule in rulesForNpcid) { itemDropRule.ReportDroprates(drops, ratesInfo); } foreach (DropRateInfo info in drops) { entryByNpcid.Info.Add((IBestiaryInfoElement) new ItemDropBestiaryInfoElement(info)); } }
public void ReportDroprates(List <DropRateInfo> drops, DropRateInfoChainFeed ratesInfo) { Chains.ReportDroprates(ChainedRules, 1f, drops, ratesInfo); }