Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
483
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.30 KB | None | 0 0
  1. quest deviltower_zone begin
  2. state start begin
  3. when login begin
  4. if pc.get_map_index() == 66 then
  5. if pc.get_x() < 2048+88 or pc.get_y() < 6656+577 or pc.get_x() > 2048+236 or pc.get_y() > 6656+737 then
  6. pc.warp(590500, 110500)
  7. end
  8. pc.set_warp_location(65, 5905, 1105)
  9. elseif pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
  10. pc.set_warp_location(65, 5905, 1105)
  11. deviltower_zone.register_player(pc.get_vid())
  12. end
  13. end
  14.  
  15. when logout begin
  16. if pc.count_item(30302) >= 1 then
  17. pc.remove_item(30302, pc.count_item(30302))
  18. end
  19. if pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
  20. deviltower_zone.unregister_player(pc.get_vid())
  21. pc.setf("deviltower_dungeon", "duration", get_global_time() + 3600)
  22. end
  23. end
  24.  
  25. when deviltower_man.chat."Pãºeºte în Turnul Demonilor" begin
  26. say()
  27. say()
  28. say()
  29. say_title("Gardianul Turnului Demonilor:")
  30. say()
  31. if pc.get_level() < 40 then
  32. say("Acest turn este plin cu demoni înfricoºãtori.")
  33. say("Numai cel mai puternic poate ajunge în vârf.")
  34. say("Se spune cã nimeni care intrã în acest turn nu")
  35. say("s-a mai întors în viaşã, tu nu poşi intra încã ")
  36. say("deoarece nu ai nivelul 40.")
  37. else
  38. say("Acest turn este plin cu demoni înfricoºãtori.")
  39. say("Numai cel mai puternic poate ajunge în vârf.")
  40. say("Se spune cã nimeni care intrã în acest turn nu")
  41. say("s-a mai întors în viaşã.")
  42. say()
  43. say_reward("Încã vrei sã intri în Turnul Demonilor?")
  44. local s = select("Intru.", "Nu, mulşumesc.")
  45. if s == 1 then
  46. pc.warp(216500,727000)
  47. else
  48. return
  49. end
  50. end
  51. end
  52.  
  53. when devil_stone1.kill begin
  54. timer("devil_stone1_1", 8)
  55. end
  56.  
  57. when devil_stone1_1.timer begin
  58. d.new_jump_all(66, special.devil_tower[1][1], special.devil_tower[1][2])
  59. d.regen_file("data/dungeon/deviltower2_regen.txt")
  60. d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[2][1], special.devil_tower[2][2], "data/dungeon/deviltower3_regen.txt")
  61. end
  62.  
  63. when devil_stone3.kill begin
  64. d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[3][1], special.devil_tower[3][2], "data/dungeon/deviltower4_regen.txt")
  65. d.check_eliminated()
  66. end
  67.  
  68. function get_4floor_stone_pos()
  69. local positions =
  70. {
  71. {368, 629}, {419, 630}, {428, 653}, {422, 679},
  72. {395, 689}, {369, 679}, {361, 658},
  73. }
  74. for i = 1, 6 do
  75. local j = number(i, 7)
  76. if i != j then
  77. local t = positions[i];
  78. positions[i] = positions[j];
  79. positions[j] = t;
  80. end
  81. end
  82. return positions
  83. end
  84.  
  85. when 8016.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
  86. d.setf("level", 4)
  87. local positions = deviltower_zone.get_4floor_stone_pos()
  88. for i = 1, 6 do
  89. d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))
  90. end
  91. local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
  92. d.set_unique("real", vid)
  93. server_loop_timer('devil_stone4_update', 10, pc.get_map_index())
  94. server_timer('devil_stone4_fail1', 5*60, pc.get_map_index())
  95.  
  96. d.notice("Sarcinã: Distruge Piatra Metin ce te va duce spre urmãtorul etaj.");
  97. end
  98.  
  99. when devil_stone4_fail1.server_timer begin
  100. if d.select(get_server_timer_arg()) then
  101. d.notice("Turnul Demonilor: Mai ai la dispozişie 10 minute.")
  102. server_timer('devil_stone4_fail2', 5*60, get_server_timer_arg())
  103. end
  104. end
  105.  
  106. when devil_stone4_fail2.server_timer begin
  107. if d.select(get_server_timer_arg()) then
  108. d.notice("Turnul Demonilor: Mai ai la dispozişie 5 minute.")
  109. server_timer('devil_stone4_fail', 5*60, get_server_timer_arg())
  110. end
  111. end
  112.  
  113. when devil_stone4_fail.server_timer begin
  114. if d.select(get_server_timer_arg()) and d.getf("level") == 4 then
  115. d.notice("Turnul Demonilor: Timpul a expirat.")
  116. d.exit_all()
  117. end
  118. end
  119.  
  120. when devil_stone4_update.server_timer begin
  121. if d.select(get_server_timer_arg()) then
  122. if not d.is_unique_dead("real") then
  123. for i = 1, 6 do
  124. if d.getf("fakedead" .. i) == 0 then
  125. if d.unique_get_hp_perc("fake" .. i) < 50 then
  126. d.purge_unique("fake" .. i)
  127. d.setf("fakedead" .. i, 1)
  128. end
  129. end
  130. end
  131. else
  132. server_timer("devil_stone4_end", 5, get_server_timer_arg())
  133. d.notice("Turnul Demonilor: Sarcinã completã, veşi fi teleportaşi în câteva secunde.")
  134. d.purge()
  135. end
  136. else
  137. server_timer('devil_stone4_stop_timer', 1, get_server_timer_arg())
  138. end
  139. end
  140.  
  141. when devil_stone4_stop_timer.server_timer begin
  142. clear_server_timer('devil_stone4_update', get_server_timer_arg())
  143. end
  144.  
  145. when devil_stone4_end.server_timer begin
  146. if d.select(get_server_timer_arg()) then
  147. clear_server_timer('devil_stone4_update', get_server_timer_arg())
  148. clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
  149. clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
  150. clear_server_timer('devil_stone4_fail', get_server_timer_arg())
  151.  
  152. d.setf("level", 5)
  153. d.setf("stone_count", 5)
  154.  
  155. d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
  156. d.notice("Sarcinã: Deschide toate Sigiliile cu ajutorul Cheilor de la monºtri.")
  157.  
  158. server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
  159. clear_server_timer('devil_stone4_update', get_server_timer_arg())
  160.  
  161. d.set_regen_file("data/dungeon/deviltower5_regen.txt")
  162.  
  163. d.spawn_mob(20073, 421, 452)
  164. d.spawn_mob(20073, 380, 460)
  165. d.spawn_mob(20073, 428, 414)
  166. d.spawn_mob(20073, 398, 392)
  167. d.spawn_mob(20073, 359, 426)
  168. end
  169. end
  170.  
  171. when devil_stone5_fail1.server_timer begin
  172. if d.select(get_server_timer_arg()) then
  173. d.notice("Turnul Demonilor: Mai ai la dispozişie 15 minute.")
  174. server_timer('devil_stone5_fail2', 5*60, get_server_timer_arg())
  175. end
  176. end
  177.  
  178. when devil_stone5_fail2.server_timer begin
  179. if d.select(get_server_timer_arg()) then
  180. d.notice("Turnul Demonilor: Mai ai la dispozişie 10 minute.")
  181. server_timer('devil_stone5_fail3', 5*60, get_server_timer_arg())
  182. end
  183. end
  184.  
  185. when devil_stone5_fail3.server_timer begin
  186. if d.select(get_server_timer_arg()) then
  187. d.notice("Turnul Demonilor: Mai ai la dispozişie 5 minute.")
  188. server_timer('devil_stone5_fail', 5*60, get_server_timer_arg())
  189. end
  190. end
  191.  
  192. when devil_stone5_fail.server_timer begin
  193. if d.select(get_server_timer_arg()) and d.getf("level") == 5 then
  194. d.notice("Turnul Demonilor: Timpul a expirat.")
  195. d.exit_all()
  196. end
  197. end
  198.  
  199. when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin
  200. local KILL_COUNT_FOR_DROP_KEY = 25
  201. local n =d.getf("count") + 1
  202. d.setf("count", n)
  203. if n == KILL_COUNT_FOR_DROP_KEY then
  204. game.drop_item(50084, 1)
  205. d.setf("count", 0)
  206. end
  207. end
  208.  
  209. when devil_stone5.take with item.vnum == 50084 begin
  210. npc.purge()
  211. item.remove()
  212. d.setf("stone_count", d.getf("stone_count") - 1)
  213. if d.getf("stone_count") <= 0 then
  214. d.clear_regen()
  215. d.kill_all()
  216. d.notice("Turnul Demonilor: Sarcinã completã, veşi fi teleportaşi în câteva secunde.")
  217.  
  218. clear_server_timer('devil_stone5_fail1', get_server_timer_arg())
  219. clear_server_timer('devil_stone5_fail2', get_server_timer_arg())
  220. clear_server_timer('devil_stone5_fail3', get_server_timer_arg())
  221. clear_server_timer('devil_stone5_fail', get_server_timer_arg())
  222.  
  223. d.setf("level", 6)
  224. d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])
  225. d.regen_file("data/dungeon/deviltower6_regen.txt")
  226.  
  227. d.notice("Sarcinã: Învinge Regele Demon.")
  228. else
  229. d.notice("Turnul Demonilor: "..d.getf("stone_count").." Sigilii rãmase.")
  230. end
  231. end
  232.  
  233. when devil_stone6.kill begin
  234. d.kill_all()
  235. d.check_eliminated()
  236. local reward_alchemist = {20074, 20075, 20076}
  237. d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);
  238. d.setqf("can_refine", 1)
  239. end
  240.  
  241. when 20074.chat."Etajele Superioare" with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
  242. say()
  243. say()
  244. say()
  245. say_title(""..mob_name(20074).."")
  246. say()
  247. say("Au gãsit o metodã prin care poşi ajunge la etajul 7")
  248. say("Ai nevoie de abilitãşi ºi competenşe ridicate.")
  249. say("Hmmmm...")
  250. say("Dupã ce şi-am examinat statusul am decis cã.....")
  251. wait()
  252. say()
  253. say()
  254. say()
  255. say_title(""..mob_name(20074).."")
  256. say()
  257. if pc.level >=70 then
  258. say("Îşi este permis sã mergi la etajul urmãtor.")
  259. say("Voi pregãti portalul pentru tine !")
  260. timer("devil_jump_7", 6)
  261. npc.unlock()
  262. d.purge()
  263. return
  264. end
  265. say("Ai nevoie de mai mult antrenament.")
  266. say("Vino înapoi când vei avea cel puşin Lv 70.")
  267. say()
  268. wait()
  269. pc.warp(590500, 110500)
  270. return
  271. end
  272.  
  273. when 20075.chat."Etajele Superioare" with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
  274. say()
  275. say()
  276. say()
  277. say_title(""..mob_name(20075).."")
  278. say()
  279. say("Au gãsit o metodã prin care poşi ajunge la etajul 7")
  280. say("Ai nevoie de abilitãşi ºi competenşe ridicate.")
  281. say("Hmmmm...")
  282. say("Dupã ce şi-am examinat statusul am decis cã.....")
  283. wait()
  284. say()
  285. say()
  286. say()
  287. say_title(""..mob_name(20075).."")
  288. say()
  289. if pc.level >=70 then
  290. say("Îşi este permis sã mergi la etajul urmãtor.")
  291. say("Voi pregãti portalul pentru tine !")
  292. timer("devil_jump_7", 6)
  293. npc.unlock()
  294. d.purge()
  295. return
  296. end
  297. say("Ai nevoie de mai mult antrenament.")
  298. say("Vino înapoi când vei avea cel puşin Lv 70.")
  299. say()
  300. wait()
  301. pc.warp(590500, 110500)
  302. return
  303. end
  304.  
  305. when 20076.chat."Etajele Superioare" with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
  306. say()
  307. say()
  308. say()
  309. say_title(""..mob_name(20076).."")
  310. say()
  311. say("Au gãsit o metodã prin care poşi ajunge la etajul 7")
  312. say("Ai nevoie de abilitãşi ºi competenşe ridicate.")
  313. say("Hmmmm...")
  314. say("Dupã ce şi-am examinat statusul am decis cã.....")
  315. wait()
  316. say()
  317. say()
  318. say()
  319. say_title(""..mob_name(20076).."")
  320. say()
  321. if pc.level >=70 then
  322. say("Îşi este permis sã mergi la etajul urmãtor.")
  323. say("Voi pregãti portalul pentru tine !")
  324. timer("devil_jump_7", 6)
  325. npc.unlock()
  326. d.purge()
  327. return
  328. end
  329. say("Ai nevoie de mai mult antrenament.")
  330. say("Vino înapoi când vei avea cel puşin Lv 70.")
  331. say()
  332. wait()
  333. pc.warp(590500, 110500)
  334. return
  335. end
  336.  
  337. when devil_jump_7.timer begin
  338. d.notice("Sarcinã: Distruge Pietrele Metin pentru a obşine Harta Turnului Originalã.")
  339. d.clear_regen()
  340.  
  341. d.spawn_mob(8018, 639, 658)
  342. d.spawn_mob(8018, 611, 637)
  343. d.spawn_mob(8018, 596, 674)
  344. d.spawn_mob(8018, 629, 670)
  345.  
  346. d.setf("level", 7)
  347.  
  348. d.jump_all(2048+590, 6656+638)
  349. end
  350.  
  351. when 8018.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
  352. local cont = d.getf("7_stone_kill") + 1
  353. d.setf("7_stone_kill", cont)
  354.  
  355. if cont >= 4 then
  356. d.setf("7_stone_kill", 0)
  357. d.set_regen_file("data/dungeon/deviltower7_regen.txt")
  358. end
  359. end
  360.  
  361. when 8019.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
  362. game.drop_item(30302, 1)
  363. end
  364.  
  365. when 30302.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
  366. if d.getf( "level" ) != 7 then
  367. pc.remove_item("30302", 1)
  368. return
  369. end
  370. say_title("Turnul Demonilor:")
  371. say()
  372. say("Ai gãsit Harta Turnului ! Acum poşi sã te")
  373. say("aventurezi mai departe.")
  374. say()
  375. say("Portalul se deschide ! Fii pregãtit !")
  376. pc.remove_item("30302", 1)
  377. timer("devil_jump_8", 6)
  378. d.clear_regen()
  379. end
  380.  
  381. when devil_jump_8.timer begin
  382. d.setf("level", 8)
  383. d.jump_all(2048+590, 6656+403)
  384. d.notice("Sarcinã: Deschide Sigiliul cu ajutorul Cheii Turnului Originalã de la monºtri.")
  385. d.set_regen_file("data/dungeon/deviltower8_regen.txt")
  386. d.spawn_mob(20366, 640, 460)
  387. local _count = pc.count_item(30302)
  388. pc.remove_item(30302,_count)
  389. end
  390.  
  391. when 1040.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
  392. if d.getf("level") < 9 then
  393. local pct1 = number(1, 10)
  394. if pct1 == 1 then
  395. local pct2 = number(1, 4)
  396. if pct2 == 1 then
  397. game.drop_item(30304, 1)
  398. else
  399. game.drop_item(30303, 1)
  400. end
  401. else
  402. return
  403. end
  404. end
  405. end
  406.  
  407. when 20366.take with item.vnum == 30304 begin
  408. d.notice("Turnul Demonilor: Sarcinã completã, veşi fi teleportaşi în câteva secunde.")
  409. d.kill_all()
  410. d.clear_regen()
  411. npc.purge()
  412. item.remove()
  413. timer("devil_jump_9", 8)
  414. end
  415.  
  416. when devil_jump_9.timer begin
  417. d.setf("level", 9)
  418. d.jump_all(2048+590, 6656+155)
  419. d.regen_file("data/dungeon/deviltower9_regen.txt")
  420. d.notice("Sarcinã: Învinge Îngerul cu Coasã.")
  421. end
  422.  
  423. when 1093.kill with pc.in_dungeon() begin
  424. d.kill_all()
  425. server_timer("devil_end_jump", 50, d.get_map_index())
  426. pc.change_alignment(500)
  427. d.notice("Turnul Demonilor: Sarcinã completã, aşi finalizat dungeon-ul.")
  428.  
  429. end
  430.  
  431. when devil_end_jump.timer begin
  432. if d.select (get_server_timer_arg()) then
  433. d.clear_regen()
  434. d.exit_all()
  435. end
  436. end
  437.  
  438. function register_player(vid)
  439. local player_count = d.getf("player_count")
  440. player_count = player_count + 1
  441. d.setf("player_count", tonumber(player_count))
  442. d.setf(string.format("player%d", player_count), tonumber(vid))
  443. end
  444.  
  445. function unregister_player(vid)
  446. local player_count = d.getf("player_count")
  447. local found = false
  448. for i = 1, player_count, 1 do
  449. if found == true then
  450. d.setf(string.format("player%d", tonumber(i)), d.getf(string.format("player%d", i+1)))
  451. end
  452. p = d.getf("player"..tostring(i))
  453. if p == vid then
  454. i = i -1
  455. found = true
  456. end
  457. end
  458. if found == true then
  459. d.setf("player_count", tonumber(player_count - 1))
  460. end
  461. end
  462. end
  463. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement