context: //--- Aura Script -----------------------------------------------------------
  // Endelyon
  //--- Description -----------------------------------------------------------
  // Priestess in front of Tir's Church
  //---------------------------------------------------------------------------
  
  public class EndelyonScript : NpcScript
  {
  	public override void Load()
  	{
  		SetRace(10001);
  		SetName("_endelyon");
  		SetBody(height: 1.06f);
  		SetFace(skinColor: 17);
  		SetStand("human/female/anim/female_natural_stand_npc_Endelyon");
  		SetLocation(1, 5975, 36842, 0);
  
  		AddGreeting(0, "I don't think we've ever met. Nice to meet you.");
  		AddGreeting(1, "Glad to see you again.");
  
  		EquipItem(Pocket.Face, 3900, 0x00F49D31, 0x00605765, 0x0000B8C3);
  		EquipItem(Pocket.Hair, 3022, 0x005E423E, 0x005E423E, 0x005E423E);
  		EquipItem(Pocket.Armor, 15009, 0x00303133, 0x00C6D8EA, 0x00DBC741);
  		EquipItem(Pocket.Shoe, 17015, 0x00303133, 0x00A0927D, 0x004F548D);
  
  		AddPhrase("Hm... Something doesn't feel right.");
  		AddPhrase("Why do people like such things?");
  		AddPhrase("It's so hard to do this all by myself!");
  		AddPhrase("I really need some help here...");
  	}
  
  	protected override async Task Talk()
  	{
  		SetBgm("NPC_Endelyon.mp3");
  
  		await Intro(
  			"An elegant young woman in the simple black dress of a",
  			"Lymilark priestess stands in front of the church."
  		);
  
  		// May I help you on anything else?<button title='End Conversation' keyword='@end' />
  		Msg("May I help you?", Button("Start a Conversation", "@talk"), Button("Shop", "@shop"), Button("Modify Item", "@upgrade"));
  
  		switch (await Select())
  		{
  			case "@talk":
  				Greet();
  				Msg(Hide.Name, GetMoodString(), FavorExpression());
  				if (Title == 11002)
  					Msg("I already heard the news! You became the Guardian of Erinn.<br/>The whole town seems to be talking about it. Hehe...<br/>Congratulations!");
  				await Conversation();
  				break;
  
  			case "@shop":
  				Msg("What are you looking for?");
  				OpenShop("EndelyonShop");
  				return;
  
  			case "@upgrade":
  				Msg("Are you asking me...to modify your item?<br/>Honestly, I am not sure if I can, but if you still want me to, I'll give it a try.<br/>Please choose an item to modify. <upgrade />");
  
  				while (true)
  				{
  					var reply = await Select();
  
  					if (!reply.StartsWith("@upgrade:"))
  						break;
  
  					var result = Upgrade(reply);
  					if (result.Success)
  						Msg("That came out better than I thought.<br/>Was it supposed to be this easy?<br/>Do you want to modify anything else?");
  					else
  						Msg("(Error)");
  				}
  
  				Msg("Do you want me to stop...? Well, then... Next time...<br/><upgrade hide='true'/>");
  				break;
  		}
  
  		End();
  	}
  
  	protected override async Task Keywords(string keyword)
  	{
  		switch (keyword)
  		{
  			case "personal_info":
  				GiveKeyword("temple");
  				Msg("I don't have much knowledge, but I am here if you need help.");
  				ModifyRelation(Random(2), 0, Random(2));
  				break;
  
  			case "rumor":
  				GiveKeyword("shop_healing");
  				Msg("<face name='normal'/>Have you met Dilys? She's the town's Healer.<br/>Walk along the road heading northeast, and you will find the Healer's House.<br/>Make sure to meet her if you pass by there.");
  				ModifyRelation(Random(2), 0, Random(2));
  				break;
  
  			case "about_skill":
  				if (!QuestActive(204002) && !QuestCompleted(204002))
  				{
  					//StartQuest(204002); // Quest log: http://pastebin.com/1c9XFc5Y
  					Msg("Skills? I don't know if I can call it a skill, but you can gather eggs from hens.<br/>Some of the less fortunate among the faithful come to the Church seeking the blessings of Lymilark.<br/>To relieve their hunger, we prepare boiled eggs for them.");
  					Msg("If you bring me eggs, I'll reward you for your work.<br/>This will be a good time for you to learn how to collect eggs, too.");
  				}
  				else
  				{
  					if (!HasSkill(SkillId.Tailoring))
  					{
  						GiveKeyword("skill_tailoring");
  						Msg("I'm sorry, but I don't know much about skills.<br/>The only skill I know is tailoring.<br/>If you want to know more about making clothes,<br/>talk with Caitin at the Grocery Store.<br/>She's the best tailor in town.");
  					}
  					else
  					{
  						Msg("Did you make the clothes you are wearing right now with the Tailoring skill?<br/>If not, I'm sorry. It's just that your clothes are very beautiful.");
  					}
  				}
  				break;
  
  			case "shop_misc":
  				Msg("Everybody knows the General Shop sells good products that are also durable.<br/>Want to see for yourself? Then go to the General Shop and talk to Malcolm.");
  				break;
  
  			case "shop_grocery":
  				Msg("Caitin's mom actually owns the store, but her eyes have been failing,<br/>so Caitin manages and takes care of her mom all by herself.<br/>It must be really tough, but she never complains.");
  				Msg("Oh oops, I forgot to tell you. Her store is located near the Square.<br/>I'm sure you will find it quickly,<br/>since food ingredients are displayed outside and there's a signboard.");
  				break;
  
  			case "shop_healing":
  				Msg("Small wounds can be cured through spells or potions, but not serious injuries.");
  				Msg("For a serious injury, head to the Healer's House.<br/>Tell Dilys about the injury, and she will take good care of you.");
  				break;
  
  			case "shop_inn":
  				Msg("This town used to let visitors stay with private citizens,<br/>but the number of visitors shot up over the last few years, so Piaras opened an inn.<br/>To get there, walk downhill from the Square that leads to the town entrance.");
  				break;
  
  			case "shop_bank":
  				Msg("If you are curious about rumors around town, go talk to Bebhinn.<br/>She knows all the latest gossip.");
  				break;
  
  			case "shop_smith":
  				Msg("The Blacksmith's Shop? Are you looking for Ferghus?<br/>Oh... That's pretty far, actually...<br/>I think you are heading in the wrong direction.");
  				break;
  
  			case "skill_range":
  				Msg("Hmm... It's true we humans obtain meat and hides from animals,<br/>but reckless hunting will cause the sorrow of Lymilark and the wrath of Kernunnos.<br/>Even if you learn a skill, I hope you don't use it to hunt animals.");
  				break;
  
  			case "skill_insrument":
  				GiveKeyword("lute");
  				Msg("Hmm. I learned how to play the organ and the lute from an early age,<br/>but I don't think books can teach you those skills.<br/>It's something you must learn by trying it with your own two hands.");
  				Msg("Lutes are common instruments, so talk to Malcolm about buying one.");
  				break;
  
  			case "skill_composing":
  				if (HasSkill(SkillId.Composing))
  				{
  					RemoveKeyword("skill_composing");
  					Msg("So you know about the Composing skill.<br/>How about writing a song for a loved one?");
  				}
  				else
  				{
  					if (!QuestActive(20002))
  					{
  						//StartQuest(20002); // Quest Log: http://pastebin.com/e6JLQi55
  						RemoveKeyword("skill_composing");
  						Msg("What? Bebhinn told you to ask me about the Composing skill?<br/>I like composing music, sure, but I started not too long ago.<br/>I can't even imagine how I could actually teach someone.");
  						Msg("Hmm... Now that we're talking about composing music,<br/>would you do me a favor?");
  						Msg("<title name='NONE'/>(Received a Quest Scroll containing Endelyon's request.)");
  					}
  					else
  					{
  						Msg("Speaking of the Composing skill,<br/>have you read the Quest Scroll with my request?");
  					}
  				}
  				break;
  
  			case "skill_tailoring":
  				GiveKeyword("shop_grocery");
  				Msg("You sure have a lot of doubts. Hahaha...<br/>All you need to do is ask Caitin at the Grocery Store.<br/>You couldn't possibly think that I don't tell you all I know?<br/>Hahaha. I hope you don't feel that way. Now, go to the Grocery Store.");
  				break;
  
  			case "skill_magnum_shot":
  				GiveKeyword("school");
  				Msg("I say it would be better to talk to Trefor the guard or Ranald the combat instructor.<br/>They are the experts on melee combat skills in this town.<br/>Trefor is on guard at the path to Alby Dungeon in the northern part of town,<br/>and Ranald is in the School right below where we are right now.");
  				break;
  
  			case "skill_counter_attack":
  				GiveKeyword("school");
  				Msg("Hmm... I think you should talk with Ranald about that.<br/>He must be at the School right below where we are right now.");
  				break;
  
  			case "skill_smash":
  				Msg("As for the Smash skill, I don't know very much about it,<br/>but Ranald or Ferghus can help you out.");
  				Msg("I heard some people bring up their names<br/>when discussing the skill the other day.");
  				break;
  
  			case "skill_gathering":
  				Msg("Do you know about the Gathering skill? Hahaha, don't be nervous. Anyone can do it.<br/>It's a skill to collect wood or wool from Mother Nature with the proper tools.<br/>I think it's a good idea to talk to Caitin about gathering,<br/>unless you've already met her and talked about it.");
  				break;
  
  			case "square":
  				Msg("Go straight up this way, and you will find the Square.<br/>Since it is always crowded,<br/>you won't miss it.");
  				break;
  
  			case "pool":
  				GiveKeyword("windmill");
  				Msg("The reservoir is near here.<br/>The Windmill draws water out of the reservoir to irrigate the farmland.");
  				break;
  
  			case "farmland":
  				Msg("Hmm... I don't know if I should tell you where it is.<br/>The farmland is right there in front, but know this.<br/>People in town are quite depressed when they see their precious crops ruined<br/>by travelers trespassing on their farmland.");
  				break;
  
  			case "windmill":
  				Msg("The Windmill?<br/>You should head to the town entrance.<br/>But there is nothing much to see, I think.");
  
gt: 				Msg("Wait, you want to go there to see Alissa, right?");