예제 #1
0
    public async Task <HookResult> ElenKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

        if (keyword != "about_skill" || npc.HasSkill(SkillId.Refining))
        {
            return(HookResult.Continue);
        }

        if (!npc.QuestActive(this.Id))
        {
            npc.Msg("Did my grandpa send you over this way?<br/>Hehe.... Oh, nothing.<br/>Here, take this...");
            npc.Msg("Are you interested in refining by any chance?<br/>Refining is the first step in becoming a blacksmith...");
            npc.Msg("You can use ore in its raw form.<br/>You have to melt it to extract the pure metal from it.<br/>You can simply assume that you can use the ore as it is.");
            npc.Msg("We've been looking for more ore anyway,<br/>so why don't you go to Barri Dungeon and mine some ore for us?<br/>Bring some ore and I'll teach you how to refine metal. Tee hee...<br/>Of course, if you are going to mine, you will need at least a pickaxe.");
            await npc.Select();

            npc.StartQuest(this.Id);
            npc.Close();
        }
        else
        {
            npc.Msg("Did you forget what I asked you?");
            npc.Msg("You can find ore inside Barri Dungeon over there.<br/>Of course, you can't mine with bare hands. You will need a pickaxe for that.");
        }

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

        if (keyword != "about_skill" || npc.HasSkill(SkillId.Weaving))
        {
            return(HookResult.Continue);
        }

        if (!npc.QuestActive(this.Id))
        {
            npc.Msg("Have you heard of the Weaving skill?<br/>It is a skill of spinning yarn from natural materials and making fabric.");
            npc.Msg("Do you want to learn the Weaving skill?<br/>Actually, I'm out of thick yarn and can't meet all the orders for fabric...<br/>If you get me some wool, I'll teach you the Weaving skill in return.<br/>An owl will deliver you a note on how to find wool if you wait outside.");
            await npc.Select();

            npc.StartQuest(this.Id);
            npc.Close();
        }
        else
        {
            // Unofficial
            npc.Msg("If you get me some wool, I'll teach you the Weaving skill in return.");
        }

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

		if (keyword != "about_skill" || npc.HasSkill(SkillId.Refining))
			return HookResult.Continue;

		if (!npc.QuestActive(this.Id))
		{
			npc.Msg("Did my grandpa send you over this way?<br/>Hehe.... Oh, nothing.<br/>Here, take this...");
			npc.Msg("Are you interested in refining by any chance?<br/>Refining is the first step in becoming a blacksmith...");
			npc.Msg("You can use ore in its raw form.<br/>You have to melt it to extract the pure metal from it.<br/>You can simply assume that you can use the ore as it is.");
			npc.Msg("We've been looking for more ore anyway,<br/>so why don't you go to Barri Dungeon and mine some ore for us?<br/>Bring some ore and I'll teach you how to refine metal. Tee hee...<br/>Of course, if you are going to mine, you will need at least a pickaxe.");
			await npc.Select();
			npc.StartQuest(this.Id);
			npc.Close();
	}
		else
		{
			npc.Msg("Did you forget what I asked you?");
			npc.Msg("You can find ore inside Barri Dungeon over there.<br/>Of course, you can't mine with bare hands. You will need a pickaxe for that.");
		}

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

        if (keyword == "g1_bone_of_glasgavelen" && npc.HasKeyword("g1_28"))
        {
            if (!npc.QuestActive(NextQuestId))
            {
                npc.StartQuest(NextQuestId);                 // Obtain the Magic Powder of Preservation
                npc.GiveWarpScroll(63009, "Fiodth_Dungeon");

                npc.Msg(L("...!<p/>That's it! In order to revive Glas Ghaibhleann,<br/>his bones must be exacavated and re-assembled.<br/>Any missing bones must be replaced with Adamantium."));
                npc.Msg(L("But Adamantium is difficult to shape. It must<br/>be melted at very high temperatures first. And<br/>there's a special ingredient that must be applied to the bone."));
                npc.Msg(L("It won't be enough to simply destroy the bones before it's<br/>completed. Once the Adamantium hardens, you can't destroy it. I have no<br/>doubt the Formors have already gathered all the bones<br/>and prepared their magical reagents, too."));
                npc.Msg(L("It's only a matter of time before the Fomors invade Erinn..."));
                npc.Msg(L("How do I know all this? I learned it<br/>in the land of Fomors, Tir Na Nog.<br/>Tir Na Nog is a reflection of Erinn...or perhaps it's the other way around?<br/>At any rate, the worlds are quite similar."));
                npc.Msg(L("Perhaps it would be better for you to see it first hand.<br/>Can you do me a favor?"));
                npc.Msg(L("These glasses carry the memories of my time there."), npc.Image("g1_ch25_glasses"));
                npc.Msg(L("I can't say for certain if the memories<br/>are intact, but if you wish to see what I saw through<br/>these glasses, you'll need them.<br/>Please find me some Magic Powder of Preservation."), npc.Image("g1_ch25_glasses"));
                npc.Msg(L("The powder will prevent the glasses from breaking further.<br/>This will also sustain the memories contained within,<br/>If you get me the powder, I'll preserve the glasses."));
                npc.Msg(L("You can find Magic Powder of Preservation<br/>deep inside Fiodh Dungeon."));
            }
            else
            {
                npc.Msg(L("You can find Magic Powder of Preservation<br/>deep inside Fiodh Dungeon.<br/>If you get me the powder, I'll preserve the glasses."));
            }

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
예제 #5
0
    public async Task Class2_3(NpcScript npc)
    {
        npc.Msg(L("Hmm... Is it already our last class?<br/>I'll explain today to you why the Defense skill is so important."));
        npc.Msg(L("You've probably seen a stat called Defense Rate.<br/>It's particularly difficult to upgrade this stat."));
        npc.Msg(L("Clothes can add only 1 or 2 defense points at the best.<br/>What you can do is to train yourself hard enough to improve your critical defense."));
        npc.Msg(L("You may not agree that the Defense Rate is so critical in the beginning, but it will become more and more important for your survival."));
        npc.Msg(L("<image name='whitespider'/>Here's the assignment for the class.<br/>Go to Alby Dungeon and defeat 5 spiders.<br/>Dismissed!"));

        npc.StartQuest(200041);         // Basic Combat 2 Mission
    }
예제 #6
0
	public async Task<HookResult> LearnDefense(NpcScript npc)
	{
		npc.Msg("It seems you are seeking a warrior's advice from me.<br/>Let's see, first, just lunging at your enemy is not everything.<br/>Defend your opponent's attack to break its flow<br/>and win a chance to strike back. It's really a critical part in a fight. <p/>That's the Defense skill.<br/>Hmm... If you haven't learned it yet, can you do me a favor?<br/>I'll let you know what it is so you can practice by yourself.");
		
		npc.Notice("Received Defense Guidebook from Ranald.");
		if(!npc.QuestActive(this.Id))
			npc.StartQuest(this.Id);
		npc.CompleteQuest(this.Id);
		
		npc.Msg("How to use the Defense skill is described in this book.<br/>Read it well and practice hard. That's the only efficient way you can defend yourself.");
		
		return HookResult.Break;
	}
예제 #7
0
    public async Task <HookResult> LearnDefense(NpcScript npc)
    {
        npc.Msg("It seems you are seeking a warrior's advice from me.<br/>Let's see, first, just lunging at your enemy is not everything.<br/>Defend your opponent's attack to break its flow<br/>and win a chance to strike back. It's really a critical part in a fight. <p/>That's the Defense skill.<br/>Hmm... If you haven't learned it yet, can you do me a favor?<br/>I'll let you know what it is so you can practice by yourself.");

        npc.Notice("Received Defense Guidebook from Ranald.");
        if (!npc.QuestActive(this.Id))
        {
            npc.StartQuest(this.Id);
        }
        npc.CompleteQuest(this.Id);

        npc.Msg("How to use the Defense skill is described in this book.<br/>Read it well and practice hard. That's the only efficient way you can defend yourself.");

        return(HookResult.Break);
    }
예제 #8
0
    public async Task Class1_3(NpcScript npc)
    {
        npc.Msg(L("Then let's begin the class. I need you to sit up and focus.<br/>HP is the basic parameter.<br/>What happens when you run out of HP?<br/>You lose consciousness. But don't worry. You are not dead yet..."));
        npc.Msg(L("<image name='HP'/>Just like Stamina, the HP bar also has a black region that cannot be recovered by resting.<br/>That represents how serious your wound is."));
        npc.Msg(L("<image name='HP'/>Some enemies may injure you with their attacks.<br/>Bats and Mimics especially can cause injuries very easily. You need to be careful when you meet them.<br/>So, what if you ignored the wounds and fought on?"));
        npc.Msg(L("<image name='Die'/>That's what happens. You would even lose some EXP. It hurts a lot."));
        npc.Msg(L("Wounds can be cured by simply using the Resting skill or the First Aid skill.<br/>In other words, make sure to take a rest whenever you get wounded."));
        npc.Msg(L("But resting too much in a dungeon may backfire.<br/>What do you think will happen if you just take a quick break after a battle without even checking your HP bar and face another monster right away?"));
        npc.Msg(L("<image name='Die'/>Again, this would happen."));
        npc.Msg(L("You can't cure your wounds by resting in a dungeon. Probably because of the cold temperature inside.<br/>But a campfire will help you recover. Someone who knows how to start a campfire may be good company for you."));
        npc.Msg(L("Now, like I said, I'm giving you homework.<br/>Gather nails that are dangerously protruding from objects around the town.<br/>You must have seen many people hitting a variety of objects to get small gems."));
        npc.Msg(L("Anyone learning how to fight should first think about how to serve others.<br/>There's no way you can follow them one by one and stop them from doing stupid things,<br/>but you can help them by removing nails from those objects they hit.<br/>At least, they won't get hurt by them. Just hit the objects a few times and get the nails from them."));
        npc.Msg(L("Get me 10 nails and you're done for the day.<br/>Cheating is not allowed. Nails from other people don't count.<br/>Get them on your own.<br/>Now, go!"));

        npc.StartQuest(200040);         // Basic Combat 1 Mission
    }
예제 #9
0
	public async Task<HookResult> GoroBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;

		if (keyword == "g1_voucher_of_priest")
		{
			if (npc.QuestActive(this.Id))
			{
				npc.Msg(L("If you get Goro's Ring back, I'll read it to you."));
			}
			else if (npc.HasItem(FomorMedal))
			{
				npc.RemoveKeyword("g1_voucher_of_priest");
				npc.RemoveKeyword("g1_12");
				npc.GiveKeyword("g1_13");
				npc.StartQuest(this.Id);

				npc.Msg(L("Priest's Token...? This...?<br/>This...is an amulet that belongs to a high ranking Fomor...let's see...<br/>Just what I'd thought...'Dul Brau Dairam Shanon.' It surely belongs to a Fomor. Heh."), npc.Image("g1_ch11_12_fomormedal02"));
				npc.Msg(L("It's been a while since I came across such Fomor writings. Heheh."));
				npc.Msg(L("I learned the human language as a child<br/>so I'm a little rusty...<br/>but since Goro is smart, this is no problem."));
				npc.Msg(L("As a sign of respect for your courage and<br/>since I'm such a nice goblin,<br/>I'll read it to you..."));
				npc.Msg(L("If you help Goro that is. Heheh."));
				npc.Msg(L("I've lost a ring in Ciar Dungeon, if you get Goro's Ring back, I'll read it to you."));
			}
			else
			{
				npc.Msg(L("Priest's Token...?"));
			}

			return HookResult.Break;
		}
		else if (keyword == "g1_dulbrau2")
		{
			npc.Msg(L("...Oh... that's what it means?<br/>Wow...I'm amazed."));
			npc.Msg(L("Ha...! You truly live up to the hype as someone who's obtained the Fomor Medal...<br/>To be honest, because I was raised in the Human world since I was young,<br/>my Fomor language skills aren't that good...hehe...<br/>I hope you understand...hehe..."));
			npc.Msg(L("...In order to make up for this embarrassment,<br/>I'll tell you who can decipher the Fomor writing."));
			npc.Msg(L("...<p/>...<p/>I'm sorry, but I can't seem to remember the name."));
			npc.Msg(L("...Wait, please don't get angry now!"));
			npc.Msg(L("Um... right!<br/>Goro had heard this story once...The Black Roses of the dungeons,<br/>known as Succubus to Humans,<br/>said there was someone who had betrayed them...and is now living in Dunbarton..."));
			npc.Msg(L("They said they were waiting to get revenge on that person if they ever ran into her...<br/>Well, I mean it's just a rumor...but still... Hehe..."));
			npc.Msg(L("The Succubus is a Fomor also...<br/>so they might know more about the Fomor language...or that world...no?<br/>But it won't be easy to find them...ha...haha..."));

			return HookResult.Break;
		}

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

        if (keyword == "g1_voucher_of_priest")
        {
            if (npc.QuestActive(this.Id))
            {
                npc.Msg(L("If you get Goro's Ring back, I'll read it to you."));
            }
            else if (npc.HasItem(FomorMedal))
            {
                npc.RemoveKeyword("g1_voucher_of_priest");
                npc.RemoveKeyword("g1_12");
                npc.GiveKeyword("g1_13");
                npc.StartQuest(this.Id);

                npc.Msg(L("Priest's Token...? This...?<br/>This...is an amulet that belongs to a high ranking Fomor...let's see...<br/>Just what I'd thought...'Dul Brau Dairam Shanon.' It surely belongs to a Fomor. Heh."), npc.Image("g1_ch11_12_fomormedal02"));
                npc.Msg(L("It's been a while since I came across such Fomor writings. Heheh."));
                npc.Msg(L("I learned the human language as a child<br/>so I'm a little rusty...<br/>but since Goro is smart, this is no problem."));
                npc.Msg(L("As a sign of respect for your courage and<br/>since I'm such a nice goblin,<br/>I'll read it to you..."));
                npc.Msg(L("If you help Goro that is. Heheh."));
                npc.Msg(L("I've lost a ring in Ciar Dungeon, if you get Goro's Ring back, I'll read it to you."));
            }
            else
            {
                npc.Msg(L("Priest's Token...?"));
            }

            return(HookResult.Break);
        }
        else if (keyword == "g1_dulbrau2")
        {
            npc.Msg(L("...Oh... that's what it means?<br/>Wow...I'm amazed."));
            npc.Msg(L("Ha...! You truly live up to the hype as someone who's obtained the Fomor Medal...<br/>To be honest, because I was raised in the Human world since I was young,<br/>my Fomor language skills aren't that good...hehe...<br/>I hope you understand...hehe..."));
            npc.Msg(L("...In order to make up for this embarrassment,<br/>I'll tell you who can decipher the Fomor writing."));
            npc.Msg(L("...<p/>...<p/>I'm sorry, but I can't seem to remember the name."));
            npc.Msg(L("...Wait, please don't get angry now!"));
            npc.Msg(L("Um... right!<br/>Goro had heard this story once...The Black Roses of the dungeons,<br/>known as Succubus to Humans,<br/>said there was someone who had betrayed them...and is now living in Dunbarton..."));
            npc.Msg(L("They said they were waiting to get revenge on that person if they ever ran into her...<br/>Well, I mean it's just a rumor...but still... Hehe..."));
            npc.Msg(L("The Succubus is a Fomor also...<br/>so they might know more about the Fomor language...or that world...no?<br/>But it won't be easy to find them...ha...haha..."));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
예제 #11
0
    public async Task Class3_5(NpcScript npc)
    {
        npc.Msg(L("OK, today is your last day.<br/>You've done very well so far.<br/>Take a look at the Quest Scroll I gave you."));
        npc.Msg(L("Just do what it says.<br/>Take advantage of everything you've learned<br/>and make it to the end of Alby Dungeon and come back in one piece."));
        npc.Msg(L("You don't seem too enthused...<br/>Either do it or not. It's totally up to you.<br/>If you think you can't do it, then you can give it up."));
        npc.Msg(L("But if you're the same student with guts I saw before, this task should be a piece of cake, right?<br/>I'll wait for you here."));
        npc.Msg(L("<image name='alby_dungeon01'/>Here's our last class.<br/>Since you have the final assignment, I'll tell you how to fight in a dungeon."));
        npc.Msg(L("<br/>The key is to control your HP and Stamina."));
        npc.Msg(L("<image name='HP'/>First is Life.<br/>Just using the Resting skill alone cannot recover your HP in dungeons.<br/>You must rest near a campfire.<br/>I think I told you that before. Do you still remember?"));
        npc.Msg(L("Do not let yourself be injured or surrounded by monsters. You should avoid a situation like that at all costs.<br/>You need to be much more careful in a dungeon than when you fight in the field outside."));
        npc.Msg(L("Potions could be helpful,<br/>but they won't cure your wounds.<br/>In other words, when you're in a dungeon, your safety comes before defeating your opponent."));
        npc.Msg(L("<image name='Stamina'/>Next is Stamina. It's not really different.<br/>The best way to recover your Stamina is by food.<br/>But it's not easy to get something to eat in a dungeon unless you pack it for yourself.<br/>That means you need to save your Stamina as much as possible."));
        npc.Msg(L("Get rid of any unnecessary motions,<br/>and be efficient in every move you make.<br/>Don't forget."));
        npc.Msg(L("And last,<br/>there are some books<br/>about dungeons and exploration.<br/>Read them. They can only help you."));
        npc.Msg(L("All right, this is the end of Basic Combat.<br/>You've been a good student.<br/>Don't stop training. Become a great warrior."));
        npc.Msg(L("When you're done with your homework, make sure you come back and let me know.<br/>I'll be all ears for your whining if you make it through Alby Dungeon, hahaha.<br/>"));

        npc.StartQuest(200028);         // Basic Combat 3 Mission
    }
	public async Task<HookResult> SeumasAfterIntro(NpcScript npc, params object[] args)
	{
		if (npc.QuestActive(this.Id, "talk_seumas"))
		{
			npc.CompleteQuest(this.Id);
			npc.StartQuest(210012);

			npc.GiveItem(FathersGift);
			npc.Notice(L("You have received Father's Gift from Seumas."));

			npc.Msg(L("(He gasps for breath as he speaks.)<br/>Ah... I suppose you're the one Lassar mentioned...?<br/>You need the...book of Fomors...?"));
			npc.Msg(L("Not too long ago...I asked Lassar...<br/>to translate it<br/>but she said she couldn't do it..."));
			npc.Msg(L("I probably won't be able to figure it out myself anyway..."));
			npc.Msg(L("Could you do me a little favor... before I give it to you?<br/>I can't leave here right now,<br/>Please deliver this present to my son Sion in Bangor."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
    public async Task <HookResult> SeumasAfterIntro(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "talk_seumas"))
        {
            npc.CompleteQuest(this.Id);
            npc.StartQuest(210012);

            npc.GiveItem(FathersGift);
            npc.Notice(L("You have received Father's Gift from Seumas."));

            npc.Msg(L("(He gasps for breath as he speaks.)<br/>Ah... I suppose you're the one Lassar mentioned...?<br/>You need the...book of Fomors...?"));
            npc.Msg(L("Not too long ago...I asked Lassar...<br/>to translate it<br/>but she said she couldn't do it..."));
            npc.Msg(L("I probably won't be able to figure it out myself anyway..."));
            npc.Msg(L("Could you do me a little favor... before I give it to you?<br/>I can't leave here right now,<br/>Please deliver this present to my son Sion in Bangor."));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
예제 #14
0
	public async Task<HookResult> RanaldKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;
		
		if(keyword == "about_skill" && npc.HasSkill(SkillId.Defense) && !npc.HasSkill(SkillId.Windmill))
		{
			// Unofficial
			npc.Msg("You would like to learn more? That's the attitude!");
			npc.Msg("Unfortunately I'm a little busy right now, I've borrowed an armor from Ferghus that I have to get back to him. Unless...");
			npc.Msg("Could you deliver it to him for me? Afterwards I'll give you help with the Windmill skill.<button title='End Conversation' keyword='@end'/>");
			await npc.Select();
			npc.StartQuest(this.Id);
			//npc.GiveItem(70002); // Full Ring Mail to be Delivered (TODO: implement quest item handling)
			npc.Close();
			
			return HookResult.End;
		}
		
		return HookResult.Continue;
	}
예제 #15
0
    public async Task <HookResult> DuncanBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

        if (keyword == "g1_goddess_morrighan1")
        {
            npc.StartQuest(this.Id);

            npc.RemoveKeyword("g1_goddess_morrighan1");
            npc.RemoveKeyword("g1_22");
            npc.GiveKeyword("g1_23");

            npc.Msg(L("...<p/>It's hard to believe that such a thing could have happened<br/>to Mores. Is he still alive?"));
            npc.Msg(L("And...this is the first time I've heard<br/>how much he hated humans.<br/>Please, don't speak of this to anyone else.<br/>It's better he's remembered as a hero."));
            npc.Msg(L("Besides, we may have gotten something wrong.<br/>I'd like to investigate this more on my own.<br/>And I'll have to read the book Mores wrote.<br/>Can you get it from Tarlach for me?"));

            return(HookResult.Break);
        }

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

		if (keyword == "g1_goddess_morrighan1")
		{
			npc.StartQuest(this.Id);

			npc.RemoveKeyword("g1_goddess_morrighan1");
			npc.RemoveKeyword("g1_22");
			npc.GiveKeyword("g1_23");

			npc.Msg(L("...<p/>It's hard to believe that such a thing could have happened<br/>to Mores. Is he still alive?"));
			npc.Msg(L("And...this is the first time I've heard<br/>how much he hated humans.<br/>Please, don't speak of this to anyone else.<br/>It's better he's remembered as a hero."));
			npc.Msg(L("Besides, we may have gotten something wrong.<br/>I'd like to investigate this more on my own.<br/>And I'll have to read the book Mores wrote.<br/>Can you get it from Tarlach for me?"));

			return HookResult.Break;
		}

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

        if (keyword == "about_skill" && npc.HasSkill(SkillId.Defense) && !npc.HasSkill(SkillId.Windmill))
        {
            // Unofficial
            npc.Msg("You would like to learn more? That's the attitude!");
            npc.Msg("Unfortunately I'm a little busy right now, I've borrowed an armor from Ferghus that I have to get back to him. Unless...");
            npc.Msg("Could you deliver it to him for me? Afterwards I'll give you help with the Windmill skill.<button title='End Conversation' keyword='@end'/>");
            await npc.Select();

            npc.StartQuest(this.Id);
            //npc.GiveItem(70002); // Full Ring Mail to be Delivered (TODO: implement quest item handling)
            npc.Close();

            return(HookResult.End);
        }

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

        if (keyword == "g1_message_of_kristell")
        {
            npc.RemoveKeyword("g1_17");
            npc.GiveKeyword("g1_17_1");
            npc.RemoveKeyword("g1_message_of_kristell");

            npc.GiveItem(BookOfFomor);
            npc.StartQuest(210003);             // Translating the Book of Fomors

            npc.Msg(L("Kristell's in Dunbarton?<br/>How...troubling."));
            npc.Msg(L("I'm sorry, but I'm in no position to reciprocate her feelings...<br/>But if it really is her, perhaps<br/>she can translate this book."));
            npc.Msg(Hide.Name, L("(Tarlach pulls a book from his chest.)"));
            npc.Msg(L("Could you give this to her?<br/>Tell her it's my last request to her...<br/>If she could just translate this book..."));

            return(HookResult.Break);
        }

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

		if (keyword != "about_skill" || npc.HasSkill(SkillId.Weaving))
			return HookResult.Continue;

		if (!npc.QuestActive(this.Id))
		{
			npc.Msg("Have you heard of the Weaving skill?<br/>It is a skill of spinning yarn from natural materials and making fabric.");
			npc.Msg("Do you want to learn the Weaving skill?<br/>Actually, I'm out of thick yarn and can't meet all the orders for fabric...<br/>If you get me some wool, I'll teach you the Weaving skill in return.<br/>An owl will deliver you a note on how to find wool if you wait outside.");
			await npc.Select();
			npc.StartQuest(this.Id);
			npc.Close();
		}
		else
		{
			// Unofficial
			npc.Msg("If you get me some wool, I'll teach you the Weaving skill in return.");
		}

		return HookResult.End;
	}
예제 #20
0
파일: school_ranald.cs 프로젝트: Rai/aura
	public async Task Class1_3(NpcScript npc)
	{
		npc.Msg(L("Then let's begin the class. I need you to sit up and focus.<br/>HP is the basic parameter.<br/>What happens when you run out of HP?<br/>You lose consciousness. But don't worry. You are not dead yet..."));
		npc.Msg(L("<image name='HP'/>Just like Stamina, the HP bar also has a black region that cannot be recovered by resting.<br/>That represents how serious your wound is."));
		npc.Msg(L("<image name='HP'/>Some enemies may injure you with their attacks.<br/>Bats and Mimics especially can cause injuries very easily. You need to be careful when you meet them.<br/>So, what if you ignored the wounds and fought on?"));
		npc.Msg(L("<image name='Die'/>That's what happens. You would even lose some EXP. It hurts a lot."));
		npc.Msg(L("Wounds can be cured by simply using the Resting skill or the First Aid skill.<br/>In other words, make sure to take a rest whenever you get wounded."));
		npc.Msg(L("But resting too much in a dungeon may backfire.<br/>What do you think will happen if you just take a quick break after a battle without even checking your HP bar and face another monster right away?"));
		npc.Msg(L("<image name='Die'/>Again, this would happen."));
		npc.Msg(L("You can't cure your wounds by resting in a dungeon. Probably because of the cold temperature inside.<br/>But a campfire will help you recover. Someone who knows how to start a campfire may be good company for you."));
		npc.Msg(L("Now, like I said, I'm giving you homework.<br/>Gather nails that are dangerously protruding from objects around the town.<br/>You must have seen many people hitting a variety of objects to get small gems."));
		npc.Msg(L("Anyone learning how to fight should first think about how to serve others.<br/>There's no way you can follow them one by one and stop them from doing stupid things,<br/>but you can help them by removing nails from those objects they hit.<br/>At least, they won't get hurt by them. Just hit the objects a few times and get the nails from them."));
		npc.Msg(L("Get me 10 nails and you're done for the day.<br/>Cheating is not allowed. Nails from other people don't count.<br/>Get them on your own.<br/>Now, go!"));

		npc.StartQuest(200040); // Basic Combat 1 Mission
	}
예제 #21
0
	public async Task AboutArbeit(NpcScript npc)
	{
		// Check if already doing another PTJ
		if (npc.DoingPtjForOtherNpc())
		{
			npc.Msg("Are you working for someone else?<br/>Can you help me after you're finished?");
			return;
		}

		// Check if PTJ is in progress
		if (npc.DoingPtjForNpc())
		{
			var result = npc.GetPtjResult();

			// Check if report time
			if (!npc.ErinnHour(Report, Deadline))
			{
				if (result == QuestResult.Perfect)
					npc.Msg("You're a little early.<br/>Report to me when it's closer to the deadline.");
				else
					npc.Msg("How's it going?");
				return;
			}

			// Report?
			npc.Msg("Did you complete the job I asked you to do?<br/>You can report to me even if you have not finished it<br/>and I will pay you for what you have done.<button title='Report Now' keyword='@report' /><button title='Report Later' keyword='@later' />");

			if (await npc.Select() != "@report")
			{
				npc.Msg("Good, I trust you.<br/>Please make sure to report before the deadline.");
				return;
			}

			// Nothing done
			if (result == QuestResult.None)
			{
				npc.GiveUpPtj();

				npc.Msg(npc.FavorExpression(), "Are you feeling sick?<br/>You should rest instead of working so hard.<br/>But, a promise is a promise. I am sorry, but I can't pay you this time.");
				npc.ModifyRelation(0, -Random(3), 0);
			}
			// Low~Perfect result
			else
			{
				npc.Msg("Nice job, <username/>. You did great.<br/>For now, this is all I can give you as a token of my gratitude.<br/>Please choose one. <button title='Report Later' keyword='@later' /><arbeit_report result=\"0\"/>");
				var reply = await npc.Select();

				// Report later
				if (!reply.StartsWith("@reward:"))
				{
					npc.Msg("Yes, <username/>.<br/>even if you come back later, I will hold on to your pay.<br/>But don't be too late.");
					return;
				}

				// Complete
				npc.CompletePtj(reply);
				remaining--;

				// Result msg
				if (result == QuestResult.Perfect)
				{
					npc.Msg(npc.FavorExpression(), "Fine job. Just what I asked!<br/>Thank you very much.");
					npc.ModifyRelation(0, Random(3), 0);
				}
				else if (result == QuestResult.Mid)
				{
					npc.Msg(npc.FavorExpression(), "You didn't bring me enough this time.<br/>I am sorry, but I will have to deduct it from your pay.");
					npc.ModifyRelation(0, Random(1), 0);
				}
				else if (result == QuestResult.Low)
				{
					npc.Msg(npc.FavorExpression(), "You don't seem to be at the top of your game today.<br/>Sorry, I can only pay you for what you've completed.");
					npc.ModifyRelation(0, -Random(2), 0);
				}

				// Herbalism quest
				if (npc.GetPtjSuccessCount(JobType) >= 10 && !npc.HasSkill(SkillId.Herbalism) && !npc.HasQuest(200042) && !npc.HasQuest(200063))
				{
					npc.Msg("Say, <username/>.  Do you have any interest in learning Herbalism?<br/>You've been such a great help to me here, I thought you might be interested in becoming a healer.<br/>If you're interested in Herbalism, I have a favor to ask you.<br/>If you do it, then I'll teach you.<button title='I will do it' keyword='@yes' /><button title='No, thanks' keyword='@no' />");
					if (await npc.Select() == "@yes")
					{
						npc.StartQuest(200063); // Gather Base Herb (Dilys)
						npc.Msg("You sound really interested in becoming a healer...<br/>If you step outside, an owl will deliver my request to you.");
					}
					else
					{
						npc.Msg("Really?<br/>Then, I will see you next time when you need another part-time job.");
					}
				}
			}
			return;
		}

		// Check if PTJ time
		if (!npc.ErinnHour(Start, Deadline))
		{
			npc.Msg("It's not time to start work yet.<br/>Can you come back and ask for a job later?");
			return;
		}

		// Check if not done today and if there are jobs remaining
		if (!npc.CanDoPtj(JobType, remaining))
		{
			npc.Msg("There are no more jobs today.<br/>I will give you another job tomorrow.");
			return;
		}

		// Offer PTJ
		var randomPtj = npc.RandomPtj(JobType, QuestIds);
		var ptjXml = npc.GetPtjXml(randomPtj, "Dilys's Healer's House Part-Time Job", "Looking for help with delivering goods in Healer's House.", PerDay, remaining);
		var msg = "";

		if (npc.GetPtjDoneCount(JobType) == 0)
			msg = "Do you need some work to do?<br/>If you want, you can help me here.<br/>The pay is not great, but I will definitely pay you for your work.<br/>The pay also depends on how long you've worked for me.<br/>Would you like to try?";
		else
			msg = "Ah, <username/>. Can you help me today?";

		npc.Msg(msg + ptjXml);

		if (await npc.Select() == "@accept")
		{
			npc.Msg("Thank you for your help in advance.");
			npc.StartPtj(randomPtj);
		}
		else
		{
			npc.Msg("You seem busy today.");
		}
	}
예제 #22
0
    // Dialog pieced together from vague translations
    // and snippets of official dialog.
    public async Task <HookResult> KristellBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

        if (keyword == "g1_cichol")
        {
            npc.Msg(L("He's amongst one of the evil Gods that lead the Fomors.<br/>Yes, Fomors do worship Gods."));
            npc.Msg(L("I don't particularly feel up to talking about him.<br/>But, I'll tell you now, you should hurry if you think Cichol<br/>is somehow involved with GOddess Morrighan."));
            npc.Msg(L("He is cunning and meticulous, so he will<br/>be very difficult to stop by ourselves."));
        }
        else if (keyword == "g1_way_to_tirnanog1")
        {
            if (npc.Player.Level < 25)
            {
                npc.Msg(L("...<p/>I have heard people call your name...<br/>And I know what kind of person you are."));
                npc.Msg(L("...But, <username/>... Tir Na Nog is a bad place to be.<br/>In that place even your connection<br/>to the Soul Stream won't help you..."));
                npc.Msg(L("You don't have the experience to survive there."));
                npc.Msg(L("You should at least reach level 25...<br/>Otherwise, going there would be suicide."));

                return(HookResult.Break);
            }

            var hasSlayerTitle = (npc.Title == 79 || npc.Title == 80 || npc.Title == 81 || npc.Title == 82 || npc.Title == 83 || npc.Title == 85 || npc.Title == 53);
            if (!hasSlayerTitle)
            {
                npc.Msg(L("...<br/>If...<br/>If Tir Na Nog is..."));
                npc.Msg(L("If it really is the land of the Fomors, like Tarlach said..."));
                npc.Msg(L("I've already betrayed the Fomors. I supposed it doesn't hurt to tell you.<br/>The land of the Fomors is a dangerous place.<br/>There are no friendly faces or safe places...<br/>You have no one but yourself and your party members to rely on."));
                npc.Msg(L("Do you... think you have the strength to bear the pain...?"));
                npc.Msg(L("I can tell you how to reach Tir Na Nog."));
                npc.Msg(L("But... please show me that you're capable<br/>of fighting Erinn's powerful monsters."));
                npc.Msg(L("I can't tell you how to reach Tir Na Nog before that."));

                return(HookResult.Break);
            }

            if (npc.HasKeyword("g1_33"))
            {
                if (!npc.HasQuest(this.Id))
                {
                    npc.StartQuest(this.Id);
                }

                npc.Msg(L("That title above your head<br/>tells me that you're confident<br/>with your strength."));
                npc.Msg(L("If you're so strong,<br/>could I ask you for one favor?"));
                npc.Msg(L("I've betrayed the Fomors to become a Human.<br/>Fomors are always waiting for the chance to hurt me."));
                npc.Msg(L("Ever since I translated the book for Tarlach,<br/>I sensed someone stalking me."));
                npc.Msg(L("I'm really insecure because I feel the Fomors looking for me.<br/>I saw the Fomor Command Scroll and think I'm supposed to be the target.<br/>Can you help me so they can't come anywhere near here?"));
                npc.Msg(L("If you do that,<br/>I'll feel a bit more at ease."));
            }
            else
            {
                if (!npc.HasItem(BlackFomorPass))
                {
                    npc.GiveItem(BlackFomorPass);
                    npc.Msg(L("This is a Fomor Pass used only by high ranking Fomors.<br/>I pray that you won't lose it."));
                }
                else
                {
                    npc.Msg(L("Yes, offer the pass I gave you in Barri Dungeon.<br/>...<br/>Please be careful."));
                }
            }

            return(HookResult.Break);
        }

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

		if (keyword == "g1_message_of_kristell")
		{
			npc.RemoveKeyword("g1_17");
			npc.GiveKeyword("g1_17_1");
			npc.RemoveKeyword("g1_message_of_kristell");

			npc.GiveItem(BookOfFomor);
			npc.StartQuest(210003); // Translating the Book of Fomors

			npc.Msg(L("Kristell's in Dunbarton?<br/>How...troubling."));
			npc.Msg(L("I'm sorry, but I'm in no position to reciprocate her feelings...<br/>But if it really is her, perhaps<br/>she can translate this book."));
			npc.Msg(Hide.Name, L("(Tarlach pulls a book from his chest.)"));
			npc.Msg(L("Could you give this to her?<br/>Tell her it's my last request to her...<br/>If she could just translate this book..."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
예제 #24
0
	public async Task Class3_3(NpcScript npc)
	{
		npc.Msg(L("This is the last class already..."));
		npc.Msg(L("I recall the day when you, <username/>, first came to me to learn magic.<br/>Heeheehee... It seems like only yesterday. Time flies, doesn't it?"));
		npc.Msg(L("Now, let's start the class.<br/>You need to be extra focused since this is the last class of chapter three.<br/>There is an assignment after the class, too."));
		npc.Msg(L("Now, please pay attention. You will learn two things today."));
		npc.Msg(L("First, the delay time of magic.<br/>Second, how to secure the distance from the target<br/>with the help of allies."));
		npc.Msg(L("Let me first explain<br/>about delay time of magic.<br/>As I said before,<br/>any magic requires time for casting."));
		npc.Msg(L("But, if you are attacked while casting a spell,<br/>what would happen?<br/>Have you ever been in this kind of situation?"));
		npc.Msg(L("<image name='firebolt_attacked'/>If you are attacked while casting a spell,<br/>the Mana you have used so far becomes useless<br/>and the casting also fails."));
		npc.Msg(L("Even if you are not knocked down from the attack,<br/>the attack itself<br/>can make these things happen.<br/>So, you need to be extra careful."));
		npc.Msg(L("Now, then,<br/>you must be as careful as you can<br/>not to be attacked while you are casting a spell.<br/>Unfortunately, however, it is easier said than done."));
		npc.Msg(L("As you probably know from experience,<br/>making the time to cast while maintaining a certain distance from the enemy is nearly impossible."));
		npc.Msg(L("You probably know that<br/>you cannot move while casting a spell<br/>because you are concentrating, right?"));
		npc.Msg(L("When this happens, the best way<br/>to maintain the distance from the target is<br/>by getting some help from your friends."));
		npc.Msg(L("It is simple and easy<br/>to secure the distance from the target with the help of friends."));
		npc.Msg(L("If you have a melee-type ally,<br/>you can stand at a distance from him<br/>while your friend stands between the target and you,<br/>guarding you physically."));
		npc.Msg(L("Long range attack types... That is,<br/>when you have a party consisting of archers or wizards,<br/>you can make magic attacks on the target<br/>that is attacking your friend."));
		npc.Msg(L("Well, that's all for today.<br/>If you have a good understanding of the characteristics of Icebolt and Firebolt,<br/>today's class will be a big help."));
		npc.Msg(L("Let me briefly explain the assignment and finish this class.<br/>I will send details to you via an owl."));
		npc.Msg(L("The assignment is to enter Alby Dungeon<br/>and to defeat the Giant Spider.<br/>If you cannot do this alone,<br/>you can go there with others by forming a party."));
		npc.Msg(L("Don't be too scared.<br/>You are already a good wizard.<br/>Plus, there is no deadline for this assignment. So, you have plenty of time to do it."));
		npc.Msg(L("You can start the assignment as soon as the owl delivers it.<br/>Check it immediately after receiving the assignment."));
		npc.Msg(L("Now, then, I wish you good luck."));

		npc.StartQuest(200029); // Basic Sorcery 3 Mission
	}
예제 #25
0
파일: school_ranald.cs 프로젝트: Rai/aura
	public async Task Class3_5(NpcScript npc)
	{
		npc.Msg(L("OK, today is your last day.<br/>You've done very well so far.<br/>Take a look at the Quest Scroll I gave you."));
		npc.Msg(L("Just do what it says.<br/>Take advantage of everything you've learned<br/>and make it to the end of Alby Dungeon and come back in one piece."));
		npc.Msg(L("You don't seem too enthused...<br/>Either do it or not. It's totally up to you.<br/>If you think you can't do it, then you can give it up."));
		npc.Msg(L("But if you're the same student with guts I saw before, this task should be a piece of cake, right?<br/>I'll wait for you here."));
		npc.Msg(L("<image name='alby_dungeon01'/>Here's our last class.<br/>Since you have the final assignment, I'll tell you how to fight in a dungeon."));
		npc.Msg(L("<br/>The key is to control your HP and Stamina."));
		npc.Msg(L("<image name='HP'/>First is Life.<br/>Just using the Resting skill alone cannot recover your HP in dungeons.<br/>You must rest near a campfire.<br/>I think I told you that before. Do you still remember?"));
		npc.Msg(L("Do not let yourself be injured or surrounded by monsters. You should avoid a situation like that at all costs.<br/>You need to be much more careful in a dungeon than when you fight in the field outside."));
		npc.Msg(L("Potions could be helpful,<br/>but they won't cure your wounds.<br/>In other words, when you're in a dungeon, your safety comes before defeating your opponent."));
		npc.Msg(L("<image name='Stamina'/>Next is Stamina. It's not really different.<br/>The best way to recover your Stamina is by food.<br/>But it's not easy to get something to eat in a dungeon unless you pack it for yourself.<br/>That means you need to save your Stamina as much as possible."));
		npc.Msg(L("Get rid of any unnecessary motions,<br/>and be efficient in every move you make.<br/>Don't forget."));
		npc.Msg(L("And last,<br/>there are some books<br/>about dungeons and exploration.<br/>Read them. They can only help you."));
		npc.Msg(L("All right, this is the end of Basic Combat.<br/>You've been a good student.<br/>Don't stop training. Become a great warrior."));
		npc.Msg(L("When you're done with your homework, make sure you come back and let me know.<br/>I'll be all ears for your whining if you make it through Alby Dungeon, hahaha.<br/>"));

		npc.StartQuest(200028); // Basic Combat 3 Mission
	}
예제 #26
0
    public async Task AboutArbeit(NpcScript npc)
    {
        // Check if already doing another PTJ
        if (npc.DoingPtjForOtherNpc())
        {
            npc.Msg(L("Are you working for someone else?<br/>Can you help me after you're finished?"));
            return;
        }

        // Check if PTJ is in progress
        if (npc.DoingPtjForNpc())
        {
            var result = npc.GetPtjResult();

            // Check if report time
            if (!npc.ErinnHour(Report, Deadline))
            {
                if (result == QuestResult.Perfect)
                {
                    npc.Msg(L("You're a little early.<br/>Report to me when it's closer to the deadline."));
                }
                else
                {
                    npc.Msg(L("How's it going?"));
                }
                return;
            }

            // Report?
            npc.Msg(L("Did you complete the job I asked you to do?<br/>You can report to me even if you have not finished it<br/>and I will pay you for what you have done."), npc.Button(L("Report Now"), "@report"), npc.Button(L("Report Later"), "@later"));

            if (await npc.Select() != "@report")
            {
                npc.Msg(L("Good, I trust you.<br/>Please make sure to report before the deadline."));
                return;
            }

            // Nothing done
            if (result == QuestResult.None)
            {
                npc.GiveUpPtj();

                npc.Msg(npc.FavorExpression(), L("Are you feeling sick?<br/>You should rest instead of working so hard.<br/>But, a promise is a promise. I am sorry, but I can't pay you this time."));
                npc.ModifyRelation(0, -Random(3), 0);
            }
            // Low~Perfect result
            else
            {
                npc.Msg(L("Nice job, <username/>. You did great.<br/>For now, this is all I can give you as a token of my gratitude.<br/>Please choose one."), npc.Button(L("Report Later"), "@later"), npc.PtjReport(result));
                var reply = await npc.Select();

                // Report later
                if (!reply.StartsWith("@reward:"))
                {
                    npc.Msg(L("Yes, <username/>.<br/>even if you come back later, I will hold on to your pay.<br/>But don't be too late."));
                    return;
                }

                // Complete
                npc.CompletePtj(reply);
                remaining--;

                // Result msg
                if (result == QuestResult.Perfect)
                {
                    npc.Msg(npc.FavorExpression(), L("Fine job. Just what I asked!<br/>Thank you very much."));
                    npc.ModifyRelation(0, Random(3), 0);
                }
                else if (result == QuestResult.Mid)
                {
                    npc.Msg(npc.FavorExpression(), L("You didn't bring me enough this time.<br/>I am sorry, but I will have to deduct it from your pay."));
                    npc.ModifyRelation(0, Random(1), 0);
                }
                else if (result == QuestResult.Low)
                {
                    npc.Msg(npc.FavorExpression(), L("You don't seem to be at the top of your game today.<br/>Sorry, I can only pay you for what you've completed."));
                    npc.ModifyRelation(0, -Random(2), 0);
                }

                // Herbalism quest
                if (npc.GetPtjSuccessCount(JobType) >= 10 && !npc.HasSkill(SkillId.Herbalism) && !npc.HasQuest(200042) && !npc.HasQuest(200063))
                {
                    npc.Msg(L("Say, <username/>.  Do you have any interest in learning Herbalism?<br/>You've been such a great help to me here, I thought you might be interested in becoming a healer.<br/>If you're interested in Herbalism, I have a favor to ask you.<br/>If you do it, then I'll teach you."), npc.Button(L("I will do it"), "@yes"), npc.Button(L("No, thanks"), "@no"));
                    if (await npc.Select() == "@yes")
                    {
                        npc.StartQuest(200063);                         // Gather Base Herb (Dilys)
                        npc.Msg(L("You sound really interested in becoming a healer...<br/>If you step outside, an owl will deliver my request to you."));
                    }
                    else
                    {
                        npc.Msg(L("Really?<br/>Then, I will see you next time when you need another part-time job."));
                    }
                }
            }
            return;
        }

        // Check if PTJ time
        if (!npc.ErinnHour(Start, Deadline))
        {
            npc.Msg(L("It's not time to start work yet.<br/>Can you come back and ask for a job later?"));
            return;
        }

        // Check if not done today and if there are jobs remaining
        if (!npc.CanDoPtj(JobType, remaining))
        {
            npc.Msg(L("There are no more jobs today.<br/>I will give you another job tomorrow."));
            return;
        }

        // Offer PTJ
        var randomPtj = npc.RandomPtj(JobType, QuestIds);
        var msg       = "";

        if (npc.GetPtjDoneCount(JobType) == 0)
        {
            msg = L("Do you need some work to do?<br/>If you want, you can help me here.<br/>The pay is not great, but I will definitely pay you for your work.<br/>The pay also depends on how long you've worked for me.<br/>Would you like to try?");
        }
        else
        {
            msg = L("Ah, <username/>. Can you help me today?");
        }

        npc.Msg(msg, npc.PtjDesc(randomPtj, L("Dilys's Healer's House Part-Time Job"), L("Looking for help with delivering goods in Healer's House."), PerDay, remaining, npc.GetPtjDoneCount(JobType)));

        if (await npc.Select() == "@accept")
        {
            npc.Msg(L("Thank you for your help in advance."));
            npc.StartPtj(randomPtj);
        }
        else
        {
            npc.Msg(L("You seem busy today."));
        }
    }
예제 #27
0
파일: school_ranald.cs 프로젝트: Rai/aura
	public async Task Class2_3(NpcScript npc)
	{
		npc.Msg(L("Hmm... Is it already our last class?<br/>I'll explain today to you why the Defense skill is so important."));
		npc.Msg(L("You've probably seen a stat called Defense Rate.<br/>It's particularly difficult to upgrade this stat."));
		npc.Msg(L("Clothes can add only 1 or 2 defense points at the best.<br/>What you can do is to train yourself hard enough to improve your critical defense."));
		npc.Msg(L("You may not agree that the Defense Rate is so critical in the beginning, but it will become more and more important for your survival."));
		npc.Msg(L("<image name='whitespider'/>Here's the assignment for the class.<br/>Go to Alby Dungeon and defeat 5 spiders.<br/>Dismissed!"));

		npc.StartQuest(200041); // Basic Combat 2 Mission
	}
예제 #28
0
	// Dialog pieced together from vague translations
	// and snippets of official dialog.
	public async Task<HookResult> KristellBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;

		if (keyword == "g1_cichol")
		{
			npc.Msg(L("He's amongst one of the evil Gods that lead the Fomors.<br/>Yes, Fomors do worship Gods."));
			npc.Msg(L("I don't particularly feel up to talking about him.<br/>But, I'll tell you now, you should hurry if you think Cichol<br/>is somehow involved with GOddess Morrighan."));
			npc.Msg(L("He is cunning and meticulous, so he will<br/>be very difficult to stop by ourselves."));
		}
		else if (keyword == "g1_way_to_tirnanog1")
		{
			if (npc.Player.Level < 25)
			{
				npc.Msg(L("...<p/>I have heard people call your name...<br/>And I know what kind of person you are."));
				npc.Msg(L("...But, <username/>... Tir Na Nog is a bad place to be.<br/>In that place even your connection<br/>to the Soul Stream won't help you..."));
				npc.Msg(L("You don't have the experience to survive there."));
				npc.Msg(L("You should at least reach level 25...<br/>Otherwise, going there would be suicide."));

				return HookResult.Break;
			}

			var hasSlayerTitle = (npc.Title == 79 || npc.Title == 80 || npc.Title == 81 || npc.Title == 82 || npc.Title == 83 || npc.Title == 85 || npc.Title == 53);
			if (!hasSlayerTitle)
			{
				npc.Msg(L("...<br/>If...<br/>If Tir Na Nog is..."));
				npc.Msg(L("If it really is the land of the Fomors, like Tarlach said..."));
				npc.Msg(L("I've already betrayed the Fomors. I supposed it doesn't hurt to tell you.<br/>The land of the Fomors is a dangerous place.<br/>There are no friendly faces or safe places...<br/>You have no one but yourself and your party members to rely on."));
				npc.Msg(L("Do you... think you have the strength to bear the pain...?"));
				npc.Msg(L("I can tell you how to reach Tir Na Nog."));
				npc.Msg(L("But... please show me that you're capable<br/>of fighting Erinn's powerful monsters."));
				npc.Msg(L("I can't tell you how to reach Tir Na Nog before that."));

				return HookResult.Break;
			}

			if (npc.HasKeyword("g1_33"))
			{
				if (!npc.HasQuest(this.Id))
					npc.StartQuest(this.Id);

				npc.Msg(L("That title above your head<br/>tells me that you're confident<br/>with your strength."));
				npc.Msg(L("If you're so strong,<br/>could I ask you for one favor?"));
				npc.Msg(L("I've betrayed the Fomors to become a Human.<br/>Fomors are always waiting for the chance to hurt me."));
				npc.Msg(L("Ever since I translated the book for Tarlach,<br/>I sensed someone stalking me."));
				npc.Msg(L("I'm really insecure because I feel the Fomors looking for me.<br/>I saw the Fomor Command Scroll and think I'm supposed to be the target.<br/>Can you help me so they can't come anywhere near here?"));
				npc.Msg(L("If you do that,<br/>I'll feel a bit more at ease."));
			}
			else
			{
				if (!npc.HasItem(BlackFomorPass))
				{
					npc.GiveItem(BlackFomorPass);
					npc.Msg(L("This is a Fomor Pass used only by high ranking Fomors.<br/>I pray that you won't lose it."));
				}
				else
				{
					npc.Msg(L("Yes, offer the pass I gave you in Barri Dungeon.<br/>...<br/>Please be careful."));
				}
			}

			return HookResult.Break;
		}

		return HookResult.Continue;
	}