Пример #1
0
	public async Task<HookResult> TalkDuncan(NpcScript npc, params object[] args)
	{
		if(npc.QuestActive(this.Id, "talk_duncan"))
		{
			npc.FinishQuest(this.Id, "talk_duncan");
			
			npc.Msg(Hide.Name, "(You hand Nao's Letter of Introduction to Duncan.)");
			npc.Msg("Ah, a letter from Nao.<br/>Hard to believe that little<br/>tomboy's all grown up...");
			npc.Msg(Hide.Name, "(Duncan folds the letter in half and puts it in his pocket.)");
			npc.Msg("So, you're <username/>.<br/>I'm Duncan, the chief of this town.<br/>Welcome to Tir Chonaill.");
			npc.Msg("Would you like to learn how to complete quests?");
			npc.Msg(npc.Image("npctalk_questwindow", true, 272, 235), npc.Text("Press the "), npc.Hotkey("QuestView"), npc.Text(" key or<br/>press the Quest button at the bottom of your screen.<br>The quest window will appear and display your current quests."));

			while (true)
			{
				npc.Msg(npc.Text("Press the "), npc.Hotkey("QuestView"), npc.Text(" key or<br/>press the Quest button at the bottom of your screen."), npc.Button("I pressed the Quest button", "@pressed"), npc.Button("$hidden", "@quest_btn_clicked", "autoclick_QuestView"));
				if (await npc.Select() != "@pressed")
					break;
				npc.Msg("Hmm... Are you sure you pressed the Quest button?<br/>It's possible that the Quest Window was already open, so<br/>try pressing it again.");
			}

			npc.Msg("Well done. See the list of quests?<br/>Clicking on a quest brings up the quest's details.<br/>Quests will show a yellow Complete button<br/>next to their names when you finish them.");
			npc.Msg("Try pressing the Complete button now.<br/>As important as it is to complete quests,<br/>it's just as important to press the \"Complete\" button<br/>afterwards to recieve your rewards.");
			npc.Msg("(Duncan looks at you with his benevolent hazel eyes.)");
			npc.Msg("You've just learned one very basic skill<br/>to survive in Erinn.");
			npc.Msg("Soon, you will recieve a quest from an owl.<br/>Then, you will be able to start your training for real.");

			return HookResult.Break;
		}
		
		return HookResult.Continue;
	}
Пример #2
0
    public async Task <HookResult> TarlachBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

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

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

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Пример #3
0
    public async Task <HookResult> TalkDuncan(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "talk_duncan"))
        {
            npc.FinishQuest(this.Id, "talk_duncan");

            npc.Msg(Hide.Name, "(You hand Nao's Letter of Introduction to Duncan.)");
            npc.Msg("Ah, a letter from Nao.<br/>Hard to believe that little<br/>tomboy's all grown up...");
            npc.Msg(Hide.Name, "(Duncan folds the letter in half and puts it in his pocket.)");
            npc.Msg("So, you're <username/>.<br/>I'm Duncan, the chief of this town.<br/>Welcome to Tir Chonaill.");
            npc.Msg("Would you like to learn how to complete quests?");
            npc.Msg(npc.Image("npctalk_questwindow", true, 272, 235), npc.Text("Press the "), npc.Hotkey("QuestView"), npc.Text(" key or<br/>press the Quest button at the bottom of your screen.<br>The quest window will appear and display your current quests."));

            while (true)
            {
                npc.Msg(npc.Text("Press the "), npc.Hotkey("QuestView"), npc.Text(" key or<br/>press the Quest button at the bottom of your screen."), npc.Button("I pressed the Quest button", "@pressed"), npc.Button("$hidden", "@quest_btn_clicked", "autoclick_QuestView"));
                if (await npc.Select() != "@pressed")
                {
                    break;
                }
                npc.Msg("Hmm... Are you sure you pressed the Quest button?<br/>It's possible that the Quest Window was already open, so<br/>try pressing it again.");
            }

            npc.Msg("Well done. See the list of quests?<br/>Clicking on a quest brings up the quest's details.<br/>Quests will show a yellow Complete button<br/>next to their names when you finish them.");
            npc.Msg("Try pressing the Complete button now.<br/>As important as it is to complete quests,<br/>it's just as important to press the \"Complete\" button<br/>afterwards to recieve your rewards.");
            npc.Msg("(Duncan looks at you with his benevolent hazel eyes.)");
            npc.Msg("You've just learned one very basic skill<br/>to survive in Erinn.");
            npc.Msg("Soon, you will recieve a quest from an owl.<br/>Then, you will be able to start your training for real.");

            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> DuncanBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;

		if (keyword == "g1_goddess_morrighan2")
		{
			if (npc.HasKeyword("g1_30"))
			{
				npc.RemoveKeyword("g1_30");
				npc.GiveKeyword("g1_31");

				npc.Msg(Hide.Name, L("(You tell Duncan about the experience Tarlach had in Tir Na Nog.)"));
				npc.Msg(L("Is that what happened to Tarlach?<br/>That's unbelievable.<br/>But I suppose there's no choice but to believe him. Hmmm."));
				npc.Msg(L("There is one more thing I'd like to tell you.<br/>What I'm about to tell you is a secret I've kept all my life,<br/>so promise me you won't tell anyone else, okay?"));
				npc.Msg(L("You said Mores tried to save<br/>Tarlach and his friends at the last minute when they went to Tir Na Nog, right?"));
				npc.Msg(L("I'm sure that wasn't because of Tarlach."));
				npc.Msg(L("Mari. It was because of Mari.<br/>Mari was Mores's only daughter.<br/>Mores recognized that fact."), npc.Image("g1_ch27_mari"));
				npc.Msg(L("I knew his wife Shiela before she passed away.<br/>She was killed by humans instigated by nobles,<br/>but Mari was sent to me with the help of the wolves and deer."));
				npc.Msg(L("Mari's memory of her parents<br/>was personally erased by her mother."));
				npc.Msg(L("It would mean death for her to<br/>remember her parents."));
				npc.Msg(L("So I raised Mari myself."));
				npc.Msg(L("Yes, I think I've told you enought about this story."));
				npc.Msg(L("Hmm. Everything else fits into the story except<br/>the Goddess.<br/>You don't aactually agree with Tarlach<br/>about the Goddess, do you?"));
				npc.Msg(L("Ask the other people.<br/>Don't tell them what you think, but just listen<br/>to see if the Goddess is someone who'd betray humankind."));
			}

			npc.Msg(L("I'll remind you one more time.<br/>Please keep what I told you about Mari a secret."));

			return HookResult.Break;
		}
		else if (keyword == "g1_request_from_goddess")
		{
			var owlDelay = 36 * 60; // 1 Erinn day
			if (IsEnabled("ShorterWaitTimesChapter1"))
				owlDelay = 4 * 60;

			npc.SendOwl(this.Id, owlDelay);

			npc.RemoveKeyword("g1_32");
			npc.GiveKeyword("g1_33");
			npc.RemoveKeyword("g1_request_from_goddess");
			npc.GiveKeyword("g1_way_to_tirnanog1");

			npc.Msg(L("You dreamt of the Goddess again?<br/>The Goddess said that the day of Glas Ghaibhleann's resurrection is approaching?"));
			npc.Msg(L("It's just as I'd thought... Is Mores<br/>behind the resurrection of Glas Ghaibhleann?<br/>We don't even have the slightest clue what to do about it yet.<br/>This is a big problem!"));
			npc.Msg(L("I think I forgot to tell you this,<br/>Magic doesn't work on Adamantium,<br/>so it's difficult to fuse to a magical creature."));
			npc.Msg(L("That's why special ingredients are required.<br/>They say that the soul of a brave human is needed as an ingredient."));
			npc.Msg(L("It's possible that they may already have the soul<br/>of one of the Three Missing Warriors.<br/>Then this is truly a big problem.<br/>We have to stop them somehow."));
			npc.Msg(L("Now hurry up and find out how to get there!"));

			return HookResult.Break;
		}

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

			npc.Msg(L("Welcome. You must be... <username/>?"));
			npc.Msg(L("...So it was you who was looking for the book.<br/>Aeira had asked me about the book before.<br/>Did she tell you what I told her...?"));
			npc.Msg(L("Yes, the book isn't actually mine.<br/>It belongs to Seumas, who works at the ruins excavation site in Gairech."), npc.Image("g1_ch23_seumas"));
			npc.Msg(L("He said he found it not too long ago while excavating the site.<br/>But he could not read the writing<br/>and asked around and came to me to interpret it."), npc.Image("g1_ch23_seumas"));
			npc.Msg(L("But... it was too difficult for me as well.<br/>Forget translating...I couldn't even read one sentence of it.<br/>I was barely able to figure out the title."));
			npc.Msg(L("When I told Seumas, he said it was okay, and asked me to return his book, so<br/>as a matter of fact, I just gave the book back to him."));
			npc.Msg(L("I don't know if you'll be able to read it because it's such a difficult book to read...<br/>but if you want to take a look at it, stop by the...<br/>ruins excavation site in Gairech."));
			npc.Msg(L("I'm sure Seumas will be happy to find out<br/>if there is indeed a way the book can be translated."));

			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_glasgavelen")
		{
			if (npc.HasKeyword("g1_26"))
			{
				npc.RemoveKeyword("g1_26");
				npc.GiveKeyword("g1_27");

				npc.Msg(L("What? What did you just say?"));
				npc.Msg(L("G-Glas Ghaibhleann?<br/>This can't be... Where did you hear that name?"));
				npc.Msg(L("Does the third book of Fomors cover that?<br/>I'd like to read it. If you have it on you, please let me see it."), npc.Button(L("Here it is."), "@yes"), npc.Button(L("No"), "@no"));
			}
			else if (npc.HasKeyword("g1_27"))
			{
				npc.Msg(L("I'd like to read the third book of Fomors. If you have it on you, please let me see it."), npc.Button(L("Here it is."), "@yes"), npc.Button(L("No"), "@no"));
			}

			if (await npc.Select() != "@yes" || !npc.HasItem(BookOfRevenge3Translated))
			{
				npc.Msg(L("Please come back immediately once you have the book on you."));
				return HookResult.Break;
			}

			npc.RemoveKeyword("g1_glasgavelen");
			npc.GiveKeyword("g1_book_of_glasgavelen");

			npc.RemoveItem(BookOfRevenge3Translated);
			npc.Notice(L("You have given the Book of Revenge, Vol. 3 (Translated) to Duncan."));

			npc.Msg(Hide.Name, L("(Duncan receives the book and carefully starts reading.)"));
			npc.Msg(L("This can't be!<br/>Things are a lot more serious than I'd thought.<br/>This is a problem. What should we do?"));
			npc.Msg(L("Glas Ghaibhleann is a legendary giant<br/>that destroyed everything within it's sight with hatred and anger.<br/>It's impossible to describe the fear this monster generates."));
			npc.Msg(L("Once, Glas Ghaibhleann was commanded by an evil god<br/>to rampage all across Erinn.<br/>There was simply nothing we could do about it."), npc.Image("g1_ch24_glasgavelen"));
			npc.Msg(L("That's when our ancestor race, the Partholons, was decimated<br/>and sought refuge in this small mountainous area."));
			npc.Msg(L("I'm sorry. I'm a bit dazed and it's hard to talk.<br/>It'd be more helpful for you to read a book written by our ancestors<br/>who fought against this monster.<br/>Let's see."));
			npc.Msg(L("...<p/>...!!<p/>It's not here!<p/>Ah, don't give up now.<br/>I just forgot that<br/>I'd lent it to someone.<br/>He lives in Bangor and...what was his name?"));
			npc.Msg(L("B-Bri... That's right!<br/>Bryce is the person who borrowed it from me."));
			npc.Msg(L("Tell Bryce about me to get the book and read it.<br/>There is so much more there than I can ever tell you<br/>that is written in that book."));

			return HookResult.Break;
		}
		else if (keyword == "g1_book_of_glasgavelen")
		{
			npc.Msg(L("Tell Bryce about me to get the book and read it.<br/>There is so much more there than I can ever tell you<br/>that is written in that book."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
Пример #8
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;
	}
Пример #9
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;
	}
Пример #10
0
	public async Task<HookResult> GoroBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;

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

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

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

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
Пример #11
0
	public async Task<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;
	}
	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;
	}
Пример #13
0
    public async Task <HookResult> ComganBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

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

        if (npc.HasItem(FomorMedal))
        {
            if (npc.HasKeyword("g1_11"))
            {
                npc.RemoveKeyword("g1_paradise");
                npc.RemoveKeyword("g1_11");
                npc.GiveKeyword("g1_11_1");

                npc.Msg(L("Fomor... Medal? There's such a thing?<br/>Could I see it?"));
                npc.Msg(L("Strange... This is just a medal Priests use..."), npc.Image("g1_ch11_12_fomormedal01"));
                npc.Msg(L("Every Priest has one because they say it<br/>contains the principles that created this world..."));
                npc.Msg(L("I wonder if a Fomor found one that was lost by a Priest...<br/>Hmm...I have mine here with me...<br/>Did you speak to any of the other Priests?"));
            }
            else if (npc.HasKeyword("g1_11_2"))
            {
                npc.RemoveKeyword("g1_11_1");
                npc.RemoveKeyword("g1_11_2");
                npc.GiveKeyword("g1_12");
                npc.RemoveKeyword("g1_medal_of_fomor");
                npc.GiveKeyword("g1_voucher_of_priest");

                npc.Msg(L("(Missing dialog: Talking to Comgan after talking to Meven."));
            }
            else
            {
                npc.Msg(L("Did you speak to any of the other Priests?"));
            }
        }
        else
        {
            npc.Msg(L("Fomor... Medal? There's such a thing?<br/>Could I see it?"));
        }

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

		if (npc.HasItem(FomorMedal))
		{
			if (npc.HasKeyword("g1_11"))
			{
				npc.RemoveKeyword("g1_paradise");
				npc.RemoveKeyword("g1_11");
				npc.GiveKeyword("g1_11_1");

				npc.Msg(L("Fomor... Medal? There's such a thing?<br/>Could I see it?"));
				npc.Msg(L("Strange... This is just a medal Priests use..."), npc.Image("g1_ch11_12_fomormedal01"));
				npc.Msg(L("Every Priest has one because they say it<br/>contains the principles that created this world..."));
				npc.Msg(L("I wonder if a Fomor found one that was lost by a Priest...<br/>Hmm...I have mine here with me...<br/>Did you speak to any of the other Priests?"));
			}
			else if (npc.HasKeyword("g1_11_2"))
			{
				npc.RemoveKeyword("g1_11_1");
				npc.RemoveKeyword("g1_11_2");
				npc.GiveKeyword("g1_12");
				npc.RemoveKeyword("g1_medal_of_fomor");
				npc.GiveKeyword("g1_voucher_of_priest");

				npc.Msg(L("(Missing dialog: Talking to Comgan after talking to Meven."));
			}
			else
			{
				npc.Msg(L("Did you speak to any of the other Priests?"));
			}
		}
		else
		{
			npc.Msg(L("Fomor... Medal? There's such a thing?<br/>Could I see it?"));
		}

		return HookResult.Break;
	}
Пример #17
0
	public async Task<HookResult> TarlachBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;

		if (keyword == "g1_cichol")
		{
			npc.GiveKeyword("g1_33_2");

			npc.Msg(L("Say what!? Someone is pretending to be Morrighan?<br/>White winged...and an obscured face?"));
			npc.Msg(L("I don't believe this! Damn it!<br/>I've been deceived.<br/>Why didn't I think of that?"));
			npc.Msg(L("It's Cichol.<br/>There's no doubt. The god of the Fomors.<br/>I can't forgive him.<br/>He dared deceive not only my friends, but also my master!"), npc.Image("g1_ch32_cichol"));
			npc.Msg(L("Even the Goddess couldn't escape from his power!<br/>No wonder the Goddess was acting so strange."));
			npc.Msg(L("Thank you for letting me know, <username/>.<br/>I was utterly oblivious.<br/>I'm ashamed that I doubted the grace of the Goddess.<br/>even with my power as a druid."));

			// Newer versions of G1 have the dream cutscene here.

			return HookResult.Break;
		}

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

			npc.RemoveKeyword("g1_28");
			npc.GiveKeyword("g1_29");

			npc.RemoveItem(Powder);

			npc.Msg(L("Oh, you found it.<br/>I will put this powder on my glasses right now."));
			npc.Msg(L("This is a memory item that contains the preserved memory I had of that time."), npc.Image("g1_ch25_glasses"));
			npc.Msg(L("I will now cast a magic spell on the item with the magic powder of preservation."));
			npc.Msg(L("...And this is the Red Wing of the Goddess<br/>which will take you to the Rabbie Dungeon...<br/>Go to Rabbie Dungeon and put these glasses on the altar."));
			npc.Msg(L("Then... you will know about...<br/>my anger toward the Goddess and evil spirits..."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
Пример #19
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;
	}
Пример #20
0
    public async Task <HookResult> TarlachBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

        if (keyword == "g1_mores_gwydion")
        {
            if (npc.HasKeyword("g1_19"))
            {
                npc.RemoveKeyword("g1_19");
                npc.GiveKeyword("g1_20");

                npc.Msg(L("Mores Gwydion..."));
                npc.Msg(L("...Yes, he's the author of that book.<br/>He's my mentor who's taught me<br/>...And also a Wizard who'd saved the world."));
                npc.Msg(L("I had always thought that he had passed away but...<br/>he's apparently alive and has sided with the Fomors."));
                npc.Msg(L("...Anyhow, give me the translated book.<br/>I would like to take a look at it."), npc.Button(L("Sure"), "@yes"), npc.Button(L("No"), "@no"));
            }
            else if (npc.HasKeyword("g1_20"))
            {
                npc.Msg(L("Give me the translated book.<br/>I would like to take a look at it."), npc.Button(L("Sure"), "@yes"), npc.Button(L("No"), "@no"));
            }

            if (await npc.Select() != "@yes" || !npc.HasItem(BookOfRevenge))
            {
                npc.Msg(L("Don't you have it with you?"));
                return(HookResult.Break);
            }

            npc.RemoveItem(BookOfRevenge);
            npc.RemoveKeyword("g1_mores_gwydion");
            npc.GiveKeyword("g1_memo_of_lost_thing");

            npc.Msg(Hide.Name, L("(Tarlach flipped through the book.)"));
            npc.Msg(L("Just what I'd tought...<br/>Master had faked his own death<br/>for some reason and now he's helping the Fomors."));
            npc.Msg(L("This must be what Kristell was talking about."));
            npc.Msg(L("'...Okay, I admit it.<br/>Perhaps I didn't lose the token but<br/>I wanted to throw it away..."), npc.Image("g1_ch18_book"));
            npc.Msg(L("Hmm... apparently, Master was mulling over something<br/>after losing some item...<p/>I wonder what it was..."));
            npc.Msg(L("...!<p/>Dunbarton's Town Office<br/>collects lost items and returns them to their rightful owners.<br/>You might be able to find a clue if you<br/>can find what it is that Mores had lost."));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Пример #21
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);
    }
Пример #22
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);
    }
Пример #23
0
    public async Task <HookResult> AeiraAfterIntro(NpcScript npc, params object[] args)
    {
        if (npc.Player.QuestActive(this.Id, "talk_aeira"))
        {
            npc.Player.CompleteQuest(this.Id);

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

            npc.Player.GiveWarpScroll(63009, "Ciar_Dungeon");

            npc.Msg(L("Ah! <username/>! Welcome. Do you remember the book I gave you before, 'Land of Eternity, Tir Na Nog?'<br/>The author of that book, Leslie, called.<br/>You see, Leslie is a famous historian and an avide explorer."));
            npc.Msg(L("She sent me this note.<br/>It says that she once found 'The Book of Revenge' inside Ciar dungeon, written in Fomor language.<br/>She said if you offer this note on the Altar of Ciar Dungeon, you'll be transported to where you can find the book.<br/>...Apparently this note has some kind of magic on it or something..."), npc.Image("g1_ch21_memo"));
            npc.Msg(L("And...here, this is Aeira's special gift to you, The Red Wing of the Goddess!<br/>I will give you the note and the Red Wing of the Goddess!<br/>I wish you the best of luck."));

            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_glasgavelen")
        {
            if (npc.Player.HasKeyword("g1_26"))
            {
                npc.Player.RemoveKeyword("g1_26");
                npc.Player.GiveKeyword("g1_27");

                npc.Msg(L("What? What did you just say?"));
                npc.Msg(L("G-Glas Ghaibhleann?<br/>This can't be... Where did you hear that name?"));
                npc.Msg(L("Does the third book of Fomors cover that?<br/>I'd like to read it. If you have it on you, please let me see it."), npc.Button(L("Here it is."), "@yes"), npc.Button(L("No"), "@no"));
            }
            else if (npc.Player.HasKeyword("g1_27"))
            {
                npc.Msg(L("I'd like to read the third book of Fomors. If you have it on you, please let me see it."), npc.Button(L("Here it is."), "@yes"), npc.Button(L("No"), "@no"));
            }

            if (await npc.Select() != "@yes" || !npc.Player.HasItem(BookOfRevenge3Translated))
            {
                npc.Msg(L("Please come back immediately once you have the book on you."));
                return(HookResult.Break);
            }

            npc.Player.RemoveKeyword("g1_glasgavelen");
            npc.Player.GiveKeyword("g1_book_of_glasgavelen");

            npc.Player.RemoveItem(BookOfRevenge3Translated);
            npc.Player.Notice(L("You have given the Book of Revenge, Vol. 3 (Translated) to Duncan."));

            npc.Msg(Hide.Name, L("(Duncan receives the book and carefully starts reading.)"));
            npc.Msg(L("This can't be!<br/>Things are a lot more serious than I'd thought.<br/>This is a problem. What should we do?"));
            npc.Msg(L("Glas Ghaibhleann is a legendary giant<br/>that destroyed everything within it's sight with hatred and anger.<br/>It's impossible to describe the fear this monster generates."));
            npc.Msg(L("Once, Glas Ghaibhleann was commanded by an evil god<br/>to rampage all across Erinn.<br/>There was simply nothing we could do about it."), npc.Image("g1_ch24_glasgavelen"));
            npc.Msg(L("That's when our ancestor race, the Partholons, was decimated<br/>and sought refuge in this small mountainous area."));
            npc.Msg(L("I'm sorry. I'm a bit dazed and it's hard to talk.<br/>It'd be more helpful for you to read a book written by our ancestors<br/>who fought against this monster.<br/>Let's see."));
            npc.Msg(L("...<p/>...!!<p/>It's not here!<p/>Ah, don't give up now.<br/>I just forgot that<br/>I'd lent it to someone.<br/>He lives in Bangor and...what was his name?"));
            npc.Msg(L("B-Bri... That's right!<br/>Bryce is the person who borrowed it from me."));
            npc.Msg(L("Tell Bryce about me to get the book and read it.<br/>There is so much more there than I can ever tell you<br/>that is written in that book."));

            return(HookResult.Break);
        }
        else if (keyword == "g1_book_of_glasgavelen")
        {
            npc.Msg(L("Tell Bryce about me to get the book and read it.<br/>There is so much more there than I can ever tell you<br/>that is written in that book."));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Пример #25
0
	public async Task<HookResult> AeiraAfterIntro(NpcScript npc, params object[] args)
	{
		if (npc.QuestActive(this.Id, "talk_aeira"))
		{
			npc.CompleteQuest(this.Id);

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

			npc.GiveWarpScroll(63009, "Ciar_Dungeon");

			npc.Msg(L("Ah! <username/>! Welcome. Do you remember the book I gave you before, 'Land of Eternity, Tir Na Nog?'<br/>The author of that book, Leslie, called.<br/>You see, Leslie is a famous historian and an avide explorer."));
			npc.Msg(L("She sent me this note.<br/>It says that she once found 'The Book of Revenge' inside Ciar dungeon, written in Fomor language.<br/>She said if you offer this note on the Altar of Ciar Dungeon, you'll be transported to where you can find the book.<br/>...Apparently this note has some kind of magic on it or something..."), npc.Image("g1_ch21_memo"));
			npc.Msg(L("And...here, this is Aeira's special gift to you, The Red Wing of the Goddess!<br/>I will give you the note and the Red Wing of the Goddess!<br/>I wish you the best of luck."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
Пример #26
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);
    }
Пример #27
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;
	}
Пример #28
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> NoraKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

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

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

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

            npc.End();

            return(HookResult.End);
        }

        return(HookResult.Continue);
    }
Пример #30
0
    public async Task <HookResult> TarlachAfterIntro(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "give_powder") && npc.HasItem(Powder))
        {
            npc.CompleteQuest(this.Id);

            npc.RemoveKeyword("g1_28");
            npc.GiveKeyword("g1_29");

            npc.RemoveItem(Powder);

            npc.Msg(L("Oh, you found it.<br/>I will put this powder on my glasses right now."));
            npc.Msg(L("This is a memory item that contains the preserved memory I had of that time."), npc.Image("g1_ch25_glasses"));
            npc.Msg(L("I will now cast a magic spell on the item with the magic powder of preservation."));
            npc.Msg(L("...And this is the Red Wing of the Goddess<br/>which will take you to the Rabbie Dungeon...<br/>Go to Rabbie Dungeon and put these glasses on the altar."));
            npc.Msg(L("Then... you will know about...<br/>my anger toward the Goddess and evil spirits..."));

            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;
	}
    public async Task <HookResult> LassarAfterIntro(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "talk_lassar"))
        {
            npc.FinishQuest(this.Id, "talk_lassar");

            npc.Msg(L("Welcome. You must be... <username/>?"));
            npc.Msg(L("...So it was you who was looking for the book.<br/>Aeira had asked me about the book before.<br/>Did she tell you what I told her...?"));
            npc.Msg(L("Yes, the book isn't actually mine.<br/>It belongs to Seumas, who works at the ruins excavation site in Gairech."), npc.Image("g1_ch23_seumas"));
            npc.Msg(L("He said he found it not too long ago while excavating the site.<br/>But he could not read the writing<br/>and asked around and came to me to interpret it."), npc.Image("g1_ch23_seumas"));
            npc.Msg(L("But... it was too difficult for me as well.<br/>Forget translating...I couldn't even read one sentence of it.<br/>I was barely able to figure out the title."));
            npc.Msg(L("When I told Seumas, he said it was okay, and asked me to return his book, so<br/>as a matter of fact, I just gave the book back to him."));
            npc.Msg(L("I don't know if you'll be able to read it because it's such a difficult book to read...<br/>but if you want to take a look at it, stop by the...<br/>ruins excavation site in Gairech."));
            npc.Msg(L("I'm sure Seumas will be happy to find out<br/>if there is indeed a way the book can be translated."));

            return(HookResult.Break);
        }

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

		if (keyword == "g1_book_of_glasgavelen")
		{
			npc.RemoveKeyword("g1_27");
			npc.GiveKeyword("g1_28");
			npc.RemoveKeyword("g1_book_of_glasgavelen");
			npc.GiveKeyword("g1_bone_of_glasgavelen");

			npc.Msg(L("...So you must be the one who spoke to Duncan in Tir Chonaill.<br/>I was roughly brought up to speed by the owl he'd sent me."));
			npc.Msg(L("I've always had an interest in old stories, so<br/>when I happened to meet the Chief, I was able to read this book.<br/>I am done with this book now, so you can take it if you want to."));
			npc.Msg(L("By the way, I found something very interesting in this book.<br/>Resurrecting that monster apparently requires this mineral called Adamantium.<br/>Adamantium is a mystical metal that's resistant to magic powers.<br/>It's a type of metal that is only found in the mines of Bangor."), npc.Image("g1_ch24_adaman"));
			npc.Msg(L("The problem is... Adamantium is no longer<br/>being produced in the mines of Bangor.<br/>And apparently, it's been like that for a long time."));
			npc.Msg(L("When this happens, it's either on of those things."));
			npc.Msg(L("Either this region has run out of Adamantium deposits...<br/>Or..."));
			npc.Msg(L("Someone else is mining them all."));

			return HookResult.Break;
		}

		return HookResult.Continue;
	}
Пример #34
0
    public async Task <HookResult> DuncanBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

        if (keyword == "g1_goddess_morrighan2")
        {
            if (npc.HasKeyword("g1_30"))
            {
                npc.RemoveKeyword("g1_30");
                npc.GiveKeyword("g1_31");

                npc.Msg(Hide.Name, L("(You tell Duncan about the experience Tarlach had in Tir Na Nog.)"));
                npc.Msg(L("Is that what happened to Tarlach?<br/>That's unbelievable.<br/>But I suppose there's no choice but to believe him. Hmmm."));
                npc.Msg(L("There is one more thing I'd like to tell you.<br/>What I'm about to tell you is a secret I've kept all my life,<br/>so promise me you won't tell anyone else, okay?"));
                npc.Msg(L("You said Mores tried to save<br/>Tarlach and his friends at the last minute when they went to Tir Na Nog, right?"));
                npc.Msg(L("I'm sure that wasn't because of Tarlach."));
                npc.Msg(L("Mari. It was because of Mari.<br/>Mari was Mores's only daughter.<br/>Mores recognized that fact."), npc.Image("g1_ch27_mari"));
                npc.Msg(L("I knew his wife Shiela before she passed away.<br/>She was killed by humans instigated by nobles,<br/>but Mari was sent to me with the help of the wolves and deer."));
                npc.Msg(L("Mari's memory of her parents<br/>was personally erased by her mother."));
                npc.Msg(L("It would mean death for her to<br/>remember her parents."));
                npc.Msg(L("So I raised Mari myself."));
                npc.Msg(L("Yes, I think I've told you enought about this story."));
                npc.Msg(L("Hmm. Everything else fits into the story except<br/>the Goddess.<br/>You don't aactually agree with Tarlach<br/>about the Goddess, do you?"));
                npc.Msg(L("Ask the other people.<br/>Don't tell them what you think, but just listen<br/>to see if the Goddess is someone who'd betray humankind."));
            }

            npc.Msg(L("I'll remind you one more time.<br/>Please keep what I told you about Mari a secret."));

            return(HookResult.Break);
        }
        else if (keyword == "g1_request_from_goddess")
        {
            var owlDelay = 36 * 60;             // 1 Erinn day
            if (IsEnabled("ShorterWaitTimesChapter1"))
            {
                owlDelay = 4 * 60;
            }

            npc.SendOwl(this.Id, owlDelay);

            npc.RemoveKeyword("g1_32");
            npc.GiveKeyword("g1_33");
            npc.RemoveKeyword("g1_request_from_goddess");
            npc.GiveKeyword("g1_way_to_tirnanog1");

            npc.Msg(L("You dreamt of the Goddess again?<br/>The Goddess said that the day of Glas Ghaibhleann's resurrection is approaching?"));
            npc.Msg(L("It's just as I'd thought... Is Mores<br/>behind the resurrection of Glas Ghaibhleann?<br/>We don't even have the slightest clue what to do about it yet.<br/>This is a big problem!"));
            npc.Msg(L("I think I forgot to tell you this,<br/>Magic doesn't work on Adamantium,<br/>so it's difficult to fuse to a magical creature."));
            npc.Msg(L("That's why special ingredients are required.<br/>They say that the soul of a brave human is needed as an ingredient."));
            npc.Msg(L("It's possible that they may already have the soul<br/>of one of the Three Missing Warriors.<br/>Then this is truly a big problem.<br/>We have to stop them somehow."));
            npc.Msg(L("Now hurry up and find out how to get there!"));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Пример #35
0
    public async Task <HookResult> GoroBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

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

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

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

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Пример #36
0
    public async Task <HookResult> AfterIntro(NpcScript npc, params object[] args)
    {
        if (npc.QuestActive(this.Id, "deliver") && npc.HasItem(Earring))
        {
            npc.RemoveItem(Earring);
            npc.CompleteQuest(this.Id);

            npc.Msg(Hide.Name, L("(You have given Lost Earring to Duncan.)"));
            npc.Msg(L("Ahh, that's the earring. Well done.<br/>I don't suppose it was... stuck in a snowman, was it?<br/>Ha, I figured as much. This isn't my earring, you see."));
            npc.Msg(L("A... friend lost it, making all those snowmen.<br/>They mark the passing of an important druid, you know."));
            npc.Msg(L("You saw this structure up there, right?<br/>My friend knows much about it.<br/>It leads to a magical place, if he's to be believed."), npc.Image("G1_Ch01_sidhesnechta"));
            npc.Msg(L("There's a story about that druid who vanished.<br/>It is said he became a bear, and hid in a magical place.<br/>If you can traverse that gateway, perhaps you can find him."));
            npc.Msg(L("They say the bear loves Mana Herbs.<br/>Best take some with you if you go.<br/>You can find them in dungeons."), npc.Image("G1_Ch01_manaherb"));

            return(HookResult.Break);
        }

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

        if (keyword == "g1_book_of_glasgavelen")
        {
            npc.Player.RemoveKeyword("g1_27");
            npc.Player.GiveKeyword("g1_28");
            npc.Player.RemoveKeyword("g1_book_of_glasgavelen");
            npc.Player.GiveKeyword("g1_bone_of_glasgavelen");

            npc.Msg(L("...So you must be the one who spoke to Duncan in Tir Chonaill.<br/>I was roughly brought up to speed by the owl he'd sent me."));
            npc.Msg(L("I've always had an interest in old stories, so<br/>when I happened to meet the Chief, I was able to read this book.<br/>I am done with this book now, so you can take it if you want to."));
            npc.Msg(L("By the way, I found something very interesting in this book.<br/>Resurrecting that monster apparently requires this mineral called Adamantium.<br/>Adamantium is a mystical metal that's resistant to magic powers.<br/>It's a type of metal that is only found in the mines of Bangor."), npc.Image("g1_ch24_adaman"));
            npc.Msg(L("The problem is... Adamantium is no longer<br/>being produced in the mines of Bangor.<br/>And apparently, it's been like that for a long time."));
            npc.Msg(L("When this happens, it's either on of those things."));
            npc.Msg(L("Either this region has run out of Adamantium deposits...<br/>Or..."));
            npc.Msg(L("Someone else is mining them all."));

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Пример #38
0
	public async Task<HookResult> MevenBeforeKeywords(NpcScript npc, params object[] args)
	{
		var keyword = args[0] as string;
		if (keyword != "g1_medal_of_fomor")
			return HookResult.Continue;

		if (npc.HasItem(FomorMedal))
		{
			if (npc.HasKeyword("g1_11"))
			{
				npc.RemoveKeyword("g1_paradise");
				npc.RemoveKeyword("g1_11");
				npc.RemoveKeyword("g1_11_1");
				npc.GiveKeyword("g1_11_2");

				npc.Msg(L("Medal...? Could...I see it?"));
				npc.Msg(L("That's a Priest's Token."), npc.Image("g1_ch11_12_fomormedal01"));
				npc.Msg(L("...Hmm...<br/>You got this from a Fomor?<br/>I don't believe this..."));
				npc.Msg(L("Wait...The material and the weight<br/>are slightly different from ones distributed by the Pontiff's Court."));
				npc.Msg(L("There's some writing on the back...but I can't read it.<br/>It looks just like Fomors writing..."), npc.Image("g1_ch11_12_fomormedal02"));
				npc.Msg(L("There's no way humans can read this...<br/>Maybe a Fomor could..."));
			}
			else if (npc.HasKeyword("g1_11_1"))
			{
				npc.RemoveKeyword("g1_11_1");
				npc.RemoveKeyword("g1_11_2");
				npc.GiveKeyword("g1_12");
				npc.RemoveKeyword("g1_medal_of_fomor");
				npc.GiveKeyword("g1_voucher_of_priest");

				npc.Msg(L("Medal...? Could...I see it?"));
				npc.Msg(L("That's a Priest's Token."), npc.Image("g1_ch11_12_fomormedal01"));
				npc.Msg(L("...Hmm...<br/>You got this from a Fomor?<br/>I don't believe this..."));
				npc.Msg(L("Wait...The material and the weight<br/>are slightly different from ones distributed by the Pontiff's Court."));
				npc.Msg(L("There's some writing on the back...but I can't read it.<br/>It looks just like Fomors writing..."), npc.Image("g1_ch11_12_fomormedal02"));
				npc.Msg(L("There's no way humans can read this...<br/>Maybe a Fomor could..."));
			}
			else
			{
				npc.Msg(L("There's no way humans can read this...<br/>Maybe a Fomor could..."));
			}
		}
		else
		{
			npc.Msg(L("Medal...? Could...I see it?"));
		}

		return HookResult.Break;
	}
Пример #39
0
    public async Task <HookResult> TarlachBeforeKeywords(NpcScript npc, params object[] args)
    {
        var keyword = args[0] as string;

        if (keyword == "g1_cichol")
        {
            npc.GiveKeyword("g1_33_2");

            npc.Msg(L("Say what!? Someone is pretending to be Morrighan?<br/>White winged...and an obscured face?"));
            npc.Msg(L("I don't believe this! Damn it!<br/>I've been deceived.<br/>Why didn't I think of that?"));
            npc.Msg(L("It's Cichol.<br/>There's no doubt. The god of the Fomors.<br/>I can't forgive him.<br/>He dared deceive not only my friends, but also my master!"), npc.Image("g1_ch32_cichol"));
            npc.Msg(L("Even the Goddess couldn't escape from his power!<br/>No wonder the Goddess was acting so strange."));
            npc.Msg(L("Thank you for letting me know, <username/>.<br/>I was utterly oblivious.<br/>I'm ashamed that I doubted the grace of the Goddess.<br/>even with my power as a druid."));

            // Newer versions of G1 have the dream cutscene here.

            return(HookResult.Break);
        }

        return(HookResult.Continue);
    }
Пример #40
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);
    }
Пример #41
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();

            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);
    }
Пример #42
0
    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);
    }
Пример #43
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);
    }
Пример #44
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);
        }
    }