コード例 #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)
            {
                wasSuccessful = true;
                result = ActionName + " successful!  CP increased by 20.";
                craft.IncrementStep();
                craft.UpdateDurability(DurabilityUsed);
                crafter.UpdateCP(CPCost);

                this.actionUsed = true;
            }
            else
            {
                result = "Condition must be good or excellent to use Tricks of the Trade.";
            }

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

            //Calculate success.
            if (Calc.ActionIsSuccessful(rng, SuccessChance))
            {
                //Success!
                wasSuccessful = true;

                if (activeModifiers.Where(o => o.ModifierName == "Name Of Water").Count() > 0)
                {
                    progressModifier = 2 * ((craft.Difficulty - craft.Progress) / craft.Difficulty - 1) + 3;
                }

                if(craft.Affinity == ElementalAffinity.Water)
                {
                    progressModifier = progressModifier * 2;
                }

                double progress = Calc.Progress(craft.RecipeLevel, craft.ItemLevel, crafter.CrafterLevel, crafter.Craftsmanship) * ProgressModifier;
                result = ActionName + " successful!  Progress increased by " + Math.Round(progress, 0, MidpointRounding.ToEven);

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

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

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

            //Success!
            wasSuccessful = true;

            result = ActionName + " used!  " + Math.Abs(DurabilityUsed) + " durability restored.";

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

            this.actionUsed = true;
            return result;
        }
コード例 #5
0
        public void AtEndOfStep(ICrafter crafter, ICraft craft)
        {
            if(stepsRemaining > 0)
            {
                //Don't give cp back on first step
                if(!(stepsRemaining > StepsActive))
                {
                    crafter.UpdateCP(DurabilityReturned * -1);
                }

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

            if (Calc.ActionIsSuccessful(rng, SuccessChance))
            {
                //Success!
                wasSuccessful = true;
                double progress = 40;
                result = ActionName + " successful!  Progress increased by " + Math.Round(progress, 0, MidpointRounding.ToEven);

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

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

            this.actionUsed = true;

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

            //Success!
            wasSuccessful = true;

            double progress = Calc.Progress(craft.RecipeLevel, craft.ItemLevel, crafter.CrafterLevel, crafter.Craftsmanship) * ProgressModifier;
            result = ActionName + " successful!  Progress increased by " + Math.Round(progress, 0, MidpointRounding.ToEven);

            craft.UpdateProgress(progress);

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

            this.actionUsed = true;
            return result;
        }
コード例 #9
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;
        }
コード例 #10
0
        public string ExecuteAction(ICraft craft, ICrafter crafter, List<IModifier> activeModifiers, Random rng, Conditions condition)
        {
            string result = String.Empty;

            if (craft.Step == 0)
            {
                //Success!
                wasSuccessful = true;

                double progress = craft.Difficulty * 0.33;
                result = ActionName + " successful!  Progress increased by " + Math.Round(progress, 0, MidpointRounding.ToEven);

                craft.UpdateProgress(progress);

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

                this.actionUsed = true;
            }
            else
            {
                result = ActionName + " can only be used on the first step.";
            }

            return result;
        }
コード例 #11
0
ファイル: MakersMark.cs プロジェクト: lchesley/test-simulator
        public string ApplyModifier(ICrafter crafter, ICraft craft)
        {
            string result = String.Empty;

            if (craft.Step == 0)
            {
                crafter.UpdateCP(CPCost);
                this.stepsActive = Convert.ToInt32(Math.Ceiling((double)craft.Difficulty/100));
                this.stepsRemaining = StepsActive + 1;
                result =  ModifierName + " applied.";
            }
            else
            {
                result = ModifierName + " can only be used as the first step.";
            }

            return result;
        }
コード例 #12
0
ファイル: Rumination.cs プロジェクト: lchesley/test-simulator
        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)
            {
                //Success!
                wasSuccessful = true;
                double cpRestored = ((21 * innerQuiet.StepsActive) - Math.Pow(innerQuiet.StepsActive, 2) + 10) / 2;
                result = ActionName + " successful!  " + cpRestored + " CP restored!";

                //Update quality.
                craft.IncrementStep();
                craft.UpdateDurability(DurabilityUsed);
                crafter.UpdateCP(Convert.ToInt32(cpRestored * -1));

                innerQuiet.ConsumeStacks();

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

            return result;
        }
コード例 #13
0
ファイル: Innovation.cs プロジェクト: lchesley/test-simulator
 public string ApplyModifier(ICrafter crafter, ICraft craft)
 {
     crafter.UpdateCP(CPCost);
     crafter.IncreaseControl(crafter.BaseControl * ControlModifier);
     return ModifierName + " is applied.  Control is now " + crafter.Control;
 }
コード例 #14
0
ファイル: Ingenuity2.cs プロジェクト: lchesley/test-simulator
        public string ApplyModifier(ICrafter crafter, ICraft craft)
        {
            crafter.UpdateCP(CPCost);

            craft.SetItemLevel(Calc.GetIngenuityIIItemLevels(craft.ItemLevel));

            return ModifierName + " is applied.  Item Level is now " + craft.ItemLevel;
        }