fanthis.lua 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. --[[
  2. Script Name : fanthis.lua
  3. Script Purpose : Waypoint Path for fanthis.lua
  4. Script Author : Devn00b
  5. Script Date : 07/31/2020 07:33:49 PM
  6. Script Notes : Locations collected from Live
  7. --]]
  8. dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
  9. local arrows = 5521
  10. function spawn(NPC)
  11. waypoints(NPC)
  12. SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
  13. ProvidesQuest(NPC,arrows)
  14. end
  15. function hailed(NPC, Spawn)
  16. FaceTarget(NPC, Spawn)
  17. if GetFactionAmount(Spawn, 11) <0 then
  18. Attention(NPC,Spawn)
  19. PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
  20. else
  21. Attention(NPC,Spawn)
  22. PlayFlavor(NPC, "voiceover/english/patrolman_fanthis/qey_elddar/patrolmanfanthis.mp3", "", "hello", 1693710437, 2806489580, Spawn)
  23. local conversation = CreateConversation()
  24. if not HasQuest(Spawn,arrows) and not HasCompletedQuest(Spawn, arrows) then
  25. AddConversationOption(conversation, "Do you need assistance while on duty?", "Option1")
  26. end
  27. if GetQuestStep(Spawn,arrows)==2 then
  28. AddConversationOption(conversation, "Here are the arrows. Nightbow said not to keep her waiting so long next time.", "Delivered")
  29. end
  30. AddConversationOption(conversation, "Good day, then.")
  31. StartConversation(conversation, NPC, Spawn, "Greetings! I am Patrolman Fanthis. Sadly, I have no time to speak while on duty.")
  32. end
  33. end
  34. function Attention(NPC,Spawn)
  35. local Vera = GetSpawn(NPC,2070081)
  36. if Vera ~=nil then
  37. FaceTarget(Vera,Spawn)
  38. PlayFlavor(Vera, "", "", "attention", 0, 0, Spawn)
  39. end
  40. end
  41. function InRange(NPC,Spawn)
  42. if GetFactionAmount(Spawn, 11) <0 then
  43. PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
  44. else
  45. if not HasCompletedQuest (Spawn, arrows) and not HasQuest (Spawn, arrows) then
  46. if math.random(1, 100) <= 80 then
  47. PlayFlavor(NPC, "voiceover/english/patrolman_fanthis/qey_elddar/100_patrolman_halfelf_fanthis_callout1_9ff23be1.mp3", "Greetings! I am Patrolman Fanthis. I wish I had time to chat, but duty calls.", "attention", 2986438322, 1619790403, Spawn)
  48. end
  49. end
  50. end
  51. end
  52. function respawn(NPC)
  53. spawn(NPC)
  54. end
  55. function waypoints(NPC)
  56. MovementLoopAddLocation(NPC, 652.61, -12.3, -363.84, 2, 0)
  57. MovementLoopAddLocation(NPC, 662.62, -11.36, -366.19, 2, 0)
  58. MovementLoopAddLocation(NPC, 669.77, -11.62, -368.11, 2, 0)
  59. MovementLoopAddLocation(NPC, 677.77, -12.09, -371.28, 2, 0)
  60. MovementLoopAddLocation(NPC, 687.73, -13.16, -375.44, 2, 0)
  61. MovementLoopAddLocation(NPC, 698.25, -14.21, -381.31, 2, 0)
  62. MovementLoopAddLocation(NPC, 702.28, -14.68, -382.77, 2, 0)
  63. MovementLoopAddLocation(NPC, 702.93, -14.13, -390.06, 2, 0)
  64. MovementLoopAddLocation(NPC, 702.29, -14.04, -400.43, 2, 0)
  65. MovementLoopAddLocation(NPC, 701.55, -14.5, -408.55, 2, 0)
  66. MovementLoopAddLocation(NPC, 698.8, -14.31, -410.2, 2, 0)
  67. MovementLoopAddLocation(NPC, 696.68, -13.96, -409.18, 2, 0)
  68. MovementLoopAddLocation(NPC, 687.68, -12.52, -400.81, 2, 0)
  69. MovementLoopAddLocation(NPC, 679.77, -11.63, -395.53, 2, 0)
  70. MovementLoopAddLocation(NPC, 664.07, -10.72, -397.75, 2, 0)
  71. MovementLoopAddLocation(NPC, 656.01, -10.98, -398.79, 2, 0)
  72. MovementLoopAddLocation(NPC, 650.85, -11.4, -391.46, 2, 0)
  73. MovementLoopAddLocation(NPC, 647.07, -11.87, -381.53, 2, 0)
  74. MovementLoopAddLocation(NPC, 643.83, -12.55, -373.03, 2, 0)
  75. MovementLoopAddLocation(NPC, 592.8, -21, -367.06, 2, 0)
  76. MovementLoopAddLocation(NPC, 579.34, -21.62, -365.14, 2, 0)
  77. MovementLoopAddLocation(NPC, 571.17, -21.58, -364.76, 2, 0)
  78. MovementLoopAddLocation(NPC, 556.77, -19.42, -367.04, 2, 0)
  79. MovementLoopAddLocation(NPC, 548.24, -19.31, -362.96, 2, 0)
  80. MovementLoopAddLocation(NPC, 544.99, -19.87, -354.35, 2, 0)
  81. MovementLoopAddLocation(NPC, 549.43, -20.32, -346.18, 2, 0)
  82. MovementLoopAddLocation(NPC, 554.78, -20.48, -341.17, 2, 0)
  83. MovementLoopAddLocation(NPC, 559.25, -20.5, -344.45, 2, 0)
  84. MovementLoopAddLocation(NPC, 573.92, -22.06, -357.46, 2, 0)
  85. MovementLoopAddLocation(NPC, 576.37, -21.92, -358.99, 2, 0)
  86. MovementLoopAddLocation(NPC, 586.55, -21.74, -361.98, 2, 0)
  87. MovementLoopAddLocation(NPC, 599.09, -20.19, -366, 2, 0)
  88. MovementLoopAddLocation(NPC, 611.97, -18.14, -366.74, 2, 0)
  89. MovementLoopAddLocation(NPC, 646.26, -12.73, -367.6, 2, 0)
  90. MovementLoopAddLocation(NPC, 647.4, -12.85, -364.6, 2, 0)
  91. MovementLoopAddLocation(NPC, 647.6, -13.84, -351.06, 2, 0)
  92. MovementLoopAddLocation(NPC, 646.7, -17.86, -328.97, 2, 0)
  93. MovementLoopAddLocation(NPC, 642.52, -18.52, -322.35, 2, 0)
  94. MovementLoopAddLocation(NPC, 643.21, -17.5, -328.53, 2, 0)
  95. MovementLoopAddLocation(NPC, 646.13, -13.6, -355.21, 2, 0)
  96. MovementLoopAddLocation(NPC, 648.31, -13.03, -361.11, 2, 0)
  97. end
  98. --[[ Old/Wrong pathing via Devnoob. Pre-group patrol
  99. function waypoints(NPC)
  100. MovementLoopAddLocation(NPC, 648.13, -13.26, -358.4, 2, math.random(0,8))
  101. MovementLoopAddLocation(NPC, 646.13, -19.97, -319.17, 2, math.random(0,8))
  102. MovementLoopAddLocation(NPC, 650.47, -21.65, -305.03, 2, math.random(0,8))
  103. MovementLoopAddLocation(NPC, 651.59, -19.68, -274.91, 2, math.random(0,8))
  104. MovementLoopAddLocation(NPC, 660.91, -19.39, -273.14, 2, math.random(0,8))
  105. MovementLoopAddLocation(NPC, 686.92, -19.49, -279.5, 2, math.random(0,8))
  106. MovementLoopAddLocation(NPC, 698.27, -17.96, -309.4, 2, math.random(0,8))
  107. MovementLoopAddLocation(NPC, 704.73, -17.06, -332.45, 2, math.random(0,8))
  108. MovementLoopAddLocation(NPC, 698.27, -17.96, -309.4, 2, math.random(0,8))
  109. MovementLoopAddLocation(NPC, 686.92, -19.49, -279.5, 2, math.random(0,8))
  110. MovementLoopAddLocation(NPC, 660.91, -19.39, -273.14, 2, math.random(0,8))
  111. MovementLoopAddLocation(NPC, 651.59, -19.68, -274.91, 2, math.random(0,8))
  112. MovementLoopAddLocation(NPC, 650.47, -21.65, -305.03, 2, math.random(0,8))
  113. MovementLoopAddLocation(NPC, 646.13, -19.97, -319.17, 2, math.random(0,8))
  114. MovementLoopAddLocation(NPC, 648.13, -13.26, -358.4, 2, math.random(0,8))
  115. end
  116. ]]--
  117. function Option1(NPC, Spawn)
  118. FaceTarget(NPC, Spawn)
  119. PlayFlavor(NPC, "voiceover/english/patrolman_fanthis/qey_elddar/patrolmanfanthis000.mp3", "", "agree", 855383288, 3555158222, Spawn)
  120. local conversation = CreateConversation()
  121. AddConversationOption(conversation, "I'll head over and pick them up for you.", "StartQuest")
  122. AddConversationOption(conversation, "Hmm, not sure I really have the time either. Sorry.")
  123. StartConversation(conversation, NPC, Spawn, "Well, since you're offering I need some arrows picked up from a shop called In-Range on the northeast side of the grove. I've been meaning to pick up the arrows for a week, but I'm too busy to spare the time.")
  124. end
  125. function StartQuest(NPC, Spawn)
  126. FaceTarget(NPC, Spawn)
  127. OfferQuest(NPC, Spawn,arrows)
  128. end
  129. function Delivered(NPC, Spawn)
  130. FaceTarget(NPC, Spawn)
  131. PlayFlavor(NPC, "voiceover/english/patrolman_fanthis/qey_elddar/patrolmanfanthis002.mp3", "", "thank", 3229545703, 429402997, Spawn)
  132. local conversation = CreateConversation()
  133. AddConversationOption(conversation, "It was no problem. Good luck on patrol.", "FinishQuest")
  134. StartConversation(conversation, NPC, Spawn, "Ah, yes! Perfect timing. I spent my last quiver full of arrows in practice at the range, but all of my patrols have prevented me from picking them up. ")
  135. end
  136. function FinishQuest(NPC, Spawn)
  137. FaceTarget(NPC, Spawn)
  138. SetStepComplete(Spawn,arrows, 2)
  139. end