1. quest defance_wave begin
  2. state start begin
  3. function Settings()
  4. local Settings = {}
  5. Settings.map_index = 358
  6. Settings.cord = {1280, 4864}
  7. Settings.start_pos = {385, 357}
  8. return Settings
  9. end
  10. function SpawnHandicap(i)
  11. if i == 0 then
  12. local h1 = d.spawn_mob_ac_dir(3970, 400, 372, 0)
  13. local h2 = d.spawn_mob_ac_dir(3970, 369, 372, 0)
  14. d.setf("h1", h1)
  15. d.setf("h2", h2)
  16. elseif i == 1 then
  17. local h3 = d.spawn_mob_ac_dir(3970, 400, 435, 0)
  18. local h4 = d.spawn_mob_ac_dir(3970, 369, 435, 0)
  19. d.setf("h3", h3)
  20. d.setf("h4", h4)
  21. end
  22. end
  23. function PurgeHandicap(i)
  24. if i == 0 then
  25. d.purge_vid(d.getf("h1"))
  26. d.purge_vid(d.getf("h2"))
  27. elseif i == 1 then
  28. d.purge_vid(d.getf("h3"))
  29. d.purge_vid(d.getf("h4"))
  30. end
  31. end
  32. function SpawnHidras()
  33. local h1 = d.spawn_mob_ac_dir(3963, 378, 443, 180)
  34. local h2 = d.spawn_mob_ac_dir(3963, 385, 439, 180)
  35. local h3 = d.spawn_mob_ac_dir(3964, 392, 443, 180)
  36. d.setf("hidra1", h1)
  37. d.setf("hidra2", h2)
  38. d.setf("hidra3", h3)
  39. end
  40. function PurgeHidras()
  41. if d.getf("hidracount") == 2 then
  42. d.purge_vid(d.getf("hidra3"))
  43. elseif d.getf("hidracount") == 1 then
  44. d.purge_vid(d.getf("hidra3"))
  45. d.purge_vid(d.getf("hidra2"))
  46. else
  47. d.purge_vid(d.getf("hidra3"))
  48. d.purge_vid(d.getf("hidra2"))
  49. d.purge_vid(d.getf("hidra1"))
  50. end
  51. end
  52. function Clear()
  53. clear_server_timer("CheckSecondFiveOne", d.get_map_index())
  54. clear_server_timer("CheckSecondFive", d.get_map_index())
  55. clear_server_timer("CheckSecondFourOne", d.get_map_index())
  56. clear_server_timer("CheckSecondFour", d.get_map_index())
  57. clear_server_timer("CheckSecondThreeOne", d.get_map_index())
  58. clear_server_timer("CheckSecondThree", d.get_map_index())
  59. clear_server_timer("Jump_wave2", d.get_map_index())
  60. clear_server_timer("CheckSecondTwoOne", d.get_map_index())
  61. clear_server_timer("CheckSecondTwo", d.get_map_index())
  62. clear_server_timer("CheckSecond", d.get_map_index())
  63. clear_server_timer("UpdateDungeon", d.get_map_index())
  64. d.setf("sn", 0)
  65. d.setf("dalga", 0)
  66. d.setf("hidra1", 0)
  67. d.setf("hidra2", 0)
  68. d.setf("hidra3", 0)
  69. d.setf("h3", 0)
  70. d.setf("h4", 0)
  71. d.setf("h3", 0)
  72. d.setf("h4", 0)
  73. d.setf("hidracount", 0)
  74. d.setf("hidra", 0)
  75. end
  76. when Exit.server_timer begin
  77. if d.select(get_server_timer_arg()) then
  78. d.set_warp_location(1, setting.outside_entry_pos[1] , setting.outside_entry_pos[2])
  79. d.exit_all()
  80. clear_server_timer("Exit", d.get_map_index())
  81. end
  82. end
  83. when UpdateDungeon.server_timer begin
  84. if d.select(get_server_timer_arg()) then
  85. if d.get_mast() == 0 then
  86. d.notice("SOS! Direk parçalandı ve geminiz batıyor. Şimdi Ejderha Ateşi Burnu'na ışınlanacaksınız.", true)
  87. d.clear_regen()
  88. d.kill_all()
  89. server_loop_timer("Exit", 10, d.get_map_index())
  90. defance_wave.Clear()
  91. end
  92. end
  93. end
  94. when kill with npc.get_race() == 3962 begin
  95. if d.get_mast() == 0 then
  96. return
  97. end
  98. d.notice("Kara göründü! Gemi direğini başarıyla savundunuz ve uzun bir bir yolculuktan sonra yeni kıtaya ulaştınız. Portala gidin.")
  99. d.clear_regen()
  100. d.kill_all()
  101. d.spawn_mob_ac_dir(3965, 385, 417, 0)
  102. d.spawn_mob_ac_dir(3949, 385, 451, 0)
  103. defance_wave.PurgeHandicap(1)
  104. end
  105. when CheckSecondFiveOne.server_timer begin
  106. if d.select(get_server_timer_arg()) then
  107. if d.getf("sn") > 1 then
  108. d.notice("Deniz Savaşı "..d.getf("sn").." sn. içinde başlayacak")
  109. d.setf("sn", d.getf("sn") - 1)
  110. d.set_victim_mast(d.getf("hidra"), 0)
  111. else
  112. d.setf("sn", d.getf("sn") - 1)
  113. clear_server_timer("CheckSecondFiveOne", d.get_map_index())
  114. d.set_regen_file("data/dungeon/defance_wave/4.txt")
  115. d.set_victim_mast(d.spawn_mob_ac_dir(3956, 385, 430, 0), 1)
  116. defance_wave.PurgeHandicap(0)
  117. d.set_victim_mast(d.getf("hidra"), 1)
  118. end
  119. end
  120. end
  121. when CheckSecondFive.server_timer begin
  122. if d.select(get_server_timer_arg()) then
  123. clear_server_timer("CheckSecondFive", d.get_map_index())
  124. local set = defance_wave.Settings()
  125. local cord = set.cord
  126. local pos = set.start_pos
  127. defance_wave.SpawnHandicap(0)
  128. d.setf("hidra", d.spawn_mob_ac_dir(3962, 385, 372, 0))
  129. d.set_victim_mast(d.getf("hidra"), 0)
  130. d.setf("hidracount", 0)
  131. defance_wave.PurgeHidras()
  132. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  133. d.notice("4. Dalga: Gemi direği savunması esnasında, Hidra kişisini mağlup edin", true)
  134. d.setf("sn", 10)
  135. server_loop_timer("CheckSecondFiveOne", 1, d.get_map_index())
  136. end
  137. end
  138. when kill with npc.get_race() == 3961 begin
  139. if d.get_mast() == 0 then
  140. return
  141. end
  142. d.notice("Direği başarıyla savundunuz. Aferin! Bir sonraki dalgaya hazırlanın.", true)
  143. d.clear_regen()
  144. d.kill_all()
  145. server_timer("CheckSecondFive", 7, d.get_map_index())
  146. end
  147. when CheckSecondFourOne.server_timer begin
  148. if d.select(get_server_timer_arg()) then
  149. if d.getf("sn") > 1 then
  150. d.notice("Deniz Savaşı "..d.getf("sn").." sn. içinde başlayacak")
  151. d.setf("sn", d.getf("sn") - 1)
  152. d.set_victim_mast(d.getf("hidra"), 0)
  153. else
  154. d.setf("sn", d.getf("sn") - 1)
  155. clear_server_timer("CheckSecondFourOne", d.get_map_index())
  156. d.set_regen_file("data/dungeon/defance_wave/3.txt")
  157. d.set_victim_mast(d.spawn_mob_ac_dir(3956, 385, 430, 0), 1)
  158. defance_wave.PurgeHandicap(0)
  159. d.set_victim_mast(d.getf("hidra"), 1)
  160. end
  161. end
  162. end
  163. when CheckSecondFour.server_timer begin
  164. if d.select(get_server_timer_arg()) then
  165. clear_server_timer("CheckSecondFour", d.get_map_index())
  166. local set = defance_wave.Settings()
  167. local cord = set.cord
  168. local pos = set.start_pos
  169. defance_wave.SpawnHandicap(0)
  170. d.setf("hidra", d.spawn_mob_ac_dir(3961, 385, 372, 0))
  171. d.set_victim_mast(d.getf("hidra"), 0)
  172. d.setf("hidracount", 1)
  173. defance_wave.PurgeHidras()
  174. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  175. d.notice("3. Dalga: Gemi direği savunması esnasında, Hidra kişisini mağlup edin", true)
  176. d.setf("sn", 10)
  177. server_loop_timer("CheckSecondFourOne", 1, d.get_map_index())
  178. end
  179. end
  180. when kill with npc.get_race() == 3960 begin
  181. if d.get_mast() == 0 then
  182. return
  183. end
  184. d.notice("Direği başarıyla savundunuz. Aferin! Bir sonraki dalgaya hazırlanın.", true)
  185. d.clear_regen()
  186. d.kill_all()
  187. server_timer("CheckSecondFour", 7, d.get_map_index())
  188. end
  189. when CheckSecondThreeOne.server_timer begin
  190. if d.select(get_server_timer_arg()) then
  191. if d.getf("sn") > 1 then
  192. d.notice("Deniz Savaşı "..d.getf("sn").." sn. içinde başlayacak")
  193. d.setf("sn", d.getf("sn") - 1)
  194. d.set_victim_mast(d.getf("hidra"), 0)
  195. else
  196. d.setf("sn", d.getf("sn") - 1)
  197. clear_server_timer("CheckSecondThreeOne", d.get_map_index())
  198. d.set_regen_file("data/dungeon/defance_wave/2.txt")
  199. d.set_victim_mast(d.spawn_mob_ac_dir(3956, 385, 430, 0), 1)
  200. defance_wave.PurgeHandicap(0)
  201. d.set_victim_mast(d.getf("hidra"), 1)
  202. end
  203. end
  204. end
  205. when CheckSecondThree.server_timer begin
  206. if d.select(get_server_timer_arg()) then
  207. clear_server_timer("CheckSecondThree", d.get_map_index())
  208. server_loop_timer("CheckSecondThreeOne", 1, d.get_map_index())
  209. d.set_victim_mast(d.getf("hidra"), 0)
  210. d.setf("sn", 10)
  211. end
  212. end
  213. when Jump_wave2.server_timer begin
  214. if d.select(get_server_timer_arg()) then
  215. clear_server_timer("Jump_wave2", d.get_map_index())
  216. local set = defance_wave.Settings()
  217. local cord = set.cord
  218. local pos = set.start_pos
  219. defance_wave.SpawnHandicap(0)
  220. d.setf("hidra", d.spawn_mob_ac_dir(3960, 385, 372, 0))
  221. d.set_victim_mast(d.getf("hidra"), 0)
  222. d.setf("hidracount", 2)
  223. defance_wave.PurgeHidras()
  224. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  225. d.notice("2. Dalga: Gemi direği savunması esnasında, Hidra kişisini mağlup edin", true)
  226. server_timer("CheckSecondThree", 1, d.get_map_index())
  227. end
  228. end
  229. when CheckSecondTwoOne.server_timer begin
  230. if d.select(get_server_timer_arg()) then
  231. d.notice("Bir Sonraki dalga "..d.getf("sn").." sn. içinde başlayacak")
  232. if d.getf("sn") > 1 then
  233. d.setf("sn", d.getf("sn") - 1)
  234. else
  235. d.setf("sn", d.getf("sn") - 1)
  236. clear_server_timer("CheckSecondTwoOne", d.get_map_index())
  237. d.clear_regen()
  238. d.kill_all()
  239. server_timer("Jump_wave2", 1, d.get_map_index())
  240. end
  241. end
  242. end
  243. when CheckSecondTwo.server_timer begin
  244. if d.select(get_server_timer_arg()) then
  245. d.notice("Bir Sonraki dalga "..d.getf("sn").." sn. içinde başlayacak")
  246. d.setf("sn", d.getf("sn") - 1)
  247. server_loop_timer("CheckSecondTwoOne", 1, d.get_map_index())
  248. clear_server_timer("CheckSecondTwo", d.get_map_index())
  249. end
  250. end
  251. when CheckSecondOne.server_timer begin
  252. if d.select(get_server_timer_arg()) then
  253. d.notice("Deniz Savaşı "..d.getf("sn").." sn. içinde başlayacak")
  254. if d.getf("sn") > 1 then
  255. d.setf("sn", d.getf("sn") - 1)
  256. else
  257. d.setf("sn", d.getf("sn") - 1)
  258. clear_server_timer("CheckSecondOne", d.get_map_index())
  259. defance_wave.PurgeHandicap(0)
  260. d.set_regen_file("data/dungeon/defance_wave/1.txt")
  261. d.set_victim_mast(d.spawn_mob_ac_dir(3956, 385, 430, 0), 1)
  262. server_loop_timer("CheckSecondTwo", 110, d.get_map_index())
  263. d.setf("sn", 10)
  264. end
  265. end
  266. end
  267. when CheckSecond.server_timer begin
  268. if d.select(get_server_timer_arg()) then
  269. d.notice("Deniz Savaşı "..d.getf("sn").." sn. içinde başlayacak")
  270. if d.getf("sn") == 10 then
  271. d.setf("sn", d.getf("sn") - 1)
  272. server_loop_timer("CheckSecondOne", 1, d.get_map_index())
  273. clear_server_timer("CheckSecond", d.get_map_index())
  274. else
  275. d.setf("sn", d.getf("sn") - 10)
  276. end
  277. end
  278. end
  279. when 20436.chat."Dalgayı Başlat" begin
  280. if party.is_leader() and d.getf("dalga") == 0 then
  281. say_npc()
  282. say("")
  283. say("Savunmayı başlatmak istiyor musun ?")
  284. if select("Evet", "Hayır") == 2 then
  285. return
  286. end
  287. local config = defance_wave.Settings()
  288. local cord = config.cord
  289. local start_pos = config.start_pos
  290. d.setf("hidracount", 3)
  291. defance_wave.SpawnHidras()
  292. d.jump_all(config.map_index, (cord[1] + start_pos[1]), (cord[2] + start_pos[2]))
  293. d.notice("Deniz Savaşı 1dk. içinde başlayacak")
  294. d.notice("1. Dalga: 120 sn. Boyunca tüm gücünüzle Gemi direği öğesini savunun.", true)
  295. server_loop_timer("CheckSecond", 10, d.get_map_index())
  296. d.setf("sn", 50)
  297. d.setf("dalga", 1)
  298. end
  299. end
  300. when make_dungeon.timer begin
  301. local config = defance_wave.Settings()
  302. local cord = config.cord
  303. local start_pos = config.start_pos
  304. d.new_jump_party(config.map_index, (cord[1] + start_pos[1]), (cord[2] + start_pos[2]))
  305. d.spawn_mob_ac_dir(20436, 385, 367, 0)
  306. d.spawn_mob(20434, 385, 400)
  307. defance_wave.SpawnHandicap(0)
  308. defance_wave.SpawnHandicap(1)
  309. end
  310. when 20013.chat."Herkes Gemiye!" with party.is_leader() begin
  311. -- if party.is_leader() then
  312. say("Meley'i takip etmek için şimdi gemi yolculuğuna")
  313. say("başlamak istiyor musun?")
  314. if select("Evet", "Hayır") == 2 then
  315. return
  316. end
  317. timer("make_dungeon", 1)
  318. -- end
  319. end
  320. when login begin
  321. if pc.get_map_index() >= 3580000 and pc.get_map_index() < 3590000 then
  322. cmdchat("BINARY_Update_Mast_Window 1")
  323. else
  324. cmdchat("BINARY_Update_Mast_Window 0")
  325. end
  326. end
  327. end
  328. end

asdad