コード例 #1
0
        public string ExecuteAction(ICraft craft, ICrafter crafter, List<IModifier> activeModifiers, Random rng, Conditions condition)
        {
            string result = String.Empty;

            if (condition == Conditions.Good || condition == Conditions.Excellent)
            {
                //Calculate success.
                if (Calc.ActionIsSuccessful(rng, SuccessChance))
                {
                    //Success!
                    wasSuccessful = true;
                    double quality = Calc.ApplyCondition(Calc.Quality(craft.RecipeLevel, craft.ItemLevel, crafter.CrafterLevel, crafter.Control) * qualityModifier, condition);
                    result = ActionName + " successful!  Quality increased by " + Math.Round(quality, 0, MidpointRounding.ToEven);

                    //Update quality.
                    craft.UpdateQuality(quality);
                }
                else
                {
                    //Failure!
                    wasSuccessful = false;
                    result = ActionName + " failed!";
                }

                craft.IncrementStep();
                craft.UpdateDurability(DurabilityUsed);
                crafter.UpdateCP(CPCost);

                this.actionUsed = true;
            }
            else
            {
                result = "Condition must be good or excellent to use Precise Touch.";
            }

            return result;
        }
コード例 #2
0
        public string ExecuteAction(ICraft craft, ICrafter crafter, List<IModifier> activeModifiers, Random rng, Conditions condition)
        {
            string result = String.Empty;

            //If Inner Quiet active, set quality modifier.
            var innerQuiet = activeModifiers.Where(o => o.ModifierName == "Inner Quiet" && o.StepsRemaining > 0).FirstOrDefault() as InnerQuiet;
            if (innerQuiet != null && innerQuiet.StepsActive > 0)
            {
                //Calculate success.
                if (Calc.ActionIsSuccessful(rng, SuccessChance))
                {
                    //Success!
                    wasSuccessful = true;
                    qualityModifier = qualityModifier * (1 + (innerQuiet.StepsActive * .2));
                    double quality = Calc.ApplyCondition(Calc.Quality(craft.RecipeLevel, craft.ItemLevel, crafter.CrafterLevel, crafter.Control) * qualityModifier, condition);
                    result = ActionName + " successful!  Quality increased by " + Math.Round(quality, 0, MidpointRounding.ToEven);

                    //Update quality.
                    craft.UpdateQuality(quality);
                }
                else
                {
                    //Failure!
                    wasSuccessful = false;
                    result = ActionName + " failed!";
                }

                craft.IncrementStep();
                craft.UpdateDurability(DurabilityUsed);
                crafter.UpdateCP(CPCost);

                innerQuiet.ConsumeStacks();

                this.actionUsed = true;
            }
            else
            {
                result = "Inner Quiet stacks not available, cannot use " + ActionName + ".";
            }

            return result;
        }