示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#4
0
        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));
                }
            }
        }
示例#5
0
        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);
 }