PHP Code:
quest deviltower_zone begin
state start begin
when login begin
if pc.get_map_index() == 190 then
-- ¨Γ«D¦b1??®?, °e??¥~*±.
-- Όh?? ½d³?
-- 1Ό? 88 577 236 737
-- 2Ό? 91 343 238 504
-- 3Ό? 104 107 248 269
if pc.get_x() < 123233+88 or pc.get_y() < 12320+577 or pc.get_x() > 123233+236 or pc.get_y() > 12320+737 then
pc.warp((5376+540)*100, (512+480+4)*100, 65)
end
pc.set_warp_location(65, 5376+532, 512+596+4)
elseif pc.get_map_index() >= 1900000 and pc.get_map_index() < 1910000 then
pc.set_warp_location(65, 5376+532, 512+596+4)
end
end
when 30301.chat."Zombieturm betreten" begin
if pc . get_level ( ) < 90 then
say ( "Du hast noch nicht gen?gend Erfahrung gesammelt. Komme wieder, wenn du Level 90 bist!" )
else
say ( "M?chtest du den Zombieturm betreten?" )
local s = select ( "Betreten" , "In das Shinsoo Reich teleportieren" , "In das Chunjo Reich teleportieren" , "In das Jinno Reich teleportieren" , "Abbrechen" )
if s == 1 then
pc . warp ( 12334700 , 1293200 )
elseif s == 5 then
return
elseif s == 2 then
say ( "Du wirst nun in das Shinsoo Reich teleportiert!" )
local s = select ( "OK" )
pc . warp ( 469300 , 964200 )
elseif s == 3 then
say ( "Du wirst nun in das Chunjo Reich teleportiert!" )
local s = select ( "OK" )
pc . warp ( 55700 , 157900 )
elseif s == 4 then
say ( "Du wirst nun in das Jinno Reich teleportiert!" )
local s = select ( "OK" )
pc . warp ( 969600 , 278400 )
end
end
end
when 8110.kill begin
timer("zombie_stone1_1", 6)
end
when zombie_stone1_1.timer begin
local mapto7= pc.count_item(30302) -- ®ψ·?¤£??¬O§_¦s¦b???u¤`?F¶?
pc.remove_item(30302,mapto7)
local boxto7= pc.count_item(30300) -- ®ψ·?¤£??¬O§_¦s¦b??¤£??¦W??½c¤l
pc.remove_item(30300,boxto7)
d.new_jump_all(190, 123233+128, 12320+383)
d.regen_file("data/dungeon/zombietower2_regen.txt")
d.set_warp_at_eliminate(4, d.get_map_index(), 123233+141, 12320+155, "data/dungeon/zombietower3_regen.txt")
end
--when devil_stone2.kill begin
--d.jump_all_local(special.devil_tower[2][1], special.devil_tower[2][2])
--end
when 2524.kill with pc.in_dungeon() begin
--d.jump_all_local(special.devil_tower[3][1], special.devil_tower[3][2])
--d.set_exit_all_at_eliminate(6)
--d.set_warp_at_eliminate(6, d.get_map_index(), 100, 100)
--d.set_warp_at_eliminate(4, 65, 5376+532, 512+596+4)
d.set_warp_at_eliminate(4, d.get_map_index(), 123233+368, 12320+629, "data/dungeon/zombietower4_regen.txt")
d.check_eliminated()
--d.exit_all()
end
function get_4floor_stone_pos()
local positions = {
{368, 629},
{419, 630},
{428, 653},
{422, 679},
{395, 689},
{369, 679},
{361, 658},
}
for i = 1, 6 do
local j = number(i, 7)
if i != j then
local t = positions[i];
positions[i] = positions[j];
positions[j] = t;
end
end
--for i = 1, 7 do
-- positions[i][1] = positions[i][1] * 100
-- positions[i][2] = positions[i][2] * 100
-- end
return positions
end
when 8025.kill with pc.in_dungeon() begin
d.setf("level", 4)
-- ¦A²{¤j¶q©Η?«¤?»s³y?u¥??Y©M°²¥??Y
--d.regen_file("data/dungeon/zombietower4_regen.txt")
local positions = zombietower_zone.get_4floor_stone_pos()
for i = 1, 6 do
chat(positions[i][1], positions[i][2])
d.set_unique("fake" .. i , d.spawn_mob(8026, positions[i][1], positions[i][2]))
end
chat(positions[7][1], positions[7][2])
local vid = d.spawn_mob(8026, positions[7][1], positions[7][2])
chat(vid)
d.set_unique("real", vid)
server_loop_timer('devil_stone4_update', 10, pc.get_map_index())
server_timer('devil_stone4_fail1', 5*60, pc.get_map_index())
d.notice("Findet den richtigen Metinstein");
d.notice("und zerst?rt ihn. Die falschen");
d.notice("Metinsteine werden verschwinden!");
d.notice("Ihr habt 15 Minuten zeit!");
end
when devil_stone4_fail1.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Verbleibende Zeit: 10 Minuten")
server_timer('devil_stone4_fail2', 5*60, get_server_timer_arg())
end
end
when devil_stone4_fail2.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Verbleibende Zeit: 5 Minuten")
server_timer('devil_stone4_fail', 5*60, get_server_timer_arg())
end
end
when devil_stone4_fail.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Die Zeit ist abgelaufen")
d.notice("Ihr werdet nun nach drau?en teleportiert")
d.exit_all()
clear_server_timer('devil_stone4_update', get_server_timer_arg())
end
end
when devil_stone4_update.server_timer begin
if d.select(get_server_timer_arg()) then
if not d.is_unique_dead("real") then
for i = 1, 6 do
if d.getf("fakedead" .. i) == 0 then
if d.unique_get_hp_perc("fake" .. i) < 50 then
d.purge_unique("fake" .. i)
d.setf("fakedead" .. i, 1)
d.notice("Die falschen Metinsteine verschwinden..");
end
end
end
else
--d.clear_regen()
--d.regen_file("data/dungeon/zombietower5_regen.txt")
server_timer("devil_stone4_end", 5, get_server_timer_arg())
d.notice("Ihr habt den richtigen Metinstein")
d.notice("zerst?rt. Ihr werdet nun in die n?chste")
d.notice("Etage teleportiert")
clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
clear_server_timer('devil_stone4_fail', get_server_timer_arg())
end
else
server_timer('devil_stone4_stop_timer', 1, get_server_timer_arg())
end
end
when devil_stone4_stop_timer.server_timer begin
clear_server_timer('devil_stone4_update', get_server_timer_arg())
end
when devil_stone4_end.server_timer begin
if d.select(get_server_timer_arg()) then
d.setf("level", 5)
d.setf("stone_count", 5)
d.notice("Du bist nun in der 5. Ebene ")
d.notice("?ffne alle Alten Siegel um in die n?chste Ebene zu gelangen.")
d.notice("Du hast 20 Minuten Zeit um alle Siegel zu ?ffnen.")
d.jump_all(123233+369, 12320+401)
server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
clear_server_timer('devil_stone4_update', get_server_timer_arg())
timer("spawn", 5)
-- 5Ό?«?¦L¥?¦A²{
d.spawn_mob(20073, 421, 452)
d.spawn_mob(20073, 380, 460)
d.spawn_mob(20073, 428, 414)
d.spawn_mob(20073, 398, 392)
d.spawn_mob(20073, 359, 426)
end
end
when spawn.timer begin
d.set_regen_file("data/dungeon/zombietower5_regen.txt")
end
when devil_stone5_fail1.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Verbleibende Zeit: 15 Minuten")
server_timer('devil_stone5_fail2', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail2.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Verbleibende Zeit: 10 Minuten")
server_timer('devil_stone5_fail3', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail3.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Verbleibende Zeit: 5 Minuten")
server_timer('devil_stone5_fail', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Die Zeit ist abgelaufen")
d.notice("Ihr werdet nun nach drau?en teleportiert")
d.exit_all()
end
end
--when devil_stone4.kill begin
--d.setf("level", 5)
--d.setf("stone_count", 4)
--d.clear_regen()
--d.regen_file("data/dungeon/zombietower5_regen.txt")
--d.jump_all_local(special.devil_tower[4][1], special.devil_tower[4][2])
--end
when 2510.kill with pc.in_dungeon() and d.getf("level") == 5 begin
local KILL_COUNT_FOR_DROP_KEY = 50
--if is_test_server() then
--KILL_COUNT_FOR_DROP_KEY = 1
--end
local n =d.getf("count") + 1
d.setf("count", n)
if n == KILL_COUNT_FOR_DROP_KEY then
-- ±Ό¤U??°?
game.drop_item(50084, 1)
d.setf("count", 0)
end
end
when devil_stone5.take with item.vnum == 50084 begin
npc.purge()
item.remove()
d.setf("stone_count", d.getf("stone_count") - 1)
if d.getf("stone_count") <= 0 then
d.setf("level", 6)
d.clear_regen()
d.regen_file("data/dungeon/zombietower6_regen.txt")
d.notice("Ihr habt alle alten Siegel ge?ffnet. Ihr werdet nun")
d.notice("in die 6. Ebene teleportiert.")
d.jump_all(123233+370, 12320+164)
clear_server_timer('devil_stone5_fail1', get_server_timer_arg())
clear_server_timer('devil_stone5_fail2', get_server_timer_arg())
clear_server_timer('devil_stone5_fail3', get_server_timer_arg())
clear_server_timer('devil_stone5_fail', get_server_timer_arg())
else
d.notice("Es verbleibt eine Anzahl von "..d.getf("stone_count").." Siegeln")
end
end
when 2524.kill begin
-- ¶Η°e¨?·??t©?¦b??¦a??
-- §_«h΅A¶}³]¤@*?·s·??t
--d.jump_all(special.devil_tower[6][1], special.devil_tower[6][2])
d.kill_all()
-- d.set_warp_at_eliminate(3*60, 65, 5376+532, 512+596+4)
d.check_eliminated()
local reward_alchemist = {20074, 20075, 20076}
d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);
d.setqf("can_refine", 1)
end
--------------------------------------
-- ¥Ρ¶i¤J7??¦?¨??F8??¤§«e
--------------------------------------
when 20074.chat."Die h?heren Etagen.." with pc.in_dungeon() begin
say_title(""..mob_name(20074).."")
say("Ihr m?chtet in die 7.Etage?")
say("Ihr haben Gl?ck! Heute erlaube ich es ihnen vielleicht!")
say("")
say("Aber voher muss ich euch noch pr?fen..")
say("Mal sehen..")
wait()
if pc.level >=75 then
say("Ich erlaube euch weiterzugehen!")
say("Viel Gl?ck und passt auf euch auf da oben!")
timer("devil_jump_7", 6)
return
end
say_reward("Betreten der 7.Etage nicht erlaubt!")
say("")
say("Ihr seid nicht qualifiziert genug!")
say("Erreicht LvL 75 oder h?her,")
say("damit ihr eure Fertigkeiten steigern k?nnt")
say("und kommt dann wieder!")
say("")
wait()
pc.warp(590500, 110500)
return
end
when 20075.chat."Die h?heren Etagen.." with pc.in_dungeon() begin
say_title(""..mob_name(20075).."")
say("Ihr m?chtet in die 7.Etage?")
say("Ihr haben Gl?ck! Heute erlaube ich es ihnen vielleicht!")
say("")
say("Aber voher muss ich euch noch pr?fen..")
say("Mal sehen..")
wait()
if pc.level >=75 then
say("Ich erlaube euch weiterzugehen!")
say("Viel Gl?ck und passt auf euch auf da oben!")
timer("devil_jump_7", 6)
return
end
say_reward("Betreten der 7.Etage nicht erlaubt!")
say("")
say("Ihr seid nicht qualifiziert genug!")
say("Erreicht LvL 75 oder h?her,")
say("damit ihr eure Fertigkeiten steigern k?nnt")
say("und kommt dann wieder!")
say("")
wait()
pc.warp(590500, 110500)
return
end
when 20076.chat."Die h?heren Etagen.." with pc.in_dungeon() begin
say_title(""..mob_name(20076).."")
say("Ihr m?chtet in die 7.Etage?")
say("Ihr haben Gl?ck! Heute erlaube ich es ihnen vielleicht!")
say("")
say("Aber voher muss ich euch noch pr?fen..")
say("Mal sehen..")
wait()
if pc.level >=75 then
say("Ich erlaube euch weiterzugehen!")
say("Viel Gl?ck und passt auf euch auf da oben!")
timer("devil_jump_7", 6)
return
end
say_reward("Betreten der 7.Etage nicht erlaubt!")
say("")
say("Ihr seid nicht qualifiziert genug!")
say("Erreicht LvL 75 oder h?her,")
say("damit ihr eure Fertigkeiten steigern k?nnt")
say("und kommt dann wieder!")
say("")
wait()
pc.warp(590500, 110500)
return
end
when devil_jump_7.timer begin
d.clear_regen()
d.spawn_mob(8018, 639, 658)
d.spawn_mob(8018, 611, 637)
d.spawn_mob(8018, 596, 674)
d.spawn_mob(8018, 629, 670)
d.setf("level", 7)
d.jump_all(123233+590, 12320+638)
end
--------------------------------------------
-- ¥Ρ¶i¤J8??¦?¨??F9??¤§«e
--------------------------------------------
when devil_jump_8.timer begin
d.setf("level", 8)
d.jump_all(123233+590, 12320+403)
d.set_regen_file("data/dungeon/zombietower8_regen.txt")
d.spawn_mob(20366, 640, 460)
local _count= pc.count_item(30302)-- ®ψ·??u¤`?F¶?
pc.remove_item(30302,_count)
end
---------------------------------------------
-- ¥Ρ¶i¤J9??¦?µ²§?
---------------------------------------------
when devil_jump_9.timer begin
d.setf("level", 9)
d.jump_all(123233+590, 12320+155)
d.regen_file("data/dungeon/zombietower9_regen.txt")
end
when 1093.kill with pc.in_dungeon() and pc.get_map_index() >= 1900000 and pc.get_map_index() < 1910000 begin
d.kill_all()
timer("devil_end_jump", 60)
end
when devil_end_jump.timer begin
d.exit_all()
end
end
end