예제 #1
0
        public int CalculateDurability(int value)
        {
            var actor = new CalculatorActor(value);

            _durability(actor);
            return((int)Math.Round(actor.Value, 0));
        }
예제 #2
0
        public int CalculateCraftPoints(int value)
        {
            var actor = new CalculatorActor(value);

            _craftPoints(actor);
            return((int)Math.Round(actor.Value, 0));
        }
예제 #3
0
        private double CalculateLevelDifference(int recipeLevel, int craftmaneLevel)
        {
            var effCrafterLevel = _lookupService.MapLevel(craftmaneLevel) ?? craftmaneLevel;

            var actor = new CalculatorActor(0);

            _levelActor(recipeLevel, actor, _lookupService);
            double lvl = recipeLevel;

            if (actor.Value > 0)
            {
                lvl = actor.Value;
            }

            double levelDifference = effCrafterLevel - lvl;


            if (levelDifference > 0)
            {
                levelDifference = Math.Min(levelDifference, 20);
            }

            if (levelDifference < 0)
            {
                levelDifference = Math.Max(levelDifference, -5);
            }
            return((int)levelDifference);
        }
예제 #4
0
        public double CalculateConditionChance(Condition condition, int value)
        {
            CalculatorActor chanceActor = new CalculatorActor(value);

            _conditionChance(condition, chanceActor);
            return(chanceActor.Value);
        }
예제 #5
0
        public int CalculateChance(int abilityChance)
        {
            var chanceActor = new CalculatorActor(abilityChance);

            _chance(chanceActor);
            return(Math.Min((int)chanceActor.Value, 100));
        }
예제 #6
0
        public double CalculateReclaimChance(int reclaimChance)
        {
            CalculatorActor actor = new CalculatorActor(reclaimChance);

            _reclaimChanceActor(actor);
            return(actor.Value);
        }
예제 #7
0
        public int CalculateQuality(int efficiency, int value, int recipeLevel, int craftmanLevel)
        {
            var efficiencyActor = new CalculatorActor(efficiency);
            var controlActor    = new CalculatorActor(value);

            _quality(efficiencyActor, controlActor, !_failed);
            return((int)_efficiencyCalculator.ControlToQuality(controlActor.Value, efficiencyActor.Value, recipeLevel, CalculateLevelDifference(recipeLevel, craftmanLevel)));
        }
예제 #8
0
        public void After_adding_1_and_1_Answer_should_be_2()
        {
            TestActorRef <CalculatorActor> calculatorRef = ActorOfAsTestActorRef <CalculatorActor>("calculator");

            calculatorRef.Tell(new Add(1, 1));
            CalculatorActor calculator = calculatorRef.UnderlyingActor;

            Assert.Equal(2, calculator.Answer);
        }
예제 #9
0
        public int CalculateProgress(int efficiency, int value, int recipeLevel, int craftmanLevel)
        {
            var efficiencyActor   = new CalculatorActor(efficiency);
            var craftmanshipActor = new CalculatorActor(value);

            _progress(efficiencyActor, craftmanshipActor, !_failed);
            var level = _lookupService.MapLevel(craftmanLevel) ?? craftmanLevel;

            return((int)_efficiencyCalculator.CraftmanshipToProgress(craftmanshipActor.Value, efficiencyActor.Value, (int)level, CalculateLevelDifference(recipeLevel, craftmanLevel)));
        }