public override PrepareItemResult PrepareItemForSet(FullRareSetManagerSettings settings)
        {
            var lowFirst = LowLvlItems.Count > 0 && LowLvlItems[0].BInPlayerInventory;

            if (lowFirst)
            {
                var result = LowProcess();
                if (result != null)
                {
                    return(result);
                }

                result = HighProcess();
                if (result != null)
                {
                    return(result);
                }
            }
            else
            {
                var result = HighProcess();
                if (result != null)
                {
                    return(result);
                }

                result = LowProcess();
                if (result != null)
                {
                    return(result);
                }
            }

            return(null);
        }
        public override PrepareItemResult PrepareItemForSet(FullRareSetManagerSettings settings)
        {
            var oneHandedFirst = settings.WeaponTypePriority.Value == "One handed";

            if (!oneHandedFirst)
            {
                if (OneHandedHighLvlItems.Count > 0 && OneHandedHighLvlItems[0].BInPlayerInventory)
                {
                    oneHandedFirst = true;
                }
                else if (OneHandedLowLvlItems.Count > 0 && OneHandedLowLvlItems[0].BInPlayerInventory)
                {
                    oneHandedFirst = true;
                }
            }
            else
            {
                if (TwoHandedHighLvlItems.Count > 0 && TwoHandedHighLvlItems[0].BInPlayerInventory)
                {
                    oneHandedFirst = false;
                }
                else if (TwoHandedLowLvlItems.Count > 0 && TwoHandedLowLvlItems[0].BInPlayerInventory)
                {
                    oneHandedFirst = false;
                }
            }

            var invokeList = new Func <PrepareItemResult> [5];


            if (oneHandedFirst)
            {
                invokeList[0] = Prepahe_OH;
                invokeList[1] = Prepahe_OHOL;
                invokeList[2] = Prepahe_OL;
                invokeList[3] = Prepahe_TH;
                invokeList[4] = Prepahe_TL;
            }
            else
            {
                invokeList[0] = Prepahe_TH;
                invokeList[1] = Prepahe_TL;
                invokeList[2] = Prepahe_OHOL;
                invokeList[3] = Prepahe_OH;
                invokeList[4] = Prepahe_OL;
            }

            foreach (var t in invokeList)
            {
                var result = t();

                if (result != null)
                {
                    return(result);
                }
            }

            return(null);
        }
        public override PrepareItemResult PrepareItemForSet(FullRareSetManagerSettings settings)
        {
            var oneHandedFirst = settings.WeaponTypePriority.Value == "One handed";

            if (!oneHandedFirst)
            {
                if (OneHandedHighLvlItems.Count > 0 && OneHandedHighLvlItems[0].BInPlayerInventory)
                    oneHandedFirst = true;
                else if (OneHandedLowLvlItems.Count > 0 && OneHandedLowLvlItems[0].BInPlayerInventory)
                    oneHandedFirst = true;
            }
            else
            {
                if (TwoHandedHighLvlItems.Count > 0 && TwoHandedHighLvlItems[0].BInPlayerInventory)
                    oneHandedFirst = false;
                else if (TwoHandedLowLvlItems.Count > 0 && TwoHandedLowLvlItems[0].BInPlayerInventory)
                    oneHandedFirst = false;
            }

            var invokeList = new Func<PrepareItemResult>[5];

            if (oneHandedFirst)
            {
                invokeList[0] = Prepahe_OH;
                invokeList[1] = Prepahe_OHOL;
                invokeList[2] = Prepahe_OL;
                invokeList[3] = Prepahe_TH;
                invokeList[4] = Prepahe_TL;
            }
            else
            {
                invokeList[0] = Prepahe_TH;
                invokeList[1] = Prepahe_TL;
                invokeList[2] = Prepahe_OHOL;
                invokeList[3] = Prepahe_OH;
                invokeList[4] = Prepahe_OL;
            }

            var rezults = new List<Tuple<PrepareItemResult, Func<PrepareItemResult>>>();

            foreach (var t in invokeList)
            {
                var result = t();

                if (result != null)
                {
                    var func = t;
                    rezults.Add(new Tuple<PrepareItemResult, Func<PrepareItemResult>>(result, func));
                }
            }

            if (rezults.Count > 0)
            {
                var inPlayerInv = rezults.Find(x => x.Item1.BInPlayerInvent);

                if (inPlayerInv != null)
                {
                    inPlayerInv.Item2();
                    return inPlayerInv.Item1;
                }

                rezults[0].Item2();
                return rezults[0].Item1;
            }

            return null;
        }
Beispiel #4
0
        public override PrepareItemResult PrepareItemForSet(FullRareSetManagerSettings settings)
        {
            var anyHighInInvent = HighLvlItems.Count >= 1 && HighLvlItems[0].BInPlayerInventory;
            var anyLowInInvent  = LowLvlItems.Count >= 1 && LowLvlItems[0].BInPlayerInventory;

            if (anyHighInInvent && settings.OptimizeChaosSets.Value)
            {
                var allHighInInvent = HighLvlItems.Count >= 2 && HighLvlItems[1].BInPlayerInventory;

                if (allHighInInvent)
                {
                    _currentSetItems = new[]
                    {
                        HighLvlItems[0],
                        HighLvlItems[1]
                    };

                    return(new PrepareItemResult
                    {
                        AllowedReplacesCount = LowLvlItems.Count,
                        LowSet = false,
                        BInPlayerInvent = true
                    });
                }

                var result = PrepareHigh();

                if (result != null)
                {
                    return(result);
                }

                result = PrepareMixedHl();

                if (result != null)
                {
                    return(result);
                }
            }

            if (anyHighInInvent && anyLowInInvent)
            {
                _currentSetItems = new[]
                {
                    HighLvlItems[0],
                    LowLvlItems[0]
                };

                return(new PrepareItemResult
                {
                    AllowedReplacesCount = LowLvlItems.Count - 1,
                    LowSet = true,
                    BInPlayerInvent = true
                });
            }

            if (anyHighInInvent)
            {
                var allHighInInvent = HighLvlItems.Count >= 2 && HighLvlItems[1].BInPlayerInventory;

                if (allHighInInvent)
                {
                    _currentSetItems = new[]
                    {
                        HighLvlItems[0],
                        HighLvlItems[1]
                    };

                    return(new PrepareItemResult
                    {
                        AllowedReplacesCount = LowLvlItems.Count,
                        LowSet = false,
                        BInPlayerInvent = true
                    });
                }

                var result = PrepareHigh();

                if (result != null)
                {
                    return(result);
                }

                result = PrepareMixedHl();

                if (result != null)
                {
                    return(result);
                }
            }
            else if (anyLowInInvent)
            {
                var allLowInInvent = LowLvlItems.Count >= 2 && LowLvlItems[1].BInPlayerInventory;

                if (allLowInInvent)
                {
                    _currentSetItems = new[]
                    {
                        LowLvlItems[0],
                        LowLvlItems[1]
                    };

                    return(new PrepareItemResult
                    {
                        AllowedReplacesCount = LowLvlItems.Count - 2,
                        LowSet = true,
                        BInPlayerInvent = true
                    });
                }

                var result = PrepareMixedHl() ?? PrepareLow();

                if (result != null)
                {
                    return(result);
                }
            }
            else
            {
                var result = PrepareHigh();

                if (result != null)
                {
                    return(result);
                }

                result = PrepareMixedHl();

                if (result != null)
                {
                    return(result);
                }

                result = PrepareLow();

                if (result != null)
                {
                    return(result);
                }
            }

            return(new PrepareItemResult()); //Code should never get here
        }
Beispiel #5
0
 public abstract PrepareItemResult PrepareItemForSet(FullRareSetManagerSettings settings);