Exemplo n.º 1
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);
    }
Exemplo n.º 2
0
    public async Task <HookResult> AfterIntro(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "talk"))
        {
            npc.FinishQuest(this.Id, "talk");

            npc.Msg("Hi, <username/>, thank you for stopping by.");
            npc.Msg("So lets get down to business.<br/>I've noticed a couple of teens in town with crushes on each other.");
            npc.Msg("They don't seem to realize that the both have a crush on each other.");
            npc.Msg("Both of them seem like they are having trouble expressing their feelings to each other though...<br/>It pains me to see that, do you think you can lend them a helping hand?");
            if (npc.Player.IsMale)
            {
                npc.Msg("Anyways, if you so choose,<br/>I think it would be best for you to help out Conor.");
                npc.Msg("Conor is actually right over there by the housing board.");
                npc.Msg("Go ahead and talk to him,<br/>I'm sure you can find a way to help him out.");
            }
            else
            {
                npc.Msg("Anyways, if you so choose,<br/>I think it would be best for you to help out Abbey.");
                npc.Msg("Abbey was standing by the northern gate,<br/>you should be able to find her there.");
                npc.Msg("Go ahead and talk to her,<br/>I'm sure you can find a way to help her out.");
            }
            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Exemplo n.º 3
0
    public async Task <HookResult> TalkNpc(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "talk_deian1"))
        {
            npc.FinishQuest(this.Id, "talk_deian1");

            npc.Msg("Oh thank you for coming, I was dying from boredom...");
            npc.Msg("Did you bring a gathering knife? I don't seem to<br/>have any extra around here. If you didn't you'll need<br/>to go see Ferghus about that!");
            npc.Msg("In any case, I could really use your help again shearing all my sheep.<br/>Just hold the knife gently in your one hand and grab a tuft of wool with<br/>the other. Easy right? Hehe, well why do you think I don't want to do it?<br/>Can you gather five bundles of wool for me?");

            return(HookResult.Break);
        }
        else if (npc.QuestActive(this.Id, "talk_deian2") && npc.HasItem(60009, 5))
        {
            npc.FinishQuest(this.Id, "talk_deian2");

            npc.Msg("Thank you, thank you! You look like a natural with that knife, I must say.<br/>These bundles of wool will help me out the rest of the day.<br/>Come by again if you ever want to get more wool!");

            npc.RemoveItem(60009, 5);             // Wool
            npc.CompleteQuest(this.Id);

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Exemplo n.º 4
0
	public async Task<HookResult> TalkNpc(NpcScript npc, params object[] args)
	{
		if (npc.QuestActive(this.Id, "talk_dilys1"))
		{
			npc.FinishQuest(this.Id, "talk_dilys1");

			npc.Msg("There's been talk recently about how healthy berries are.<br/>Their qualities have peaked my interest, even about the weight!");
			npc.Msg("Can you bring me one berry? I'd be very grateful.");

			return HookResult.Break;
		}
		else if (npc.QuestActive(this.Id, "talk_dilys2") && npc.HasItem(50007))
		{
			npc.FinishQuest(this.Id, "talk_dilys2");

			npc.Msg("Oh thank you so much! I can't wait to try it!<br/>Here, as an exchange, take these potions I've been working on.<button title='Continue' keyword='@continue'/>");
			await npc.Select();

			npc.RemoveItem(50007); // Berry
			npc.CompleteQuest(this.Id);

			return HookResult.Break;
		}

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

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

        if (npc.HasKeyword("g1_06"))
        {
            npc.RemoveKeyword("g1_06");
            npc.GiveKeyword("g1_07");

            npc.Msg(L("'The Land of Eternity, Tir Na Nog'...?"));
            npc.Msg(L("Oh no.<br/>That book wasn't selling at all, so I returned all of them.<br/>Haha! Where did you hear about that book?"));
        }
        else if (npc.HasKeyword("g1_07"))
        {
            npc.RemoveKeyword("g1_07");
            npc.GiveKeyword("g1_08");

            npc.Msg(L("Let's see... I can order one for you,<br/>but it'll take some time to arrive.<br/>I hope that's okay."));
        }
        else if (npc.HasKeyword("g1_08"))
        {
            npc.RemoveKeyword("g1_book1");
            npc.SendOwl(this.Id, OwlDelay);

            npc.Msg(L("I'm sorry!<br/>The book still isn't in stock."));
            npc.Msg(L("Hmm, how about this. I'll send you an owl when the book arrives.<br/>That would be better, right?"));
        }

        return(HookResult.Break);
    }
Exemplo n.º 6
0
    public async Task <HookResult> TalkNpc(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "talk_dilys1"))
        {
            npc.FinishQuest(this.Id, "talk_dilys1");

            npc.Msg("There's been talk recently about how healthy berries are.<br/>Their qualities have peaked my interest, even about the weight!");
            npc.Msg("Can you bring me one berry? I'd be very grateful.");

            return(HookResult.Break);
        }
        else if (npc.QuestActive(this.Id, "talk_dilys2") && npc.HasItem(50007))
        {
            npc.FinishQuest(this.Id, "talk_dilys2");

            npc.Msg("Oh thank you so much! I can't wait to try it!<br/>Here, as an exchange, take these potions I've been working on.<button title='Continue' keyword='@continue'/>");
            await npc.Select();

            npc.RemoveItem(50007);             // Berry
            npc.CompleteQuest(this.Id);

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Exemplo n.º 7
0
	public async Task<HookResult> AeiraBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;
		if (keyword != "g1_book1")
			return HookResult.Continue;

		if (npc.HasKeyword("g1_06"))
		{
			npc.RemoveKeyword("g1_06");
			npc.GiveKeyword("g1_07");

			npc.Msg(L("'The Land of Eternity, Tir Na Nog'...?"));
			npc.Msg(L("Oh no.<br/>That book wasn't selling at all, so I returned all of them.<br/>Haha! Where did you hear about that book?"));
		}
		else if (npc.HasKeyword("g1_07"))
		{
			npc.RemoveKeyword("g1_07");
			npc.GiveKeyword("g1_08");

			npc.Msg(L("Let's see... I can order one for you,<br/>but it'll take some time to arrive.<br/>I hope that's okay."));
		}
		else if (npc.HasKeyword("g1_08"))
		{
			npc.RemoveKeyword("g1_book1");
			npc.SendOwl(this.Id, OwlDelay);

			npc.Msg(L("I'm sorry!<br/>The book still isn't in stock."));
			npc.Msg(L("Hmm, how about this. I'll send you an owl when the book arrives.<br/>That would be better, right?"));
		}

		return HookResult.Break;
	}
Exemplo n.º 8
0
    public async Task <HookResult> KristellBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

        if (keyword == "g1_memo_of_lost_thing")
        {
            if (npc.HasKeyword("g1_20"))
            {
                npc.RemoveKeyword("g1_20");
                npc.GiveKeyword("g1_21");

                npc.GiveWarpScroll(63009, "Math_Dungeon");

                npc.Msg(L("You're back. I knew you would be back.<br/>Here's the item you're looking for."));
                npc.Msg(L("I only remembered it later on too.<br/>I figured the person who wrote that can<br/>find the lost item at the Town Office."), npc.Image("g1_ch18_torque01"));
                npc.Msg(L("Broken Torque.<br/>It looks like a memorial item. Try using it in Math Dungeon.<br/>I gave you the Red Wing of the Goddess too, just in case you need it."), npc.Image("g1_ch18_torque01"));
            }
            else if (npc.HasKeyword("g1_21"))
            {
                npc.Msg(L("Try using the Broken Torque in Math Dungeon."));
            }

            if (!npc.HasItem(Torque))
            {
                npc.GiveItem(Torque);
            }

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Exemplo n.º 9
0
	public async Task<HookResult> TalkNpc(NpcScript npc, params object[] args)
	{
		if (npc.QuestActive(this.Id, "talk_deian1"))
		{
			npc.FinishQuest(this.Id, "talk_deian1");

			npc.Msg("Oh thank you for coming, I was dying from boredom...");
			npc.Msg("Did you bring a gathering knife? I don't seem to<br/>have any extra around here. If you didn't you'll need<br/>to go see Ferghus about that!");
			npc.Msg("In any case, I could really use your help again shearing all my sheep.<br/>Just hold the knife gently in your one hand and grab a tuft of wool with<br/>the other. Easy right? Hehe, well why do you think I don't want to do it?<br/>Can you gather five bundles of wool for me?");

			return HookResult.Break;
		}
		else if (npc.QuestActive(this.Id, "talk_deian2") && npc.HasItem(60009, 5))
		{
			npc.FinishQuest(this.Id, "talk_deian2");

			npc.Msg("Thank you, thank you! You look like a natural with that knife, I must say.<br/>These bundles of wool will help me out the rest of the day.<br/>Come by again if you ever want to get more wool!");

			npc.RemoveItem(60009, 5); // Wool
			npc.CompleteQuest(this.Id);

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
Exemplo n.º 10
0
	public async Task<HookResult> TalkMalcolm(NpcScript npc, params object[] args)
	{
		if (npc.QuestActive(this.Id, "talk_malcolm1"))
		{
			npc.FinishQuest(this.Id, "talk_malcolm1");
			
			npc.Msg("So, you received the quest I sent through the Owl.<br/>Thanks for coming.<br/>I think I lost my ring in Alby Dungeon,<br/>but I can't leave, because I have no one to take care of the General Shop.");
			npc.Msg("I know it's a lot to ask, but can you go find the ring for me?<br/>The dungeon is very dangerous so I suggest talking to Trefor first about the Counterattack skill.<br/><br/>Take this pass to enter the dungeon, and please find my ring.");
			npc.GiveItem(63181); // Malcolm's Pass
			npc.GiveKeyword("skill_counter_attack");

			return HookResult.End;
		}
		else if (npc.QuestActive(this.Id, "talk_malcolm2"))
		{
			npc.FinishQuest(this.Id, "talk_malcolm2");
			npc.GiveKeyword("Clear_Tutorial_Malcolm_Ring");
			npc.RemoveItem(75058); // Malcolm's Ring

			npc.Msg("You found my Ring!<br/>You have my thanks.");

			return HookResult.Break;
		}
		
		return HookResult.Continue;
	}
Exemplo n.º 11
0
    public async Task <HookResult> TalkMalcolm(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "talk_malcolm1"))
        {
            npc.FinishQuest(this.Id, "talk_malcolm1");

            npc.Msg("So, you received the quest I sent through the Owl.<br/>Thanks for coming.<br/>I think I lost my ring in Alby Dungeon,<br/>but I can't leave, because I have no one to take care of the General Shop.");
            npc.Msg("I know it's a lot to ask, but can you go find the ring for me?<br/>The dungeon is very dangerous so I suggest talking to Trefor first about the Counterattack skill.<br/><br/>Take this pass to enter the dungeon, and please find my ring.");
            npc.GiveItem(63181);             // Malcolm's Pass
            npc.GiveKeyword("skill_counter_attack");

            return(HookResult.End);
        }
        else if (npc.QuestActive(this.Id, "kill_spider") && !npc.HasItem(63181))
        {
            npc.Msg("Have you lost the pass?<br/>Take this one to enter the dungeon, and please find my ring.");
            npc.GiveItem(63181);             // Malcolm's Pass

            return(HookResult.Break);
        }
        else if (npc.QuestActive(this.Id, "talk_malcolm2"))
        {
            npc.FinishQuest(this.Id, "talk_malcolm2");
            npc.GiveKeyword("Clear_Tutorial_Malcolm_Ring");
            npc.RemoveItem(75058);             // Malcolm's Ring

            npc.Msg("You found my Ring!<br/>You have my thanks.");

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
    public async Task <HookResult> KristellAfterIntro(NpcScript npc, params object[] args)
    {
        if (npc.Player.HasKeyword("g1_25") && npc.Player.HasItem(BookOfRevenge2))
        {
            npc.Player.RemoveItem(BookOfRevenge2);
            npc.Player.SendOwl(this.Id, OwlDelay1);

            npc.Player.RemoveKeyword("g1_memo_of_parcelman");
            npc.Player.RemoveKeyword("g1_25");
            npc.Player.GiveKeyword("g1_26");

            npc.Msg(L("So there really was another volume.<br/>I'm impressed. I didn't think you'd be able to find it."));
            npc.Msg(L("I'll translate this book, as promised.<br/>I'll let you know as soon as I'm finished."));

            return(HookResult.Break);
        }
        else if (npc.Player.QuestActive(this.Id, "get_book"))
        {
            npc.Player.FinishQuestObjective(this.Id, "get_book");

            npc.Player.GiveItem(BookOfRevenge2Translated);
            npc.Player.Notice(L("You have received the Book of Revenge, Vol. 2 (Translated) from Kristell."));

            npc.Msg(L("You must be here for your translated copy of the book.<br/>Here, I think you should read it yourself.<br/>It's better than having me summarize it for you."));
            npc.Msg(L("That said, I can't believe what's written in this book..."));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Exemplo n.º 13
0
	public async Task<HookResult> TalkDeian(NpcScript npc, params object[] args)
	{
		if (npc.QuestActive(this.Id, "talk_deian1") || npc.QuestActive(this.Id, "protect_sheep"))
		{
			// Unofficial
			npc.Msg("I'm glad to see you. I've been stuck here all day!<br/>Can you look after my sheep for a few minutes? I got some business to take care of.<br/>It should be easy, as long as the wolves don't show up.");
			npc.Msg("Just make sure to keep my sheep safe if wolves show up.<br/>The number of sheep and the time left will display<br/>on the top right corner.");
			npc.Msg("I hear you're pretty strong, so this should be pretty simple.<br/>Thanks!<button title='Look After Sheep' keyword='@protect'/><button title='Start Another Topic' keyword='@end'/>");
			var response = await npc.Select();

			if (response != "@protect")
				return HookResult.Break;

			npc.Close2();
			npc.FinishQuest(this.Id, "talk_deian1");

			CreateRegionAndWarp(npc.Player);

			return HookResult.End;
		}
		else if (npc.QuestActive(this.Id, "talk_deian2"))
		{
			npc.FinishQuest(this.Id, "talk_deian2");

			npc.Msg("Wow, good job.<br/>I got everything done thanks to you.<br/>You'll do this again next time, right? Thanks!");

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
	public async Task<HookResult> KristellAfterIntro(NpcScript npc, params object[] args)
	{
		if (npc.HasKeyword("g1_25") && npc.HasItem(BookOfRevenge2))
		{
			npc.RemoveItem(BookOfRevenge2);
			npc.SendOwl(this.Id, OwlDelay1);

			npc.RemoveKeyword("g1_memo_of_parcelman");
			npc.RemoveKeyword("g1_25");
			npc.GiveKeyword("g1_26");

			npc.Msg(L("So there really was another volume.<br/>I'm impressed. I didn't think you'd be able to find it."));
			npc.Msg(L("I'll translate this book, as promised.<br/>I'll let you know as soon as I'm finished."));

			return HookResult.Break;
		}
		else if (npc.QuestActive(this.Id, "get_book"))
		{
			npc.FinishQuest(this.Id, "get_book");

			npc.GiveItem(BookOfRevenge2Translated);
			npc.Notice(L("You have received the Book of Revenge, Vol. 2 (Translated) from Kristell."));

			npc.Msg(L("You must be here for your translated copy of the book.<br/>Here, I think you should read it yourself.<br/>It's better than having me summarize it for you."));
			npc.Msg(L("That said, I can't believe what's written in this book..."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
Exemplo n.º 15
0
    public async Task <HookResult> TalkDeian(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "talk_deian1") || npc.QuestActive(this.Id, "protect_sheep"))
        {
            npc.Msg("I'm glad to see you. I've been stuck here all day!<br/>Can you look after my sheep for a few minutes? I got some business to take care of.<br/>It should be easy, as long as the wolves don't show up.");
            npc.Msg("Just make sure to keep my sheep safe if wolves show up.<br/>The number of sheep and the time left will display<br/>on the top right corner.");
            npc.Msg("I hear you're pretty strong, so this should be pretty simple.<br/>Thanks!<button title='Look After Sheep' keyword='@protect'/><button title='Start Another Topic' keyword='@end'/>");
            var response = await npc.Select();

            if (response != "@protect")
            {
                return(HookResult.Break);
            }

            npc.Close2();
            npc.FinishQuest(this.Id, "talk_deian1");

            CreateRegionAndWarp(npc.Player);

            return(HookResult.End);
        }
        else if (npc.QuestActive(this.Id, "talk_deian2"))
        {
            npc.FinishQuest(this.Id, "talk_deian2");

            npc.Msg("Wow, good job.<br/>I got everything done thanks to you.<br/>You'll do this again next time, right? Thanks!");

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Exemplo n.º 16
0
 public async Task Class3_1(NpcScript npc)
 {
     npc.Msg(L("Oh... You've got some guts... Good!<br/>No pain, no gain! The more you sweat off today, the more achievements you can make tomorrow!"));
     npc.Msg(L("This class is all about the Smash skill.<br/>Do not be worried if you know nothing about it.<br/>You will learn how to use the skill at the end of this session.<br/>Learning it in advance wouldn't hurt anyone, though."));
     npc.Msg(L("<image name='Smash'/>Smash is a very powerful skill.<br/>A single blow can knock down an enemy with significant damage.<br/>Definitely one of the best skills for a surprise attack.<br/>When the enemy is disoriented, that's when you hit them with the Smash skill!"));
     npc.Msg(L("But there's one thing you must remember.<br/>Normal attacks always beat this skill."));
     npc.Msg(L("OK, I guess that was enough for today."));
 }
Exemplo n.º 17
0
 public async Task Class3_3(NpcScript npc)
 {
     npc.Msg(L("Today's class is about party play... Wow, you've come far!<br/>You've been doing very well. Keep it up to the last minute!"));
     npc.Msg(L("<image name='party_2sword'/>Have you heard of a warrior-warrior party?<br/>This type of party can be quite strong,<br/>although it's true any party can be strong as long as they have good teamwork."));
     npc.Msg(L("One of them first strikes the enemy with a normal attack.<br/>If you were in the middle of a triple hit, stop at the second one.<br/>And the other hits the enemy with the Smash skill.<br/>This Smash will succeed 100%."));
     npc.Msg(L("But there's one thing you should keep in mind.<br/>Smash is a powerful skill. But counterattacks and even normal attacks will beat it.<br/>If you think there's little chance of success, you'd better not use the skill at all."));
     npc.Msg(L("That's a wrap..."));
 }
Exemplo n.º 18
0
 public async Task Class3_4(NpcScript npc)
 {
     npc.Msg(L("In this class, you'll learn how to work with an archer."));
     npc.Msg(L("<image name='party_sword_bow'/>A bow! A bow can make party play much easier.<br/>When a warrior is allied with only warriors, there's always pressure to make the first normal strike work.<br/>The enemy may hit back while you're trying to attack it with a normal blow."));
     npc.Msg(L("But a bow can make your battle tactics totally different.<br/>Attack an enemy from a distance with a bow, then the enemy will not be able to move or run for a while.<br/>So it becomes just a sitting duck for a 100% successful smash!<br/>Isn't it brilliant? That's what we call a warrior's ecstasy!"));
     npc.Msg(L("Once you succeed in knocking down the enemy,<br/>the archer in your party can keep it from charging the warrior<br/>and you can just repeat the same tactics over and over."));
     npc.Msg(L("A warrior and an archer, what an ideal pair.<br/>Well, that's all for today.."));
 }
Exemplo n.º 19
0
 public async Task Class2_1(NpcScript npc)
 {
     npc.Msg(L("Alright! Basic Combat! Let's get on with the second part of the course!"));
     npc.Msg(L("We covered HP and recovery in the last class, didn't we?<br/>Then I need to start the second class with foxes."));
     npc.Msg(L("<image name='Skill_preparing'/>Check the fox closely. It may sometimes stop and stand still in a flash.<br/>Have you hit a fox at that time?"));
     npc.Msg(L("If you have, you must have been knocked out by it.<br/>I can imagine... What was it like to be hit by a fox again and again?"));
     npc.Msg(L("The fox used the Defense skill.<br/>Before learning about it, just take a good look at what a fox can do.<br/>Study how a fox defends itself by tomorrow.<br/>That's it for today."));
 }
Exemplo n.º 20
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
    }
Exemplo n.º 21
0
    public async Task <HookResult> DuncanAfterIntro(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "talk"))
        {
            npc.CompleteQuest(this.Id);

            npc.GiveKeyword("g1_memorial4");
            npc.GiveKeyword("g1_34_1");

            npc.GiveItem(Torque);
            npc.Notice(L("You have received Broken Torque from Duncan."));

            npc.Msg(L("Welcome, <username/>. I'm glad you came...<br/>First, let me give you this.<br/>I found it while I was cleaning the house."));
            npc.Msg(L("Yes... This is the reason I called you<br/>Do you remember...? How I told you I raised Mari..."));
            npc.Msg(L("When Mari first came to me...<br/>She was delivered by a pair of white and brown deer, wrapped tightly in a blanket..."), npc.Image("g1_ch31_baby"));
            npc.Msg(L("Inside the blanket, there was a letter from Shiela,<br/>asking me to watch over Mari, and the item I just gave you..."), npc.Image("g1_ch31_baby"));
            npc.Msg(L("This is what the letter said...<br/>When Mari becomes an adult...<br/>give her this memento so she can find her past...<br/>and...tell her go to Math Dungeon..."), npc.Image("g1_ch31_baby"));
            npc.Msg(L("Shiela said...when she dies<br/>she'll attach her memories to this item..."));
            npc.Msg(L("...<br/>But...now...since Mari...<br/>doesn't need it anymore...<br/>...I'm giving it to you."));
            npc.Msg(L("It seems like an item related to Mores...<br/>I hope it will be helpful in some way<br/>in your search to find Tir Na Nog..."));
            npc.Msg(L("I'm giving you a Red Wing of the Goddess as well...<br/>so hurry up and go to Math Dungeon.<br/>I wish you the best of luck."));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
    public async Task <HookResult> TalkTrefor(NpcScript npc, params object[] args)
    {
        if (npc.Player.QuestActive(this.Id, "talk_trefor"))
        {
            npc.Player.FinishQuestObjective(this.Id, "talk_trefor");

            npc.Player.GiveSkill(SkillId.Smash, SkillRank.Novice);

            npc.Msg("Welcome, I am Trefor, the guard.<br/>Someone from the town went into Alby Dungeon a while ago, but hasn't returned yet.<br/>I wish I could go there myself, but I can't leave my post. I'd really appreciate it if you can go and look for in Alby Dungeon.");
            npc.Msg("Since the dungeon is a dangerous place to be in, I'll teach you a skill that will help you in an emergency situation.<br/>It's called the Smash skill. If you use it, you can knock down a monster with a single blow!<br/>It is also highly effective when you sneak up on a target and deliver the blow without warning.");
            npc.Msg("Against monsters that are using the Defense skill,<br/>Smash will be the only way to penetrate that skill and deliver a killer blow.");
            npc.Msg("However... looking at the way you're holding your sword, I'm not sure if you are up to the task.<br/>Let me test your skills first. Do you see those brown foxes wandering in front of me?<br/>They're quite a nuisance, praying on those roosters in town.<br/>I want you to go and hunt 5 Young Brown Foxes right now.");
            npc.Msg("Foxes use the Defense Skill a lot, and as I told you before, regular attacks do not work against defending targets.<br/>That's then the Smash skill comes in handy.<br/><br/>Watch how I do it, and try picking up the important parts so you can use it too.<br/>You don't need to overstrain yourself by going for the Brown Foxes. Young Brown Foxes will do just fine.", npc.Movie("skillbar_guide_us.wmv", 500, 300), npc.Button("Continue"));
            await npc.Select();

            npc.Close2();

            Cutscene.Play("tuto_smash", npc.Player);

            return(HookResult.End);
        }
        else if (npc.Player.QuestActive(this.Id, "talk_trefor2"))
        {
            npc.Player.FinishQuestObjective(this.Id, "talk_trefor2");

            npc.Msg("Good, I see that you're getting the hang of it.<br/>Well, I was able to do that when I was 8, but whatever...<br/>It is now time for you to go and search for the missing Villager.");
            npc.Msg("Follow the road up and turn right and you'll find the Alby Dungeon.<br/>You can enter the dungeon by dropping this item on the altar.<br/>If you either lose it or fail to rescue her, come back to me so I can give you another one. Please be careful.", npc.Image("dungeonpass", 128, 128));

            npc.Player.GiveItem(63180, 1);

            return(HookResult.Break);
        }
        else if (npc.Player.QuestActive(this.Id, "clear_alby"))
        {
            npc.Msg("Follow the road up and turn right and you'll find the Alby Dungeon.<br/>You can enter the dungeon by dropping this item on the altar.<br/>If you either lose it or fail to rescue her, come back to me so I can give you another one. Please be careful.", npc.Image("dungeonpass", 128, 128));

            if (!npc.Player.HasItem(63180))
            {
                npc.Player.GiveItem(63180, 1);
            }

            return(HookResult.Break);
        }
        else if (npc.Player.QuestActive(this.Id, "talk_trefor3"))
        {
            npc.Player.FinishQuestObjective(this.Id, "talk_trefor3");

            npc.Msg("You did it! Good job.<br/>Good thing I asked for your help.<br/>For your great work, I will now teach you how to properly use the Smash skill.<br/>If you open your Skill window and press the 'LEARN' button, you will be able to use a more powerful Smash skill.<br/>I can always use some help here, so drop by often, okay?");

            if (npc.Player.Skills.Is(SkillId.Smash, SkillRank.Novice))
            {
                npc.Player.Skills.Train(SkillId.Smash, 1);
            }

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Exemplo n.º 23
0
	public async Task<HookResult> LassarAfterIntro(NpcScript npc, params object[] args)
	{
		if (!npc.QuestActive(this.Id, "get_item"))
			return HookResult.Continue;

		npc.FinishQuest(this.Id, "get_item");

		npc.Msg(L("Here... This is the item Priest Meven told me to give to you."));
		npc.Msg(L("Isn't it beautiful? It's a black rose.<br/>The overwhelming redness of the flower itself turned the flower pitch black...<br/>I am happy it grew so beautifully compared to other flowers..."), npc.Image("g1_ch16_blackrose"));
		npc.Msg(L("But... what's the reason you're looking for such a rare flower?<br/>Are you... going to give it to your lover? Ha ha..."));

		return HookResult.Break;
	}
Exemplo n.º 24
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;
	}
	public async Task<HookResult> TarlachBearBeforeGift(NpcScript npc, params object[] args)
	{
		if (!npc.HasKeyword("g1_01") || npc.Favor < 15)
			return HookResult.Continue;

		npc.RemoveKeyword("g1_01");
		npc.GiveKeyword("g1_02");
		npc.GiveKeyword("g1_tarlach1");

		npc.Msg(Hide.Name, L("(The bear is writing something in the snow.)"));
		npc.Msg(Hide.Name, L("(Tar...)<p/>(Tar... la... ch.)<p/>(The bear writes the word 'Tarlach' and stares at you.)<p/>(Tarlach...)<p/>(It seems to be someone's name.)"));

		return HookResult.Break;
	}
Exemplo n.º 26
0
	public async Task<HookResult> AfterIntro(NpcScript npc, params object[] args)
	{
		if (npc.QuestActive(this.Id, "talk"))
		{
			npc.FinishQuest(this.Id, "talk");

			npc.Msg(L("Welcome. I am Stewart.<br/>I will give you a mana potion that will help you with your magic training studies.<br/>I think you have talent in magic."));
			npc.Msg(L("I'd be thankful if you had interest in magic."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
    public async Task <HookResult> AfterIntro(NpcScript npc, params object[] args)
    {
        if (npc.Player.QuestActive(this.Id, "talk"))
        {
            npc.Player.FinishQuestObjective(this.Id, "talk");

            npc.Msg(L("Welcome. I am Stewart.<br/>I will give you a mana potion that will help you with your magic training studies.<br/>I think you have talent in magic."));
            npc.Msg(L("I'd be thankful if you had interest in magic."));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Exemplo n.º 28
0
    private async Task <HookResult> AfterIntro(NpcScript npc, params object[] args)
    {
        if (!npc.Player.QuestActive(this.Id, "talk") || !IsEventActive("aura_costume_fishing_event"))
        {
            return(HookResult.Continue);
        }

        npc.Player.FinishQuestObjective(this.Id, "talk");

        npc.Msg(L("Boatloads of clothes were dumped into<br/>rivers and lakes everywhere!!"));
        npc.Msg(L("Quick, complete the quest,<br/>take the fishing bait, and rescue them!"));

        return(HookResult.Break);
    }
Exemplo n.º 29
0
    public async Task <HookResult> TarlachBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

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

        npc.RemoveKeyword("g1_05");
        npc.GiveKeyword("g1_06");
        npc.RemoveKeyword("g1_tarlach_of_lughnasadh");
        npc.GiveKeyword("g1_book1");

        npc.Msg(L("Meven must have told you how to find me..."));
        npc.Msg(L("Hah. Sorry if I surprised you. Well, what do you think?<br/>Do you like Sidhe Sneachta at night?<br/>Yes, the bear you met earlier was me.<br/>Oh, I forgot to thank you for the Mana Herb."));
        npc.Msg(L("I have a...condition that requires me<br/>to constantly eat Mana Herb during the day...<br/>I'm allergic to it in human form.  Hence, the bear form."));
        npc.Msg(L("...You had a dream about the Goddess, didn't you?<br/>The one where she asks you to rescue her in Tir na Nog.<br/>Then you're here to find out how to get there..."));
        npc.Msg(L("Forget about it. That's no place for mortal kind."));
        npc.Msg(L("Forget it..."));
        npc.Msg(L("If you really must know, I can recommend a book to you.<br/>'Land of Eternity, Tir Na Nog.'<br/>You can find it at the Bookstore in Dunbarton."));
        npc.Msg(L("I hope that will sate your curiosity. I suggest you let the matter drop.<br/>And please, don't tell anyone I'm here.<br/>Please..."));

        return(HookResult.Break);
    }
Exemplo n.º 30
0
    public async Task <HookResult> AfterIntro(NpcScript npc, params object[] args)
    {
        if (!npc.QuestActive(this.Id))
        {
            return(HookResult.Continue);
        }

        if (!npc.Player.Inventory.Has(51104, 1))         // 1 Base Herb
        {
            return(HookResult.Continue);
        }

        Send.Notice(npc.Player, "You have given Base Herb to Manus.");
        npc.Player.Inventory.Remove(51104, 1);         // 1 Base Herb
        npc.FinishQuest(this.Id, "talk");

        npc.Msg("You've come, <username/>.<br/>And with the base herb. Well done.");
        npc.Msg("Okay, I'll tell you about Herbalism.<br/>Herbalism is the knowledge to be able<br/>to classify the physiological effect of eating herbs.");
        npc.Msg("Some herbs create a specific effect.<br/><image name='bloody_herb'/>This herb is known as Bloody Herb for its red color.<br/>It contains an element that strengthens your life force.");
        npc.Msg("<image name='sunlight_herb'/>This herb is known as Sunlight Herb for its yellow color.<br/>It helps increase endurance.<br/>Mostly used in making tonics.");
        npc.Msg("<image name='base_herb'/>The Base Herb functions as a stabilizer to stabilize the virtue of several herbs mixed altogether,<br/>so this herb is often used when making medicine.");
        npc.Msg("<image name='G1_Ch01_manaherb'/>The Mana Herb is a plant that grows on the mana of Eweca.<br/>If properly processed, this herb can be used to make medicine that recovers mana.");
        npc.Msg("This processing step would be the Potion Making skill, right?<br/>Buy a Potion Making Kit and try it out for yourself. Ha ha. I just happen to have some with me...");
        npc.Msg("So now, <username/>, you are an Herbalism beginner .<br/>From now on, please help me out with the work in my store.");

        return(HookResult.Break);
    }
Exemplo n.º 31
0
    public async Task <HookResult> DuncanBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

        if (keyword == "g1_mores")
        {
            npc.RemoveKeyword("g1_18");
            npc.GiveKeyword("g1_19");
            npc.RemoveKeyword("g1_mores");
            npc.GiveKeyword("g1_mores_gwydion");

            npc.Msg(L("Mores...? That's the author of the book you have?<br/>Hmm... You're right..."));
            npc.Msg(L("Really...? The one and only hero who rescued this world...<br/>Mores Gwydion?<br/>...No, it can't be. They probably just have the same name."));
            npc.Msg(L("... I know who Mores Gwydion is...<br/>I saw him a few times when I was young..."));
            npc.Msg(L("In the Second War at Mag Tuireadh Plains,<br/>he'd infiltrated deep into the Fomors' camp<br/>and stopped the Fomors from casting their ultimate spell...<br/>...all the while sacrificing his own life."), npc.Image("g1_ch17_magicfight"));
            npc.Msg(L("If it wasn't for him...<br/>Erinn would have turned into <br/>a wasteland by the evil Wizard<br/>Jabchiel."));
            npc.Msg(L("People were devestated when his friends returned<br/>to report of this death...<br/>Many people speak very highly of him even now."));
            npc.Msg(L("And quite a few parents wanted to name their newborn children<br/>after him."));
            npc.Msg(L("Come to think of it... By now, enough time has probably passed for a<br/>child with his name to grow up and write a book on Fomors...<br/>...Hah..."));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Exemplo n.º 32
0
	public async Task<HookResult> GoroAfterIntro(NpcScript npc, params object[] args)
	{
		if (!npc.QuestActive(this.Id) || !npc.HasItem(GorosRing))
			return HookResult.Continue;

		npc.CompleteQuest(this.Id);
		npc.RemoveItem(GorosRing);

		npc.Msg(Hide.Name, L("(You give Goro his ring.)"));
		npc.Msg(L("Thank you, I'll now read it to you..."));
		npc.Msg(L("'Dul Brau Dairam Shanon' means 'Goddess, lend me the moonlight.'"));

		return HookResult.Break;
	}
Exemplo n.º 33
0
    public async Task <HookResult> SimonBeforeKeywords(NpcScript npc, params object[] args)
    {
        // the Luxurious
        // Enable if talking to Simon while wearing clothes worth over
        // 500,000 gold.
        //
        // the Hungry
        // Enable if talking to Simon while wearing only broken beginner
        // clothes with 50% hunger.
        // ------------------------------------------------------------------
        var usable58 = npc.Player.CanUseTitle(58);
        var usable59 = npc.Player.CanUseTitle(59);

        if ((!usable58 || !usable59) && (args[0] as string) == "personal_info")
        {
            if (!usable58)
            {
                var equip = npc.Player.Inventory.GetEquipment(a => a.Info.Pocket < Pocket.RightHand1);
                var total = equip.Sum(a => a.OptionInfo.Price);
                if (total >= 500000)
                {
                    npc.Msg("(Missing dialog: Simon talking about expensive clothes.)");
                    npc.Player.EnableTitle(58);
                }
            }

            if (!usable59)
            {
                var equip = npc.Player.Inventory.GetEquipment();
                if (equip.Length == 1)
                {
                    var id = equip[0].Info.Id;
                    if (id == 15001 || id == 15002 || id == 15169 || id == 15168 || id == 15228 || id == 15208)
                    {
                        if (equip[0].Durability == 0 && npc.Player.Hunger >= npc.Player.StaminaMax / 2)
                        {
                            npc.Msg("(Missing dialog: Simon talking about cheap clothes?)");
                            npc.Player.EnableTitle(59);

                            equip[0].Durability = equip[0].OptionInfo.DurabilityMax;
                            Send.ItemDurabilityUpdate(npc.Player, equip[0]);
                        }
                    }
                }
            }
        }

        return(HookResult.Continue);
    }
Exemplo n.º 34
0
    private void LassarFinish(NpcScript npc)
    {
        npc.Player.RemoveKeyword("g1_black_rose");
        npc.Player.RemoveKeyword("g1_17_3");
        npc.Player.RemoveKeyword("g1_17_4");
        npc.Player.GiveKeyword("g1_17_5");

        npc.Player.RemoveItem(HolyWater);
        npc.Player.Notice(L("You have given Holy Water of Lymilark to Lassar."));

        npc.Player.SendOwl(210023, OwlDelay);         // Receive the Requested Object

        npc.Msg(L("Yes, this should be enough.<br/>It's almost ready. Once it forms the proper shape, I'll let you know via an owl. Hahaha.<br/>Owls don't fly into buildings so<br/>don't forget to check the sky outside."));
        npc.Msg(L("Now, will you excuse me?"));
    }
Exemplo n.º 35
0
    public async Task <HookResult> DuncanBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

        if (keyword == "g1_bone_of_glasgavelen")
        {
            npc.Msg(L("Of course, Glas Ghaibhleann's Bones..."));
            npc.Msg(L("After such a long time some bones will be missing or broken,<br/>and must be replaced with something...<br/>like Adamantium..."));
            npc.Msg(L("I don't know much about this topic, maybe Tarlach has more information."));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Exemplo n.º 36
0
    public async Task <HookResult> LassarAfterIntro(NpcScript npc, params object[] args)
    {
        if (!npc.QuestActive(this.Id, "get_item"))
        {
            return(HookResult.Continue);
        }

        npc.FinishQuest(this.Id, "get_item");

        npc.Msg(L("Here... This is the item Priest Meven told me to give to you."));
        npc.Msg(L("Isn't it beautiful? It's a black rose.<br/>The overwhelming redness of the flower itself turned the flower pitch black...<br/>I am happy it grew so beautifully compared to other flowers..."), npc.Image("g1_ch16_blackrose"));
        npc.Msg(L("But... what's the reason you're looking for such a rare flower?<br/>Are you... going to give it to your lover? Ha ha..."));

        return(HookResult.Break);
    }
Exemplo n.º 37
0
	public async Task<HookResult> TarlachAfterIntro(NpcScript npc, params object[] args)
	{
		if (!npc.QuestActive(this.Id, "talk_tarlach"))
			return HookResult.Continue;

		npc.FinishQuest(this.Id, "talk_tarlach");

		npc.Msg(L("...!<br/>Yes... that's it.<br/>The black rose I have been looking for..."));
		npc.Msg(L("No... it's different. This...<br/>is a new flower..."));
		npc.Msg(L("Thank you... <username/>...<br/>for helping me..."));
		npc.Msg(L("Then... please do me one more favor...<br/>Can you... deliver this rose to Kristell of Dunbarton?"));
		npc.Msg(L("...That would be all... thanks."));

		return HookResult.Break;
	}
Exemplo n.º 38
0
    public async Task <HookResult> TalkMless(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "talk_mless"))
        {
            npc.FinishQuest(this.Id, "talk_mless");
            npc.CompleteQuest(this.Id);
            npc.Msg("Ah... it's you, <username/>. Now that was a worthy combat...<br/>As promised, I will bestow upon you now the power of Dark Knight.");
            npc.Msg("Continue to hone your strength through the power of your transformation...");
            npc.End();

            return(HookResult.End);
        }

        return(HookResult.Continue);
    }
Exemplo n.º 39
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);
    }
Exemplo n.º 40
0
    public async Task <HookResult> KristellAfterIntro(NpcScript npc, params object[] args)
    {
        if (npc.Player.QuestActive(this.Id, "talk_kristell"))
        {
            npc.Player.FinishQuestObjective(this.Id, "talk_kristell");

            npc.Msg(L("Is there another volume to this book...?<br/>I'm not sure.<br/>Based on the introduction, it seems likely..."));
            npc.Msg(L("I've learned that this book is very popular amongst high-ranking Fomors.<br/>I only found that out while I was translating the book."));
            npc.Msg(L("Sorry I'm not much help<br/>Maybe Aeira knows something about this.<br/>When it comes to books, no one's more knowledgable than her."));

            return(HookResult.Break);
        }

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

        if (keyword == "g1_memo_of_lost_thing")
        {
            npc.Msg(L("Hmm? Who picked it up just now?<br/>Priestess Kristel was looking for such an item, so I gave it to her."));
            npc.Msg(L("A Priestess wouldn't have any reason to lie<br/>Is there a problem?"));
            npc.Msg(L("Why don't you speak to her at the Temple?"));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Exemplo n.º 42
0
    public async Task <HookResult> AfterIntro(NpcScript npc, params object[] args)
    {
        if (npc.Player.QuestActive(this.Id, "talk"))
        {
            npc.Player.FinishQuestObjective(this.Id, "talk");

            npc.Msg("Ah, it's <username/>.<br/>Your Compose rank is already at E... You're pretty good.");
            npc.Msg("Open the Quest window and press Mission Complete!<br/>The owl will deliver the book to you.");
            npc.Msg("Keep practicing!<br/>Write a song about me, too!");

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Exemplo n.º 43
0
	public async Task<HookResult> AfterIntro(NpcScript npc, params object[] args)
	{
		if (npc.QuestActive(this.Id, "talk"))
		{
			npc.FinishQuest(this.Id, "talk");
			
			npc.Msg(L("Welcome to Dunbarton.<br/>My name is Eavan, the Town Office worker who takes care of all the business related to the Adventurer's Association."));
			npc.Msg(L("<username/>, your outstanding achievements are already well-known<br/>all around the Adventurers' Association."));
			npc.Msg(L("I'm certain that all the hardships you went through<br/>will help you during your stay<br/>here on Erinn."));
			npc.Msg(L("You've done very well."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
Exemplo n.º 44
0
	public async Task<HookResult> KristellAfterIntro(NpcScript npc, params object[] args)
	{
		if (!npc.QuestActive(this.Id, "talk_kristell"))
			return HookResult.Continue;

		npc.FinishQuest(this.Id, "talk_kristell");

		npc.Msg(L("...Hello... <username/>, welcome...<br/>...And Tarlach... he didn't come...did he?"));
		npc.Msg(L("...I see. Of course...<br/>I'm not surprised...<br/>He doesn't let anyone enter in his life..."));
		npc.Msg(L("He said he couldn't accept me<br/>because he was living the life of a Druid..."));
		npc.Msg(L("...<p/>...Am I nothing more than a tool who understands the Fomor language to him...?"));
		npc.Msg(L("...I'm sorry, but you will need to go back to where he is..."));
		npc.Msg(L("... When Tarlach comes...<br/>...I would like to give the book to him myself.<br/>Please understand why I can't give this book to you."));

		return HookResult.Break;
	}
	public async Task<HookResult> AeiraAfterIntro(NpcScript npc, params object[] args)
	{
		if (npc.QuestActive(this.Id, "talk_aeira"))
		{
			npc.FinishQuest(this.Id, "talk_aeira");

			npc.Msg(L("Ah! I've been waiting!<br/>I have good news."));
			npc.Msg(L("I found out where you can find volume 3<br/>of that Fomor book you've been looking for,<br/>Lassar, the magic instructor at the school in<br/>Tir Chonaill has it. You know her, don't you?"));
			npc.Msg(L("She came by looking for a particular book recently<br/>and while we were chatting, I snuck in a question<br/>about your own search. She says she has the third<br/>colume of 'The Book of Revenge!' An original copy<br/>in the Fomor language, no less!"));
			npc.Msg(L("You should hurry up and see here. Good luck!"));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
Exemplo n.º 46
0
	public async Task<HookResult> AfterIntro(NpcScript npc, params object[] args)
	{
		if (npc.QuestActive(this.Id) && npc.HasItem(60008, 5))
		{
			npc.RemoveItem(60008, 5); // Cobweb
			npc.CompleteQuest(this.Id);

			npc.Msg(L("You brought the cobwebs! Thank you."));
			npc.Msg(L("Cobwebs are used to make Fine Yarn.<br/>The cobwebs dropped by the spiders in TirChonaill are sturdier than usual, so they're great for making strings."));
			npc.Msg(L("If you're interested in making thread,<br/>come and talk to me with the keyword 'Skill' after gathering Cobwebs.<br/>I'll tell you about the Weaving skill."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
Exemplo n.º 47
0
	public async Task<HookResult> AfterIntro(NpcScript npc, params object[] args)
	{
		// Handle delivery of Iron Ore from some of his PTJ quests
		int id, itemCount = -1;
		if (npc.QuestActive(id = 514602, "ptj2"))
			itemCount = 5;
		else if (npc.QuestActive(id = 514632, "ptj2"))
			itemCount = 7;
		else if (npc.QuestActive(id = 514662, "ptj2"))
			itemCount = 10;

		if (itemCount != -1)
		{
			if (!npc.Player.Inventory.Has(64002, itemCount)) // Iron Ore
				return HookResult.Continue;

			npc.FinishQuest(id, "ptj2");

			npc.Player.Inventory.Remove(64002, itemCount);
			npc.Notice(L("You have given Iron Ore to Sion."));
			npc.Msg(string.Format(LN("(Gave Sion {0} Iron Ore)", "(Gave Sion {0} Iron Ore)", itemCount), itemCount));
		}

		// Call PTJ method after intro if it's time to report
		if (npc.DoingPtjForNpc() && npc.ErinnHour(Report, Deadline))
		{
			await AboutArbeit(npc);
			return HookResult.Break;
		}

		return HookResult.Continue;
	}
Exemplo n.º 48
0
	public async Task<HookResult> AfterIntro(NpcScript npc, params object[] args)
	{
		if (npc.QuestActive(this.Id, "talk"))
		{
			npc.FinishQuest(this.Id, "talk");

			npc.Msg("Hey, it's you, <username/>!<br/>I was wondering why you didn't come to see me.");
			npc.Msg("Have you heard of the Production Mastery skill?<br/>It's a skill that's needed for both gathering and crafting.<br/>You can make things more easily if you know this skill.");
			npc.Msg("You will have more Stamina,<br/>and you will have a better success rate at gathering and crafting.<br/>Your dexterity will increase as well.");
			npc.Msg("Note that this is not a separate skill.<br/>The skill will activate automatically whenever you gather things or do some crafting,<br/>so you don't need to worry about learning it.");
			npc.Msg("Now that I told you about the skill,<br/>you will be able to get the Production Mastery skill when you complete the quest.");

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
	public async Task<HookResult> DuncanBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;
		if (keyword == null || keyword != "g1_tarlach1")
			return HookResult.Continue;

		npc.RemoveKeyword("g1_tarlach1");
		npc.GiveKeyword("g1_tarlach2");

		npc.Msg(L("Tar...lach? Did you say Tarlach?<br/>One of the three missing warriors..."));
		npc.Msg(Hide.Name, L("(Duncan seems shocked.)"));
		npc.Msg(L("I've always wondered about that bear.<br/>I never thought it could truly be Tarlach..."));
		npc.Msg(L("Long ago, three adventurers actually went to Tir Na Nog<br/>to rescue the black-winged Goddess<br/>and bring paradise to this world.<br/>But none of them ever returned."), npc.Image("G1_Ch03_3warriors"));
		npc.Msg(L("Hence they were known as the three missing warriors.<br/>Tarlach was one of them...<br/>It's been so long... could it really be him?<br/>Talk to Stewart at the school in Dunbarton. He knows the legend better."));

		return HookResult.Break;
	}
Exemplo n.º 50
0
	public async Task<HookResult> KristellBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;
		if (keyword != "g1_medal_of_fomor")
			return HookResult.Continue;

		npc.Msg(L("That's...a medal worn by Priests.<br/>If you look on the back, you can find a token with<br/>the date it was given and the individual's name..."));
		if (npc.HasItem(FomorMedal))
		{
			npc.Msg(L("What? A Fomor had this? Impossible..."));
			npc.Msg(Hide.Name, L("(Kristell checked the back of the medal.)"));
			npc.Msg(L("...!"), npc.Image("g1_ch11_12_fomormedal02"));
			npc.Msg(L("Oh... it's nothing.<br/>I'm quite busy, I should get going..."));
		}

		return HookResult.Break;
	}
Exemplo n.º 51
0
	public async Task<HookResult> TalkNpc(NpcScript npc, params object[] args)
	{
		if (npc.QuestActive(this.Id, "talk_bebhinn") && npc.HasItem(52004))
		{
			npc.FinishQuest(this.Id, "talk_bebhinn");

			npc.Msg("Oh hello! Looks like you got my message.");
			npc.Msg("Is that a Small Green Gem for me? Thank you!<br/>Now I can finish my necklace!<br/>I found this old guide book while waiting for your<br/>arrival. It's probably better in your hands.<button title='Continue' keyword='@continue'/>");
			await npc.Select();

			npc.RemoveItem(52004); // Small Green Gem
			npc.CompleteQuest(this.Id);

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
Exemplo n.º 52
0
	public async Task<HookResult> TalkRanald(NpcScript npc, params object[] args)
	{
		if(npc.QuestActive(this.Id, "talk_ranald"))
		{
			npc.FinishQuest(this.Id, "talk_ranald");
			npc.CompleteQuest(this.Id);
			
			// Unofficial
			npc.Msg("Thank you, <username/>. Now that that's out of the way, let me teach you all about the Windmill skill.");
			npc.Msg(Hide.Name, "... ... ..."); // He should probably say something about Windmill...
			npc.Msg("And that's it! Never stop training.");
			npc.End();
			
			return HookResult.End;
		}
		
		return HookResult.Continue;
	}
Exemplo n.º 53
0
	public async Task<HookResult> KristellAfterIntro(NpcScript npc, params object[] args)
	{
		if (!npc.QuestActive(this.Id) || !npc.HasItem(BookOfFomor))
			return HookResult.Continue;

		npc.CompleteQuest(this.Id);
		npc.SendOwl(210004, OwlDelay); // [Book of Fomors] Translation Completed

		npc.RemoveItem(BookOfFomor);
		npc.Notice(L("You have given Book of Fomors to Kristell."));

		npc.Msg(L("...Tarlach asked me...?<br/>To translate...this book for him...?"));
		npc.Msg(L("I see... This is definitely Tarlach's book...<br/>... ...Is he still living as a Druid...with his injured body and all...?<br/>Poor guy..."));
		npc.Msg(L("Okay...<br/>I will translate it..."));
		npc.Msg(L("I will contact you once the translation is completed."));

		return HookResult.Break;
	}
	public async Task<HookResult> TalkNora(NpcScript npc, params object[] args)
	{
		if(npc.QuestActive(this.Id) && !npc.Player.Skills.Has(SkillId.Rest))
		{
			npc.Msg("If you came here because of the mail you received about the Resting skill,<br/>we need to talk about it first.<br/>You know you should ask me with the 'Skills' keyword, right?");
			return HookResult.Break;
		}
		
		return HookResult.Continue;
	}
	public async Task<HookResult> DuncanBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;
		if (keyword != "g1_goddess")
			return HookResult.Continue;

		npc.Msg(L("You want to know of the Goddess Morrighan?<br/>If it's about the Goddess, you're better off speaking to Meven..."));

		return HookResult.Break;
	}
Exemplo n.º 56
0
	public async Task<HookResult> AfterIntro(NpcScript npc, params object[] args)
	{
		if (!npc.QuestActive(this.Id))
			return HookResult.Continue;
		npc.FinishQuest(this.Id, "talk");

		npc.Msg("(Missing dialog: Advice about Campfire)");

		return HookResult.Break;
	}
Exemplo n.º 57
0
	public async Task<HookResult> AeiraAfterIntro(NpcScript npc, params object[] args)
	{
		if (!npc.QuestActive(this.Id, "get_book"))
			return HookResult.Continue;

		npc.CompleteQuest(this.Id);
		npc.GiveItem(Book);

		npc.RemoveKeyword("g1_06");
		npc.RemoveKeyword("g1_07");
		npc.RemoveKeyword("g1_08");
		npc.GiveKeyword("g1_09");

		npc.Msg(L("Hey~! You came, <username/>.<br/>Here it is. The book you have been looking for."));
		npc.Msg(L("Sorry it took so long~<br/>To make it up to you, I'll give you the book for free~"));
		npc.Msg(L("Instead, just come and visit often, okay?"));

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

		npc.GiveItem(73059); // Book: The Goddess Who Turned into Stone

		npc.RemoveKeyword("g1_04");
		npc.GiveKeyword("g1_05");
		npc.RemoveKeyword("g1_goddess");
		npc.GiveKeyword("g1_tarlach_of_lughnasadh");

		npc.Msg(Hide.Name, L("(Received The Goddess Who Turned into Stone from Meven.)"));
		npc.Msg(L("So you wish to know more about the black-winged Goddess of War and Vengeance.<br/>Please, take a look at this free reading material on Morrighan."));
		npc.Msg(L("You learned about Morrighan from Tarlach's memorial item, eh?<br/>In that case...there's something you should know."));
		npc.Msg(L("Tarlach is the only surviving member of the three warriors.<br/>I know, everyone claims he is dead...<br/>But he's actually alive. If you want to speak to him<br/>yourself, go to Sidhe Sneachta at night."));

		return HookResult.Break;
	}
Exemplo n.º 59
0
	public async Task<HookResult> TarlachAfterIntro(NpcScript npc, params object[] args)
	{
		if (npc.QuestActive(this.Id, "get_book"))
		{
			npc.FinishQuest(this.Id, "get_book");

			npc.GiveItem(BookOfRevenge);
			npc.Notice(L("You have received the Book of Revenge from Tarlach."));

			npc.Msg(L("Thank you for sharing the story of my mentor with me, <username/>..."));
			npc.Msg(L("...<p/>Um... are you telling me that Chief Duncan of Tir Chonaill<br/>wants to...borrow the master's book...?"));
			npc.Msg(L("...I guess it should be okay."));
			npc.Msg(L("He is a wise old man who has been through a lot, and<br/>he may be able to catch some things that we may have missed..."));
			npc.Msg(L("Please give this copy to the Chief for me..."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
Exemplo n.º 60
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;
	}