Ejemplo n.º 1
0
 public GrunilPolicy(int targetFailstack, int minFailstack, int sellGrade)
 {
     _sellGrade          = sellGrade;
     _minFailstack       = minFailstack;
     _targetFailstack    = targetFailstack;
     _enhancementActions = new EnhancementAction[6];
     for (var grade = 1; grade <= 5; ++grade)
     {
         var info = Data.EnhancementInfos.SingleOrDefault(i => i.IsFor(_item, grade - 1));
         _enhancementActions[grade] = new EnhancementAction(grade, info);
     }
 }
Ejemplo n.º 2
0
        public TieredFailstackPolicy(string item, int targetGrade)
        {
            _targetGrade = targetGrade;
            _item        = item;

            if (targetGrade >= 3)
            {
                _cronActions = new EnhancementAction[targetGrade - 3 + 1];
            }
            _enhancementActions = new EnhancementAction[targetGrade + 1];
            _failstackActions   = new FailstackAction[MAX_FAILSTACK];
            _storeActions       = new StoreFailstack[4];
            _restoreActions     = new RestoreFailstack[4];
            _valkActions        = new ValkAction[10];
            _bookAction         = new BookFailstack();
            for (var i = 1; i <= 10; ++i)
            {
                _valkActions[i - 1] = new ValkAction(i);
            }
            for (var slot = 0; slot < 4; ++slot)
            {
                _storeActions[slot] = new StoreFailstack(slot);
            }
            for (var slot = 0; slot < 4; ++slot)
            {
                _restoreActions[slot] = new RestoreFailstack(slot);
            }
            for (var i = 0; i < MAX_FAILSTACK; ++i)
            {
                _failstackActions[i] = new FailstackAction(i + 1);
            }

            for (var grade = 1; grade <= targetGrade; ++grade)
            {
                var info = Data.EnhancementInfos.SingleOrDefault(i => i.IsFor(item, grade - 1));
                if (info == null)
                {
                    throw new InvalidOperationException();
                }

                _itemLoss = info.ItemLoss;
                _enhancementActions[grade] = new EnhancementAction(grade, info);
                if (info.Cron > 0 && grade >= 3)
                {
                    _cronActions[grade - 3] = new EnhancementAction(grade, info)
                    {
                        UseCron = true
                    }
                }
                ;
            }
        }