9
3

InquisitorThorson.lua 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. --[[
  2. Script Name : SpawnScripts/SunkenCity/InquisitorThorson.lua
  3. Script Purpose : Inquisitor Thorson <Dismal Rage>
  4. Script Author : Scatman
  5. Script Date : 2009.07.28
  6. Script Notes :
  7. --]]
  8. local HALFELF_MENTOR_QUEST_5 = 189
  9. local QUEST_1 = 266
  10. local QUEST_2 = 267
  11. local QUEST_3 = 268
  12. local QUEST_4 = 269
  13. local QUEST_3_FROM_CURFIELD = 272
  14. local QUEST_5 = 273
  15. local QUEST_6 = 274
  16. function spawn(NPC)
  17. SetPlayerProximityFunction(NPC, 10, "InRange")
  18. ProvidesQuest(NPC, QUEST_1)
  19. ProvidesQuest(NPC, QUEST_2)
  20. ProvidesQuest(NPC, QUEST_3)
  21. ProvidesQuest(NPC, QUEST_4)
  22. ProvidesQuest(NPC, QUEST_5)
  23. ProvidesQuest(NPC, QUEST_6)
  24. end
  25. function respawn(NPC)
  26. spawn(NPC)
  27. end
  28. function InRange(NPC, Spawn)
  29. local chance = math.random(1, 2)
  30. if chance <= 25 then
  31. local choice = math.random(1,2)
  32. if choice == 1 then
  33. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/quest_character/qst_inquisitor_thorson_callout_2a6613bd.mp3", "We must all act to defend Freeport.", "nod", 1841304758, 774355519, Spawn)
  34. elseif choice == 2 then
  35. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/quest_character/qst_inquisitor_thorson_callout_f96a8b27.mp3", "This cursed place holds many secrets that must be uncovered.", "", 2921290119, 2384027850, Spawn)
  36. end
  37. end
  38. end
  39. function hailed(NPC, Spawn)
  40. FaceTarget(NPC, Spawn)
  41. conversation = CreateConversation()
  42. RandomVoiceOver(NPC, Spawn)
  43. if HasQuest(Spawn, HALFELF_MENTOR_QUEST_5) then
  44. AddConversationOption(conversation, "My name is " .. GetName(Spawn) .. ". Delcairn Sebastian sent in Beggar's Court sent me here to speak with you.", "Delcairn")
  45. end
  46. if HasCompletedQuest(Spawn, QUEST_1) then
  47. if HasCompletedQuest(Spawn, QUEST_2) then
  48. if HasCompletedQuest(Spawn, QUEST_3) then
  49. if HasCompletedQuest(Spawn, QUEST_4) then
  50. if HasCompletedQuest(Spawn, QUEST_3_FROM_CURFIELD) then
  51. if HasCompletedQuest(Spawn, QUEST_5) then
  52. if HasCompletedQuest(Spawn, QUEST_6) then
  53. PlayFlavor(NPC, "", "Thank you for all your help, my friend. I will speak favorably of you to my superiors.", "thank", 0, 0, Spawn)
  54. elseif HasQuest(Spawn, QUEST_6) then
  55. MustRemainHere(NPC, Spawn, conversation)
  56. else
  57. HelloAgainBraveOne(NPC, Spawn, conversation)
  58. end
  59. elseif HasQuest(Spawn, QUEST_5) then
  60. OnQuest5(NPC, Spawn, conversation)
  61. else
  62. HelloOnceAgain(NPC, Spawn, conversation)
  63. end
  64. elseif HasQuest(Spawn, QUEST_3_FROM_CURFIELD) then
  65. OnQuest4(NPC, Spawn, conversation)
  66. else
  67. SpeakWithInvestigator(NPC, Spawn, conversation)
  68. end
  69. elseif HasQuest(Spawn, QUEST_4) then
  70. OnQuest4(NPC, Spawn, conversation)
  71. else
  72. Greetings4(NPC, Spawn, conversation)
  73. end
  74. elseif HasQuest(Spawn, QUEST_3) then
  75. OnQuest3(NPC, Spawn, conversation)
  76. else
  77. GreetingsAdventurer(NPC, Spawn, conversation)
  78. end
  79. elseif HasQuest(Spawn, QUEST_2) then
  80. OnQuest2(NPC, Spawn, conversation)
  81. else
  82. HelloAdventurer(NPC, Spawn, conversation)
  83. end
  84. elseif HasQuest(Spawn, QUEST_1) then
  85. OnQuest1(NPC, Spawn, conversation)
  86. else
  87. Greetings(NPC, Spawn, conversation)
  88. end
  89. end
  90. function RandomVoiceOver(NPC, Spawn)
  91. local choice = math.random(1, 3)
  92. if choice == 1 then
  93. PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1004.mp3", "", "", 0, 0, Spawn)
  94. elseif choice == 2 then
  95. PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1004.mp3", "", "", 0, 0, Spawn)
  96. elseif choice == 3 then
  97. PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1004.mp3", "", "", 0, 0, Spawn)
  98. end
  99. end
  100. --------------------------------------------------------------------------------------------------------------------
  101. -- HALFELF_MENTOR_QUEST_5
  102. --------------------------------------------------------------------------------------------------------------------
  103. function Delcairn(NPC, Spawn)
  104. SetStepComplete(Spawn, HALFELF_MENTOR_QUEST_5, 1)
  105. FaceTarget(NPC, Spawn)
  106. conversation = CreateConversation()
  107. if not HasQuest(Spawn, QUEST_1) and not HasCompleted(Spawn, QUEST_1) then
  108. AddConversationOption(conversation, "I would be an honor to serve Freeport.", "dlg_0_1")
  109. end
  110. AddConversationOption(conversation, "I am pleased to have met you.")
  111. StartConversation(conversation, NPC, Spawn, "Ah yes, I was told to expect your arrival. I've heard that you show great promise and may well prove to be an asset to the Overlord.")
  112. end
  113. --------------------------------------------------------------------------------------------------------------------
  114. -- QUEST_1
  115. --------------------------------------------------------------------------------------------------------------------
  116. function Greetings(NPC, Spawn, conversation)
  117. AddConversationOption(conversation, "My name is " .. GetName(Spawn) .. ". Who are you?", "dlg_0_1")
  118. AddConversationOption(conversation, "My business is none of your concern.")
  119. StartConversation(conversation, NPC, Spawn, "Greetings, adventurer. What business do you have here?")
  120. end
  121. function dlg_0_1(NPC, Spawn)
  122. FaceTarget(NPC, Spawn)
  123. conversation = CreateConversation()
  124. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/inquisitor_thorson003.mp3", "", "", 463981298, 3396454386, Spawn)
  125. AddConversationOption(conversation, "What is the Dismal Rage?", "dlg_0_2")
  126. AddConversationOption(conversation, "Undead? No thank you.")
  127. StartConversation(conversation, NPC, Spawn, "I suppose formal introductions are in order. I am Inquisitor Thorson, sent by my masters in the Dismal Rage to investigate a recent increase in undead activity here.")
  128. end
  129. function dlg_0_2(NPC, Spawn)
  130. FaceTarget(NPC, Spawn)
  131. conversation = CreateConversation()
  132. AddConversationOption(conversation, "What gods do you serve?", "dlg_0_3")
  133. AddConversationOption(conversation, "I have heard enough about the Dismal Rage. What is this place?", "dlg_0_6")
  134. AddConversationOption(conversation, "I must be going.")
  135. StartConversation(conversation, NPC, Spawn, "The Dismal Rage looks after the spiritual needs of Freeport's people. We congregate in the Temple of War in North Freeport. We are made up largely of priests, though we do employ other professions from time to time.")
  136. end
  137. function dlg_0_3(NPC, Spawn)
  138. FaceTarget(NPC, Spawn)
  139. conversation = CreateConversation()
  140. AddConversationOption(conversation, "If there are no gods around anymore, from where do you draw your power?", "dlg_0_4")
  141. AddConversationOption(conversation, "I think I've heard enough.")
  142. StartConversation(conversation, NPC, Spawn, "Though in ancient times our priests served the old gods, we no longer bow to such archaic symbols of authority. Today the Dismal Rage serves the Overlord and our high priestess, .. GetName(Spawn) .. . Nevagon.")
  143. end
  144. function dlg_0_4(NPC, Spawn)
  145. FaceTarget(NPC, Spawn)
  146. conversation = CreateConversation()
  147. AddConversationOption(conversation, "What principles do you mean?", "dlg_0_5")
  148. AddConversationOption(conversation, "I think I should be leaving.")
  149. StartConversation(conversation, NPC, Spawn, "Some of us believe it was not the gods themselves that were the true power, but rather the planar forces they represented. The ancient gods were symbols, the embodiment of the principles we now serve.")
  150. end
  151. function dlg_0_5(NPC, Spawn)
  152. FaceTarget(NPC, Spawn)
  153. conversation = CreateConversation()
  154. AddConversationOption(conversation, "What is this place?", "dlg_0_6")
  155. AddConversationOption(conversation, "I think I should be leaving.")
  156. StartConversation(conversation, NPC, Spawn, "We draw our power from many sources, including the principles of Hate, Fear, War, and Decay. There are sects within the Dismal Rage dedicated to all these ideals and more, though we are united in our service to the Overlord and High Priestess Nevagon.")
  157. end
  158. function dlg_0_6(NPC, Spawn)
  159. FaceTarget(NPC, Spawn)
  160. conversation = CreateConversation()
  161. AddConversationOption(conversation, "What do you mean?", "dlg_0_7")
  162. AddConversationOption(conversation, "I don't need to hear anything else.")
  163. StartConversation(conversation, NPC, Spawn, "You have arrived in the Sunken City, once a thriving district of Freeport. Now it stands as a monument to the madness of those who would have sacrificed our beloved city to the waves.")
  164. end
  165. function dlg_0_7(NPC, Spawn)
  166. FaceTarget(NPC, Spawn)
  167. conversation = CreateConversation()
  168. AddConversationOption(conversation, "I will do it.", "OfferQuest1")
  169. StartConversation(conversation, NPC, Spawn, "I will tell you more if you want to hear it, but first I must review the notes I have been taking on what I have observed since my arrival here. To learn a bit more about this place, go through the archway just ahead and speak to an iksar named Saydith Yarr.")
  170. end
  171. function OfferQuest1(NPC, Spawn)
  172. FaceTarget(NPC, Spawn)
  173. OfferQuest(NPC, Spawn, QUEST_1)
  174. end
  175. function OnQuest1(NPC, Spawn, conversation)
  176. if GetQuestStep(Spawn, QUEST_1) == 2 then
  177. AddConversationOption(conversation, "Yes, though he seemed to babble a lot.", "dlg_2_1")
  178. end
  179. AddConversationOption(conversation, "Not yet.")
  180. StartConversation(conversation, NPC, Spawn, "Did you speak to Saydith Yarr?")
  181. end
  182. function dlg_2_1(NPC, Spawn)
  183. if HasQuest(Spawn, QUEST_1) then
  184. SetStepComplete(Spawn, QUEST_1, 2)
  185. end
  186. FaceTarget(NPC, Spawn)
  187. conversation = CreateConversation()
  188. AddConversationOption(conversation, "I'd like to hear more about the Sunken City.", "dlg_2_2")
  189. AddConversationOption(conversation, "Enough chatter. Do you have anything for me to do?", "dlg_2_10")
  190. AddConversationOption(conversation, "I'd rather leave, thanks.")
  191. StartConversation(conversation, NPC, Spawn, "Saydith has been here a long time, and I think he has gone a bit mad. I can tell you more about this place if you like, or we can skip all that and you can do some work for me.")
  192. end
  193. --------------------------------------------------------------------------------------------------------------------
  194. -- QUEST_2
  195. --------------------------------------------------------------------------------------------------------------------
  196. function HelloAdventurer(NPC, Spawn, conversation)
  197. AddConversationOption(conversation, "I spoke to a rather disturbed iksar.", "dlg_2_1")
  198. AddConversationOption(conversation, "Goodbye, Inquisitor Thorson.")
  199. StartConversation(conversation, NPC, Spawn, "Hello, adventurer. I hope you travel safely here in the Sunken City.")
  200. end
  201. function dlg_2_2(NPC, Spawn)
  202. FaceTarget(NPC, Spawn)
  203. conversation = CreateConversation()
  204. AddConversationOption(conversation, "Go on.", "dlg_2_3")
  205. AddConversationOption(conversation, "I've heard enough.")
  206. StartConversation(conversation, NPC, Spawn, "What we now call the Sunken City was once a residential district in the northern section of Freeport known affectionately by its residents as Plank's Edge. It was home to many of the sailors and merchants that worked on the docks of East Freeport's bustling shipping trade.")
  207. end
  208. function dlg_2_3(NPC, Spawn)
  209. FaceTarget(NPC, Spawn)
  210. conversation = CreateConversation()
  211. AddConversationOption(conversation, "Please continue.", "dlg_2_4")
  212. AddConversationOption(conversation, "I've heard enough.")
  213. StartConversation(conversation, NPC, Spawn, "As was typical of a seafaring community, many of the residents worshiped Prexus, the Ocean Lord. Though a boisterous and sometimes rowdy bunch, they lived peaceably enough with the other citizens of Freeport.")
  214. end
  215. function dlg_2_4(NPC, Spawn)
  216. FaceTarget(NPC, Spawn)
  217. conversation = CreateConversation()
  218. AddConversationOption(conversation, "I see.", "dlg_2_5")
  219. AddConversationOption(conversation, "I've heard enough.")
  220. StartConversation(conversation, NPC, Spawn, "When the Rending began and the seas became impassible, Freeport's harbor fell on hard times. Shipping and trade ground to a halt and the fishing industry collapsed. East Freeport became a ghost town, known more for its crime than for its commerce.")
  221. end
  222. function dlg_2_5(NPC, Spawn)
  223. FaceTarget(NPC, Spawn)
  224. conversation = CreateConversation()
  225. AddConversationOption(conversation, "Who followed Aquel?", "dlg_2_6")
  226. AddConversationOption(conversation, "I'm losing interest in this story. Do you have any work for me?", "dlg_2_10")
  227. AddConversationOption(conversation, "I've heard enough.")
  228. StartConversation(conversation, NPC, Spawn, "In this climate of fear and uncertainty, a half elven extremist named Elwyn Aquel gained a following. He preached that Prexus was angry with Freeport, and only through the hard work and sacrifice of his followers would the seas calm and prosperity return.")
  229. end
  230. function dlg_2_6(NPC, Spawn)
  231. FaceTarget(NPC, Spawn)
  232. conversation = CreateConversation()
  233. AddConversationOption(conversation, "Did Aquel really want to help them?", "dlg_2_7")
  234. AddConversationOption(conversation, "I've heard enough.")
  235. StartConversation(conversation, NPC, Spawn, "Aquel's followers, called the Circle of Darkfathom, quickly rose in prominence among the disgruntled citizens of Plank's Edge. Aquel promised brighter days to these desperate people on the brink of losing everything they had.")
  236. end
  237. function dlg_2_7(NPC, Spawn)
  238. FaceTarget(NPC, Spawn)
  239. conversation = CreateConversation()
  240. AddConversationOption(conversation, "Did anyone try to stop him?", "dlg_2_8")
  241. AddConversationOption(conversation, "Enough of this babbling.")
  242. StartConversation(conversation, NPC, Spawn, "Little did the people of Plank's Edge know that they had fallen victim to a madman's scheme. The sacrifice Aquel spoke of was a literal one: he intended to sink Freeport to the bottom of the ocean in a twisted scheme to gain favor with Prexus. He believed that the flood waters would wash away the city and grant him immortality in the process.")
  243. end
  244. function dlg_2_8(NPC, Spawn)
  245. FaceTarget(NPC, Spawn)
  246. conversation = CreateConversation()
  247. AddConversationOption(conversation, "Was all of Freeport flooded?", "dlg_2_9")
  248. AddConversationOption(conversation, "I've heard enough.")
  249. StartConversation(conversation, NPC, Spawn, "It was only as Aquel began his ritual of sacrifice that some of his followers saw through his deception. As the ground beneath Plank's Edge began to sink and the flood waters came pouring in, some of the Darkfathom members interrupted Aquel's incantation and broke the spell. Though Freeport was saved, it was too late for the people of Plank's Edge, who drowned beneath the unholy tide. Aquel's body was never recovered.")
  250. end
  251. function dlg_2_9(NPC, Spawn)
  252. FaceTarget(NPC, Spawn)
  253. conversation = CreateConversation()
  254. AddConversationOption(conversation, "This area is haunted?", "dlg_2_10")
  255. AddConversationOption(conversation, "I don't like ghosts. Time to go.")
  256. StartConversation(conversation, NPC, Spawn, "Thankfully the high walls around the outside of the district held strong, so damage to neighboring parts of Freeport was minimal. Gradually the waters receded but never fully went away, leaving the area all but unlivable. Abandoned by the city's residents, Plank's Edge is now called the Sunken City, a dangerous place haunted by the souls of those who met their doom within.")
  257. end
  258. function dlg_2_10(NPC, Spawn)
  259. FaceTarget(NPC, Spawn)
  260. conversation = CreateConversation()
  261. AddConversationOption(conversation, "What do you want me to do?", "dlg_2_11")
  262. AddConversationOption(conversation, "I have no interest in this.")
  263. StartConversation(conversation, NPC, Spawn, "The Sunken City is haunted, by both the spirits of those innocents who died here and by the fallen Prexians who caused this catastrophe. It is said that there are even more spirits who walk these flooded streets after night falls.")
  264. end
  265. function dlg_2_11(NPC, Spawn)
  266. FaceTarget(NPC, Spawn)
  267. conversation = CreateConversation()
  268. AddConversationOption(conversation, "I'll do it. Where can I find these creatures?", "OfferQuest2")
  269. StartConversation(conversation, NPC, Spawn, "When the undead are defeated and their spirits are freed, they often leave behind a spectral essence that, if properly analyzed, reveals much about their past. I must find out what is causing the increase in activity among the undead. I need you to obtain four spectral essences from the undead creatures.")
  270. end
  271. function OfferQuest2(NPC, Spawn)
  272. FaceTarget(NPC, Spawn)
  273. OfferQuest(NPC, Spawn, QUEST_2)
  274. end
  275. function OnQuest2(NPC, Spawn, conversation)
  276. if GetQuestStep(Spawn, QUEST_2) == 2 then
  277. AddConversationOption(conversation, "Yes, I obtained all four essences.", "dlg_7_1")
  278. end
  279. AddConversationOption(conversation, "Not yet.")
  280. StartConversation(conversation, NPC, Spawn, "Hello again. Do you have the spectral essences I asked you to obtain?")
  281. end
  282. function dlg_7_1(NPC, Spawn)
  283. SetStepComplete(Spawn, QUEST_2, 2)
  284. FaceTarget(NPC, Spawn)
  285. conversation = CreateConversation()
  286. AddConversationOption(conversation, "What other inhabitants?", "dlg_7_2")
  287. AddConversationOption(conversation, "No thanks, I will be going.")
  288. StartConversation(conversation, NPC, Spawn, "Well done! These essences will aid in my research. It will take me some time to study them. While I do that, it may be a good idea for you to have a look around and discover some of the other inhabitants of the Sunken City.")
  289. end
  290. --------------------------------------------------------------------------------------------------------------------
  291. -- QUEST_3
  292. --------------------------------------------------------------------------------------------------------------------
  293. function GreetingsAdventurer(NPC, Spawn, conversation)
  294. AddConversationOption(conversation, "Hello, Inquisitor. I am ready to explore more of the Sunken City.", "dlg_7_2")
  295. AddConversationOption(conversation, "Nothing. Goodbye, Inquisitor Thorson.")
  296. StartConversation(conversation, NPC, Spawn, "Greetings, adventurer! What brings you back to me?")
  297. end
  298. function dlg_7_2(NPC, Spawn)
  299. FaceTarget(NPC, Spawn)
  300. conversation = CreateConversation()
  301. AddConversationOption(conversation, "What kind of vermin?", "dlg_7_3")
  302. AddConversationOption(conversation, "Just tell me how to collect the information you need.")
  303. StartConversation(conversation, NPC, Spawn, "This place is home to more than just the spirits of those who died here. I've been told there are a few types of vermin scattered around the Sunken City, and I'd like you to confirm their presence for me.")
  304. end
  305. function dlg_7_3(NPC, Spawn)
  306. FaceTarget(NPC, Spawn)
  307. conversation = CreateConversation()
  308. AddConversationOption(conversation, "What other creatures?", "dlg_7_4")
  309. StartConversation(conversation, NPC, Spawn, "Crabs like to roam in shallow water, so I need a rough estimate of their density here. You should find plenty of brine sifters just through the archway, as well as farther on to the east.")
  310. end
  311. function dlg_7_4(NPC, Spawn)
  312. FaceTarget(NPC, Spawn)
  313. conversation = CreateConversation()
  314. AddConversationOption(conversation, "Anything else?", "dlg_7_5")
  315. StartConversation(conversation, NPC, Spawn, "Though a coastal city, Freeport has a very arid climate. Scorpions may be found here on some of the dry portions of ground. You might try going west, then south a bit.")
  316. end
  317. function dlg_7_5(NPC, Spawn)
  318. FaceTarget(NPC, Spawn)
  319. conversation = CreateConversation()
  320. AddConversationOption(conversation, "How do I collect information on these creatures?", "OfferQuest3")
  321. StartConversation(conversation, NPC, Spawn, "Of particular interest to me are the strange rust monsters that scurry around here. There is little information on where they come from, but they showed up in this area after the destruction caused by the Rending. They get their name not only for their brownish color, but for their odd taste for consuming rusty metal. If any of your gear becomes rusty due to the moisture here, be on your guard.")
  322. end
  323. function OfferQuest3(NPC, Spawn)
  324. FaceTarget(NPC, Spawn)
  325. OfferQuest(NPC, Spawn, QUEST_3)
  326. end
  327. function OnQuest3(NPC, Spawn, conversation)
  328. if GetQuestStep(Spawn, QUEST_3) == 5 then
  329. AddConversationOption(conversation, "Yes, I've studied the nearby creatures.", "dlg_10_1")
  330. end
  331. AddConversationOption(conversation, "Not yet.")
  332. StartConversation(conversation, NPC, Spawn, "Greetings once again. Have you studied the local wild creatures?")
  333. end
  334. function dlg_10_1(NPC, Spawn)
  335. SetStepComplete(Spawn, QUEST_3, 5)
  336. FaceTarget(NPC, Spawn)
  337. conversation = CreateConversation()
  338. AddConversationOption(conversation, "Are you working alone here?", "dlg_10_2")
  339. AddConversationOption(conversation, "I think I will go now.")
  340. StartConversation(conversation, NPC, Spawn, "Well done! Your reputation as a hard worker is well earned. It seems there is no shortage of life here in the Sunken City, even if most of it scuttles about in the shadows.")
  341. end
  342. --------------------------------------------------------------------------------------------------------------------
  343. -- QUEST_4
  344. --------------------------------------------------------------------------------------------------------------------
  345. function Greetings4(NPC, Spawn, conversation)
  346. AddConversationOption(conversation, "Are you working alone here?", "dlg_10_2")
  347. AddConversationOption(conversation, "Speaking of traveling, I must be off.")
  348. StartConversation(conversation, NPC, Spawn, "Greetings. I hope you travel safely, adventurer.")
  349. end
  350. function dlg_10_2(NPC, Spawn)
  351. FaceTarget(NPC, Spawn)
  352. conversation = CreateConversation()
  353. AddConversationOption(conversation, "Who am I looking for?", "dlg_10_3")
  354. AddConversationOption(conversation, "Run your own errands.")
  355. StartConversation(conversation, NPC, Spawn, "I am not the only one sent here by the Dismal Rage. Some of my allies have ventured deeper into the Sunken City. In fact, since I have completed my examination of the spectral essences you obtained, I need you to take the information to one of them.")
  356. end
  357. function dlg_10_3(NPC, Spawn)
  358. FaceTarget(NPC, Spawn)
  359. conversation = CreateConversation()
  360. AddConversationOption(conversation, "I'll do it. Where can I find him?", "OfferQuest4")
  361. StartConversation(conversation, NPC, Spawn, "Seek out Investigator Curfeld, a highly respected member of our order. He has spent a lot of time researching the events that transpired here, and no doubt has some insight into the recent rise in undead activity. Take my findings on the spectral essences and give them to him.")
  362. end
  363. function OfferQuest4(NPC, Spawn)
  364. FaceTarget(NPC, Spawn)
  365. OfferQuest(NPC, Spawn, QUEST_4)
  366. end
  367. function OnQuest4(NPC, Spawn, conversation)
  368. if HasQuest(Spawn, QUEST_3_FROM_CURFIELD) then
  369. AddConversationOption(conversation, "Yes, he asked me to bring this journal to you.", "dlg_22_1")
  370. end
  371. AddConversationOption(conversation, "I looked, but I didn't find him.", "DidntFindHim")
  372. AddConversationOption(conversation, "Not yet. I'm still doing some tasks for him.")
  373. StartConversation(conversation, NPC, Spawn, "Thank you for assisting the Dismal Rage in investigating the Sunken City. Has Investigator Curfield made any discoveries?")
  374. end
  375. function DidntFindHim(NPC, Spawn)
  376. FaceTarget(NPC, Spawn)
  377. conversation = CreateConversation()
  378. AddConversationOption(conversation, "I'll have another look.")
  379. StartConversation(conversation, NPC, Spawn, "He is near the gateway to the Graveyard. Look to the south and the west of here, near some other inquisitors from the Dismal Rage. Investigator Curfield often makes expeditions deeper into the Sunken City, so if you don't see him right now just wait a while and he should present himself.")
  380. end
  381. function SpeakWithInvestigator(NPC, Spawn, conversation)
  382. AddConversationOption(conversation, "I will go speak to Investigator Curfield.")
  383. StartConversation(conversation, NPC, Spawn, "Greetings, adventurer. Please see if Investigator Curfield has any work for you. He can be found near the gate to the Graveyard. He'll send you back to me when he sees fit.")
  384. end
  385. --------------------------------------------------------------------------------------------------------------------
  386. -- QUEST_3_FROM_CURFIELD
  387. --------------------------------------------------------------------------------------------------------------------
  388. function dlg_22_1(NPC, Spawn)
  389. if HasQuest(Spawn, QUEST_3_FROM_CURFIELD) then
  390. SetStepComplete(Spawn, QUEST_3_FROM_CURFIELD, 1)
  391. end
  392. FaceTarget(NPC, Spawn)
  393. conversation = CreateConversation()
  394. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/inquisitor_thorson037.mp3", "", "", 1891000932, 649787837, Spawn)
  395. AddConversationOption(conversation, "First he had me uncover what some unsavory pirates are doing in the area.", "dlg_22_2")
  396. AddConversationOption(conversation, "That is none of your business.")
  397. StartConversation(conversation, NPC, Spawn, "Ah, thank you. I'm glad to have someone of his expertise in charge of these matters. I will look through his journal as I prepare to return to North Freeport to present my report. If I may ask, what did the investigator have you do?")
  398. end
  399. --------------------------------------------------------------------------------------------------------------------
  400. -- QUEST_3_FROM_CURFIELD
  401. --------------------------------------------------------------------------------------------------------------------
  402. function HelloOnceAgain(NPC, Spawn, conversation)
  403. AddConversationOption(conversation, "I returned with information from Investigator Curfield.", "dlg_22_1")
  404. AddConversationOption(conversation, "My pleasure. Goodbye, Inquisitor Thorson.")
  405. StartConversation(conversation, NPC, Spawn, "Hello once again friend. As a loyal servant of the Dismal Rage, I continue to investigate the strange happenings here in the Sunken City.")
  406. end
  407. function dlg_22_2(NPC, Spawn)
  408. FaceTarget(NPC, Spawn)
  409. conversation = CreateConversation()
  410. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/inquisitor_thorson038.mp3", "", "", 4129824747, 1521555979, Spawn)
  411. AddConversationOption(conversation, "No, he just had me retrieve some documents that were in their possession.", "dlg_22_3")
  412. AddConversationOption(conversation, "That doesn't concern you.")
  413. StartConversation(conversation, NPC, Spawn, "Pirates, eh? I'd heard rumors of their kind stashing their goods around here. I guess they figured no one would go looking for stolen goods in a place that is haunted by the spirits of the past. I assume he asked you to report their activity to the Freeport Militia.")
  414. end
  415. function dlg_22_3(NPC, Spawn)
  416. FaceTarget(NPC, Spawn)
  417. conversation = CreateConversation()
  418. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/inquisitor_thorson039.mp3", "", "", 4059080083, 3742743573, Spawn)
  419. AddConversationOption(conversation, "He had me investigate a ruined shrine to Prexus that was guarded by zombies.", "dlg_22_4")
  420. AddConversationOption(conversation, "Mind your own business.")
  421. StartConversation(conversation, NPC, Spawn, "Documents? Well, surely Investigator Curfeld knows what's best. What else did he ask you to do?")
  422. end
  423. function dlg_22_4(NPC, Spawn)
  424. FaceTarget(NPC, Spawn)
  425. conversation = CreateConversation()
  426. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/inquisitor_thorson040.mp3", "", "", 3404715072, 1791529373, Spawn)
  427. AddConversationOption(conversation, "Uh, actually not. He just asked me to find out whether it still emanated mystical energy.", "dlg_22_5")
  428. AddConversationOption(conversation, "Stop asking so many questions.")
  429. StartConversation(conversation, NPC, Spawn, "The ruins of that ancient shrine are certainly cursed. No doubt he asked you to destroy the shrine and sanctify the ground.")
  430. end
  431. function dlg_22_5(NPC, Spawn)
  432. FaceTarget(NPC, Spawn)
  433. conversation = CreateConversation()
  434. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/inquisitor_thorson041.mp3", "", "", 3942402517, 3906834551, Spawn)
  435. AddConversationOption(conversation, "I'm sure there must be a good explanation.", "dlg_22_6")
  436. AddConversationOption(conversation, "Let's just forget about this.")
  437. StartConversation(conversation, NPC, Spawn, "What? I don't understand it. Why would he not want the shrine destroyed, especially if it still has arcane power? Let me see if he explains it in this journal.")
  438. end
  439. function dlg_22_6(NPC, Spawn)
  440. FaceTarget(NPC, Spawn)
  441. conversation = CreateConversation()
  442. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/inquisitor_thorson042.mp3", "", "", 3952859177, 2366255979, Spawn)
  443. AddConversationOption(conversation, "Why would he have such notes?", "dlg_22_7")
  444. AddConversationOption(conversation, "You sound like a fool.")
  445. StartConversation(conversation, NPC, Spawn, "Wait... what is going on? This journal isn't about ending the threat of the undead and keeping Freeport safe. It contains notes on how to recreate the spell used by Elwyn Aquel and the Circle of Darkfathom to destroy our city!")
  446. end
  447. function dlg_22_7(NPC, Spawn)
  448. FaceTarget(NPC, Spawn)
  449. conversation = CreateConversation()
  450. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/inquisitor_thorson043.mp3", "", "", 3919422201, 2706704450, Spawn)
  451. AddConversationOption(conversation, "What should we do?", "dlg_22_8")
  452. AddConversationOption(conversation, "I really don't care.")
  453. StartConversation(conversation, NPC, Spawn, "I'd heard it said that members of the investigator's family were worshipers of Prexus. They must have been members of the Circle of Darkfathom. Our city is in grave danger! We have to stop him!")
  454. end
  455. function dlg_22_8(NPC, Spawn)
  456. FaceTarget(NPC, Spawn)
  457. conversation = CreateConversation()
  458. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/inquisitor_thorson044.mp3", "", "", 4213844077, 3519190459, Spawn)
  459. AddConversationOption(conversation, "I will. But what if he refuses to surrender?", "OfferQuest5")
  460. StartConversation(conversation, NPC, Spawn, "There's no time to waste! Curfeld must not be allowed to complete this unholy ritual. The safety of Freeport itself is at stake! Go back and face him. You must put an end to his foul scheme before all is lost.")
  461. end
  462. function OfferQuest5(NPC, Spawn)
  463. FaceTarget(NPC, Spawn)
  464. OfferQuest(NPC, Spawn, QUEST_5)
  465. end
  466. --------------------------------------------------------------------------------------------------------------------
  467. -- QUEST 5
  468. --------------------------------------------------------------------------------------------------------------------
  469. function OnQuest5(NPC, Spawn, conversation)
  470. if GetQuestStep(Spawn, QUEST_5) == 2 then
  471. AddConversationOption(conversation, "His plans are foiled. Freeport is safe.", "dlg_24_1")
  472. end
  473. AddConversationOption(conversation, "Not yet.")
  474. StartConversation(conversation, NPC, Spawn, "You're back! Did you stop Investigator Curfeld?")
  475. end
  476. function dlg_24_1(NPC, Spawn)
  477. SetStepComplete(Spawn, QUEST_5, 2)
  478. FaceTarget(NPC, Spawn)
  479. conversation = CreateConversation()
  480. AddConversationOption(conversation, "It was my pleasure to serve. Do you have any other tasks for me?", "OfferQuest6")
  481. AddConversationOption(conversation, "I'm tired of being around you.")
  482. StartConversation(conversation, NPC, Spawn, "Splendid work! I cannot express how pleased I am with all you have done for us. Your name shall be known within the Dismal Rage as a true hero. I would not be surprised if the Overlord himself hears of your actions this day. Please, take this reward as a token of thanks.")
  483. end
  484. --------------------------------------------------------------------------------------------------------------------
  485. -- QUEST 6
  486. --------------------------------------------------------------------------------------------------------------------
  487. function HelloAgainBraveOne(NPC, Spawn, conversation)
  488. AddConversationOption(conversation, "Are there any other tasks we can undertake together?", "OfferQuest6")
  489. AddConversationOption(conversation, "I'm leaving.")
  490. StartConversation(conversation, NPC, Spawn, "Hello again, brave one. I want to thank you again for defeating Curfield.")
  491. end
  492. function OfferQuest6(NPC, Spawn)
  493. FaceTarget(NPC, Spawn)
  494. OfferQuest(NPC, Spawn, QUEST_6)
  495. end
  496. function MustRemainHere(NPC, Spawn, conversation)
  497. AddConversationOption(conversation, "How do I get there?", "dlg_24_3")
  498. AddConversationOption(conversation, "I'm leaving.")
  499. StartConversation(conversation, NPC, Spawn, "I must remain here to finish my report for the Dismal Rage. However, I would like you to journey to the Freeport Ruins and seek out an acquaintance of mine named Captain Arellius. I have heard that your help is much needed there. I will send word that you are coming, hero of Freeport.")
  500. end
  501. function dlg_24_3(NPC, Spawn)
  502. FaceTarget(NPC, Spawn)
  503. conversation = CreateConversation()
  504. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/inquisitor_thorson049.mp3", "", "", 3163252250, 288796806, Spawn)
  505. AddConversationOption(conversation, "Are there any other places you could recommend where I can find adventures?", "dlg_24_4")
  506. AddConversationOption(conversation, "Thank you, Inquisitor Thorson. Farewell.")
  507. StartConversation(conversation, NPC, Spawn, "The fastest route to the Ruins is to use the mariner's bell at the end of the dock for traveling outside the city proper. This will summon transportation to take you to the Ruins, where Captain Arellius of the Freeport Militia will be awaiting your assistance.")
  508. end
  509. function dlg_24_4(NPC, Spawn)
  510. FaceTarget(NPC, Spawn)
  511. conversation = CreateConversation()
  512. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/inquisitor_thorson061.mp3", "", "", 2845086086, 1715171802, Spawn)
  513. AddConversationOption(conversation, "Tell me more about Custodian Zaddar.", "dlg_24_5")
  514. AddConversationOption(conversation, "Tell me more about Enforcer Kurdek.", "dlg_24_6")
  515. AddConversationOption(conversation, "I may seek them out. Thank you.")
  516. StartConversation(conversation, NPC, Spawn, "You can speak to Custodian Zaddar in the Graveyard and Enforcer Kurdek in the Sprawl. They could both use assistance from an able adventurer.")
  517. end
  518. function dlg_24_5(NPC, Spawn)
  519. FaceTarget(NPC, Spawn)
  520. conversation = CreateConversation()
  521. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/inquisitor_thorson062.mp3", "", "", 4025975768, 1084751097, Spawn)
  522. AddConversationOption(conversation, "Tell me more about Enforcer Kurdek.", "dlg_24_6")
  523. AddConversationOption(conversation, "Thank you for the advice.")
  524. StartConversation(conversation, NPC, Spawn, "Custodian Zaddar in the Graveyard is trying to determine what's behind a recent increase in undead attacks. Use the mariner's bell on the docks of your home district to travel to Stonestair Byway. Head west until you see a passage to the south. The gate at the end leads to the Graveyard.")
  525. end
  526. function dlg_24_6(NPC, Spawn)
  527. FaceTarget(NPC, Spawn)
  528. conversation = CreateConversation()
  529. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/inquisitor_thorson/fprt_adv01_sunken/inquisitor_thorson063.mp3", "", "", 3377387482, 1184471101, Spawn)
  530. AddConversationOption(conversation, "Tell me more about Custodian Zaddar.", "dlg_24_5")
  531. AddConversationOption(conversation, "Thank you for the advice.")
  532. StartConversation(conversation, NPC, Spawn, "Enforcer Kurdek in the Sprawl could use a hand keeping the local gangs in line. To journey to the Sprawl, use the mariner's bell on the docks of your home district to travel to Big Bend. Follow the halls north, then take the west passageway to the west gate.")
  533. end