Example #1
0
    protected override void SetFlagReactions()
    {
        /*Reaction enterHappy = new Reaction();
        enterHappy.AddAction(new ShowOneOffChatAction(this, "I think there's a good spot over here!"));
        enterHappy.AddAction(new NPCAddScheduleAction(this, moveMotherHappyState));
        flagReactions.Add (FlagStrings.EnterHappyState, enterHappy);*/

        /*Reaction moveHome = new Reaction();
        moveHome.AddAction(new ShowOneOffChatAction(this, "Let's go back to the house.", 3f));
        moveHome.AddAction(new NPCAddScheduleAction(this, moveHomeSchedule));
        flagReactions.Add (FlagStrings.MoveHome, moveHome);
        */
        //Add states for apple
        Reaction gaveApple = new Reaction();
        gaveApple.AddAction(new NPCAddScheduleAction(this, gaveAppleSchedule));
        flagReactions.Add(FlagStrings.GaveAppleToMother, gaveApple);
        /*
        Reaction giveSeeds = new Reaction();
        giveSeeds.AddAction(new ShowOneOffChatAction(this, "Here are the leftover seeds.",4f));
        giveSeeds.AddAction(new NPCAddScheduleAction(this, giveSeedsSchedule));
        giveSeeds.AddAction(new NPCEmotionUpdateAction(this, new AskToGardenState(this, "You're such a great help! Do you have more time to help me?")));
        flagReactions.Add (FlagStrings.GiveSeeds, giveSeeds);
        */
        Reaction postRace = new Reaction();
        postRace.AddAction(new ShowOneOffChatAction(this, "Get over here you two!!"));
        postRace.AddAction(new NPCAddScheduleAction(this, postRaceSchedule));
        //postRace.AddAction(new NPCEmotionUpdateAction(this, new DummyState(this)));
        flagReactions.Add (FlagStrings.PostSiblingExplore, postRace);

        Reaction enterMadMother = new Reaction();
        enterMadMother.AddAction(new ShowOneOffChatAction(this, "I can't believe you.", 2f));
        enterMadMother.AddAction(new NPCAddScheduleAction(this, enterMadSchedule));
        flagReactions.Add (FlagStrings.EnterMadState, enterMadMother);

        Reaction exitMadMother = new Reaction();
        exitMadMother.AddAction(new ShowOneOffChatAction(this, "I can't believe you.", 2f));
        exitMadMother.AddAction(new NPCAddScheduleAction(this, exitMadSchedule));
        flagReactions.Add (FlagStrings.ExitMadState, exitMadMother);

        Reaction moveToMusicianReaction = new Reaction();
        moveToMusicianReaction.AddAction(new ShowOneOffChatAction(this, "Finished! Now why don't we take it up to our new neighbors on the cliff!"));
        moveToMusicianReaction.AddAction(new NPCGiveItemAction(this, StringsItem.ApplePie));
        moveToMusicianReaction.AddAction(new NPCGiveItemAction(this, StringsItem.Apple));
        NPCConvoSchedule momToMusician = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.MusicianYoung), new MotherToMusicianYoung(),Schedule.priorityEnum.DoNow);
        momToMusician.SetCanNotInteractWithPlayer();
        moveToMusicianReaction.AddAction(new NPCAddScheduleAction(this, moveToMusicianSchedule));

        moveToMusicianReaction.AddAction(new NPCAddScheduleAction(this, momToMusician));
        flagReactions.Add(FlagStrings.MoveToMusician, moveToMusicianReaction);
    }
Example #2
0
    protected override void SetUpSchedules()
    {
        BeginDayChat = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterYoung), new YoungCarpenterSonToCarpenterConvo());
        BeginDayChat.SetCanInteract(false);
        BeginDayWithDad = new Schedule(this, Schedule.priorityEnum.DoNow);
        TimeTask BeginDayTimeTask = new TimeTask(10, new WaitTillPlayerCloseState(this, ref player));
          		BeginDayTimeTask.AddFlagToSet(FlagStrings.carpenterSonYoungConvoWithDadFinished);
        BeginDayWithDad.Add(BeginDayTimeTask);
          		this.AddSchedule(BeginDayWithDad);
        this.AddSchedule(BeginDayChat);

        TalkWithCastleman = new Schedule (this, Schedule.priorityEnum.High);
        TalkWithCastleman.Add(new TimeTask(300, new WaitTillPlayerCloseState(this, ref player)));
        Task setFlag = (new TimeTask(2f, new IdleState(this)));
        setFlag.AddFlagToSet(FlagStrings.InitialConversationWithCSONFriend);
        TalkWithCastleman.Add(setFlag);
        TalkWithCastleman.AddFlagGroup("CSONMEETCASTLEMAN");

        TalkWithCastlemanNotFriend = new Schedule (this, Schedule.priorityEnum.High);
        TalkWithCastlemanNotFriend.Add(new TimeTask(300, new WaitTillPlayerCloseState(this, ref player)));
        Task setFlagNOT = (new TimeTask(2f, new IdleState(this)));
        setFlagNOT.AddFlagToSet(FlagStrings.InitialConversationWithCSONNOTFriend);
        TalkWithCastlemanNotFriend.Add(setFlagNOT);
        TalkWithCastleman.AddFlagGroup("CSONMEETCASTLEMAN");

        Woodworking = new Schedule( this, Schedule.priorityEnum.Medium);
        //Woodworking.Add (new TimeTask(300, new WaitState(this)));
        Task whittleTask = new TimeTask(30, new AbstractAnimationState(this, "Whittle"));
        whittleTask.AddFlagToSet(FlagStrings.carpenterSonYoungCompletedWhittling);

        whittleSchedule = new Schedule(this, Schedule.priorityEnum.DoNow);
        whittleSchedule.SetCanInteract(false);
        whittleSchedule.Add(whittleTask);

        Task whittleDoneTask = new Task(new IdleState(this));
        whittleDoneSchedule = new Schedule(this, Schedule.priorityEnum.Medium);
        whittleDoneSchedule.SetCanInteract(true);
        whittleDoneSchedule.Add(whittleDoneTask);
    }
Example #3
0
    protected override void SetUpSchedules()
    {
        ScheduleLoop newDefaultSched = new ScheduleLoop(this, Schedule.priorityEnum.Default);
        newDefaultSched.Add(new Task(new FishState(this)));
        this.AddSchedule(newDefaultSched);

        treasureHuntSched = new SeaCaptainTreasureHuntSchedule(this);

        talkToFortuneTellerFirstSched = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.FortuneTellerMiddle), new MiddleSeaCaptainFortuneTellerFirstConvo(), Schedule.priorityEnum.Medium, true);
        talkToFortuneTellerSecondSched = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.FortuneTellerMiddle), new MiddleSeaCaptainFortuneTellerSecondConvo(), Schedule.priorityEnum.Medium, true);
        TalktoCarpenterSon = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle), new MiddleSeaCaptainToCarpenterSon(), Schedule.priorityEnum.DoConvo, true);
        TalktoCarpenterSon.SetCanNotInteractWithPlayer();

        returnToDockSchedOne = new Schedule(this);
        returnToDockSchedOne.Add(new Task(new MoveThenMarkDoneState(this, startingPos)));

        returnToDockSchedTwo = new Schedule(this);
        returnToDockSchedTwo.Add(new Task(new MoveThenMarkDoneState(this, startingPos)));

        AfterTalkToCarpenterSon = new Schedule(this, Schedule.priorityEnum.High);
        Task FinishedTalking  = new TimeTask(0.05f, new IdleState(this));
        FinishedTalking.AddFlagToSet(FlagStrings.AfterConversationAboutBuildingShip);
        AfterTalkToCarpenterSon.Add (FinishedTalking);
    }
Example #4
0
    protected override void SetUpSchedules()
    {
        InitialSchedule = new ScheduleLoop(this, Schedule.priorityEnum.Medium);
        Task waitForPlayer = new Task(new WaitTillPlayerCloseState(this, ref player));
        InitialSchedule.Add(waitForPlayer);
        Task SayHi = new Task(new AbstractAnimationState(this, "Hi"), this, 0.1f, "Psst! Come over here!");
        InitialSchedule.Add(SayHi);
        InitialSchedule.Add(new Task(new WaitTillPlayerCloseState(this, ref player)));
        Task playWithSword = new Task(new AbstractAnimationState(this, "Play With Sword"));
        InitialSchedule.Add(playWithSword);

        AttemptToTellOnLighthouse = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.FarmerFatherYoung),
            new LightHouseToFarmerFather(),Schedule.priorityEnum.DoConvo);
        AttemptToTellOnLighthouse.SetCanNotInteractWithPlayer();
        tellOnLighthouseConversationSchedule = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.LighthouseGirlYoung),
            new YoungFarmerMotherToLighthouseGirlToldOn(),Schedule.priorityEnum.DoConvo);

        Task SetFlagToBeach = (new Task(new MoveThenDoState(this, this.gameObject.transform.position, new MarkTaskDone(this))));
        SetFlagToBeach.AddFlagToSet(FlagStrings.GoDownToBeach);

        TalkWithCastleman = new Schedule (this, Schedule.priorityEnum.DoNow);
        TalkWithCastleman.Add(new TimeTask(3000, new WaitTillPlayerCloseState(this, ref player)));
        Task setFlag = (new TimeTask(2f, new IdleState(this)));
        setFlag.AddFlagToSet(FlagStrings.StartTalkingToLighthouse);
        TalkWithCastleman.Add(setFlag);
        TalkWithCastleman.AddFlagGroup("TalkWithCastleman");

        GaveApple = new Schedule(this, Schedule.priorityEnum.High);
        GaveApple.Add(new TimeTask(10f, new AbstractAnimationState(this, "Play With Sword")));
        GaveApple.Add(SetFlagToBeach);
        //GaveApple.Add(new TimeTask(500f, new IdleState(this)));

        GaveNothingSchedule = new Schedule(this, Schedule.priorityEnum.High);
        GaveNothingSchedule.Add(new TimeTask(750f, new IdleState(this)));
        GaveNothingSchedule.Add(SetFlagToBeach);

        WalkToBeach = new Schedule(this, Schedule.priorityEnum.High);
        WalkToBeach.Add(new Task(new MoveThenMarkDoneState(this, MapLocations.MiddleOfBeachYoung)));
        Task setAtBeachFlag = new TimeTask(0f, new IdleState(this));
        setAtBeachFlag.AddFlagToSet(FlagStrings.LighthouseAtBeach);
        WalkToBeach.Add(setAtBeachFlag);

        LighthouseGoingToBeach = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.FarmerMotherYoung),
            new LighthouseToFarmerMother(),Schedule.priorityEnum.DoConvo, true);
        LighthouseGoingToBeach.SetCanNotInteractWithPlayer();
    }
Example #5
0
    protected override void SetUpSchedules()
    {
        CastleManFollowSchedule = new Schedule(this, Schedule.priorityEnum.Medium);
        CastleManFollowSchedule.Add(new TimeTask(0f, new IdleState(this)));
        CastleManFollowSchedule.Add(new Task(new FollowObjectState(this, player.gameObject)));

        CastleManFollowScheduleVTwo = new Schedule(this, Schedule.priorityEnum.High);
        CastleManFollowScheduleVTwo.Add(new TimeTask(0f, new IdleState(this)));
        CastleManFollowScheduleVTwo.Add(new TimeTask(0f, new FollowObjectState(this, player.gameObject)));
        Task TimerRanOut = new TimeTask(0f, new IdleState(this));
        TimerRanOut.AddFlagToSet(FlagStrings.TimerForGoingToBeach);
        CastleManFollowScheduleVTwo.Add(TimerRanOut);

        CastlemanWalkToBeachSchedule = new Schedule(this, Schedule.priorityEnum.DoNow);
        CastlemanWalkToBeachSchedule.Add(new TimeTask(1f, new IdleState(this)));
        CastlemanWalkToBeachSchedule.Add(new Task(new MoveThenMarkDoneState(this, new Vector3(52f, -6f, 0.95f))));
        Task setAtBeachFlag = new TimeTask(0f, new IdleState(this));
        setAtBeachFlag.AddFlagToSet(FlagStrings.CastleManAtBeach);
        CastlemanWalkToBeachSchedule.Add(setAtBeachFlag);
        CastlemanWalkToBeachSchedule.Add(new TimeTask(10000f, new IdleState(this)));

        #region Friends
        CastleManTalksFirstFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task setFlagFriendsFirstConvo = (new TimeTask(2f, new IdleState(this)));
        setFlagFriendsFirstConvo.AddFlagToSet(FlagStrings.FinishedInitialConversationWithCSONFriend);
        CastleManTalksFirstFriends.Add(setFlagFriendsFirstConvo);

        SetFinishedTalkingFlagForSecondConvoFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task setFlagFriendsSecondConvo = (new TimeTask(2f, new IdleState(this)));
        setFlagFriendsSecondConvo.AddFlagToSet(FlagStrings.FinishedSecondConversationWithCSONFriend);
        SetFinishedTalkingFlagForSecondConvoFriends.Add(setFlagFriendsSecondConvo);

        SetFinishedTalkingFlagForThirdConvoFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task setFlagFriendsThirdConvo = (new TimeTask(2f, new IdleState(this)));
        setFlagFriendsThirdConvo.AddFlagToSet(FlagStrings.FinishedThirdConvoWithCSONFriend);
        SetFinishedTalkingFlagForThirdConvoFriends.Add(setFlagFriendsThirdConvo);
        # endregion
        #region NotFriends
        CastleManTalksFirstNOTFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task setFlagNOTFriendsFirstConvo = (new TimeTask(2f, new IdleState(this)));
        setFlagNOTFriendsFirstConvo.AddFlagToSet(FlagStrings.FinishedInitialConversationWithCSONNOTFriend);
        CastleManTalksFirstNOTFriends.Add(setFlagNOTFriendsFirstConvo);

        SetFinishedTalkingFlagForSecondConvoNOTFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task setFlagNOTFriendsSecondConvo = (new TimeTask(2f, new IdleState(this)));
        setFlagNOTFriendsSecondConvo.AddFlagToSet(FlagStrings.FinishedSecondConversationWithCSONNOTFriend);
        SetFinishedTalkingFlagForSecondConvoNOTFriends.Add(setFlagNOTFriendsSecondConvo);

        SetFinishedTalkingFlagForThirdConvoNOTFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task setFlagNOTFriendsThirdConvo = (new TimeTask(2f, new IdleState(this)));
        setFlagNOTFriendsThirdConvo.AddFlagToSet(FlagStrings.FinishedThirdConvoWithCSONNOTFriend);
        SetFinishedTalkingFlagForThirdConvoNOTFriends.Add(setFlagNOTFriendsThirdConvo);
        #endregion
        #region Conversations
        CastleManMeetsLighthouse = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.LighthouseGirlYoung),
            new CastleManToLighthouseFirstMeeting(),Schedule.priorityEnum.DoConvo);
        CastleManMeetsLighthouse.SetCanNotInteractWithPlayer();

        CastleManTalksToCSON = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonYoung),
            new CastleManToCarpenterFirstConvo(),Schedule.priorityEnum.DoConvo);
        CastleManTalksToCSON.SetCanNotInteractWithPlayer();
        CastleManTalksToCSONTwice = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonYoung),
            new CastleManToCarpenterSecondConvo(),Schedule.priorityEnum.DoConvo);
        CastleManTalksToCSONTwice.SetCanNotInteractWithPlayer();
        CastleManTalksToCSONThrice = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonYoung),
            new CastleManToCarpenterThirdConvo(),Schedule.priorityEnum.DoConvo);
        CastleManTalksToCSONThrice.SetCanNotInteractWithPlayer();

        CastleManTalksToLighthouseOnBeachFriends = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.LighthouseGirlYoung),
            new CastleManToLightHouseFriends(),Schedule.priorityEnum.DoConvo);
        CastleManTalksToLighthouseOnBeachFriends.SetCanNotInteractWithPlayer();
        CastleManTalksToLighthouseOnBeachNOTFriends = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.LighthouseGirlYoung),
            new CastlemanToLighthouseNotFriends(),Schedule.priorityEnum.DoConvo);
        CastleManTalksToLighthouseOnBeachNOTFriends.SetCanNotInteractWithPlayer();
        #endregion
    }
Example #6
0
    protected override void SetUpSchedules()
    {
        FinishedTalkingFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task SetFlagFriends = (new TimeTask(2f, new IdleState(this)));
        SetFlagFriends.AddFlagToSet(FlagStrings.MusicianFinishedTalkingFriends);
        FinishedTalkingFriends.Add(SetFlagFriends);

        FinishedTalkingNOTFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task SetFlagNOTFriends = (new TimeTask(2f, new IdleState(this)));
        SetFlagNOTFriends.AddFlagToSet(FlagStrings.MusicianFinishedTalkingNOTFriends);
        FinishedTalkingNOTFriends.Add(SetFlagNOTFriends);

        TellSonToGoAroundIslandFriends = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CastlemanYoung),
            new MusicianToCastlemanFriends(),Schedule.priorityEnum.DoConvo);
        TellSonToGoAroundIslandFriends.SetCanNotInteractWithPlayer();
        TellSonToGoAroundIslandNOTFriends = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CastlemanYoung),
            new MusicianToCastlemanNotFriends(),Schedule.priorityEnum.DoConvo);
        TellSonToGoAroundIslandNOTFriends.SetCanNotInteractWithPlayer();
    }
Example #7
0
    protected override void SetUpSchedules()
    {
        openningWaitingSchedule = new Schedule(this, Schedule.priorityEnum.DoConvo);
        openningWaitingSchedule.Add(new Task(new WaitTillPlayerCloseState(this, ref player)));
        Task setFlag =  (new TimeTask(2f, new IdleState(this)));
        setFlag.AddFlagToSet(FlagStrings.OpeningConversationFarmerMotherToFarmerFather);
        openningWaitingSchedule.Add(setFlag);

        InitialConversation = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.FarmerFatherYoung),
            new YoungFarmerMotherToFarmerFatherOpenningScriptedDialogue(),Schedule.priorityEnum.DoConvo);
        InitialConversation.SetCanNotInteractWithPlayer();
        InitialConversation.SetFlagOnComplete(FlagStrings.FarmAfterDialogue);

        postOpenningSchedule = new Schedule(this, Schedule.priorityEnum.Medium);
        Task goToFieldAndHoe = new Task(new MoveThenDoState(this, new Vector3(52.65976f, 15.13193f, transform.position.z), new AbstractAnimationState(this, "Hoe")));
        postOpenningSchedule.Add(goToFieldAndHoe);
    }
Example #8
0
    private void SetupPrimaryCarpentrySchedules()
    {
        afterHappyForSonBeingACarpenter = new Schedule(this, Schedule.priorityEnum.Medium);
        Task stormOffToWindmill = new Task(new MoveState(this, MapLocations.WindmillMiddle));
        TimeTask workOnWindmill = new TimeTask(1000f, new AbstractAnimationState(this, "Hammer", true, true));
        afterHappyForSonBeingACarpenter.Add(stormOffToWindmill);
        afterHappyForSonBeingACarpenter.Add(workOnWindmill);

        talkToSonAfterWhittle = new NPCConvoSchedule(this,
            NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle), new MiddleCarpenterToSonCarpentryScriptedConvo(), Schedule.priorityEnum.Low);
        talkToSonAfterWhittle.SetCanNotInteractWithPlayer();

        talkToSonWithoutWhittle = new NPCConvoSchedule(this,
            NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle), new MiddleCarpenterToSonCarpentryScriptedConvo(), Schedule.priorityEnum.Low);
        talkToSonWithoutWhittle.SetCanNotInteractWithPlayer();
    }
Example #9
0
    protected override void SetUpSchedules()
    {
        Vector3 startingPosition = transform.position;
        startingPosition.y += LevelManager.levelYOffSetFromCenter;

        openningWaitingSchedule = new Schedule(this, Schedule.priorityEnum.Low);
        openningWaitingSchedule.Add(new TimeTask(5, new WaitTillPlayerCloseState(this, ref player)));
        Task nullFlag =  new TimeTask(0f, new IdleState(this));
        nullFlag.AddFlagToSet(FlagStrings.CarpenterAndCarpenterSonIndependantConversation);
        openningWaitingSchedule.Add(nullFlag);
        openningWaitingSchedule.AddFlagGroup("DefaultPath");

        angryAtSonBeingIndependent = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle), new MiddleCarpenterToSonDefaultScriptedConvo(), Schedule.priorityEnum.Medium); // CHANGE THIS CONVERSATION TO THE ONE WE WANT TO USE!
        angryAtSonBeingIndependent.SetCanNotInteractWithPlayer();
        //this.AddSchedule(openningWaitingSchedule);

        afterAngryAtSonIndependent = new Schedule(this, Schedule.priorityEnum.Low);
        Task SetMoveToWindmillFlag = new TimeTask(0f, new IdleState(this));
        SetMoveToWindmillFlag.AddFlagToSet(FlagStrings.carpenterSonTalkWithFatherMorning);
        afterAngryAtSonIndependent.Add(SetMoveToWindmillFlag);

        #region Fishing
        angryAtSonFishing =  new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle), new MiddleCarpenterToSonFishingScriptedConvo(), Schedule.priorityEnum.DoNow); // CHANGE THIS CONVERSATION TO THE ONE WE WANT TO USE!
        angryAtSonFishing.SetCanNotInteractWithPlayer();

        AfterAngryAtSonFishing = new Schedule(this, Schedule.priorityEnum.High);
        Task TriggerAfterFishingConvo =  new TimeTask(0f, new IdleState(this));
        TriggerAfterFishingConvo.AddFlagToSet(FlagStrings.CarpenterSonMovesToTheBeach);
        AfterAngryAtSonFishing.Add(TriggerAfterFishingConvo);

        MoveToCliffSide = new Schedule(this, Schedule.priorityEnum.High);
        MoveToCliffSide.Add(new Task(new MoveThenMarkDoneState(this, MapLocations.BeachCliffMiddle)));

        AcceptFishing = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle), new MiddleCarpenterToCarpenterSonAcceptingFishing(), Schedule.priorityEnum.DoNow); // CHANGE THIS CONVERSATION TO THE ONE WE WANT TO USE!
        AcceptFishing.SetCanNotInteractWithPlayer();

        AfterAcceptFishing = new Schedule(this, Schedule.priorityEnum.High);
        Task flagTask = new TimeTask(0f, new IdleState(this));
        flagTask.AddFlagToSet(FlagStrings.AfterProudOfSonConversation);
        AfterAcceptFishing.Add(flagTask);
        AfterAcceptFishing.Add(new Task (new MoveThenMarkDoneState(this, MapLocations.BaseOfPierMiddle)));
        AfterAcceptFishing.Add(new TimeTask(10000f, new AbstractAnimationState(this, "Fishing")));
        #endregion
        #region Carpentry
        happyAtSonForBeingCarpenter = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle),
            new MiddleCarpenterToSonCarpentryScriptedConvo(), Schedule.priorityEnum.DoNow);
        happyAtSonForBeingCarpenter.SetCanNotInteractWithPlayer();

        WorkOnWindmill = new Schedule(this, Schedule.priorityEnum.High);
        WorkOnWindmill.Add(new Task(new MoveThenMarkDoneState(this, MapLocations.WindmillMiddle)));
        WorkOnWindmill.Add(new TimeTask(250f, new IdleState(this)));
        WorkOnWindmill.Add(new Task(new MoveThenMarkDoneState(this, startingPosition)));
        Task setCarpentryFlag = new TimeTask(0f, new IdleState(this));
        setCarpentryFlag.AddFlagToSet(FlagStrings.CarpenterReturnedHome);
        WorkOnWindmill.Add(setCarpentryFlag);

        ConversationAboutRockingChair = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle),
            new GiveRockingChairScript(), Schedule.priorityEnum.DoNow);
        ConversationAboutRockingChair.SetCanNotInteractWithPlayer();

        ConversationAboutNotDoingAnything = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle),
            new GiveNothingScript(), Schedule.priorityEnum.DoNow);
        ConversationAboutNotDoingAnything.SetCanNotInteractWithPlayer();

        AfterConversation = new Schedule(this, Schedule.priorityEnum.High);
        AfterConversation.Add(new TimeTask(10000f, new AbstractAnimationState(this, "Whittle")));
        #endregion
        //CONVERSATION SCHEDULE BUG!!!! PLEASE FIX
        //CONVERSATION SCHEDULE BUG!!!! PLEASE FIX
    }