示例#1
0
        //Mimics ItemDropRule.ExpertGetsRerolls but with custom % instead of #rerolls
        //Wrapper for other rules ontop
        internal static void NPCExpertGetsRerolls(NPCLoot npcLoot, int itemId, int chanceDenominator = 1, int minimumDropped = 1, int maximumDropped = 1, int chanceNumerator = 1, IItemDropRule ruleExpert = null, IItemDropRule ruleNormal = null, float rerollChance = 0.5f)
        {
            //Since the conditions are exclusive, only one of them will show up
            IItemDropRule expertRule = new LeadingConditionRule(new Conditions.IsExpert());
            IItemDropRule ruleToAdd  = expertRule;

            if (ruleExpert != null)
            {
                ruleToAdd  = ruleExpert;                //If a rule is specified, use that to add it (Always add the "baseline" rule first)
                expertRule = ruleToAdd.OnSuccess(expertRule);
            }
            expertRule.OnSuccess(new CommonDropWithReroll(itemId, chanceDenominator, minimumDropped, maximumDropped, chanceNumerator, rerollChance));
            npcLoot.Add(ruleToAdd);

            //Vanilla example
            //Conditions.IsPumpkinMoon condition2 = new Conditions.IsPumpkinMoon();
            //Conditions.FromCertainWaveAndAbove condition3 = new Conditions.FromCertainWaveAndAbove(15);

            //LeadingConditionRule entry = new LeadingConditionRule(condition2);
            //LeadingConditionRule ruleToChain = new LeadingConditionRule(condition3);
            //npcLoot.Add(entry).OnSuccess(ruleToChain).OnSuccess(ItemDropRule.Common(1856));

            IItemDropRule notExpertRule = new LeadingConditionRule(new Conditions.NotExpert());

            ruleToAdd = notExpertRule;
            if (ruleNormal != null)
            {
                ruleToAdd     = ruleNormal;
                notExpertRule = ruleToAdd.OnSuccess(notExpertRule);
            }
            notExpertRule.OnSuccess(new CommonDrop(itemId, chanceDenominator, minimumDropped, maximumDropped, chanceNumerator));
            npcLoot.Add(ruleToAdd);
        }
示例#2
0
        internal static void GlobalExpertGetsRerolls(GlobalLoot globalLoot, int itemId, int chanceDenominator = 1, int minimumDropped = 1, int maximumDropped = 1, int chanceNumerator = 1, IItemDropRule ruleExpert = null, IItemDropRule ruleNormal = null)
        {
            IItemDropRule expertRule = new LeadingConditionRule(new Conditions.IsExpert());
            IItemDropRule ruleToAdd  = expertRule;

            if (ruleExpert != null)
            {
                ruleToAdd  = ruleExpert;                //If a rule is specified, use that to add it (Always add the "baseline" rule first)
                expertRule = ruleToAdd.OnSuccess(expertRule);
            }
            expertRule.OnSuccess(new CommonDropWithReroll(itemId, chanceDenominator, minimumDropped, maximumDropped, chanceNumerator));
            globalLoot.Add(ruleToAdd);

            IItemDropRule notExpertRule = new LeadingConditionRule(new Conditions.NotExpert());

            ruleToAdd = notExpertRule;
            if (ruleNormal != null)
            {
                ruleToAdd     = ruleNormal;
                notExpertRule = ruleToAdd.OnSuccess(notExpertRule);
            }
            notExpertRule.OnSuccess(new CommonDrop(itemId, chanceDenominator, minimumDropped, maximumDropped, chanceNumerator));
            globalLoot.Add(ruleToAdd);
        }