示例#1
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);
    }
示例#2
0
    public async Task <HookResult> TalkTrefor(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "talk_trefor"))
        {
            npc.FinishQuest(this.Id, "talk_trefor");

            npc.Player.Skills.Give(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.QuestActive(this.Id, "talk_trefor2"))
        {
            npc.FinishQuest(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.GiveItem(63180, 1);

            return(HookResult.Break);
        }
        else if (npc.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.HasItem(63180))
            {
                npc.GiveItem(63180, 1);
            }

            return(HookResult.Break);
        }
        else if (npc.QuestActive(this.Id, "talk_trefor3"))
        {
            npc.FinishQuest(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);
    }
示例#3
0
    public async Task <HookResult> StewartBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

        if (keyword == null || keyword != "g1_tarlach2")
        {
            return(HookResult.Continue);
        }

        if (npc.HasKeyword("g1_02"))
        {
            npc.RemoveKeyword("g1_02");
            npc.GiveKeyword("g1_03");

            npc.GiveItem(TarlachsLocket);
            npc.GiveWarpScroll(63009, "Alby_Dungeon");

            npc.Msg(L("The three missing Warriors? The ones who are said to have gone to Tir Na Nog?"));
            npc.Msg(L("I see...<br/>There was a time when scholars debated back and forth regarding the validity of that legend."));
            npc.Msg(L("From what I remember, there were stories of Tir Na Nog circulating via word of mouth<br/>but there weren't any written records of it.<br/>In the end, it was concluded that it was only a rumor."));
            npc.Msg(L("So it's just a legend..."));
            npc.Msg(L("...What do I think...?<br/>I believe in the legend of three missing Warriors. Haha...<br/>I'm no fool though..."));
            npc.Msg(L("I'm not sure if what I just gave you will be of any help.<br/>It's a locket. You know, an accessory that you put pictures in."), npc.Image("G1_Ch04_locket01"));
            npc.Msg(L("...Don't be surprised...<br/>This is actually a memento that belonged to<br/>Tarlach, the mighty Wizard, one of the<br/>three missing Warriors."), npc.Image("G1_Ch04_locket02"));
            npc.Msg(L("Yes, the picture of the boy in the locket is Tarlach.<br/>This was probably from when he was young.<br/>Judging from how old she is, the pretty girl next to him is probably his sister."), npc.Image("G1_Ch04_locket02"));
            npc.Msg(L("That's not all, though...<br/>This locket...it's a type of a Memorial item that allows you<br/>to experience the life of the person who used to own it."));
            npc.Msg(L("Tarlach spent his entire life trying to rescue the goddess<br/>who holds the secrets of Tir Na Nog.<br/>His desires and memories remain in this locket."));
            npc.Msg(L("Try placing this on the altar to the goddess inside Alby Dungeon."));
            npc.Msg(L("Drop the locket on the Alby Dungeon altar.<br/>And get two more friends to go with you."));

            return(HookResult.Break);
        }
        else if (npc.HasKeyword("g1_03"))
        {
            // Give locket again if lost
            if (!npc.HasItem(TarlachsLocket))
            {
                npc.GiveItem(TarlachsLocket);
            }

            npc.Msg(L("Drop the locket on the Alby Dungeon altar.<br/>And get two more friends to go with you."));

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

			var scene = new Cutscene("tuto_smash", npc.Player);
			scene.AddActor("me", npc.Player);
			scene.AddActor("#trefor", npc.NPC);
			scene.AddActor("#brownfox", 50001);
			scene.Play();
			
			return HookResult.End;
		}
		else if(npc.QuestActive(this.Id, "talk_trefor2"))
		{
			npc.FinishQuest(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.GiveItem(63180, 1);
			
			return HookResult.Break;
		}
		else if(npc.QuestActive(this.Id, "talk_trefor3"))
		{
			npc.FinishQuest(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;
	}
示例#11
0
    public async Task <HookResult> TarlachBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

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

        if (npc.HasKeyword("g1_09"))
        {
            npc.RemoveKeyword("g1_09");
            npc.GiveKeyword("g1_10");

            npc.GiveItem(BrownFomorPass);
            npc.GiveWarpScroll(63009, "Barri_Dungeon");

            npc.Msg(L("...Did you actually read the book?<br/>You still want to go...?<br/>Just as I'd thought...<br/>..."));
            npc.Msg(L("...Honestly, I was hoping that<br/>reading the book would be enough to satisfy your curiosity and that you would forget all about it...<br/>But, you can't help that you're an adventurer..."));
            npc.Msg(L("...<p/>...<br/>Tir Na Nog... is not paradise.<br/>What's in that book is actually a lie.<br/>...Tir Na Nog is a real place, but it's not anything like paradise."));
            npc.Msg(L("...<p/>Listen carefully... Tir Na Nog is the land of the Fomors.<br/>And... the Goddess,<br/>who seems so loving, draws zealous adventurers like yourself to manipulate and use you."));
            npc.Msg(L("...<p/>...You don't believe me, do you...? Hah...<br/>The pass I just gave you is what the Fomors use to enter dungeons...<br/>It's an item they use to avoid the barriers set up by the Goddess."), npc.Image("g1_ch09_brownpass"));
            npc.Msg(L("If you offer that to the statue of the Goddess in Barri dungeon,<br/>you will witness everything I just told you with your own eyes.<br/>Here's a Red Wing of the Goddess, so use it if you need it...<br/>You can go there alone, but taking one or two friends with you is probably a better idea."));
            npc.Msg(L("...The best thing to do would be to forget<br/>trying to go to Tir Na Nog.<p/>...Heed my warning..."));
        }
        else if (npc.HasKeyword("g1_10") || npc.HasKeyword("g1_11"))
        {
            if (!npc.HasItem(BrownFomorPass))
            {
                npc.GiveItem(BrownFomorPass);
            }

            npc.Msg(L("...The best thing to do would be to forget<br/>trying to go to Tir Na Nog.<p/>...Heed my warning..."));
        }

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

            npc.GiveItem(BookOfRevenge3);
            npc.Notice(L("You have received The Book of Revenge, Vol. III from Seumas."));

            npc.Msg(L("Oh, that was fast, <username/>...<br/>Did Sion like it? Hah... Thank you...<br/>Here...is the...book...<br/>Hope it would be helpful..."));

            return(HookResult.Break);
        }

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

		if (keyword == "g1_memorial4" && npc.HasKeyword("g1_34_1"))
		{
			if (!npc.HasItem(Torque))
				npc.GiveItem(Torque);

			npc.Msg(L("(Missing dialog: Eavan giving you back the lost Torque.)"));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
	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_29"))
		{
			if (!npc.HasItem(Glasses))
				npc.GiveItem(Glasses);

			npc.Msg(L("Go to Rabbie Dungeon and put the glasses on the altar.<br/>Then... you will know about...<br/>my anger toward the Goddess and evil spirits..."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
示例#15
0
    public async Task <HookResult> RanaldAfterIntro(NpcScript npc, params object[] args)
    {
        if (!npc.QuestActive(this.Id, "ptj2"))
        {
            return(HookResult.Continue);
        }

        npc.FinishQuest(this.Id, "ptj2");
        npc.GiveItem(Anthology);

        npc.Msg(L("You are working for Caitin now?<br/>Then, can you do me a favor? Please give this to her for me."));
        npc.Msg(Hide.Name, L("(Received an Anthology.)"));
        npc.Msg(L("I borrowed this from her,<br/>but don't have time to return it right now."));

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

            npc.GiveItem(BookOfRevenge3Translated);
            npc.Notice(L("You have received The Book of Revenge, Vol. III (Translated) from Kristell."));

            npc.Msg(L("Here is the translated copy you've been waiting for.<br/>With that, I've finished translating all three volumes of the Book of Revenge."));
            npc.Msg(L("...<br/>I must warn you...<br/>This last volume contains some...disturbing passages."));

            return(HookResult.Break);
        }

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

        if (keyword == "g1_memo_of_parcelman")
        {
            if (npc.HasItem(WizardsNote))
            {
                npc.GiveItem(WizardsNote);
            }

            npc.Msg(L("If you offer the note on the Altar of Ciar Dungeon, you'll be transported to where you can find the book."));

            return(HookResult.Break);
        }

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

        if (keyword == "g1_memorial4" && npc.HasKeyword("g1_34_1"))
        {
            if (!npc.HasItem(Torque))
            {
                npc.GiveItem(Torque);
            }

            npc.Msg(L("(Missing dialog: Eavan giving you back the lost Torque.)"));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
示例#19
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_29"))
        {
            if (!npc.HasItem(Glasses))
            {
                npc.GiveItem(Glasses);
            }

            npc.Msg(L("Go to Rabbie Dungeon and put the glasses on the altar.<br/>Then... you will know about...<br/>my anger toward the Goddess and evil spirits..."));

            return(HookResult.Break);
        }

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

		if (npc.HasKeyword("g1_02"))
		{
			npc.RemoveKeyword("g1_02");
			npc.GiveKeyword("g1_03");

			npc.GiveItem(TarlachsLocket);
			npc.GiveWarpScroll(63009, "Alby_Dungeon");

			npc.Msg(L("The three missing Warriors? The ones who are said to have gone to Tir Na Nog?"));
			npc.Msg(L("I see...<br/>There was a time when scholars debated back and forth regarding the validity of that legend."));
			npc.Msg(L("From what I remember, there were stories of Tir Na Nog circulating via word of mouth<br/>but there weren't any written records of it.<br/>In the end, it was concluded that it was only a rumor."));
			npc.Msg(L("So it's just a legend..."));
			npc.Msg(L("...What do I think...?<br/>I believe in the legend of three missing Warriors. Haha...<br/>I'm no fool though..."));
			npc.Msg(L("I'm not sure if what I just gave you will be of any help.<br/>It's a locket. You know, an accessory that you put pictures in."), npc.Image("G1_Ch04_locket01"));
			npc.Msg(L("...Don't be surprised...<br/>This is actually a memento that belonged to<br/>Tarlach, the mighty Wizard, one of the<br/>three missing Warriors."), npc.Image("G1_Ch04_locket02"));
			npc.Msg(L("Yes, the picture of the boy in the locket is Tarlach.<br/>This was probably from when he was young.<br/>Judging from how old she is, the pretty girl next to him is probably his sister."), npc.Image("G1_Ch04_locket02"));
			npc.Msg(L("That's not all, though...<br/>This locket...it's a type of a Memorial item that allows you<br/>to experience the life of the person who used to own it."));
			npc.Msg(L("Tarlach spent his entire life trying to rescue the goddess<br/>who holds the secrets of Tir Na Nog.<br/>His desires and memories remain in this locket."));
			npc.Msg(L("Try placing this on the altar to the goddess inside Alby Dungeon."));
			npc.Msg(L("Drop the locket on the Alby Dungeon altar.<br/>And get two more friends to go with you."));

			return HookResult.Break;
		}
		else if (npc.HasKeyword("g1_03"))
		{
			// Give locket again if lost
			if (!npc.HasItem(TarlachsLocket))
				npc.GiveItem(TarlachsLocket);

			npc.Msg(L("Drop the locket on the Alby Dungeon altar.<br/>And get two more friends to go with you."));

			return HookResult.Break;
		}
		else
		{
			return HookResult.Continue;
		}
	}
	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> 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;
	}
	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;
	}
示例#25
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;
	}
示例#26
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);
    }
示例#27
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);
    }
示例#28
0
    public async Task <HookResult> TalkDuncan(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "talk_duncan"))
        {
            npc.FinishQuest(this.Id, "talk_duncan");

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

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

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

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

            npc.Close2();

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

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
    public async Task <HookResult> 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);
    }
示例#30
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);
    }
	public async Task<HookResult> TarlachBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;
		if (keyword != "g1_paradise")
			return HookResult.Continue;

		if (npc.HasKeyword("g1_09"))
		{
			npc.RemoveKeyword("g1_09");
			npc.GiveKeyword("g1_10");

			npc.GiveItem(BrownFomorPass);
			npc.GiveWarpScroll(63009, "Barri_Dungeon");

			npc.Msg(L("...Did you actually read the book?<br/>You still want to go...?<br/>Just as I'd thought...<br/>..."));
			npc.Msg(L("...Honestly, I was hoping that<br/>reading the book would be enough to satisfy your curiosity and that you would forget all about it...<br/>But, you can't help that you're an adventurer..."));
			npc.Msg(L("...<p/>...<br/>Tir Na Nog... is not paradise.<br/>What's in that book is actually a lie.<br/>...Tir Na Nog is a real place, but it's not anything like paradise."));
			npc.Msg(L("...<p/>Listen carefully... Tir Na Nog is the land of the Fomors.<br/>And... the Goddess,<br/>who seems so loving, draws zealous adventurers like yourself to manipulate and use you."));
			npc.Msg(L("...<p/>...You don't believe me, do you...? Hah...<br/>The pass I just gave you is what the Fomors use to enter dungeons...<br/>It's an item they use to avoid the barriers set up by the Goddess."), npc.Image("g1_ch09_brownpass"));
			npc.Msg(L("If you offer that to the statue of the Goddess in Barri dungeon,<br/>you will witness everything I just told you with your own eyes.<br/>Here's a Red Wing of the Goddess, so use it if you need it...<br/>You can go there alone, but taking one or two friends with you is probably a better idea."));
			npc.Msg(L("...The best thing to do would be to forget<br/>trying to go to Tir Na Nog.<p/>...Heed my warning..."));
		}
		else if (npc.HasKeyword("g1_10") || npc.HasKeyword("g1_11"))
		{
			if (!npc.HasItem(BrownFomorPass))
				npc.GiveItem(BrownFomorPass);

			npc.Msg(L("...The best thing to do would be to forget<br/>trying to go to Tir Na Nog.<p/>...Heed my warning..."));
		}

		return HookResult.Break;
	}
示例#32
0
    public async Task <HookResult> DougalBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

        if (keyword == "g1_revive_of_glasgavelen")
        {
            if (npc.HasKeyword("g1_37"))
            {
                npc.RemoveKeyword("g1_37");
                npc.GiveKeyword("g1_37_2");

                npc.Msg(L("There's a sudden change in the sky.<br/>What's happened?"));
                npc.Msg(L("...<p/>You finally rescued the Goddess.<br/>Congratulations."));
                npc.Msg(Hide.Name, L("(You tell Dougal what you heard from the Goddess.)"));
                npc.Msg(L("...<p/>The Goddess told you that?<br/>But why are you telling me this?<p/>...<p/>...<p/>Ahh. I see.<p/>Heh. Hahaha.<p/>This explains quite a few things."));
                npc.Msg(L("I didn't realize that the 'Added Soul Effect'<br/>that I had told you in order to make you stay here<br/>could have the same effect on me."));
                npc.Msg(L("But you already seem to have guessed it.<br/>No, you must already know about it since that is essentially why you came here,<br/>to tell me this, right?"));
                npc.Msg(L("Right...<br/>I'm also a soul from another world just like yourself.<br/>I'm probably known to<br/>your people as Glas Ghaibhleann."));
                npc.Msg(L("I came here to reclaim my body<br/>that was summoned by the people<br/>of this world against my will,"));
                npc.Msg(L("but I ended up in the body<br/>of the last remaining human in this world.<br/>My host body is weak.<br/>I cannot even walk properly in this weak Human form."));
                npc.Msg(L("Now that you have learned all about me,<br/>I will proceed to pursue my original goal.<br/>The Goddess probably sent you to me fully<br/>aware of what my intentions are."));
                npc.Msg(L("My goal?<br/>It's obvious, isn't it? I wish to reclaim the freedom of my real body.<br/>I need to free my body into the world I originally belonged to<br/>by breaking away from these shackles."));
                npc.Msg(L("The Goddess Pendant is a key into another world.<br/>If you want, I can inscribe the pattern into<br/>the pendant so it will move you to my body, which is calling me."));
                npc.Msg(L("However, my body that's being<br/>controlled by the summoner would be powerful enough to blow away mere humans.<br/>I'm not sure if I should trust you with this task."));
                npc.Msg(L("Can you make me a promise?<br/>Can you promise you will defeat my body?<br/>And return it to where it belongs?"), npc.Button(L("Yes"), "@yes"), npc.Button(L("No"), "@no"));
            }
            else if (npc.HasKeyword("g1_37_2"))
            {
                npc.Msg(L("Can you promise you will defeat my body?<br/>And return it to where it belongs?"), npc.Button(L("Yes"), "@yes"), npc.Button(L("No"), "@no"));
            }
            else if (npc.HasKeyword("g1_38"))
            {
                if (!npc.HasItem(PendantOfTheGoddessBind))
                {
                    npc.GiveItem(PendantOfTheGoddessBind);
                }

                npc.Msg(L("Go to Albey Dungeon and offer the pendant there.<br/>If you succeed,<br/>it will only be a matter time before I free myself from being an Added Soul."));

                return(HookResult.Break);
            }
            else
            {
                return(HookResult.Continue);
            }

            if (await npc.Select() != "@yes")
            {
                npc.Msg(L("Oh..."));
                return(HookResult.Break);
            }
            else if (!npc.HasItem(PendantOfTheGoddess))
            {
                npc.Msg(L("You don't have the pendant on you?"));
                return(HookResult.Break);
            }

            npc.RemoveKeyword("g1_37");
            npc.RemoveKeyword("g1_37_2");
            npc.GiveKeyword("g1_38");

            npc.RemoveItem(PendantOfTheGoddess);
            npc.GiveItem(PendantOfTheGoddessBind);
            npc.GiveItem(Item.CreateWarpScroll(63009, "tirnanog_dungeon"));

            npc.Msg(L("Okay, I'll trust you.<br/>I guess it might not be a bad idea to trust you since<br/>you rescued the Goddess."));
            npc.Msg(L("Go to Albey Dungeon and offer this pendant there.<br/>You know how to use the Red Wings of a Goddess, right?<br/>If you succeed,<br/>it will only be a matter time before I free myself from being an Added Soul."));
        }

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

			npc.GiveItem(BookOfRevenge3Translated);
			npc.Notice(L("You have received The Book of Revenge, Vol. III (Translated) from Kristell."));

			npc.Msg(L("Here is the translated copy you've been waiting for.<br/>With that, I've finished translating all three volumes of the Book of Revenge."));
			npc.Msg(L("...<br/>I must warn you...<br/>This last volume contains some...disturbing passages."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
示例#34
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;
	}
示例#35
0
	public async Task<HookResult> KristellBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;

		if (keyword == "g1_dulbrau2")
		{
			if (npc.HasKeyword("g1_14"))
			{
				npc.RemoveKeyword("g1_14");
				npc.GiveKeyword("g1_15");

				npc.GiveItem(TarlachsGlassesPouch);
				npc.GiveWarpScroll(63009, "Rabbie_Dungeon");

				npc.Msg(L("...How... how did you interpret...it...<br/>It means that the Goddess is sending Fomors here?<br/>Where did you hear that...?<br/>What...? The wizard...you heard from a Druid?"));
				npc.Msg(L("...Named Tarlach...?"));
				npc.Msg(L("Ahh, I see...<br/>I understand... So Tarlach is still alive after all."));
				npc.Msg(Hide.Name, L("(Kristell closes her eyes and smiles.)"));
				npc.Msg(L("Dul Brau Dairam Shanon.<br/>Truth is, I was the<br/>one who taught Tarlach the meaning of those words."));
				npc.Msg(L("Yes...I am Bondi Gordisse.<br/>I'm what you people call Fomor. A monster..."));
				npc.Msg(L("I don't look it, eh?<br/>I have become a human with the blessings of the gods..."));
				npc.Msg(L("Ah... But I've rambled on too much...<br/>I apologize."));
				npc.Msg(L("The words on that medal...<br/>It's true that it means to seek out the power of Morrighan."));
				npc.Msg(L("But...the the goddess isn't the one sending the Fomors.<br/>I can swear on my honor as a priestess.<br/>Tarlach misunderstood that part.<br/>The Goddess has always been looking after mankind, even as a statue."));
				npc.Msg(L("That's only an amulet for Fomors<br/>There's no meaning behind those words anymore..."));
				npc.Msg(L("...<br/>Can you tell me where Tarlach is...?"));
				npc.Msg(L("...You don't seem to trust me either.<br/>Is this because I told you I was a Fomor?"));
				npc.Msg(L("I see...<br/>Well, then..."));
				npc.Msg(L("What I just gave you is the only item I've ever received from Tarlach...<br/>It's an item that holds his memory."), npc.Image("g1_ch14_glassespocket"));
				npc.Msg(L("If you go to Rabbi dungeon alone and offer this on the altar of the Goddess...<br/>You will be able to trust me.<br/>I'll give you a Red Wing of the Goddess<br/>so you can get to Rabbie Dungeon easily."), npc.Image("g1_ch14_glassespocket"));
				npc.Msg(Hide.None, L("(You receive Tarlach's Spectacle Pouch from Kristell.)"));
			}
			else if (npc.HasKeyword("g1_15"))
			{
				if (!npc.HasItem(TarlachsGlassesPouch))
					npc.GiveItem(TarlachsGlassesPouch);

				npc.Msg(L("If you go to Rabbi dungeon alone and offer the pouch on the altar of the Goddess...<br/>You will be able to trust me."));
			}

			return HookResult.Break;
		}
		else if (keyword == "g1_succubus")
		{
			npc.RemoveKeyword("g1_16");
			npc.GiveKeyword("g1_17");
			npc.RemoveKeyword("g1_succubus");
			npc.GiveKeyword("g1_message_of_kristell");

			npc.Msg(L("...<p/>Hello, I see you're back...<br/>Do you believe me now...?"));
			npc.Msg(L("I'm not trying to hurt Tarlach or anything.<br/>I only want to know how he's doing."));
			npc.Msg(L("You still seem reluctant...<br/>Well then...I have a favor to ask."));
			npc.Msg(L("Tell Tarlach how I am doing<br/>and let him know that I really want to meet him...<br/>That I have something I want to tell him...<br/>...that should be okay...right?"));
			npc.Msg(L("...If you understand how hard it is for a woman to<br/>reveal her true intentions and her past..."));
			npc.Msg(L("...Please do this favor for me..."));

			return HookResult.Break;
		}
		else if (keyword == "g1_message_of_kristell")
		{
			npc.Msg(L("Tell Tarlach how I am doing<br/>...Please do this favor for me..."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
	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;
	}
示例#37
0
	public async Task<HookResult> DougalBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;

		if (keyword == "g1_revive_of_glasgavelen")
		{
			if (npc.HasKeyword("g1_37"))
			{
				npc.RemoveKeyword("g1_37");
				npc.GiveKeyword("g1_37_2");

				npc.Msg(L("There's a sudden change in the sky.<br/>What's happened?"));
				npc.Msg(L("...<p/>You finally rescued the Goddess.<br/>Congratulations."));
				npc.Msg(Hide.Name, L("(You tell Dougal what you heard from the Goddess.)"));
				npc.Msg(L("...<p/>The Goddess told you that?<br/>But why are you telling me this?<p/>...<p/>...<p/>Ahh. I see.<p/>Heh. Hahaha.<p/>This explains quite a few things."));
				npc.Msg(L("I didn't realize that the 'Added Soul Effect'<br/>that I had told you in order to make you stay here<br/>could have the same effect on me."));
				npc.Msg(L("But you already seem to have guessed it.<br/>No, you must already know about it since that is essentially why you came here,<br/>to tell me this, right?"));
				npc.Msg(L("Right...<br/>I'm also a soul from another world just like yourself.<br/>I'm probably known to<br/>your people as Glas Ghaibhleann."));
				npc.Msg(L("I came here to reclaim my body<br/>that was summoned by the people<br/>of this world against my will,"));
				npc.Msg(L("but I ended up in the body<br/>of the last remaining human in this world.<br/>My host body is weak.<br/>I cannot even walk properly in this weak Human form."));
				npc.Msg(L("Now that you have learned all about me,<br/>I will proceed to pursue my original goal.<br/>The Goddess probably sent you to me fully<br/>aware of what my intentions are."));
				npc.Msg(L("My goal?<br/>It's obvious, isn't it? I wish to reclaim the freedom of my real body.<br/>I need to free my body into the world I originally belonged to<br/>by breaking away from these shackles."));
				npc.Msg(L("The Goddess Pendant is a key into another world.<br/>If you want, I can inscribe the pattern into<br/>the pendant so it will move you to my body, which is calling me."));
				npc.Msg(L("However, my body that's being<br/>controlled by the summoner would be powerful enough to blow away mere humans.<br/>I'm not sure if I should trust you with this task."));
				npc.Msg(L("Can you make me a promise?<br/>Can you promise you will defeat my body?<br/>And return it to where it belongs?"), npc.Button(L("Yes"), "@yes"), npc.Button(L("No"), "@no"));
			}
			else if (npc.HasKeyword("g1_37_2"))
			{
				npc.Msg(L("Can you promise you will defeat my body?<br/>And return it to where it belongs?"), npc.Button(L("Yes"), "@yes"), npc.Button(L("No"), "@no"));
			}
			else if (npc.HasKeyword("g1_38"))
			{
				if (!npc.HasItem(PendantOfTheGoddessBind))
					npc.GiveItem(PendantOfTheGoddessBind);

				npc.Msg(L("Go to Albey Dungeon and offer the pendant there.<br/>If you succeed,<br/>it will only be a matter time before I free myself from being an Added Soul."));

				return HookResult.Break;
			}
			else
			{
				return HookResult.Continue;
			}

			if (await npc.Select() != "@yes")
			{
				npc.Msg(L("Oh..."));
				return HookResult.Break;
			}
			else if (!npc.HasItem(PendantOfTheGoddess))
			{
				npc.Msg(L("You don't have the pendant on you?"));
				return HookResult.Break;
			}

			npc.RemoveKeyword("g1_37");
			npc.RemoveKeyword("g1_37_2");
			npc.GiveKeyword("g1_38");

			npc.RemoveItem(PendantOfTheGoddess);
			npc.GiveItem(PendantOfTheGoddessBind);
			npc.GiveItem(Item.CreateWarpScroll(63009, "TirNaNog_Dungeon"));

			npc.Msg(L("Okay, I'll trust you.<br/>I guess it might not be a bad idea to trust you since<br/>you rescued the Goddess."));
			npc.Msg(L("Go to Albey Dungeon and offer this pendant there.<br/>You know how to use the Red Wings of a Goddess, right?<br/>If you succeed,<br/>it will only be a matter time before I free myself from being an Added Soul."));
		}

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

			npc.GiveItem(BookOfRevenge3);
			npc.Notice(L("You have received The Book of Revenge, Vol. III from Seumas."));

			npc.Msg(L("Oh, that was fast, <username/>...<br/>Did Sion like it? Hah... Thank you...<br/>Here...is the...book...<br/>Hope it would be helpful..."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
示例#39
0
	public async Task<HookResult> RanaldAfterIntro(NpcScript npc, params object[] args)
	{
		if (!npc.QuestActive(this.Id, "ptj2"))
			return HookResult.Continue;

		npc.FinishQuest(this.Id, "ptj2");
		npc.GiveItem(Anthology);

		npc.Msg(L("You are working for Caitin now?<br/>Then, can you do me a favor? Please give this to her for me."));
		npc.Msg(Hide.Name, L("(Received an Anthology.)"));
		npc.Msg(L("I borrowed this from her,<br/>but don't have time to return it right now."));

		return HookResult.Break;
	}
示例#40
0
	public async Task<HookResult> AeiraBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;

		if (keyword == "g1_memo_of_parcelman")
		{
			if (npc.HasItem(WizardsNote))
				npc.GiveItem(WizardsNote);

			npc.Msg(L("If you offer the note on the Altar of Ciar Dungeon, you'll be transported to where you can find the book."));

			return HookResult.Break;
		}

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

        if (keyword == "g1_dulbrau2")
        {
            if (npc.HasKeyword("g1_14"))
            {
                npc.RemoveKeyword("g1_14");
                npc.GiveKeyword("g1_15");

                npc.GiveItem(TarlachsGlassesPouch);
                npc.GiveWarpScroll(63009, "Rabbie_Dungeon");

                npc.Msg(L("...How... how did you interpret...it...<br/>It means that the Goddess is sending Fomors here?<br/>Where did you hear that...?<br/>What...? The wizard...you heard from a Druid?"));
                npc.Msg(L("...Named Tarlach...?"));
                npc.Msg(L("Ahh, I see...<br/>I understand... So Tarlach is still alive after all."));
                npc.Msg(Hide.Name, L("(Kristell closes her eyes and smiles.)"));
                npc.Msg(L("Dul Brau Dairam Shanon.<br/>Truth is, I was the<br/>one who taught Tarlach the meaning of those words."));
                npc.Msg(L("Yes...I am Bondi Gordisse.<br/>I'm what you people call Fomor. A monster..."));
                npc.Msg(L("I don't look it, eh?<br/>I have become a human with the blessings of the gods..."));
                npc.Msg(L("Ah... But I've rambled on too much...<br/>I apologize."));
                npc.Msg(L("The words on that medal...<br/>It's true that it means to seek out the power of Morrighan."));
                npc.Msg(L("But...the the goddess isn't the one sending the Fomors.<br/>I can swear on my honor as a priestess.<br/>Tarlach misunderstood that part.<br/>The Goddess has always been looking after mankind, even as a statue."));
                npc.Msg(L("That's only an amulet for Fomors<br/>There's no meaning behind those words anymore..."));
                npc.Msg(L("...<br/>Can you tell me where Tarlach is...?"));
                npc.Msg(L("...You don't seem to trust me either.<br/>Is this because I told you I was a Fomor?"));
                npc.Msg(L("I see...<br/>Well, then..."));
                npc.Msg(L("What I just gave you is the only item I've ever received from Tarlach...<br/>It's an item that holds his memory."), npc.Image("g1_ch14_glassespocket"));
                npc.Msg(L("If you go to Rabbi dungeon alone and offer this on the altar of the Goddess...<br/>You will be able to trust me.<br/>I'll give you a Red Wing of the Goddess<br/>so you can get to Rabbie Dungeon easily."), npc.Image("g1_ch14_glassespocket"));
                npc.Msg(Hide.None, L("(You receive Tarlach's Spectacle Pouch from Kristell.)"));
            }
            else if (npc.HasKeyword("g1_15"))
            {
                if (!npc.HasItem(TarlachsGlassesPouch))
                {
                    npc.GiveItem(TarlachsGlassesPouch);
                }

                npc.Msg(L("If you go to Rabbi dungeon alone and offer the pouch on the altar of the Goddess...<br/>You will be able to trust me."));
            }

            return(HookResult.Break);
        }
        else if (keyword == "g1_succubus")
        {
            npc.RemoveKeyword("g1_16");
            npc.GiveKeyword("g1_17");
            npc.RemoveKeyword("g1_succubus");
            npc.GiveKeyword("g1_message_of_kristell");

            npc.Msg(L("...<p/>Hello, I see you're back...<br/>Do you believe me now...?"));
            npc.Msg(L("I'm not trying to hurt Tarlach or anything.<br/>I only want to know how he's doing."));
            npc.Msg(L("You still seem reluctant...<br/>Well then...I have a favor to ask."));
            npc.Msg(L("Tell Tarlach how I am doing<br/>and let him know that I really want to meet him...<br/>That I have something I want to tell him...<br/>...that should be okay...right?"));
            npc.Msg(L("...If you understand how hard it is for a woman to<br/>reveal her true intentions and her past..."));
            npc.Msg(L("...Please do this favor for me..."));

            return(HookResult.Break);
        }
        else if (keyword == "g1_message_of_kristell")
        {
            npc.Msg(L("Tell Tarlach how I am doing<br/>...Please do this favor for me..."));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
示例#42
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);
    }
示例#43
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;
	}