public async Task<HookResult> TalkDuncan(NpcScript npc, params object[] args)
	{
		if(npc.QuestActive(this.Id, "talk_duncan"))
		{
			npc.FinishQuest(this.Id, "talk_duncan");
			
			Send.Effect(npc.NPC, Effect.ScreenFlash, 3000, 0);
			
			// Remove Eiry
			var eiry = npc.Player.Inventory.Items.FirstOrDefault(item => item.EgoInfo.Race == EgoRace.EirySword);
			if(eiry != null)
				npc.Player.Inventory.Remove(eiry);
			
			// Give sword
			npc.GiveItem(40015);
			npc.Notice("Received Fluted Short Sword from Duncan.");
			
			npc.Msg("Welcome to Tir Chonaill.");
			npc.Msg("Oh, you are finally here, <username/>.<br/>I've heard a lot about you from the villagers.<br/>You've leveled up quite a lot.");
			npc.Msg("This may be a small town,<br/>but Tir Chonaill has long boasted a tradition<br/>of growing resolute and sturdy warriors<br/>that don't have to worry about the kingdom's control.");
			npc.Msg("You have now completed all our missions<br/>and have earned the right to join the rank of Tir Chonaill's warriors.<br/>Well done, and congratulations.");
			npc.Msg("Wherever you go, don't forget who you are and what you have become.<br/>Since you have become strong enough to survive alone,<br/>your ego guide must have already parted ways with you.<br/>There is no one to look after you now, so befriend as many people as you can.");
			npc.Msg("If you have anything else to ask, let me know.");
			await npc.Conversation();
			
			npc.Close2();
			
			Cutscene.Play("etc_event_ego_goodbye", npc.Player);
			
			return HookResult.Break;
		}
		
		return HookResult.Continue;
	}
Exemple #2
0
	public async Task<HookResult> BeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;
		
		if(keyword == "about_arbeit")
		{
			await AboutArbeit(npc);
			await npc.Conversation();
			npc.End();
			
			return HookResult.End;
		}
		
		return HookResult.Continue;
	}
	public async Task<HookResult> BeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;

		// Hook PTJ keyword
		if (keyword == "about_arbeit")
		{
			await AboutArbeit(npc);
			await npc.Conversation();
			npc.End();

			return HookResult.End;
		}

		return HookResult.Continue;
	}
Exemple #4
0
	public async Task<HookResult> NoraKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;
		
		if(keyword == "about_skill" && !npc.Player.Skills.Has(SkillId.Rest))
		{
			npc.Player.Skills.Give(SkillId.Rest, SkillRank.Novice);
			npc.Player.Keywords.Give("skill_rest");
			
			npc.Msg("You are at the Inn. This is where weary travelers rest.<br/>It's important to rejuvenate yourself both mentally and physically by resting.<br/>Do you know about the Resting skill?<br/>If not, I'll tell you about it.");
			npc.Msg("Now, open the Skill window. Press the 'Skills' button at the bottom of the screen.<br/>Or, just press 'S'.");
			npc.Msg("Do you see the Resting skill? You can't use it now because you're talking to me.<br/>You can activate it from the Skill window or drag-and-drop it at the top of the screen and use the Function keys as hotkeys.<br/>In my case, I use F1 to activate it.");
			npc.Msg("You usually use the Resting skill when you need to fill your Stamina.<br/>But it is also useful to recover HP,<br/>and it's good to heal wounds, although it does take longer.", npc.Image("skill_rest"));
			
			npc.Msg("Anyway, I don't understand why so many people ask me about skills.");
			await npc.Conversation();
		}
		
		return HookResult.Continue;
	}
Exemple #5
0
    public async Task <HookResult> TalkDuncan(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "talk_duncan"))
        {
            npc.FinishQuest(this.Id, "talk_duncan");

            Send.Effect(npc.NPC, Effect.ScreenFlash, 3000, 0);

            // Remove Eiry
            var eiry = npc.Player.Inventory.Items.FirstOrDefault(item => item.EgoInfo.Race == EgoRace.EirySword);
            if (eiry != null)
            {
                npc.Player.Inventory.Remove(eiry);
            }

            // Give sword
            npc.GiveItem(40015);
            npc.Notice("Received Fluted Short Sword from Duncan.");

            npc.Msg("Welcome to Tir Chonaill.");
            npc.Msg("Oh, you are finally here, <username/>.<br/>I've heard a lot about you from the villagers.<br/>You've leveled up quite a lot.");
            npc.Msg("This may be a small town,<br/>but Tir Chonaill has long boasted a tradition<br/>of growing resolute and sturdy warriors<br/>that don't have to worry about the kingdom's control.");
            npc.Msg("You have now completed all our missions<br/>and have earned the right to join the rank of Tir Chonaill's warriors.<br/>Well done, and congratulations.");
            npc.Msg("Wherever you go, don't forget who you are and what you have become.<br/>Since you have become strong enough to survive alone,<br/>your ego guide must have already parted ways with you.<br/>There is no one to look after you now, so befriend as many people as you can.");
            npc.Msg("If you have anything else to ask, let me know.");
            await npc.Conversation();

            npc.Close2();

            var cutscene = new Cutscene("etc_event_ego_goodbye", npc.Player);
            cutscene.AddActor("me", npc.Player);
            cutscene.Play();

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
    public async Task <HookResult> NoraKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

        if (keyword == "about_skill" && !npc.Player.HasSkill(SkillId.Rest))
        {
            npc.Player.GiveSkill(SkillId.Rest, SkillRank.Novice);
            npc.Player.GiveKeyword("skill_rest");

            npc.Msg("You are at the Inn. This is where weary travelers rest.<br/>It's important to rejuvenate yourself both mentally and physically by resting.<br/>Do you know about the Resting skill?<br/>If not, I'll tell you about it.");
            npc.Msg("Now, open the Skill window. Press the 'Skills' button at the bottom of the screen.<br/>Or, just press 'S'.");
            npc.Msg("Do you see the Resting skill? You can't use it now because you're talking to me.<br/>You can activate it from the Skill window or drag-and-drop it at the top of the screen and use the Function keys as hotkeys.<br/>In my case, I use F1 to activate it.");
            npc.Msg("You usually use the Resting skill when you need to fill your Stamina.<br/>But it is also useful to recover HP,<br/>and it's good to heal wounds, although it does take longer.", npc.Image("skill_rest"));

            npc.Msg("Anyway, I don't understand why so many people ask me about skills.");
            await npc.Conversation();

            npc.End();

            return(HookResult.End);
        }

        return(HookResult.Continue);
    }
Exemple #7
0
	public async Task<HookResult> BeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;
		if (keyword != "about_study")
			return HookResult.Continue;

		var stateName = "LassarClassState";
		var lastName = "LassarClassLast";
		var state = (int)npc.Player.Vars.Perm.Get(stateName, 0);
		var last = (string)npc.Player.Vars.Perm.Get(lastName, "never");
		var now = ErinnTime.Now;
		var today = now.ToString("yyyy-MM-dd");
		var start = 7;
		var end = 23;
		var remaintime = end - now.Hour;
		var lastState = 8;

		if (npc.QuestActiveUncompleted(200029))
		{
			npc.Msg(L("Haven't you finished the assignment I gave you?<br/>Well... Don't tell me you haven't received the assignment yet?<br/>It's been a long time since I sent it by an owl!"));
			npc.Msg(L("Well, this assignment has no deadline,<br/>so you can take your time."));
		}
		else if (state > lastState)
		{
			npc.Msg(L("<username/>, you have already completed the Basic Sorcery.<br/>From now on, you should find ways to study on your own."));
		}
		else if (last == today)
		{
			npc.Msg(L("Hmm... Now is not the right time to talk about it.<br/>Today's magic classes are all finished.<br/>Come back later. Shall we say... around when the shadow points north, northwest?"));
		}
		else if (now.Hour < start || now.Hour >= end)
		{
			npc.Msg(L("Class has started long ago.<br/>You should come back later."));
		}
		else
		{
			var exp = 0;
			var cost = 0;
			var msg = "";
			var name = "";
			var title = L("The Basics of Magic and Understanding of Mana");
			var paydesc = "";
			var reward = "";
			var desc = "";
			var func = (Func<NpcScript, Task>)null;

			switch (state)
			{
				case 0:
					exp = 30;
					cost = 4000;
					msg = L("Are you going to take a magic class?<br/>Then, how about this course?<br/>Tuition is a lump sum that includes three days of lessons including today.<br/>This tuition covers up to the end of Basic Sorcery Chapter One.");
					name = L("Basic Sorcery 1-1");
					paydesc = L("Total tuition for three days is 4000G.");
					reward = L("* Icebolt Spell<br/>* EXP Reward");
					desc = L("The first thing you learn about and use in the three classes in Basic Sorcery Chapter One is Mana, which is the most fundamental element in magic.");
					func = Class1_1;
					break;

				case 1:
					exp = 30;
					msg = L("Hee hee.<br/>You are here for a class. <username/>?<br/>How was the class yesterday?<br/>We'll start as soon as we're ready.");
					name = L("Basic Sorcery 1-2");
					paydesc = L("Already paid.");
					reward = L("* Icebolt Spell<br/>* EXP Reward");
					desc = L("The second of the three classes in Basic Sorcery Chapter One, you learn how to distinguish magic by its domain and learn about the Elementals.");
					func = Class1_2;
					break;

				case 2:
					exp = 100;
					msg = L("You're already here for the last class of the first chapter, <username/>.<br/>The class is not only for gaining spells.<br/>One of the advantages of taking classes is gaining knowledge and experiences to use magic correctly and effectively<br/>without additional training. Do you want to take the class?");
					name = L("Basic Sorcery 1-3");
					title = L("Icebolt Magic Practice");
					paydesc = L("Already paid.");
					reward = L("* Icebolt Spell<br/>* EXP Reward");
					desc = L("The last thing you learn in the three classes of Basic Sorcery Chapter One is how to cast Icebolt magic.");
					func = Class1_3;
					break;

				case 3:
					exp = 50;
					cost = 4000;
					msg = L("Oh. You took the first chapter of Basic Sorcery before.<br/>Was the class helpful?<br/>I hope you do well in this chapter too.<br/>To learn this chapter, you have to pay the tuition now. Hee hee.");
					name = L("Basic Sorcery 2-1");
					title = L("How to Cast Icebolt Consecutively");
					paydesc = L("Total tuition for three days is 4000G.");
					reward = L("* Firebolt Spell<br/>* EXP Reward");
					desc = L("In the first lesson of the three classes in Basic Sorcery Chapter Two, designed to improve the understanding of Ice elemental magic, you learn how to cast Icebolt magic consecutively and what to watch out for.");
					func = Class2_1;
					break;

				case 4:
					exp = 50;
					msg = L("Hee hee. You came here to take the class, right?");
					name = L("Basic Sorcery 2-2");
					title = L("Strategic Use of Icebolt Magic");
					paydesc = L("Already Paid.");
					reward = L("* Firebolt Spell<br/>* EXP Reward");
					desc = L("In the second lesson of the three classes in Basic Sorcery chapter two, you learn how to employ Icebolt spells effectively in real combat situations.");
					func = Class2_2;
					break;

				case 5:
					exp = 50;
					msg = L("It is already the last class of chapter two.<br/>Please remain focused until the end.");
					name = L("Basic Sorcery 2-3");
					title = L("StrategicApplications to Other Elemental Magic");
					paydesc = L("Already Paid.");
					reward = L("* Firebolt Spell<br/>* EXP Reward");
					desc = L("In the last lesson of the three classes in Basic Sorcery Chapter Two, you learn Elemental magic of other domains by utilizing the already-learned Icebolt spell.");
					func = Class2_3;
					break;

				case 6:
					exp = 100;
					cost = 7000;
					msg = L("Hee hee. You've come to learn Basic Sorcery Chapter Three.<br/>I knew, <username/>, that<br/>you would do this.<br/>So good to see you. I was right about you, it seems.");
					name = L("Basic Sorcery 3-1");
					title = L("How to Cast Firebolt Consecutively");
					paydesc = L("Total tuition for three days is 7000G.");
					reward = L("* Lightningbolt Spell<br/>* EXP Reward, Intelligence Increase");
					desc = L("They say that this chapter is fairly tough since it includes an assignment. In the first lesson of the three classes in Basic Sorcery Chapter Three, designed to improve the understanding of Fire elemental magic, you learn how to cast Firebolt consecutively and what to watch out for.");
					func = Class3_1;
					break;

				case 7:
					exp = 100;
					msg = L("I trust that your training is going well?<br/>I hope so. Haha.<br/>Let's start today's class, then.");
					name = L("Basic Sorcery 3-2");
					title = L("Strategic Use of Firebolt Magic");
					paydesc = L("Already Paid.");
					reward = L("* Lightningbolt Spell<br/>* EXP Reward, Intelligence Increase");
					desc = L("In the second lesson of the three classes in Basic Sorcery Chapter Three, you learn how to employ Firebolt spells effectively in real combat situations.");
					func = Class3_2;
					break;

				case 8:
					exp = 100;
					msg = L("Are you ready for the class?");
					name = L("Basic Sorcery 3-3");
					title = L("Using Icebolt and Firebolt in Combat");
					paydesc = L("Already Paid.");
					reward = L("* Lightningbolt Spell<br/>* EXP Reward, Intelligence Increase");
					desc = L("In the last lesson of the three classes in Basic Sorcery Chapter Three, you learn how to overcome the weaknesses of Firebolt and train in the casting of additional magic by doing assignments.");
					func = Class3_3;
					break;
			}

			var school = GetSchoolTag(name, title, paydesc, reward, desc, remaintime);

			npc.Msg(msg + school);
			if (await npc.Select() == "@accept")
			{
				if (cost > 0)
				{
					if (npc.Gold < cost)
					{
						npc.Msg(L("Hmm.<br/>The Magic School tuition is expensive.<br/>If you want to take the class, you should save up for tuition."));
						npc.End();
						return HookResult.End;
					}

					npc.Gold -= cost;
				}

				await func(npc);

				if (exp > 0)
					npc.Player.GiveExp(exp);

				npc.Player.Vars.Perm[stateName] = state + 1;
				npc.Player.Vars.Perm[lastName] = today;
			}
			else
			{
				npc.Msg(L("No one can force you to take a class you don't want to."));
			}
		}

		await npc.Conversation();
		npc.End();

		return HookResult.End;
	}
Exemple #8
0
    public async Task <HookResult> BeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

        if (keyword != "about_study")
        {
            return(HookResult.Continue);
        }

        var stateName  = "RanaldClassState";
        var lastName   = "RanaldClassLast";
        var state      = (int)npc.Player.Vars.Perm.Get(stateName, 0);
        var last       = (string)npc.Player.Vars.Perm.Get(lastName, "never");
        var now        = ErinnTime.Now;
        var today      = now.ToString("yyyy-MM-dd");
        var start      = 7;
        var end        = 23;
        var remaintime = end - now.Hour;
        var lastState  = 10;

        if (npc.QuestActiveUncompleted(200040) || npc.QuestActiveUncompleted(200041) || npc.QuestActiveUncompleted(200028))
        {
            npc.Msg(L("Are you working on the assignment I gave you?<br/>You can't proceed to the next class unless you complete the assignment first."));
        }
        else if (state > lastState)
        {
            npc.Msg(L("I've got nothing more to teach you.<br/>But don't forget that you're still learning. Maintain your focus and keep up the good work."));
        }
        else if (last == today)
        {
            npc.Msg(L("Today's class is over.<br/>You can spend the rest of the day as you wish."));
        }
        else if (now.Hour < start || now.Hour >= end)
        {
            npc.Msg(L("This is not the time for class. Come back tomorrow morning."));
        }
        else
        {
            var exp     = 0;
            var cost    = 0;
            var msg     = "";
            var name    = "";
            var title   = L("A class for learning combat theory.");
            var paydesc = "";
            var reward  = "";
            var desc    = "";
            var func    = (Func <NpcScript, Task>)null;

            switch (state)
            {
            case 0:
                exp     = 30;
                cost    = 300;
                msg     = L("Are you interested in the combat class?<br/>If you're sick and tired of battles run by simple mouse clicks,<br/>my class is definitely worth spending some time and money on.");
                name    = L("Basic Combat 1-1");
                paydesc = L("3-day course. Total tuition of 300G");
                reward  = L("* STR Increase<br/>* EXP Reward");
                desc    = L("A class for the basics of combat. The complete class is 3 hours long with a simple assignment in the last hour.");
                func    = Class1_1;
                break;

            case 1:
                exp     = 30;
                msg     = L("Uh? Hey, you're in my class, aren't you?<br/>Ready for the next class?<br/>The tuition was already paid last time, so you don't owe anything.");
                name    = L("Basic Combat 1-2");
                paydesc = L("Total 300G for Tuition of 3-day Coursework (Already paid)");
                reward  = L("* STR Increase<br/>* EXP Reward");
                desc    = L("A class for learning basic combat. Today is our second class of the 3 hour course.");
                func    = Class1_2;
                break;

            case 2:
                exp     = 100;
                msg     = L("Today is the last day of Basic Combat 1.<br/>Do you want to take the class?");
                name    = L("Basic Combat 1-3");
                paydesc = L("Total 300G for Tuition of 3-day Coursework (Already paid)");
                reward  = L("* STR Increase<br/>* EXP Reward");
                desc    = L("A class for learning basic combat. It's the last class of the 3. There will be an assignment at the end.");
                func    = Class1_3;
                break;

            case 3:
                exp     = 50;
                cost    = 500;
                msg     = L("This is the second class on Basic Combat.<br/>Are you ready to take it?");
                name    = L("Basic Combat 2-1");
                paydesc = L("3-day course. Total tuition of 500G");
                reward  = L("* Defense Skill<br/>* STR Increase, EXP Reward");
                desc    = L("A class for learning about the Defense skill. The complete class is comprised of 3 sessions with a simple assignment at the end.");
                func    = Class2_1;
                break;

            case 4:
                exp     = 50;
                msg     = L("Did you watch a fox defending itself?<br/>Then, let's start the next class.");
                name    = L("Basic Combat 2-2");
                paydesc = L("Total 500G for Tuition of 3-day Coursework (Already paid)");
                reward  = L("* Defense Skill<br/>* STR Increase, EXP Reward");
                desc    = L("A class for learning about the Defense skill. Today is the second class of the 3. You will learn how to use the Defense skill.");
                func    = Class2_2;
                break;

            case 5:
                exp     = 150;
                msg     = L("Today is the last day of Basic Combat 2.<br/>Do you want to take the class?");
                name    = L("Basic Combat 2-3");
                paydesc = L("Total 500G for Tuition of 3-day Coursework (Already paid)");
                reward  = L("* Defense Skill<br/>* STR Increase, EXP Reward");
                desc    = L("A class for learning about the Defense skill. It's the last class of the 3. There will be an assignment at the end.");
                func    = Class2_3;
                break;

            case 6:
                exp     = 100;
                cost    = 1000;
                msg     = L("This is the last class on Basic Combat.<br/>Are you Interested?");
                name    = L("Basic Combat 3-1");
                paydesc = L("5-day course. Total tuition of 1000G");
                reward  = L("* Smash skill<br/>* Will Increase, STR Increase, EXP Reward");
                desc    = L("A class for learning comprehensive elementary combat. The complete class is comprised of 5 sessions with an assignment at the end.");
                func    = Class3_1;
                break;

            case 7:
                exp     = 100;
                msg     = L("It was Basic Combat 3, right?<br/>Are you ready to start?");
                name    = L("Basic Combat 3-2");
                paydesc = L("Total 1000G for Tuition of 5-day Coursework (Already paid)");
                reward  = L("* Smash skill<br/>* Will Increase, STR Increase, EXP Reward");
                desc    = L("A class for learning comprehensive elementary combat. This is the second class of the 5, and you will learn about the Smash skill.");
                func    = Class3_2;
                break;

            case 8:
                exp     = 100;
                msg     = L("You're having troubles fighting alone?<br/>Then, today's class will help. Listen carefully.");
                name    = L("Basic Combat 3-3");
                paydesc = L("Total 1000G for Tuition of 5-day Coursework (Already paid)");
                reward  = L("* Smash skill<br/>* Will Increase, STR Increase, EXP Reward");
                desc    = L("A class for learning comprehensive elementary combat. This is the third class of the 5, and you will learn about the warrior party combination.");
                func    = Class3_3;
                break;

            case 9:
                exp     = 100;
                msg     = L("Remember the last class about the warrior-warrior party?<br/>Let's talk about a different type of party play.");
                name    = L("Basic Combat 3-4");
                paydesc = L("Total 1000G for Tuition of 5-day Coursework (Already paid)");
                reward  = L("* Smash skill<br/>* Will Increase, STR Increase, EXP Reward");
                desc    = L("A class for learning comprehensive elementary combat. This is the fourth class of the 5. We will now focus on the warrior and archer party combination.");
                func    = Class3_4;
                break;

            case 10:
                exp     = 100;
                msg     = L("Today is the last day of Basic Combat 3.<br/>Do you want to take the class?");
                name    = L("Basic Combat 3-5");
                paydesc = L("Total 1000G for Tuition of 5-day Coursework (Already paid)");
                reward  = L("* Smash skill<br/>* Will Increase, STR Increase, EXP Reward");
                desc    = L("A class for learning comprehensive elementary combat. This is the last class of the 5. There is an assignment waiting at the end of the class.");
                func    = Class3_5;
                break;
            }

            var school = GetSchoolTag(name, title, paydesc, reward, desc, remaintime);

            npc.Msg(msg + school);
            if (await npc.Select() == "@accept")
            {
                if (cost > 0)
                {
                    if (npc.Gold < cost)
                    {
                        npc.Msg(L("Oh, you're short of money for the class.<br/>I'm sorry, but come back later when you can pay the tuition."));
                        npc.End();
                        return(HookResult.End);
                    }

                    npc.Gold -= cost;
                }

                await func(npc);

                if (exp > 0)
                {
                    npc.Player.GiveExp(exp);
                }

                npc.Player.Vars.Perm[stateName] = state + 1;
                npc.Player.Vars.Perm[lastName]  = today;
            }
            else
            {
                npc.Msg(L("Not interested in my class? Well, then."));
            }
        }

        await npc.Conversation();

        npc.End();

        return(HookResult.End);
    }
Exemple #9
0
	public async Task<HookResult> BeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;
		if (keyword != "about_study")
			return HookResult.Continue;

		var stateName = "RanaldClassState";
		var lastName = "RanaldClassLast";
		var state = (int)npc.Player.Vars.Perm.Get(stateName, 0);
		var last = (string)npc.Player.Vars.Perm.Get(lastName, "never");
		var now = ErinnTime.Now;
		var today = now.ToString("yyyy-MM-dd");
		var start = 9;
		var end = 21;
		var remaintime = end - now.Hour;
		var lastState = 10;

		if (npc.QuestActiveUncompleted(200040) || npc.QuestActiveUncompleted(200041) || npc.QuestActiveUncompleted(200028))
		{
			npc.Msg(L("Are you working on the assignment I gave you?<br/>You can't proceed to the next class unless you complete the assignment first."));
		}
		else if (state > lastState)
		{
			npc.Msg(L("I've got nothing more to teach you.<br/>But don't forget that you're still learning. Maintain your focus and keep up the good work."));
		}
		else if (last == today)
		{
			npc.Msg(L("Today's class is over.<br/>You can spend the rest of the day as you wish."));
		}
		else if (now.Hour < start)
		{
			// Unofficial
			npc.Msg(L("This is not the time for class. Come back later."));
		}
		else if (now.Hour >= end)
		{
			npc.Msg(L("This is not the time for class. Come back tomorrow morning."));
		}
		else
		{
			var exp = 0;
			var cost = 0;
			var msg = "";
			var name = "";
			var title = L("A class for learning combat theory.");
			var paydesc = "";
			var reward = "";
			var desc = "";
			var func = (Func<NpcScript, Task>)null;

			switch (state)
			{
				case 0:
					exp = 30;
					cost = 300;
					msg = L("Are you interested in the combat class?<br/>If you're sick and tired of battles run by simple mouse clicks,<br/>my class is definitely worth spending some time and money on.");
					name = L("Basic Combat 1-1");
					paydesc = L("3-day course. Total tuition of 300G");
					reward = L("* STR Increase<br/>* EXP Reward");
					desc = L("A class for the basics of combat. The complete class is 3 hours long with a simple assignment in the last hour.");
					func = Class1_1;
					break;

				case 1:
					exp = 30;
					msg = L("Uh? Hey, you're in my class, aren't you?<br/>Ready for the next class?<br/>The tuition was already paid last time, so you don't owe anything.");
					name = L("Basic Combat 1-2");
					paydesc = L("Total 300G for Tuition of 3-day Coursework (Already paid)");
					reward = L("* STR Increase<br/>* EXP Reward");
					desc = L("A class for learning basic combat. Today is our second class of the 3 hour course.");
					func = Class1_2;
					break;

				case 2:
					exp = 100;
					msg = L("Today is the last day of Basic Combat 1.<br/>Do you want to take the class?");
					name = L("Basic Combat 1-3");
					paydesc = L("Total 300G for Tuition of 3-day Coursework (Already paid)");
					reward = L("* STR Increase<br/>* EXP Reward");
					desc = L("A class for learning basic combat. It's the last class of the 3. There will be an assignment at the end.");
					func = Class1_3;
					break;

				case 3:
					exp = 50;
					cost = 500;
					msg = L("This is the second class on Basic Combat.<br/>Are you ready to take it?");
					name = L("Basic Combat 2-1");
					paydesc = L("3-day course. Total tuition of 500G");
					reward = L("* Defense Skill<br/>* STR Increase, EXP Reward");
					desc = L("A class for learning about the Defense skill. The complete class is comprised of 3 sessions with a simple assignment at the end.");
					func = Class2_1;
					break;

				case 4:
					exp = 50;
					msg = L("Did you watch a fox defending itself?<br/>Then, let's start the next class.");
					name = L("Basic Combat 2-2");
					paydesc = L("Total 500G for Tuition of 3-day Coursework (Already paid)");
					reward = L("* Defense Skill<br/>* STR Increase, EXP Reward");
					desc = L("A class for learning about the Defense skill. Today is the second class of the 3. You will learn how to use the Defense skill.");
					func = Class2_2;
					break;

				case 5:
					exp = 150;
					msg = L("Today is the last day of Basic Combat 2.<br/>Do you want to take the class?");
					name = L("Basic Combat 2-3");
					paydesc = L("Total 500G for Tuition of 3-day Coursework (Already paid)");
					reward = L("* Defense Skill<br/>* STR Increase, EXP Reward");
					desc = L("A class for learning about the Defense skill. It's the last class of the 3. There will be an assignment at the end.");
					func = Class2_3;
					break;

				case 6:
					exp = 100;
					cost = 1000;
					msg = L("This is the last class on Basic Combat.<br/>Are you Interested?");
					name = L("Basic Combat 3-1");
					paydesc = L("5-day course. Total tuition of 1000G");
					reward = L("* Smash skill<br/>* Will Increase, STR Increase, EXP Reward");
					desc = L("A class for learning comprehensive elementary combat. The complete class is comprised of 5 sessions with an assignment at the end.");
					func = Class3_1;
					break;

				case 7:
					exp = 100;
					msg = L("It was Basic Combat 3, right?<br/>Are you ready to start?");
					name = L("Basic Combat 3-2");
					paydesc = L("Total 1000G for Tuition of 5-day Coursework (Already paid)");
					reward = L("* Smash skill<br/>* Will Increase, STR Increase, EXP Reward");
					desc = L("A class for learning comprehensive elementary combat. This is the second class of the 5, and you will learn about the Smash skill.");
					func = Class3_2;
					break;

				case 8:
					exp = 100;
					msg = L("You're having troubles fighting alone?<br/>Then, today's class will help. Listen carefully.");
					name = L("Basic Combat 3-3");
					paydesc = L("Total 1000G for Tuition of 5-day Coursework (Already paid)");
					reward = L("* Smash skill<br/>* Will Increase, STR Increase, EXP Reward");
					desc = L("A class for learning comprehensive elementary combat. This is the third class of the 5, and you will learn about the warrior party combination.");
					func = Class3_3;
					break;

				case 9:
					exp = 100;
					msg = L("Remember the last class about the warrior-warrior party?<br/>Let's talk about a different type of party play.");
					name = L("Basic Combat 3-4");
					paydesc = L("Total 1000G for Tuition of 5-day Coursework (Already paid)");
					reward = L("* Smash skill<br/>* Will Increase, STR Increase, EXP Reward");
					desc = L("A class for learning comprehensive elementary combat. This is the fourth class of the 5. We will now focus on the warrior and archer party combination.");
					func = Class3_4;
					break;

				case 10:
					exp = 100;
					msg = L("Today is the last day of Basic Combat 3.<br/>Do you want to take the class?");
					name = L("Basic Combat 3-5");
					paydesc = L("Total 1000G for Tuition of 5-day Coursework (Already paid)");
					reward = L("* Smash skill<br/>* Will Increase, STR Increase, EXP Reward");
					desc = L("A class for learning comprehensive elementary combat. This is the last class of the 5. There is an assignment waiting at the end of the class.");
					func = Class3_5;
					break;
			}

			var school = GetSchoolTag(name, title, paydesc, reward, desc, remaintime);

			npc.Msg(msg + school);
			if (await npc.Select() == "@accept")
			{
				if (cost > 0)
				{
					if (npc.Gold < cost)
					{
						npc.Msg(L("Oh, you're short of money for the class.<br/>I'm sorry, but come back later when you can pay the tuition."));
						npc.End();
						return HookResult.End;
					}

					npc.Gold -= cost;
				}

				await func(npc);

				if (exp > 0)
					npc.Player.GiveExp(exp);

				npc.Player.Vars.Perm[stateName] = state + 1;
				npc.Player.Vars.Perm[lastName] = today;
			}
			else
			{
				npc.Msg(L("Not interested in my class? Well, then."));
			}
		}

		await npc.Conversation();
		npc.End();

		return HookResult.End;
	}