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; }
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; }
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; }
public void AtEndOfStep(ICrafter crafter, ICraft craft) { if (stepsRemaining > 0) { //Don't give dur back on first step if (!(stepsRemaining > StepsActive)) { craft.UpdateDurability(DurabilityReturned * -1); } stepsRemaining--; } }
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; }
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; }
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; }
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; }
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; }
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; }