LieutenantCharlin.lua 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565
  1. --[[
  2. Script Name : SpawnScripts/Oakmyst/LieutenantCharlin.lua
  3. Script Purpose : Lieutenant Charlin
  4. Script Author : Scatman
  5. Script Date : 2009.10.02
  6. Modified by : Ememjr
  7. Modified Date :2017.04.22
  8. Modified Noes : modified for current content on official
  9. Script Notes :
  10. --]]
  11. local MIN_LEVEL = 5
  12. local QUEST_FROM_JORN = 5220
  13. local QUEST_FROM_ADALIN = 294
  14. local QUEST_FROM_MARV = 526
  15. local QUEST_1 = 207
  16. local QUEST_2 = 208
  17. local QUEST_3 = 209
  18. local QUEST_4 = 210
  19. local QUEST_5 = 211
  20. local QUEST_6 = 212
  21. function spawn(NPC)
  22. ProvidesQuest(NPC, QUEST_1)
  23. ProvidesQuest(NPC, QUEST_2)
  24. ProvidesQuest(NPC, QUEST_3)
  25. ProvidesQuest(NPC, QUEST_4)
  26. ProvidesQuest(NPC, QUEST_5)
  27. ProvidesQuest(NPC, QUEST_6)
  28. end
  29. function respawn(NPC)
  30. spawn(NPC)
  31. end
  32. function hailed(NPC, Spawn)
  33. FaceTarget(NPC, Spawn)
  34. conversation = CreateConversation()
  35. if HasQuest(Spawn, QUEST_FROM_JORN) and GetQuestStep(Spawn, QUEST_FROM_JORN) == 3 then
  36. AddConversationOption(conversation, "I have news for you.", "FoundBookOnGnome")
  37. end
  38. if HasQuest(Spawn, QUEST_FROM_ADALIN) and GetQuestStep(Spawn, QUEST_FROM_ADALIN) == 5 then
  39. AddConversationOption(conversation, "I have news for you.", "GnollAttackedWhileCleansing")
  40. end
  41. if HasQuest(Spawn, QUEST_FROM_MARV) and GetQuestStep(Spawn, QUEST_FROM_MARV) == 3 then
  42. AddConversationOption(conversation, "I have news for you.", "FoundBlackburrowStout")
  43. end
  44. if HasCompletedQuest(Spawn, QUEST_1) then
  45. if HasCompletedQuest(Spawn, QUEST_2) then
  46. if HasCompletedQuest(Spawn, QUEST_3) then
  47. if HasCompletedQuest(Spawn, QUEST_4) then
  48. if HasCompletedQuest(Spawn, QUEST_5) then
  49. if HasCompletedQuest(Spawn, QUEST_6) then
  50. Say(NPC, "This land and our people owe you. Thank you.", Spawn)
  51. StartConversation(conversation, NPC, Spawn, "This land and our people owe you. Thank you.")
  52. elseif HasQuest(Spawn, QUEST_6) then
  53. Say(NPC, "This land and our people owe you. Thank you.", Spawn)
  54. StartConversation(conversation, NPC, Spawn, "This land and our people owe you. Thank you.")
  55. else
  56. OnQuest5(NPC, Spawn, conversation)
  57. end
  58. elseif HasQuest(Spawn, QUEST_5) then
  59. OnQuest5(NPC, Spawn, conversation)
  60. else
  61. OnQuest4(NPC, Spawn, conversation)
  62. end
  63. elseif HasQuest(Spawn, QUEST_4) then
  64. OnQuest4(NPC, Spawn, conversation)
  65. else
  66. OnQuest3(NPC, Spawn, conversation)
  67. end
  68. elseif HasQuest(Spawn, QUEST_3) then
  69. OnQuest3(NPC, Spawn, conversation)
  70. else
  71. OnQuest2(NPC, Spawn, conversation)
  72. end
  73. elseif HasQuest(Spawn, QUEST_2) then
  74. OnQuest2(NPC, Spawn, conversation)
  75. else
  76. OnQuest1(NPC, Spawn, conversation)
  77. end
  78. elseif HasQuest(Spawn, QUEST_1) then
  79. OnQuest1(NPC, Spawn, conversation)
  80. else
  81. BeCareful(NPC, Spawn, conversation)
  82. end
  83. end
  84. --------------------------------------------------------------------------------------------------------------------------------
  85. -- QUEST FROM JORN
  86. --------------------------------------------------------------------------------------------------------------------------------
  87. function FoundBookOnGnome(NPC, Spawn)
  88. FaceTarget(NPC, Spawn)
  89. conversation = CreateConversation()
  90. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin_jorn000.mp3", "", "", 3699115243, 1071346940, Spawn)
  91. AddConversationOption(conversation, "I found this book on a gnome. It's written in Lucanic.", "InterestingWheredYouGetThis")
  92. StartConversation(conversation, NPC, Spawn, "Oh? What news.")
  93. end
  94. function InterestingWheredYouGetThis(NPC, Spawn)
  95. FaceTarget(NPC, Spawn)
  96. conversation = CreateConversation()
  97. AddConversationOption(conversation, "From a gnome here in Oakmyst Forest.", "ThisIsVeryConcerning")
  98. StartConversation(conversation, NPC, Spawn, "Interesting. Where'd you get this?")
  99. end
  100. function ThisIsVeryConcerning(NPC, Spawn)
  101. SetStepComplete(Spawn, QUEST_FROM_JORN, 3)
  102. FaceTarget(NPC, Spawn)
  103. conversation = CreateConversation()
  104. if (GetLevel(Spawn) < MIN_LEVEL) or (HasQuest(Spawn, QUEST_1) or HasCompletedQuest(Spawn, QUEST_1)) then
  105. AddConversationOption(conversation, "Thank you.")
  106. else
  107. AddConversationOption(conversation, "Is there anything else I can do?", "dlg_1_4")
  108. end
  109. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin_jorn002.mp3", "", "", 1267137268, 405925681, Spawn)
  110. StartConversation(conversation, NPC, Spawn, "This is very concerning. I'm going to send this book in to be studied, this is a good find. Maybe it will lead to something bigger. Knowing my luck it will just be a joke book. Good work on this.")
  111. end
  112. --------------------------------------------------------------------------------------------------------------------------------
  113. -- QUEST_FROM_ADALIN
  114. --------------------------------------------------------------------------------------------------------------------------------
  115. function GnollAttackedWhileCleansing(NPC, Spawn)
  116. FaceTarget(NPC, Spawn)
  117. conversation = CreateConversation()
  118. AddConversationOption(conversation, "I was cleansing some trees in the forest when a gnoll attacked.", "SecondPersonToClaim")
  119. StartConversation(conversation, NPC, Spawn, "What news is that?")
  120. end
  121. function SecondPersonToClaim(NPC, Spawn)
  122. FaceTarget(NPC, Spawn)
  123. conversation = CreateConversation()
  124. AddConversationOption(conversation, "I have his paw.", "HavePaw")
  125. StartConversation(conversation, NPC, Spawn, "You're the second person to claim as much. Listen, I'm sure you saw something, but a gnoll is Oakmyst Forest?")
  126. end
  127. function HavePaw(NPC, Spawn)
  128. FaceTarget(NPC, Spawn)
  129. conversation = CreateConversation()
  130. if (GetLevel(Spawn) < MIN_LEVEL) or (HasQuest(Spawn, QUEST_1) or HasCompletedQuest(Spawn, QUEST_1)) then
  131. AddConversationOption(conversation, "Thank you.")
  132. else
  133. AddConversationOption(conversation, "Can I help in anyway?", "dlg_1_4")
  134. end
  135. StartConversation(conversation, NPC, Spawn, "Well, that you do. I'll send word of this to my superiors, we'll see where they want to go from there. Until then I will continue as normal, though things are not normal by any stretch of the word.")
  136. end
  137. --------------------------------------------------------------------------------------------------------------------------------
  138. -- QUEST FROM MARV
  139. --------------------------------------------------------------------------------------------------------------------------------
  140. function FoundBlackburrowStout(NPC, Spawn)
  141. FaceTarget(NPC, Spawn)
  142. conversation = CreateConversation()
  143. AddConversationOption(conversation, "I was helping someone pull their lost shipment from the water and we found some Blackburrow Stout.", "FoundBlackBurrowStout2")
  144. StartConversation(conversation, NPC, Spawn, "What news have you brought me?")
  145. end
  146. function FoundBlackBurrowStout2(NPC, Spawn)
  147. SetStepComplete(Spawn, QUEST_FROM_MARV, 3)
  148. FaceTarget(NPC, Spawn)
  149. conversation = CreateConversation()
  150. if (GetLevel(Spawn) < MIN_LEVEL) or (HasQuest(Spawn, QUEST_1) or HasCompletedQuest(Spawn, QUEST_1)) then
  151. AddConversationOption(conversation, "Sure sounds it.")
  152. else
  153. AddConversationOption(conversation, "Is there anything I can do to help?", "dlg_1_4")
  154. end
  155. StartConversation(conversation, NPC, Spawn, "Hmm, that plus everything else I've been hearing lately is enough to cause concern. Someone reported seeing a gnoll a few days ago, I didn't believe him. Maybe he was telling the truth. Things are getting strange around here.")
  156. end
  157. --------------------------------------------------------------------------------------------------------------------------------
  158. -- QUEST 1
  159. --------------------------------------------------------------------------------------------------------------------------------
  160. function BeCareful(NPC, Spawn, conversation)
  161. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin000.mp3", "", "", 1924665099, 2767332789, Spawn)
  162. if GetLevel(Spawn) >= MIN_LEVEL then
  163. AddConversationOption(conversation, "What do I need to look out for?", "dlg_1_1")
  164. else
  165. AddConversationOption(conversation, "I will be.")
  166. end
  167. StartConversation(conversation, NPC, Spawn, "Be careful out there, citizen.")
  168. end
  169. function dlg_1_1(NPC, Spawn)
  170. FaceTarget(NPC, Spawn)
  171. conversation = CreateConversation()
  172. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin001.mp3", "", "", 135128317, 2223244870, Spawn)
  173. AddConversationOption(conversation, "So everything here is fine?", "dlg_1_2")
  174. StartConversation(conversation, NPC, Spawn, "Oh, I don't know, what was it last time I checked? Poachers maybe, or corruption spreading through the forest, I even heard some guy mention a gnoll. Things are bad, don't let me convince you otherwise, but don't believe the people who say the Oakmyst Forest is in serious danger.")
  175. end
  176. function dlg_1_2(NPC, Spawn)
  177. FaceTarget(NPC, Spawn)
  178. conversation = CreateConversation()
  179. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin001a.mp3", "", "", 3642173862, 3828556771, Spawn)
  180. AddConversationOption(conversation, "Then there is a danger?", "dlg_1_3")
  181. StartConversation(conversation, NPC, Spawn, "Well... I do get nervous when the Tunarian Alliance steps in. It's probably nothing, but they requested a stronger Qeynos Guard presence here. I think they know more than I do. Still, the danger Oakmyst Forest is in is pretty minor.")
  182. end
  183. function dlg_1_3(NPC, Spawn)
  184. FaceTarget(NPC, Spawn)
  185. conversation = CreateConversation()
  186. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin002.mp3", "", "", 103240221, 3198070219, Spawn)
  187. AddConversationOption(conversation, "Sure, I can help.", "dlg_1_4")
  188. AddConversationOption(conversation, "Not right now.")
  189. StartConversation(conversation, NPC, Spawn, "Minor danger. Sure, we can use help, but it's not an emergency like some might have you believe. Would you care to volunteer?")
  190. end
  191. function dlg_1_4(NPC, Spawn)
  192. FaceTarget(NPC, Spawn)
  193. conversation = CreateConversation()
  194. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin003.mp3", "", "", 2962974855, 690833663, Spawn)
  195. AddConversationOption(conversation, "What do you need me to do?", "dlg_1_5")
  196. StartConversation(conversation, NPC, Spawn, "Good, glad to hear it. Even without all this 'supposed' stuff going on I've got my share of duties. An adventurer was slain recently in these parts. Our initial report back seems to suggest poison. The problem is we have no idea what kind of poison. We know that certain animals in the forest use poison. We suspect that the poachers also use it.")
  197. end
  198. function dlg_1_5(NPC, Spawn)
  199. FaceTarget(NPC, Spawn)
  200. conversation = CreateConversation()
  201. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin004.mp3", "", "", 2819639943, 1318836680, Spawn)
  202. AddConversationOption(conversation, "I can do it.", "dlg_1_6")
  203. StartConversation(conversation, NPC, Spawn, "Well, the poachers are spry enough to avoid detection, so we can't get a sample of their poison from them. We can, however, collect poison samples from some of the wildlife here and use that as a starting point. At most, we can find out what caused the death, and at the least we eliminate some possibilities. What do you say?")
  204. end
  205. function dlg_1_6(NPC, Spawn)
  206. FaceTarget(NPC, Spawn)
  207. conversation = CreateConversation()
  208. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin005.mp3", "", "", 276846636, 4209539187, Spawn)
  209. AddConversationOption(conversation, "All right.", "OfferQuest1")
  210. StartConversation(conversation, NPC, Spawn, "Good. Collect some poison samples from frogs, mystail rats, and the spiders. They can all be found in Oakmyst.")
  211. end
  212. function OfferQuest1(NPC, Spawn)
  213. FaceTarget(NPC, Spawn)
  214. OfferQuest(NPC, Spawn, QUEST_1)
  215. end
  216. function OnQuest1(NPC, Spawn, conversation)
  217. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin006.mp3", "", "", 1152487104, 26326303, Spawn)
  218. if (HasQuest(Spawn, QUEST_1) and GetQuestStep(Spawn, QUEST_1) == 4) or (HasCompletedQuest(Spawn, QUEST_1) and not HasQuest(Spawn, QUEST_2)) then
  219. AddConversationOption(conversation, "Yes, I have.", "dlg_3_1")
  220. else
  221. AddConversationOption(conversation, "Not yet.")
  222. end
  223. StartConversation(conversation, NPC, Spawn, "Have you collected the poison samples yet?")
  224. end
  225. function dlg_3_1(NPC, Spawn)
  226. if HasQuest(Spawn, QUEST_1) then
  227. SetStepComplete(Spawn, QUEST_1, 4)
  228. end
  229. FaceTarget(NPC, Spawn)
  230. conversation = CreateConversation()
  231. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin007.mp3", "", "", 4118896483, 283789370, Spawn)
  232. AddConversationOption(conversation, "Sure, what do you need?", "dlg_3_2")
  233. AddConversationOption(conversation, "Sorry, not now.")
  234. StartConversation(conversation, NPC, Spawn, "Excellent. I'll send these back to Qeynos as soon as I can. In the mean time we can still use your help, are you willing?")
  235. end
  236. --------------------------------------------------------------------------------------------------------------------------------
  237. -- QUEST 2
  238. --------------------------------------------------------------------------------------------------------------------------------
  239. function dlg_3_2(NPC, Spawn)
  240. FaceTarget(NPC, Spawn)
  241. conversation = CreateConversation()
  242. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin008.mp3", "", "", 1585958118, 144641390, Spawn)
  243. AddConversationOption(conversation, "All right.", "OfferQuest2")
  244. StartConversation(conversation, NPC, Spawn, "Another one of those weird reports. Dirt piles have been turning up all around the Oakmyst Forest and we have no idea why. I'd like you to go get some mineral samples from the piles and maybe we'll be able to figure out who put them there and why.")
  245. end
  246. function OfferQuest2(NPC, Spawn)
  247. Say(NPC, "This is me talking try for quest2")
  248. FaceTarget(NPC, Spawn)
  249. OfferQuest(NPC, Spawn, QUEST_2)
  250. end
  251. function OnQuest2(NPC, Spawn, conversation)
  252. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin009.mp3", "", "", 197933186, 2286710260, Spawn)
  253. if (HasQuest(Spawn, QUEST_2) and GetQuestStep(Spawn, QUEST_2) == 2) or (HasCompletedQuest(Spawn, QUEST_2) and not HasQuest(Spawn, QUEST_3)) then
  254. AddConversationOption(conversation, "Yes, here you go.", "dlg_0_1")
  255. else
  256. AddConversationOption(conversation, "No, not yet.")
  257. end
  258. StartConversation(conversation, NPC, Spawn, "Have you collected the soil yet?")
  259. end
  260. function dlg_0_1(NPC, Spawn)
  261. if HasQuest(Spawn, QUEST_2) then
  262. SetStepComplete(Spawn, QUEST_2, 2)
  263. end
  264. FaceTarget(NPC, Spawn)
  265. conversation = CreateConversation()
  266. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin010.mp3", "", "", 2649903060, 3166046323, Spawn)
  267. AddConversationOption(conversation, "Sure, I can do that.", "dlg_0_2")
  268. AddConversationOption(conversation, "Not now, thanks.")
  269. StartConversation(conversation, NPC, Spawn, "Thanks. Maybe this will turn something up, maybe not. I'll send it off to be studied and we'll get some answers. I've received an unofficial request for my presence at the docks west of here. I'm sure it's nothing too important, how' d you like to go in my place?")
  270. end
  271. --------------------------------------------------------------------------------------------------------------------------------
  272. -- QUEST 3
  273. --------------------------------------------------------------------------------------------------------------------------------
  274. function dlg_0_2(NPC, Spawn)
  275. FaceTarget(NPC, Spawn)
  276. conversation = CreateConversation()
  277. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin011.mp3", "", "", 2323725305, 107103300, Spawn)
  278. AddConversationOption(conversation, "Ok.", "OfferQuest3")
  279. StartConversation(conversation, NPC, Spawn, "Great. Go speak with Bardrian Vorsuth, a dock worker. If experience teaches anything my money says Bardrian's going to report 'something strange' that 'confuses' him and he doesn't know what to do.")
  280. end
  281. function OfferQuest3(NPC, Spawn)
  282. FaceTarget(NPC, Spawn)
  283. OfferQuest(NPC, Spawn, QUEST_3)
  284. end
  285. function OnQuest3(NPC, Spawn)
  286. if HasQuest(Spawn, QUEST_3) and GetQuestStep(Spawn, QUEST_3) == 1 then
  287. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin012.mp3", "", "", 1377900887, 278814663, Spawn)
  288. AddConversationOption(conversation, "I'll be back after I've talked with him.")
  289. StartConversation(conversation, NPC, Spawn, "Bardrian?")
  290. elseif HasQuest(Spawn, QUEST_3) and GetQuestStep(Spawn, QUEST_3) == 2 then
  291. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin012.mp3", "", "", 1377900887, 278814663, Spawn)
  292. AddConversationOption(conversation, "He found some strange machine in an unmarked crate on the docks.", "dlg_7_1")
  293. StartConversation(conversation, NPC, Spawn, "Bardrian?")
  294. elseif HasQuest(Spawn, QUEST_3) and GetQuestStep(Spawn, QUEST_3) == 3 then
  295. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin017.mp3", "", "", 3187740271, 4021664312, Spawn)
  296. AddConversationOption(conversation, "Not yet.")
  297. StartConversation(conversation, NPC, Spawn, "Did you find the machine?")
  298. elseif (HasQuest(Spawn, QUEST_3) and GetQuestStep(Spawn, QUEST_3) == 4) or (HasCompletedQuest(Spawn, QUEST_3) and not HasCompletedQuest(Spawn, QUEST_4)) then
  299. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin017.mp3", "", "", 3187740271, 4021664312, Spawn)
  300. AddConversationOption(conversation, "Yes, it is in the water near the Western Falls.", "dlg_10_1")
  301. StartConversation(conversation, NPC, Spawn, "Did you find the machine?")
  302. end
  303. end
  304. function dlg_7_1(NPC, Spawn)
  305. FaceTarget(NPC, Spawn)
  306. conversation = CreateConversation()
  307. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin013.mp3", "", "", 1871272901, 810339026, Spawn)
  308. AddConversationOption(conversation, "Bardrian says it was just on the docks one day, no post markings at all. He has no idea what the machine is meant to do, but based on its configuration he thinks it is some sort of variable speed and power controller.", "dlg_7_2")
  309. StartConversation(conversation, NPC, Spawn, "Strange machine? What else can you tell me? This may relate to information we discovered from a book we found on a Freeportian gnome a short while ago.")
  310. end
  311. function dlg_7_2(NPC, Spawn)
  312. FaceTarget(NPC, Spawn)
  313. conversation = CreateConversation()
  314. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin014.mp3", "", "", 4247692633, 3050935613, Spawn)
  315. AddConversationOption(conversation, "There were no other machines.", "dlg_7_3")
  316. StartConversation(conversation, NPC, Spawn, "And the other machines?")
  317. end
  318. function dlg_7_3(NPC, Spawn)
  319. FaceTarget(NPC, Spawn)
  320. conversation = CreateConversation()
  321. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin015.mp3", "", "", 4101124695, 4199131905, Spawn)
  322. AddConversationOption(conversation, "Can you be certain?", "dlg_7_4")
  323. StartConversation(conversation, NPC, Spawn, "Hmmm, according to data we intercepted there should have been. You know, things may be starting to come together. There are at least two other machines, I believe we've already seen signs of one: the dirt piles. It was meant as a dirt displacement device, and according to information we intercepted it was being tested here.")
  324. end
  325. function dlg_7_4(NPC, Spawn)
  326. FaceTarget(NPC, Spawn)
  327. conversation = CreateConversation()
  328. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin016a.mp3", "", "", 3187383592, 2219030963, Spawn)
  329. AddConversationOption(conversation, "What about the other machine?", "dlg_7_5")
  330. StartConversation(conversation, NPC, Spawn, "No... But the soil you recovered did have elements consistent with processing: the grains were uniform in size, the soil had small traces of elements that are not natural to Oakmyst Forest. To make matters worse none of the soil recovered was top soil, whoever is digging has been digging deep.")
  331. end
  332. function dlg_7_5(NPC, Spawn)
  333. SetStepComplete(Spawn, QUEST_3, 2)
  334. FaceTarget(NPC, Spawn)
  335. conversation = CreateConversation()
  336. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin016.mp3", "", "", 3315274206, 1719893519, Spawn)
  337. AddConversationOption(conversation, "I will return.")
  338. StartConversation(conversation, NPC, Spawn, "The other machine's purpose was unknown, but we know it involved water in some capacity. Maybe that machine is another test or maybe its purpose is more sinister, either way we need to find it. It will be in or near water, you need to figure out where it is. If it can be easily removed do so, but otherwise do not worry about that--just find out where it is located and report back to me. The most likely spot is near the Western Falls.")
  339. end
  340. function dlg_10_1(NPC, Spawn)
  341. if HasQuest(Spawn, QUEST_3) then
  342. SetStepComplete(Spawn, QUEST_3, 4)
  343. end
  344. FaceTarget(NPC, Spawn)
  345. conversation = CreateConversation()
  346. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin018.mp3", "", "", 1856078636, 1149850938, Spawn)
  347. AddConversationOption(conversation, "What is it?", "dlg_10_2")
  348. AddConversationOption(conversation, "Perhaps later.")
  349. StartConversation(conversation, NPC, Spawn, "Good work, we'll get our people on that right away. I've had my people searching for the other machine but they're coming up without results. Something in my gut tells me it doesn't matter, that it's no longer here. But that doesn't matter, at least not yet. What does matter is our men displacing the machine you found. While they do that I have another task for you.")
  350. end
  351. --------------------------------------------------------------------------------------------------------------------------------
  352. -- QUEST 4
  353. --------------------------------------------------------------------------------------------------------------------------------
  354. function dlg_10_2(NPC, Spawn)
  355. FaceTarget(NPC, Spawn)
  356. conversation = CreateConversation()
  357. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin019.mp3", "", "", 1411954385, 415072002, Spawn)
  358. AddConversationOption(conversation, "All right.", "OfferQuest4")
  359. StartConversation(conversation, NPC, Spawn, "We've intercepted clues about a possible meeting regarding the machine we found on the docks, apparently it was supposed to be removed from the docks quite some time ago but never was. We don't know who will be involved in this meeting but we'd like you to break it up. Once we figure out who is behind this it will give us a big clue as to what's been going on around here.")
  360. end
  361. function OfferQuest4(NPC, Spawn)
  362. FaceTarget(NPC, Spawn)
  363. OfferQuest(NPC, Spawn, QUEST_4)
  364. end
  365. function OnQuest4(NPC, Spawn, conversation)
  366. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin020.mp3", "", "", 2483977262, 3448158171, Spawn)
  367. if (HasQuest(Spawn, QUEST_4) and GetQuestStep(Spawn, QUEST_4) == 2) or (HasCompletedQuest(Spawn, QUEST_4)) then
  368. AddConversationOption(conversation, "Yes, I did.", "dlg_13_5")
  369. else
  370. AddConversationOption(conversation, "No, not yet.")
  371. end
  372. StartConversation(conversation, NPC, Spawn, "Did you interrupt the meeting?")
  373. end
  374. function dlg_13_5(NPC, Spawn)
  375. FaceTarget(NPC, Spawn)
  376. conversation = CreateConversation()
  377. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin021.mp3", "", "", 2374633916, 1265137198, Spawn)
  378. AddConversationOption(conversation, "It was a meeting between a gnome and some gnolls. The gnome fled, I slew the gnolls. I believe the leader was named Gilrix. He had this book.", "dlg_13_6")
  379. StartConversation(conversation, NPC, Spawn, "What did you discover?")
  380. end
  381. function dlg_13_6(NPC, Spawn)
  382. if HasQuest(Spawn, QUEST_4) then
  383. SetStepComplete(Spawn, QUEST_4, 2)
  384. end
  385. FaceTarget(NPC, Spawn)
  386. conversation = CreateConversation()
  387. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin022.mp3", "", "", 3210550300, 3185527572, Spawn)
  388. AddConversationOption(conversation, "How so?", "dlg_13_7")
  389. StartConversation(conversation, NPC, Spawn, "Gnolls? Then all the reports were right. And that Gilrix. He was mentioned in one of the materials we obtained concerning this whole mess. But we may be a step ahead of them for once.")
  390. end
  391. --------------------------------------------------------------------------------------------------------------------------------
  392. -- QUEST 5
  393. --------------------------------------------------------------------------------------------------------------------------------
  394. function dlg_13_7(NPC, Spawn)
  395. FaceTarget(NPC, Spawn)
  396. conversation = CreateConversation()
  397. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin023.mp3", "", "", 1812542762, 4174950812, Spawn)
  398. AddConversationOption(conversation, "What must I do?", "dlg_13_8")
  399. AddConversationOption(conversation, "I may be able to help later.")
  400. StartConversation(conversation, NPC, Spawn, "The book we obtained had lots of notes and plans. The book you've provided to us has all their contingency plans. If you've disrupted the meeting then the gnolls won't know precisely what happened and will fall to one of their backup plans. This gives us an excellent opportunity to strike.")
  401. end
  402. function dlg_13_8(NPC, Spawn)
  403. FaceTarget(NPC, Spawn)
  404. conversation = CreateConversation()
  405. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin024.mp3", "", "", 823446036, 800185291, Spawn)
  406. AddConversationOption(conversation, "What about the others?", "dlg_13_9")
  407. StartConversation(conversation, NPC, Spawn, "Well, with this book we've got the locations where the gnoll lieutenants will be in hiding while they await orders from Gilrix. While they wait, they are vulnerable. One will be near here--take the path west and turn north before you go under the bridge, that should put you very near him, he's hiding in an alcove.")
  408. end
  409. function dlg_13_9(NPC, Spawn)
  410. FaceTarget(NPC, Spawn)
  411. conversation = CreateConversation()
  412. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin024a.mp3", "", "", 1440777464, 2474739731, Spawn)
  413. AddConversationOption(conversation, "All right.", "OfferQuest5")
  414. StartConversation(conversation, NPC, Spawn, "Another will be on the rocky hill south east of Clearwater Pond. The last will be in a small alcove just north west of the Western Falls.")
  415. end
  416. function OfferQuest5(NPC, Spawn)
  417. FaceTarget(NPC, Spawn)
  418. OfferQuest(NPC, Spawn, QUEST_5)
  419. end
  420. function OnQuest5(NPC, Spawn, conversation)
  421. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin025.mp3", "", "", 4104237922, 4156355427, Spawn)
  422. if (HasQuest(Spawn, QUEST_5) and GetQuestStep(Spawn, QUEST_5) == 4) or (HasCompletedQuest(Spawn, QUEST_5)) then
  423. AddConversationOption(conversation, "Yes, they are all dead.", "dlg_18_1")
  424. else
  425. AddConversationOption(conversation, "Not yet.")
  426. end
  427. StartConversation(conversation, NPC, Spawn, "Have you taken out the lieutenants?")
  428. end
  429. function dlg_18_1(NPC, Spawn)
  430. if HasQuest(Spawn, QUEST_5) then
  431. SetStepComplete(Spawn, QUEST_5, 4)
  432. end
  433. FaceTarget(NPC, Spawn)
  434. conversation = CreateConversation()
  435. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin026.mp3", "", "", 1438660086, 1610935766, Spawn)
  436. AddConversationOption(conversation, "Is there anything else?", "dlg_18_2")
  437. StartConversation(conversation, NPC, Spawn, "This is great news! With their lieutenants dead the gnoll presence here will be in shambles. Those that don't flee will easily be captured. You have done a great, great thing.")
  438. end
  439. --------------------------------------------------------------------------------------------------------------------------------
  440. -- QUEST 6
  441. --------------------------------------------------------------------------------------------------------------------------------
  442. function dlg_18_2(NPC, Spawn)
  443. FaceTarget(NPC, Spawn)
  444. conversation = CreateConversation()
  445. PlayFlavor(NPC, "voiceover/english/tutorial_revamp/lieutenant_charlin/qey_adv01_oakmyst/quests/charlin/charlin027.mp3", "", "", 4018442535, 45795752, Spawn)
  446. AddConversationOption(conversation, "I can face them.", "OfferQuest6")
  447. StartConversation(conversation, NPC, Spawn, "Yes, in fact. I have good news for you. Elements of the Qeynos Guard--among other factions--have asked for you by name. You've made quite a name for yourself in your work here, and I put in a good word for you. You are asked to report to the Caves, apparently the gnoll movement here was only one of many. The Rockpaw Gnolls may soon pose a threat bigger than we thought possible.")
  448. end
  449. function OfferQuest6(NPC, Spawn)
  450. FaceTarget(NPC, Spawn)
  451. OfferQuest(NPC, Spawn, QUEST_6)
  452. end