public async Task <HookResult> AeiraBeforeKeywords(NpcScript npc, params object[] args) { var keyword = args[0] as string; if (keyword != "g1_book1") { return(HookResult.Continue); } if (npc.HasKeyword("g1_06")) { npc.RemoveKeyword("g1_06"); npc.GiveKeyword("g1_07"); npc.Msg(L("'The Land of Eternity, Tir Na Nog'...?")); npc.Msg(L("Oh no.<br/>That book wasn't selling at all, so I returned all of them.<br/>Haha! Where did you hear about that book?")); } else if (npc.HasKeyword("g1_07")) { npc.RemoveKeyword("g1_07"); npc.GiveKeyword("g1_08"); npc.Msg(L("Let's see... I can order one for you,<br/>but it'll take some time to arrive.<br/>I hope that's okay.")); } else if (npc.HasKeyword("g1_08")) { npc.RemoveKeyword("g1_book1"); npc.SendOwl(this.Id, OwlDelay); npc.Msg(L("I'm sorry!<br/>The book still isn't in stock.")); npc.Msg(L("Hmm, how about this. I'll send you an owl when the book arrives.<br/>That would be better, right?")); } return(HookResult.Break); }
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> TarlachBeforeKeywords(NpcScript npc, params object[] args) { var keyword = args[0] as string; if (keyword != "g1_tarlach_of_lughnasadh") { return(HookResult.Continue); } npc.RemoveKeyword("g1_05"); npc.GiveKeyword("g1_06"); npc.RemoveKeyword("g1_tarlach_of_lughnasadh"); npc.GiveKeyword("g1_book1"); npc.Msg(L("Meven must have told you how to find me...")); npc.Msg(L("Hah. Sorry if I surprised you. Well, what do you think?<br/>Do you like Sidhe Sneachta at night?<br/>Yes, the bear you met earlier was me.<br/>Oh, I forgot to thank you for the Mana Herb.")); npc.Msg(L("I have a...condition that requires me<br/>to constantly eat Mana Herb during the day...<br/>I'm allergic to it in human form. Hence, the bear form.")); npc.Msg(L("...You had a dream about the Goddess, didn't you?<br/>The one where she asks you to rescue her in Tir na Nog.<br/>Then you're here to find out how to get there...")); npc.Msg(L("Forget about it. That's no place for mortal kind.")); npc.Msg(L("Forget it...")); npc.Msg(L("If you really must know, I can recommend a book to you.<br/>'Land of Eternity, Tir Na Nog.'<br/>You can find it at the Bookstore in Dunbarton.")); npc.Msg(L("I hope that will sate your curiosity. I suggest you let the matter drop.<br/>And please, don't tell anyone I'm here.<br/>Please...")); return(HookResult.Break); }
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); }
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; }
public async Task<HookResult> AeiraBeforeKeywords(NpcScript npc, params object[] args) { var keyword = args[0] as string; if (keyword != "g1_book1") return HookResult.Continue; if (npc.HasKeyword("g1_06")) { npc.RemoveKeyword("g1_06"); npc.GiveKeyword("g1_07"); npc.Msg(L("'The Land of Eternity, Tir Na Nog'...?")); npc.Msg(L("Oh no.<br/>That book wasn't selling at all, so I returned all of them.<br/>Haha! Where did you hear about that book?")); } else if (npc.HasKeyword("g1_07")) { npc.RemoveKeyword("g1_07"); npc.GiveKeyword("g1_08"); npc.Msg(L("Let's see... I can order one for you,<br/>but it'll take some time to arrive.<br/>I hope that's okay.")); } else if (npc.HasKeyword("g1_08")) { npc.RemoveKeyword("g1_book1"); npc.SendOwl(this.Id, OwlDelay); npc.Msg(L("I'm sorry!<br/>The book still isn't in stock.")); npc.Msg(L("Hmm, how about this. I'll send you an owl when the book arrives.<br/>That would be better, right?")); } return HookResult.Break; }
public async Task <HookResult> TalkMalcolm(NpcScript npc, params object[] args) { if (npc.QuestActive(this.Id, "talk_malcolm1")) { npc.FinishQuest(this.Id, "talk_malcolm1"); npc.Msg("So, you received the quest I sent through the Owl.<br/>Thanks for coming.<br/>I think I lost my ring in Alby Dungeon,<br/>but I can't leave, because I have no one to take care of the General Shop."); npc.Msg("I know it's a lot to ask, but can you go find the ring for me?<br/>The dungeon is very dangerous so I suggest talking to Trefor first about the Counterattack skill.<br/><br/>Take this pass to enter the dungeon, and please find my ring."); npc.GiveItem(63181); // Malcolm's Pass npc.GiveKeyword("skill_counter_attack"); return(HookResult.End); } else if (npc.QuestActive(this.Id, "kill_spider") && !npc.HasItem(63181)) { npc.Msg("Have you lost the pass?<br/>Take this one to enter the dungeon, and please find my ring."); npc.GiveItem(63181); // Malcolm's Pass return(HookResult.Break); } else if (npc.QuestActive(this.Id, "talk_malcolm2")) { npc.FinishQuest(this.Id, "talk_malcolm2"); npc.GiveKeyword("Clear_Tutorial_Malcolm_Ring"); npc.RemoveItem(75058); // Malcolm's Ring npc.Msg("You found my Ring!<br/>You have my thanks."); return(HookResult.Break); } return(HookResult.Continue); }
public async Task <HookResult> 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> 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> DougalAfterIntro(NpcScript npc, params object[] args) { if (!npc.HasQuest(this.Id) && !npc.HasKeyword("g1_37_1")) { npc.SendOwl(this.Id, OwlDelay); npc.GiveKeyword("g1_37_1"); npc.Msg(L("You're quite brave to come to a place like this. I'm Dougal.<br/>I'm here... alone.")); npc.Msg(L("I see that you're not from around here.<br/>I'm Dougal, the last remaining human here.<br/>I was pretty lonely. It's been a while since I've seen anyone.")); npc.Msg(L("Why am I left here alone?<br/>It's complicated, but I didn't stay behind<br/>because I wanted to.")); npc.Msg(L("...")); npc.Msg(L("What?<br/>This is Tir Na Nog?<br/>You mean the legendary paradise, Tir Na Nog?")); npc.Msg(L("Hah!<br/>Hahaha. I didn't expect to hear such a foolish statement from you.")); npc.Msg(L("Look, if this truly is Tir Na Nog, the world where sickness and death don't exist,<br/>why would I have a leg like this?")); npc.Msg(L("Also, this town has turned into a wasteland<br/>after being invaded by the Fomors.")); npc.Msg(L("You probably heard a false rumor somewhere.<br/>I'm sorry but this isn't the place you think it is.")); npc.Msg(L("This is just another world that has become a land of the Fomors.")); npc.Msg(L("But since you're here, take a look<br/>around as much as you want.<br/>Who knows?<br/>You might find this place similar to a place<br/>you are familiar with. Haha.")); return(HookResult.Break); } else if (npc.QuestActive(this.Id, "talk1")) { npc.FinishQuest(this.Id, "talk1"); npc.Msg(L("You've come... I was waiting for you.<br/>Because you're not from around here,<br/>I thought that losing the freedom of your body<br/>might end up getting you into big trouble.")); npc.Msg(L("...True... Nobody but your party can help you<br/>in here.<br/>Even if your life ends and you pass away...")); npc.Msg(L("When you can't move...<br/>You return to your world.<br/>I do think you have to endure that fact, only because you are a human of another world...")); npc.Msg(L("...I've called you because a good plan has come up.")); npc.Msg(L("Do you...know about the added soul phenomenon?<br/>It is the phenomenon where the spirit doesn't go away from one's body...<br/>I thought maybe if you were to use this trick<br/>you could let your spirit stay near here.")); npc.Msg(L("Yes... If your spirit does not go away from your fallen body and stays near it<br/>there wouldn't be such a thing as having to resurrect back from the world you were in<br/>even if you were to lose the freedom of your body.")); npc.Msg(L("But... dealing with spirits is also a dangerous thing...<br/>With the slightest provocation you can turn into one of those zombies behind the graveyard...")); npc.Msg(L("...So, I'll have to see if my thoughts are correct.<br/>If you knock down the spiritless zombies<br/>I will measure the added soul phenomenon that happens around the zombies<br/>and see if you can resurrect in this place.")); npc.Msg(L("What do you think? Would you like to give it a try?")); return(HookResult.Break); } else if (npc.QuestActive(this.Id, "talk2")) { npc.CompleteQuest(this.Id); npc.RemoveKeyword("g1_37_1"); npc.GiveKeyword("g1_bind"); npc.Msg(L("It's just as I'd thought. We can use the added soul phenomenon<br/>and have your spirit stay here.<br/>If you believe me, from now on,<br/>you won't ever be an undead even if you collapse here.")); npc.Msg(L("...Yes. My body and soul<br/>are exchanging with you the amount of strength<br/>you need to resurrect here...")); npc.Msg(L("Oh no... Are you uncomfortable about exchanging such things with me?<br/>Ha ha, no need to act calm.<br/>But...")); npc.Msg(L("Even when you can't move<br/>you can come near me.<br/>You will make it through this world with more ease if you remember this.")); return(HookResult.Break); } return(HookResult.Continue); }
public async Task<HookResult> DougalAfterIntro(NpcScript npc, params object[] args) { if (!npc.HasQuest(this.Id) && !npc.HasKeyword("g1_37_1")) { npc.SendOwl(this.Id, OwlDelay); npc.GiveKeyword("g1_37_1"); npc.Msg(L("You're quite brave to come to a place like this. I'm Dougal.<br/>I'm here... alone.")); npc.Msg(L("I see that you're not from around here.<br/>I'm Dougal, the last remaining human here.<br/>I was pretty lonely. It's been a while since I've seen anyone.")); npc.Msg(L("Why am I left here alone?<br/>It's complicated, but I didn't stay behind<br/>because I wanted to.")); npc.Msg(L("...")); npc.Msg(L("What?<br/>This is Tir Na Nog?<br/>You mean the legendary paradise, Tir Na Nog?")); npc.Msg(L("Hah!<br/>Hahaha. I didn't expect to hear such a foolish statement from you.")); npc.Msg(L("Look, if this truly is Tir Na Nog, the world where sickness and death don't exist,<br/>why would I have a leg like this?")); npc.Msg(L("Also, this town has turned into a wasteland<br/>after being invaded by the Fomors.")); npc.Msg(L("You probably heard a false rumor somewhere.<br/>I'm sorry but this isn't the place you think it is.")); npc.Msg(L("This is just another world that has become a land of the Fomors.")); npc.Msg(L("But since you're here, take a look<br/>around as much as you want.<br/>Who knows?<br/>You might find this place similar to a place<br/>you are familiar with. Haha.")); return HookResult.Break; } else if (npc.QuestActive(this.Id, "talk1")) { npc.FinishQuest(this.Id, "talk1"); npc.Msg(L("You've come... I was waiting for you.<br/>Because you're not from around here,<br/>I thought that losing the freedom of your body<br/>might end up getting you into big trouble.")); npc.Msg(L("...True... Nobody but your party can help you<br/>in here.<br/>Even if your life ends and you pass away...")); npc.Msg(L("When you can't move...<br/>You return to your world.<br/>I do think you have to endure that fact, only because you are a human of another world...")); npc.Msg(L("...I've called you because a good plan has come up.")); npc.Msg(L("Do you...know about the added soul phenomenon?<br/>It is the phenomenon where the spirit doesn't go away from one's body...<br/>I thought maybe if you were to use this trick<br/>you could let your spirit stay near here.")); npc.Msg(L("Yes... If your spirit does not go away from your fallen body and stays near it<br/>there wouldn't be such a thing as having to resurrect back from the world you were in<br/>even if you were to lose the freedom of your body.")); npc.Msg(L("But... dealing with spirits is also a dangerous thing...<br/>With the slightest provocation you can turn into one of those zombies behind the graveyard...")); npc.Msg(L("...So, I'll have to see if my thoughts are correct.<br/>If you knock down the spiritless zombies<br/>I will measure the added soul phenomenon that happens around the zombies<br/>and see if you can resurrect in this place.")); npc.Msg(L("What do you think? Would you like to give it a try?")); return HookResult.Break; } else if (npc.QuestActive(this.Id, "talk2")) { npc.CompleteQuest(this.Id); npc.RemoveKeyword("g1_37_1"); npc.GiveKeyword("g1_bind"); npc.Msg(L("It's just as I'd thought. We can use the added soul phenomenon<br/>and have your spirit stay here.<br/>If you believe me, from now on,<br/>you won't ever be an undead even if you collapse here.")); npc.Msg(L("...Yes. My body and soul<br/>are exchanging with you the amount of strength<br/>you need to resurrect here...")); npc.Msg(L("Oh no... Are you uncomfortable about exchanging such things with me?<br/>Ha ha, no need to act calm.<br/>But...")); npc.Msg(L("Even when you can't move<br/>you can come near me.<br/>You will make it through this world with more ease if you remember this.")); 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; }
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); }
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); }
public async Task <HookResult> TarlachBeforeKeywords(NpcScript npc, params object[] args) { var keyword = args[0] as string; if (keyword == "g1_dulbrau1") { if (npc.HasItem(FomorMedal)) { if (npc.HasKeyword("g1_13")) { npc.RemoveKeyword("g1_13"); npc.GiveKeyword("g1_14"); npc.Msg(L("'Goddess, lend me the moonlight...'<br/>That's what Goro said it means?<br/>The line 'Dul Brau Dairam Shanon?'")); npc.Msg(L("I can't say for sure that's it's a wrong interpretation but...<br/>it's slightly different from what I remember.")); } npc.Msg(L("Could I take a look at this medal?"), npc.Button(L("Yes"), "@yes"), npc.Button(L("No"), "@no")); if (await npc.Select() != "@yes") { npc.Msg(L("I won't be able to teach you the meaning of this line without seeing the medal.")); return(HookResult.Break); } npc.RemoveItem(FomorMedal); npc.RemoveKeyword("g1_dulbrau1"); npc.GiveKeyword("g1_dulbrau2"); npc.Msg(L("Thank you, let's take a look.<br/>Hm... I see.")); npc.Msg(L("The reason I am human during the night,<br/>is because of Eweca's moonlight and its magic power...")); npc.Msg(L("'Dul Brau Dairam Shanon' means,<br/>'Oh, Goddess. Please bestow me with your powers.'")); npc.Msg(L("This story...<br/>is straight from a Fomor who was practicing magic,<br/>so I am sure of it.<br/>...")); npc.Msg(L("Anyway, now you should know what this means.<br/>Fomors are coming to Erinn with the help of the Goddess.<br/>Yes, with the very power of the Goddess.")); npc.Msg(L("Morrighan is assisting Fomors with their infiltration.<br/>Which is an unforgivable act.<br/>If you don't believe me, why don't you go ask Goro again?")); } else { npc.Msg(L("'Goddess, lend me the moonlight...'<br/>That's what Goro said it means?<br/>The line 'Dul Brau Dairam Shanon?'")); npc.Msg(L("I can't say for sure that's it's a wrong interpretation but...<br/>it's slightly different from what I remember.")); } return(HookResult.Break); } else if (keyword == "g1_dulbrau2") { npc.Msg(L("If you don't believe me, why don't you go ask Goro again?")); return(HookResult.Break); } return(HookResult.Continue); }
public async Task<HookResult> TarlachBearBeforeGift(NpcScript npc, params object[] args) { if (!npc.HasKeyword("g1_01") || npc.Favor < 15) return HookResult.Continue; npc.RemoveKeyword("g1_01"); npc.GiveKeyword("g1_02"); npc.GiveKeyword("g1_tarlach1"); npc.Msg(Hide.Name, L("(The bear is writing something in the snow.)")); npc.Msg(Hide.Name, L("(Tar...)<p/>(Tar... la... ch.)<p/>(The bear writes the word 'Tarlach' and stares at you.)<p/>(Tarlach...)<p/>(It seems to be someone's name.)")); return HookResult.Break; }
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); }
public async Task <HookResult> TarlachBearBeforeGift(NpcScript npc, params object[] args) { if (!npc.HasKeyword("g1_01") || npc.Favor < 15) { return(HookResult.Continue); } npc.RemoveKeyword("g1_01"); npc.GiveKeyword("g1_02"); npc.GiveKeyword("g1_tarlach1"); npc.Msg(Hide.Name, L("(The bear is writing something in the snow.)")); npc.Msg(Hide.Name, L("(Tar...)<p/>(Tar... la... ch.)<p/>(The bear writes the word 'Tarlach' and stares at you.)<p/>(Tarlach...)<p/>(It seems to be someone's name.)")); return(HookResult.Break); }
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); }
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; }
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); }
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); }
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; }
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; }
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); }
public async Task <HookResult> MevenAfterIntro(NpcScript npc, params object[] args) { if (!npc.QuestActive(this.Id, "talk_meven")) { return(HookResult.Continue); } npc.CompleteQuest(this.Id); npc.RemoveKeyword("g1_17_1"); npc.GiveKeyword("g1_17_2"); npc.GiveKeyword("g1_black_rose"); npc.Msg(L("Oh, it's you <username/>... Welcome.")); npc.Msg(Hide.Name, L("(Told priest Meven about the item Tarlach left with him.)")); npc.Msg(L("...He...wants that...back?<br/>Nonsense...!<br/>Do you know how long it's been? What, was he expecting it<br/>to be preserved by magic or something?")); npc.Msg(L("... Hmm...I'm afraid that's not possible.<br/>Granted it's the magic of a Druid...<br/>but...the best thing to do will be to grow it again.")); npc.Msg(L("I'll let Lassar know,<br/>so would you go talk to her about it...?<br/>Lassar is quite the expert on that field.")); npc.Msg(L("Go see her and tell her that I sent you...")); npc.Msg(L("...Anyway...Tarlach still must have not forgotten about her...<br/>if he's asking for that item back...It's a shame...")); return(HookResult.Break); }
public async Task<HookResult> TarlachBeforeKeywords(NpcScript npc, params object[] args) { var keyword = args[0] as string; if (keyword != "g1_tarlach_of_lughnasadh") return HookResult.Continue; npc.RemoveKeyword("g1_05"); npc.GiveKeyword("g1_06"); npc.RemoveKeyword("g1_tarlach_of_lughnasadh"); npc.GiveKeyword("g1_book1"); npc.Msg(L("Meven must have told you how to find me...")); npc.Msg(L("Hah. Sorry if I surprised you. Well, what do you think?<br/>Do you like Sidhe Sneachta at night?<br/>Yes, the bear you met earlier was me.<br/>Oh, I forgot to thank you for the Mana Herb.")); npc.Msg(L("I have a...condition that requires me<br/>to constantly eat Mana Herb during the day...<br/>I'm allergic to it in human form. Hence, the bear form.")); npc.Msg(L("...You had a dream about the Goddess, didn't you?<br/>The one where she asks you to rescue her in Tir na Nog.<br/>Then you're here to find out how to get there...")); npc.Msg(L("Forget about it. That's no place for mortal kind.")); npc.Msg(L("Forget it...")); npc.Msg(L("If you really must know, I can recommend a book to you.<br/>'Land of Eternity, Tir Na Nog.'<br/>You can find it at the Bookstore in Dunbarton.")); npc.Msg(L("I hope that will sate your curiosity. I suggest you let the matter drop.<br/>And please, don't tell anyone I'm here.<br/>Please...")); return HookResult.Break; }
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); }
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> 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; }
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); }
private void LassarFinish(NpcScript npc) { npc.RemoveKeyword("g1_black_rose"); npc.RemoveKeyword("g1_17_3"); npc.RemoveKeyword("g1_17_4"); npc.GiveKeyword("g1_17_5"); npc.RemoveItem(HolyWater); npc.Notice(L("You have given Holy Water of Lymilark to Lassar.")); npc.SendOwl(210023, OwlDelay); // Receive the Requested Object npc.Msg(L("Yes, this should be enough.<br/>It's almost ready. Once it forms the proper shape, I'll let you know via an owl. Hahaha.<br/>Owls don't fly into buildings so<br/>don't forget to check the sky outside.")); npc.Msg(L("Now, will you excuse me?")); }
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); }
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; }
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; }
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> LassarBeforeKeyword(NpcScript npc, params object[] args) { var keyword = args[0] as string; if (keyword == "g1_black_rose") { if (npc.HasKeyword("g1_17_2")) { npc.RemoveKeyword("g1_17_2"); npc.GiveKeyword("g1_17_3"); npc.Msg(L("Hmm. Priest Meven's favor?<br/>Why would he need something like that? Hehehe.")); npc.Msg(L("Hmm, I don't know how this will sound<br/>but I need some Holy Water of Lymilark to grow this.<br/>Priest Meven used to supply me with it up until recently.")); npc.Msg(L("I guess he got caught by Priestess Endelyon.<br/>He hasn't given me any for the past few days.")); npc.Msg(L("If you have any Holy Water of Lymilark, could you give me a bottle?"), npc.Button(L("Here."), "@yes"), npc.Button(L("No"), "@no")); if (await npc.Select() != "@yes" || !npc.HasItem(HolyWater)) { npc.Msg(L("I need some Holy Water of Lymilark to grow this, please come back once you have some.")); return(HookResult.Break); } LassarFinish(npc); return(HookResult.Break); } else if (npc.HasKeyword("g1_17_3")) { npc.Msg(L("Did you get a bottle of Holy Water of Lymilark?"), npc.Button(L("Here."), "@yes"), npc.Button(L("No"), "@no")); if (await npc.Select() != "@yes" || !npc.HasItem(HolyWater)) { npc.Msg(L("I need some Holy Water of Lymilark to grow this, please come back once you have some.")); return(HookResult.Break); } LassarFinish(npc); return(HookResult.Break); } } return(HookResult.Continue); }
public async Task <HookResult> AeiraAfterIntro(NpcScript npc, params object[] args) { if (npc.QuestActive(this.Id, "talk_aeira")) { npc.CompleteQuest(this.Id); npc.SendOwl(210006, OwlDelay); // The Book of Revenge, Volume II npc.RemoveKeyword("g1_23"); npc.GiveKeyword("g1_24"); npc.Msg(L("'The Book of Revenge...?'<br/>I don't think we have a book by that title.<br/>I'm certain our distributor doesn't carry it, either.<br/>Trust me, I know all the books we carry here...")); npc.Msg(L("It's a 3-volume set? If you've already got the first<br/>volume, then I can't sell it to you as a set, either...<br/>I doubt they'll let me order each volume separately.")); npc.Msg(L("It's written in the Fomor language?!<br/>I'm afraid you'll have to look elsewhere for that.<br/>It's going to be hard for a human bookseller to get such<br/>a book, don't you think?")); npc.Msg(L("<username/>, was it? You have quite the unique taste in books...<br/>I'll tell you what. You've piqued my interest, and I know<br/>a number of explorers and scholars. I'll ask around.<br/>If I hear anything, I'll get in touch with you.")); return(HookResult.Break); } return(HookResult.Continue); }
public async Task <HookResult> DuncanBeforeKeywords(NpcScript npc, params object[] args) { var keyword = args[0] as string; if (keyword == null || keyword != "g1_tarlach1") { return(HookResult.Continue); } npc.RemoveKeyword("g1_tarlach1"); npc.GiveKeyword("g1_tarlach2"); npc.Msg(L("Tar...lach? Did you say Tarlach?<br/>One of the three missing warriors...")); npc.Msg(Hide.Name, L("(Duncan seems shocked.)")); npc.Msg(L("I've always wondered about that bear.<br/>I never thought it could truly be Tarlach...")); npc.Msg(L("Long ago, three adventurers actually went to Tir Na Nog<br/>to rescue the black-winged Goddess<br/>and bring paradise to this world.<br/>But none of them ever returned."), npc.Image("G1_Ch03_3warriors")); npc.Msg(L("Hence they were known as the three missing warriors.<br/>Tarlach was one of them...<br/>It's been so long... could it really be him?<br/>Talk to Stewart at the school in Dunbarton. He knows the legend better.")); return(HookResult.Break); }
public async Task <HookResult> KristellAfterIntro(NpcScript npc, params object[] args) { if (npc.QuestActive(this.Id, "talk")) { npc.CompleteQuest(this.Id); npc.RemoveKeyword("g1_33"); npc.GiveKeyword("g1_34"); npc.Msg(L("Thank you for your help, I feel much safer now.<br/>I'll tell you how to get to the place Tarlach mentioned.<br/>This Fomor Pass is used by high-ranking Fomors to travel there.<br/>This wing will take you to the dungeon. I pray that you don't lose it.")); // Newer versions of G1 place the third Morrighan cutscene after // she gave the pass to the player, possibly because of g1_34 // becoming active. 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_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> TarlachBeforeKeywords(NpcScript npc, params object[] args) { var keyword = args[0] as string; if (keyword == "g1_goddess_morrighan2") { npc.RemoveKeyword("g1_30"); npc.GiveKeyword("g1_31"); npc.Msg(L("Now you know what I've been through.<br/>There was no sight of Mari and Ruiairi.<br/>The master barely managed to get me out.<br/>We made another attempt to find them, but it was no good...")); npc.Msg(L("Since that day, I can no longer use any advanced magic<br/>and I have to stay in bear form during the day.<br/>Isn't that a strange turn of events?")); npc.Msg(L("Though I still possess all my old arcane knowledge,<br/>my life as a wizard ended that day,<br/>vanished along with my dear friends.")); npc.Msg(L("That's why I can never forgive the Goddess.<br/>I was so consumed by hatred that even<br/>Kristell's devotion couldn't soothe me.")); npc.Msg(L("It occured to me to leave one day.<br/>I've been nothing but a burden on Kristell.<br/>She betrayed her own people to learn about love...<br/>I can only give her more pain.")); npc.Msg(L("...<br/>So now you know why I live like this.<br/>I will remove the mask of hypocrisy from the Goddess.<br/>And I will make my master pay for this betrayal.")); return(HookResult.Break); } return(HookResult.Continue); }
public async Task<HookResult> DuncanBeforeKeywords(NpcScript npc, params object[] args) { var keyword = args[0] as string; if (keyword == "g1_goddess_morrighan1") { npc.StartQuest(this.Id); npc.RemoveKeyword("g1_goddess_morrighan1"); npc.RemoveKeyword("g1_22"); npc.GiveKeyword("g1_23"); npc.Msg(L("...<p/>It's hard to believe that such a thing could have happened<br/>to Mores. Is he still alive?")); npc.Msg(L("And...this is the first time I've heard<br/>how much he hated humans.<br/>Please, don't speak of this to anyone else.<br/>It's better he's remembered as a hero.")); npc.Msg(L("Besides, we may have gotten something wrong.<br/>I'd like to investigate this more on my own.<br/>And I'll have to read the book Mores wrote.<br/>Can you get it from Tarlach for me?")); return HookResult.Break; } return HookResult.Continue; }
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> 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> DuncanBeforeKeywords(NpcScript npc, params object[] args) { var keyword = args[0] as string; if (keyword == "g1_goddess_morrighan1") { npc.StartQuest(this.Id); npc.RemoveKeyword("g1_goddess_morrighan1"); npc.RemoveKeyword("g1_22"); npc.GiveKeyword("g1_23"); npc.Msg(L("...<p/>It's hard to believe that such a thing could have happened<br/>to Mores. Is he still alive?")); npc.Msg(L("And...this is the first time I've heard<br/>how much he hated humans.<br/>Please, don't speak of this to anyone else.<br/>It's better he's remembered as a hero.")); npc.Msg(L("Besides, we may have gotten something wrong.<br/>I'd like to investigate this more on my own.<br/>And I'll have to read the book Mores wrote.<br/>Can you get it from Tarlach for me?")); return(HookResult.Break); } return(HookResult.Continue); }
public async Task<HookResult> KristellAfterIntro(NpcScript npc, params object[] args) { if (!npc.QuestActive(this.Id, "deliver_item")) return HookResult.Continue; npc.CompleteQuest(this.Id); npc.RemoveKeyword("g1_17_5"); npc.GiveKeyword("g1_18"); npc.Msg(L("This is!")); npc.Msg(L("Tarlach......")); npc.Msg(Hide.Name, L("(Tears flow from Kristell's eyes.)")); npc.Msg(L("Tarlach...")); npc.Msg(L("He still remembers the song...<br/>The song of the black rose... the song I sang for him...<br/>Does this mean all this time, Tarlach had been struggling just like me?")); npc.Msg(L("Thank you. <username/>...<br/>...Thank you...")); npc.Msg(L("If it weren't for you,<br/>I'd still be wondering why Tarlach would be like that...")); npc.Msg(L("Here is the translated book... <username/>...<br/>I apologize for my rudeness...")); npc.Msg(L("There were some Fomor text writting in the back of the book which<br/>seems like it has no connection to the contents of the book...<br/>But I translated it just in case.")); npc.Msg(L("I hope this helps...")); return HookResult.Break; }
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> 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.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; }
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> 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> 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> 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; }
public async Task<HookResult> AeiraAfterIntro(NpcScript npc, params object[] args) { if (npc.QuestActive(this.Id, "talk_aeira")) { npc.CompleteQuest(this.Id); npc.SendOwl(210006, OwlDelay); // The Book of Revenge, Volume II npc.RemoveKeyword("g1_23"); npc.GiveKeyword("g1_24"); npc.Msg(L("'The Book of Revenge...?'<br/>I don't think we have a book by that title.<br/>I'm certain our distributor doesn't carry it, either.<br/>Trust me, I know all the books we carry here...")); npc.Msg(L("It's a 3-volume set? If you've already got the first<br/>volume, then I can't sell it to you as a set, either...<br/>I doubt they'll let me order each volume separately.")); npc.Msg(L("It's written in the Fomor language?!<br/>I'm afraid you'll have to look elsewhere for that.<br/>It's going to be hard for a human bookseller to get such<br/>a book, don't you think?")); npc.Msg(L("<username/>, was it? You have quite the unique taste in books...<br/>I'll tell you what. You've piqued my interest, and I know<br/>a number of explorers and scholars. I'll ask around.<br/>If I hear anything, I'll get in touch with you.")); return HookResult.Break; } return HookResult.Continue; }
private void LassarFinish(NpcScript npc) { npc.RemoveKeyword("g1_black_rose"); npc.RemoveKeyword("g1_17_3"); npc.RemoveKeyword("g1_17_4"); npc.GiveKeyword("g1_17_5"); npc.RemoveItem(HolyWater); npc.Notice(L("You have given Holy Water of Lymilark to Lassar.")); npc.SendOwl(210023, OwlDelay); // Receive the Requested Object npc.Msg(L("Yes, this should be enough.<br/>It's almost ready. Once it forms the proper shape, I'll let you know via an owl. Hahaha.<br/>Owls don't fly into buildings so<br/>don't forget to check the sky outside.")); npc.Msg(L("Now, will you excuse me?")); }
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> 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> 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; }
public async Task<HookResult> TarlachBeforeKeywords(NpcScript npc, params object[] args) { var keyword = args[0] as string; if (keyword == "g1_goddess_morrighan2") { npc.RemoveKeyword("g1_30"); npc.GiveKeyword("g1_31"); npc.Msg(L("Now you know what I've been through.<br/>There was no sight of Mari and Ruiairi.<br/>The master barely managed to get me out.<br/>We made another attempt to find them, but it was no good...")); npc.Msg(L("Since that day, I can no longer use any advanced magic<br/>and I have to stay in bear form during the day.<br/>Isn't that a strange turn of events?")); npc.Msg(L("Though I still possess all my old arcane knowledge,<br/>my life as a wizard ended that day,<br/>vanished along with my dear friends.")); npc.Msg(L("That's why I can never forgive the Goddess.<br/>I was so consumed by hatred that even<br/>Kristell's devotion couldn't soothe me.")); npc.Msg(L("It occured to me to leave one day.<br/>I've been nothing but a burden on Kristell.<br/>She betrayed her own people to learn about love...<br/>I can only give her more pain.")); npc.Msg(L("...<br/>So now you know why I live like this.<br/>I will remove the mask of hypocrisy from the Goddess.<br/>And I will make my master pay for this betrayal.")); return HookResult.Break; } return HookResult.Continue; }