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); } }
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 } } ; } }