Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.61 KB | None | 0 0
  1. quest crystal_dungeon begin
  2. state start begin
  3. --Functions
  4. function settings()
  5. return
  6. {
  7. ["map_index"] = 9,
  8. ["spawm_pos"] = {
  9. [1] = {21272, 29576},
  10. [2] = {21650, 29689},
  11. [3] = {21232, 30067},
  12. [4] = {21396, 30104},
  13. [5] = {21765, 30187},
  14. },
  15. ["level_check"] = {
  16. ["minimum"] = 255,
  17. ["maximum"] = 255
  18. },
  19. ["keys"] = {30313, 30314, 30315},
  20. ["metin_stones"] = {8153, 8154, 8153},
  21. };
  22. end
  23.  
  24. function spawn_boss(level)
  25. local boss_settings = {
  26. [3] = {252, 741, 191},
  27. [5] = {251, 431, 544},
  28. [7] = {253, 773, 681}
  29. };
  30.  
  31. return d.spawn_mob(boss_settings[level][1], boss_settings[level][2], boss_settings[level][3])
  32. end
  33.  
  34. function spawn_metins_4thfloor()
  35. local setting = crystal_dungeon.settings()
  36. local r = number (1,8)
  37. if r == 1 then
  38. d.spawn_mob(setting["metin_stones"][3], 250, 659)
  39. d.spawn_mob(setting["metin_stones"][2], 239, 714)
  40. d.spawn_mob(setting["metin_stones"][2], 257, 745)
  41. d.spawn_mob(setting["metin_stones"][2], 282, 777)
  42. d.spawn_mob(setting["metin_stones"][2], 321, 767)
  43. d.spawn_mob(setting["metin_stones"][2], 371, 770)
  44. d.spawn_mob(setting["metin_stones"][2], 397, 737)
  45. d.spawn_mob(setting["metin_stones"][2], 410, 714)
  46. elseif r == 2 then
  47. d.spawn_mob(setting["metin_stones"][2], 250, 659)
  48. d.spawn_mob(setting["metin_stones"][3], 239, 714)
  49. d.spawn_mob(setting["metin_stones"][2], 257, 745)
  50. d.spawn_mob(setting["metin_stones"][2], 282, 777)
  51. d.spawn_mob(setting["metin_stones"][2], 321, 767)
  52. d.spawn_mob(setting["metin_stones"][2], 371, 770)
  53. d.spawn_mob(setting["metin_stones"][2], 397, 737)
  54. d.spawn_mob(setting["metin_stones"][2], 410, 714)
  55. elseif r == 3 then
  56. d.spawn_mob(setting["metin_stones"][2], 250, 659)
  57. d.spawn_mob(setting["metin_stones"][2], 239, 714)
  58. d.spawn_mob(setting["metin_stones"][3], 257, 745)
  59. d.spawn_mob(setting["metin_stones"][2], 282, 777)
  60. d.spawn_mob(setting["metin_stones"][2], 321, 767)
  61. d.spawn_mob(setting["metin_stones"][2], 371, 770)
  62. d.spawn_mob(setting["metin_stones"][2], 397, 737)
  63. d.spawn_mob(setting["metin_stones"][2], 410, 714)
  64. elseif r == 4 then
  65. d.spawn_mob(setting["metin_stones"][2], 250, 659)
  66. d.spawn_mob(setting["metin_stones"][2], 239, 714)
  67. d.spawn_mob(setting["metin_stones"][2], 257, 745)
  68. d.spawn_mob(setting["metin_stones"][3], 282, 777)
  69. d.spawn_mob(setting["metin_stones"][2], 321, 767)
  70. d.spawn_mob(setting["metin_stones"][2], 371, 770)
  71. d.spawn_mob(setting["metin_stones"][2], 397, 737)
  72. d.spawn_mob(setting["metin_stones"][2], 410, 714)
  73. elseif r == 5 then
  74. d.spawn_mob(setting["metin_stones"][2], 250, 659)
  75. d.spawn_mob(setting["metin_stones"][2], 239, 714)
  76. d.spawn_mob(setting["metin_stones"][2], 257, 745)
  77. d.spawn_mob(setting["metin_stones"][2], 282, 777)
  78. d.spawn_mob(setting["metin_stones"][3], 321, 767)
  79. d.spawn_mob(setting["metin_stones"][2], 371, 770)
  80. d.spawn_mob(setting["metin_stones"][2], 397, 737)
  81. d.spawn_mob(setting["metin_stones"][2], 410, 714)
  82. elseif r == 6 then
  83. d.spawn_mob(setting["metin_stones"][2], 250, 659)
  84. d.spawn_mob(setting["metin_stones"][2], 239, 714)
  85. d.spawn_mob(setting["metin_stones"][2], 257, 745)
  86. d.spawn_mob(setting["metin_stones"][2], 282, 777)
  87. d.spawn_mob(setting["metin_stones"][2], 321, 767)
  88. d.spawn_mob(setting["metin_stones"][3], 371, 770)
  89. d.spawn_mob(setting["metin_stones"][2], 397, 737)
  90. d.spawn_mob(setting["metin_stones"][2], 410, 714)
  91. elseif r == 7 then
  92. d.spawn_mob(setting["metin_stones"][2], 250, 659)
  93. d.spawn_mob(setting["metin_stones"][2], 239, 714)
  94. d.spawn_mob(setting["metin_stones"][2], 257, 745)
  95. d.spawn_mob(setting["metin_stones"][2], 282, 777)
  96. d.spawn_mob(setting["metin_stones"][2], 321, 767)
  97. d.spawn_mob(setting["metin_stones"][2], 371, 770)
  98. d.spawn_mob(setting["metin_stones"][3], 397, 737)
  99. d.spawn_mob(setting["metin_stones"][2], 410, 714)
  100. elseif r == 8 then
  101. d.spawn_mob(setting["metin_stones"][2], 250, 659)
  102. d.spawn_mob(setting["metin_stones"][2], 239, 714)
  103. d.spawn_mob(setting["metin_stones"][2], 257, 745)
  104. d.spawn_mob(setting["metin_stones"][2], 282, 777)
  105. d.spawn_mob(setting["metin_stones"][2], 321, 767)
  106. d.spawn_mob(setting["metin_stones"][2], 371, 770)
  107. d.spawn_mob(setting["metin_stones"][2], 397, 737)
  108. d.spawn_mob(setting["metin_stones"][3], 410, 714)
  109. end
  110. end
  111.  
  112. function make_dungeon()
  113. local setting = crystal_dungeon.settings()
  114.  
  115. d.new_jump_party(setting["map_index"], setting["spawm_pos"][1][1], setting["spawm_pos"][1][2])
  116. d.setf("lair_check", 1)
  117. d.setf("level_four_login", 0)
  118. crystal_dungeon.get_regens(1)
  119. end
  120.  
  121. function get_regens(level)
  122. local regens = {
  123. [1] = "data/dungeon/crystal_dungeon/regen_1.txt",
  124. [2] = "data/dungeon/crystal_dungeon/regen_2.txt",
  125. [3] = "data/dungeon/crystal_dungeon/regen_3.txt",
  126. [4] = "data/dungeon/crystal_dungeon/regen_4a.txt",
  127. [5] = "data/dungeon/crystal_dungeon/regen_4b.txt",
  128. [6] = "data/dungeon/crystal_dungeon/regen_5.txt",
  129. [7] = "data/dungeon/crystal_dungeon/regen_5_metins.txt"};
  130.  
  131. return d.set_regen_file(regens[level])
  132. end
  133.  
  134. function party_get_member_pids()
  135. local pids = {party.get_member_pids()}
  136.  
  137. return pids
  138. end
  139.  
  140. ------
  141. ------[Dungeon enter]
  142. ------
  143. when 20092.chat."Kryształowa Komnata" begin
  144. local settings = crystal_dungeon.settings()
  145.  
  146. say_title(mob_name(9214))
  147. say("")
  148.  
  149. if not party.is_party() then
  150. say_item(" ",9, "")
  151. say("Jest to bardzo ciężkie zadanie:")
  152. say("Tak więc żeby zacząć")
  153. say("musisz posiadać grupę kilku śmiałków.")
  154. say("")
  155. return
  156. end
  157.  
  158. if pc.count_item(71096) < 9 and pc.count_item(80008) < 999 then
  159. say_item(" ",9, "")
  160. say("Nie posiadasz odpowiednich przepustek:")
  161. say("")
  162. say_title("10 x Medal Portalu:")
  163. say_title("1000 x Bryłka Złota:")
  164. return
  165. end
  166.  
  167. if not party.is_leader() then
  168. say_item(" ",9, "")
  169. say("Nie jesteś liderem grupy")
  170. say("")
  171. say("Poproś lidera grupy o kontakt ze mną .")
  172. say("")
  173. return
  174. end
  175.  
  176. if party.get_near_count() < 1 then
  177. say_item(" ",9, "")
  178. say("Grupa musi posiadać,")
  179. say("conajmniej jedną dodatkowo osobę .")
  180. return
  181. end
  182.  
  183. local levelCheck, maximlevelCheck = true, true
  184. local notEnoughLevelMembers, notEnoughmaximLevelMembers = {}, {}
  185. local pids = {party.get_member_pids()}
  186.  
  187. for i, pid in next, crystal_dungeon.party_get_member_pids(), nil do
  188. q.begin_other_pc_block(pid)
  189.  
  190. if pc.get_level() < settings["level_check"]["minimum"] then
  191. table.insert(notEnoughLevelMembers, pc.get_name())
  192. levelCheck = false
  193. end
  194. if pc.get_level() > settings["level_check"]["maximum"] then
  195. table.insert(notEnoughmaximLevelMembers, pc.get_name())
  196. maximlevelCheck = false
  197. end
  198.  
  199. q.end_other_pc_block()
  200. end
  201.  
  202. if not levelCheck then
  203. say("Jeśli chcesz wejść do Kryształowej Komnaty,")
  204. say(string.format("każdy członek grupy musi posiadać min %s lvl.", settings["level_check"]["minimum"]))
  205. say("")
  206. say_red("Następujący członkowie nie spełniają wymagań:")
  207. for i, name in next, notEnoughLevelMembers, nil do
  208. say("- "..name)
  209. end
  210. return
  211. end
  212.  
  213. if not maximlevelCheck then
  214. say("Jeśli chcesz wejść do Kryształowej Komnaty,")
  215. say(string.format("każdy członek grupy musi posiadać max %s lvl.", settings["level_check"]["maximum"]))
  216. say_red("Następujący członkowie nie spełniają wymagań:")
  217. for i, name in next, notEnoughmaximLevelMembers, nil do
  218. say("- "..name.."")
  219. end
  220. return
  221. end
  222.  
  223. pc.remove_item(80008, 1000)
  224. pc.remove_item(71096, 10)
  225. say_item(" ",9, "")
  226. say("Trzymajcie się mocno,")
  227. say("za chwilę zostaniecie teleportowani.")
  228. say("")
  229. wait()
  230. crystal_dungeon.make_dungeon()
  231. end
  232.  
  233. ----
  234. ----Dungeon start
  235. ----
  236.  
  237. when login begin
  238. local get_flag = d.getf("lair_check")
  239. local four_login = d.getf("level_four_login")
  240. local six_login = d.getf("level_six_login")
  241.  
  242. if get_flag == 2 then
  243. say_item(" ",9, "")
  244. say_title("Drugie piętro :")
  245. say("")
  246. say("Zabij wszystkie moby, aby zdobyć pieczęć.")
  247. say("i móc odblokować kryształowy ołtarz.")
  248. say("Fałszywą pieczęć możesz wyrzucić.")
  249. d.setf("crystal_seal", 0)
  250. elseif get_flag == 3 then
  251. say_item(" ",9, "")
  252. say_title("Trzecie piętro :")
  253. say("")
  254. say("Zabij wszystkie potwory na tym piętrze .")
  255. say("Są to strażnicy Kryształowego Potwora !")
  256. say("Po zabiciu wszystkich potworów,")
  257. say("obudzi się Kryształowy potwór!")
  258. say("")
  259. say_title("Śpieszcie się, macie tylko 8 minut .")
  260. if four_login == 0 then
  261. d.setf("level_four_login", 1)
  262. d.setf("lair_check", 3)
  263. clear_server_timer("level_four_timer", get_server_timer_arg())
  264. clear_server_timer("exit_before", get_server_timer_arg())
  265. server_timer("level_four_timer", 8 * 60, d.get_map_index())
  266. end
  267. elseif get_flag == 4 then
  268. say_title("Czwarte piętro :")
  269. say("")
  270. say("Jesteście dobrymi wojownikami!")
  271. say("Nie wielu śmiałkom udało")
  272. say("się tu dostać!")
  273. say("Musicie zdobyć, poprawny klucz")
  274. say("")
  275. say_title("Umieść pieczęć na końcu")
  276. say_title("tego piętra !")
  277. elseif get_flag == 5 then
  278. say_title("Piąte piętro :")
  279. say("")
  280. say("Musisz zabić wszytskie potwory !")
  281. say("żeby obudzić kryształowego Potwora")
  282. say("")
  283. say_title("Powodzenia!")
  284. elseif get_flag == 6 then
  285. say_title("Szóste piętro :")
  286. say("")
  287. say("Musicie zdobyć, poprawny klucz!")
  288. say("")
  289. say_title("Macie 15 minut żeby pokonać netiny!")
  290. say_title("metins!")
  291. if six_login == 0 then
  292. d.setf("level_six_login", 1)
  293. d.setf("lair_check", 6)
  294. clear_server_timer("level_six_timer", get_server_timer_arg())
  295. clear_server_timer("exit_before2", get_server_timer_arg())
  296. server_timer("level_six_timer", 15 * 60, d.get_map_index())
  297. end
  298. else
  299. return
  300. end
  301. end
  302.  
  303. when kill with npc.get_race() == 257 begin
  304. local count, check = d.getf("mobs") + 1, false;
  305. local setting = crystal_dungeon.settings()
  306.  
  307. if d.getf("lair_check") == 1 then
  308. --83
  309. if count < 10 and check == false then
  310. d.setf("mobs", count)
  311. else
  312. if d.getf("metin_stone") == 0 then
  313. d.clear_regen()
  314. d.kill_all()
  315. d.spawn_mob(setting["metin_stones"][1], 261, 276)
  316. d.spawn_mob(setting["metin_stones"][1], 242, 303)
  317. d.spawn_mob(setting["metin_stones"][1], 293, 305)
  318. d.notice(string.format(" %s Pojawił się na mapie! ", mob_name(8153)))
  319. d.setf("metin_stone", 1)
  320. end
  321. check = true
  322. end
  323. end
  324. end
  325.  
  326. when kill with npc.get_race() == 8153 and pc.in_dungeon() begin
  327. local count, check_metin1 = d.getf("metins") + 1, false;
  328. local setting = crystal_dungeon.settings()
  329.  
  330. if d.getf("lair_check") == 1 then
  331. if count < 3 and check_metin1 == false then
  332. d.setf("metins", count)
  333. else
  334. if d.getf("metin_stone1") == 0 then
  335. d.notice("Świetnie się spisaliście. Za chwilę zostaniecie teleportowani!")
  336. d.kill_all()
  337. d.setf("lair_check", 2)
  338. d.setf("metin_stone1", 1)
  339. cleartimer("level_timer")
  340. timer("level_timer", 7)
  341. end
  342. check_metin1 = true
  343. end
  344. end
  345. end
  346.  
  347.  
  348. when 258.kill begin
  349. local count, check_2 = d.getf("mobs_2") + 1, false;
  350. local setting = crystal_dungeon.settings()
  351.  
  352. if d.getf("lair_check") == 2 then
  353. --73
  354. if count < 25 and check_2 == false then
  355. d.setf("mobs_2", count)
  356. else
  357. if d.getf("crystal_seal") == 0 then
  358. game.drop_item(setting["keys"][1], 1)
  359. d.setf("crystal_seal", 1)
  360. end
  361. check_2 = true
  362. end
  363. end
  364. end
  365.  
  366.  
  367. when 9032.take with item.vnum == 30313 and pc.in_dungeon() begin
  368. local setting = crystal_dungeon.settings()
  369. local n = number (1,3)
  370.  
  371. if n == 1 then
  372. d.clear_regen()
  373. pc.remove_item(setting["keys"][1], 1)
  374. d.notice("To nie jest poprawny klucz.")
  375. d.spawn_mob(9029, 753, 172)
  376. timer("effect_purge", 10)
  377. d.setf("mobs_2", 1)
  378. crystal_dungeon.get_regens(2)
  379. d.setf("crystal_seal", 0)
  380. else
  381. d.notice("Świetnie ten klucz jest poprawny!")
  382. d.notice("Za chwilę zostaniecie przeniesieni!")
  383. d.kill_unique(9032)
  384. d.clear_regen()
  385. d.kill_all()
  386. d.setf("lair_check", 3)
  387. pc.remove_item(setting["keys"][1], 1)
  388. cleartimer("level_timer")
  389. timer("level_timer", 12)
  390. end
  391. end
  392.  
  393. when 259.kill begin
  394. local count, check3 = d.getf("mobs_3") + 1, false;
  395.  
  396. if d.getf("lair_check") == 3 then
  397. --105
  398. if count < 10 and check3 == false then
  399. d.setf("mobs_3", count)
  400. else
  401. if d.getf("crystal_boss1") == 0 then
  402. d.kill_all()
  403. d.clear_regen()
  404. d.notice("Wszystkie potwory zostały pokonane!")
  405. d.notice("Kryształowa bestia wkrótce się pojawi!")
  406. timer("third_boss", 10)
  407. d.setf("third_boss", 1)
  408. d.setf("crystal_boss1", 1)
  409. end
  410. check3 = true
  411. end
  412. end
  413. end
  414.  
  415. when 252.kill begin
  416. local setting = crystal_dungeon.settings()
  417.  
  418. if d.getf("lair_check") == 3 then
  419. d.clear_regen()
  420. d.kill_all()
  421. d.setf("lair_check", 4)
  422. d.notice("Kryształowy potwór zginął!")
  423. d.notice("W ciągu 10 sekund zostaniecie teleportowani")
  424. cleartimer("level_four_timer")
  425. cleartimer("level_timer")
  426. timer("level_timer", 10)
  427. else
  428. return
  429. end
  430. end
  431.  
  432. when 8153.kill begin
  433. local setting = crystal_dungeon.settings()
  434.  
  435. if d.getf("lair_check") == 4 then
  436. game.drop_item(setting["keys"][2],1)
  437. end
  438. end
  439.  
  440. when 8154.kill begin
  441. local setting = crystal_dungeon.settings()
  442.  
  443. if d.getf("lair_check") == 4 then
  444. game.drop_item(setting["keys"][3],1)
  445. end
  446. end
  447.  
  448. when 9031.take with item.vnum == 30314 and pc.in_dungeon() begin
  449. local setting = crystal_dungeon.settings()
  450. pc.remove_item(setting["keys"][2], 1)
  451. d.spawn_mob(9030, 405, 687)
  452. timer("wait_eff1", 2)
  453. end
  454.  
  455. when 9031.take with item.vnum == 30315 and pc.in_dungeon() begin
  456. local setting = crystal_dungeon.settings()
  457. pc.remove_item(setting["keys"][3], 1)
  458. d.spawn_mob(9030, 405, 687)
  459. timer("wait_eff2", 2)
  460. end
  461.  
  462. when 262.kill or 264.kill begin
  463. local count, check_4 = d.getf("mobs_5") + 1, false;
  464. local setting = crystal_dungeon.settings()
  465.  
  466. if d.getf("lair_check") == 5 then
  467. --75
  468. if count < 75 and check_4 == false then
  469. d.setf("mobs_5", count)
  470. else
  471. if d.getf("crystal_dino") == 0 then
  472. d.clear_regen()
  473. d.kill_all()
  474. timer("crystal_dino", 10)
  475. d.setf("crystal_dino", 1)
  476. end
  477. check_4 = true
  478. end
  479. end
  480. end
  481.  
  482. when 251.kill with pc.in_dungeon() begin
  483. local setting = crystal_dungeon.settings()
  484.  
  485. if d.getf("lair_check") == 5 then
  486. d.clear_regen()
  487. d.kill_all()
  488. d.setf("lair_check", 6)
  489. d.notice("Dino de Cristal został zamordowany !")
  490. d.notice("W ciągu 10 sekund teleportujemy Was na następny poziom .")
  491. cleartimer("level_timer")
  492. timer("level_timer", 10)
  493. else
  494. return
  495. end
  496. end
  497.  
  498. when 8414.kill with pc.in_dungeon() begin
  499. local count, check_5 = d.getf("metins_6") + 1, false;
  500. local setting = crystal_dungeon.settings()
  501.  
  502. if d.getf("lair_check") == 6 then
  503. if count < 7 and check_5 == false then
  504. d.setf("metins_6", count)
  505. else
  506. if d.getf("crystal_dragon") == 0 then
  507. d.notice("Wszystkie metiny zostały zniszczone przed upływem czasu !")
  508. d.notice("Wkrótce pojawi się Kryształowy Smok!")
  509. cleartimer("level_six_timer")
  510. cleartimer("level_timer")
  511. d.kill_all()
  512. d.setf("lair_check", 7)
  513. d.setf("crystal_dragon", 1)
  514. cleartimer("level_timer")
  515. timer("level_timer", 7)
  516. end
  517. check_5 = true
  518. end
  519. end
  520. end
  521.  
  522. when 253.kill with pc.in_dungeon() begin
  523. local setting = crystal_dungeon.settings()
  524.  
  525. if d.getf("lair_check") == 7 then
  526. d.clear_regen()
  527. d.kill_all()
  528. d.notice("Kryształowy Smok został zabity!")
  529. d.notice("Udało się Wam ukończyć Kryształowy loch!")
  530. d.notice("Za 3 minuty zostaniecie przeteleportowani.")
  531. cleartimer("level_timer")
  532. server_timer("final", 3 * 60, d.get_map_index())
  533. else
  534. return
  535. end
  536. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement