public void TestGreatStridesRemovedImmediatelyOnTouch()
        {
            GreatStrides greatStrides = new GreatStrides();
            BasicTouch   basicTouch   = new BasicTouch();

            State state = Utility.CreateDefaultState();

            state.Quality       = 142;
            state.MaxQuality    = 726;
            state.Progress      = 0;
            state.MaxProgress   = 100;
            state.Durability    = 20;
            state.MaxDurability = 40;
            state.CrafterLevel  = 16;
            state.SynthLevel    = 13;
            state.Craftsmanship = 105;
            state.Control       = 102;
            state.Condition     = Condition.Normal;
            state.CP            = 55;
            state.MaxCP         = 233;

            Assert.IsTrue(greatStrides.CanUse(state));

            state = greatStrides.Activate(state, true);
            Assert.AreEqual <uint>(3U, GreatStrides.GetTurnsRemaining(state));
            state = basicTouch.Activate(state, true);
            Assert.AreEqual <uint>(0U, GreatStrides.GetTurnsRemaining(state));
        }
        public void TestGreatStridesDuration()
        {
            GreatStrides   greatStrides = new GreatStrides();
            BasicSynthesis basicSynth   = new BasicSynthesis();

            State state = Utility.CreateDefaultState();

            state.Quality       = 142;
            state.MaxQuality    = 726;
            state.Progress      = 0;
            state.MaxProgress   = 100;
            state.Durability    = 100;
            state.MaxDurability = 100;
            state.CrafterLevel  = 16;
            state.SynthLevel    = 13;
            state.Craftsmanship = 105;
            state.Control       = 102;
            state.Condition     = Condition.Normal;
            state.CP            = 55;
            state.MaxCP         = 233;

            Assert.IsTrue(greatStrides.CanUse(state));
            state = greatStrides.Activate(state, true);
            for (uint i = greatStrides.Duration; i > 0; --i)
            {
                Assert.AreEqual <uint>(i, GreatStrides.GetTurnsRemaining(state));
                state = basicSynth.Activate(state, true);
            }
            Assert.AreEqual <uint>(0U, GreatStrides.GetTurnsRemaining(state));
        }
 // Construct the CarpenterActions list.
 public CarpenterActions()
 {
     ResourceLibrary = new ResourceLibrary(Settings.ResourceLocation, ClassJobType.Carpenter);
     BasicSynthesis = new BasicSynthesis(CraftActionId.crp_BasicSynthesis,
         ResourceLibrary.ClassSkillImages["crp_BasicSynthesis"]);
     StandardSynthesis = new StandardSynthesis(CraftActionId.crp_StandardSynthesis,
         ResourceLibrary.ClassSkillImages["crp_StandardSynthesis"]);
     BasicTouch = new BasicTouch(CraftActionId.crp_BasicTouch, ResourceLibrary.ClassSkillImages["crp_BasicTouch"]);
     StandardTouch = new StandardTouch(CraftActionId.crp_StandardTouch,
         ResourceLibrary.ClassSkillImages["crp_StandardTouch"]);
     AdvancedTouch = new AdvancedTouch(CraftActionId.crp_AdvancedTouch,
         ResourceLibrary.ClassSkillImages["crp_AdvancedTouch"]);
     PreciseTouch = new PreciseTouch(CraftActionId.crp_PreciseTouch,
         ResourceLibrary.ClassSkillImages["crp_PreciseTouch"]);
     MastersMend = new MastersMend(CraftActionId.crp_MastersMend);
     MastersMendII = new MastersMendII(CraftActionId.crp_MastersMendII);
     SteadyHand = new SteadyHand(CraftActionId.crp_SteadyHand);
     InnerQuiet = new InnerQuiet(CraftActionId.crp_InnerQuiet);
     GreatStrides = new GreatStrides(CraftActionId.crp_GreatStrides);
     Observe = new Observe(CraftActionId.crp_Observe);
     CollectableSynthesis = new CollectableSynthesis(CraftActionId.crp_CollectableSynthesis);
     ByregotsBrow = new ByregotsBrow(CraftActionId.crp_ByregotsBrow);
     InnovativeTouch = new InnovativeTouch(CraftActionId.crp_InnovativeTouch);
     ByregotsMiracle = new ByregotsMiracle(CraftActionId.crp_ByregotsMiracle);
     NymeiasWheel = new NymeiasWheel(CraftActionId.crp_NymeiasWheel);
     TrainedHand = new TrainedHand(CraftActionId.crp_TrainedHand);
     Satisfaction = new Satisfaction(CraftActionId.crp_Satisfaction);
     Heart = new Heart(CraftActionId.crp_Heart);
     WhistleWhileYouWork = new WhistleWhileYouWork(CraftActionId.crp_WhistleWhileYouWork);
     PHTouch = new PHTouch(CraftActionId.crp_PreciseTouch);
 }
        public void TestGreatStridesTurns()
        {
            State details = new State();

            Assert.AreEqual <uint>(0, GreatStrides.GetTurnsRemaining(details));

            for (int i = 3; i >= 0; --i)
            {
                GreatStrides.SetTurnsRemaining(details, (uint)i);
                Assert.AreEqual <uint>((uint)i, GreatStrides.GetTurnsRemaining(details));
            }
        }
        public void TestSubsequentAbilitiesStillTickAfterOneWearsOff()
        {
            Manipulation manipulation = new Manipulation();
            GreatStrides strides      = new GreatStrides();
            BasicTouch   touch        = new BasicTouch();

            State state = Utility.CreateDefaultState();

            state.Durability = 20;
            State s2 = strides.Activate(state, true);

            s2 = manipulation.Activate(s2, true);

            GreatStrides.SetTurnsRemaining(s2, 1);

            s2 = touch.Activate(s2, true);
            // Make sure Manipulation still ticked even though great strides wore off.
            Assert.AreEqual <uint>(20, s2.Durability);
        }
        public void TestMultipleStatAssignment2()
        {
            State details = new State();

            details.CrafterLevel = 13U;
            details.SynthLevel   = 40U;
            details.Quality      = 1215U;
            details.MaxQuality   = 923U;
            details.Condition    = Engine.Condition.Excellent;
            Manipulation.SetTurnsRemaining(details, 2);
            GreatStrides.SetTurnsRemaining(details, 3);
            Ingenuity.SetTurnsRemaining(details, 1);
            SteadyHand.SetTurnsRemaining(details, 4);

            Assert.AreEqual <uint>(13, details.CrafterLevel);
            Assert.AreEqual <uint>(40, details.SynthLevel);
            Assert.AreEqual <uint>(1215, details.Quality);
            Assert.AreEqual <uint>(923, details.MaxQuality);
            Assert.AreEqual <Engine.Condition>(Engine.Condition.Excellent, details.Condition);
            Assert.AreEqual <uint>(2, Manipulation.GetTurnsRemaining(details));
            Assert.AreEqual <uint>(3, GreatStrides.GetTurnsRemaining(details));
            Assert.AreEqual <uint>(1, Ingenuity.GetTurnsRemaining(details));
            Assert.AreEqual <uint>(4, SteadyHand.GetTurnsRemaining(details));
        }