fanthis.lua 7.5 KB

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