PHP Code:
quest fbs begin
state start begin
when 71094.use begin
if pc.getqf("konzi") == 1 then
chat("Dieser Effekt wirkt bereits.")
else
pc.setqf("konzi", 1)
pc.removeitem("71094", 1)
end
end
when 71001.use begin
if pc.getqf("exo") == 1 then
chat("Dieser Effekt wirkt bereits.")
else
pc.setqf("exo", 1)
pc.removeitem("71001", 1)
end
end
when 50401.use begin --Dreiwege-Schnitt
fbs.skill_group(0, 1, 1, 50401)
end
when 50402.use begin --Schwertwirbel
fbs.skill_group(0, 1, 2, 50402)
end
when 50403.use begin --Kampfrausch
fbs.skill_group(0, 1, 3, 50403)
end
when 50404.use begin --Aura des Schwerts
fbs.skill_group(0, 1, 4, 50404)
end
when 50405.use begin --Sausen
fbs.skill_group(0, 1, 5, 50405)
end
when 50416.use begin -- Durchschlag
fbs.skill_group(0, 2, 16, 50416)
end
when 50417.use begin -- Heftiges Schlagen
fbs.skill_group(0, 2, 17, 50417)
end
when 50418.use begin -- Stampfer
fbs.skill_group(0, 2, 18, 50418)
end
when 50419.use begin -- Starker Körper
fbs.skill_group(0, 2, 19, 50419)
end
when 50420.use begin -- Schwertschlag
fbs.skill_group(0, 2, 20, 50420)
end
when 50431.use begin -- Hinterhalt
fbs.skill_group(1, 1, 31, 50431)
end
when 50432.use begin -- Blitzangriff
fbs.skill_group(1, 1, 32, 50432)
end
when 50433.use begin -- Degenwirbel
fbs.skill_group(1, 1, 33, 50433)
end
when 50434.use begin -- Tarnung
fbs.skill_group(1, 1, 34, 50434)
end
when 50435.use begin -- Giftwolke
fbs.skill_group(1, 1, 35, 50435)
end
when 50446.use begin -- Wiederholter Schuss
fbs.skill_group(1, 2, 46, 50446)
end
when 50447.use begin -- Pfeilregen
fbs.skill_group(1, 2, 47, 50447)
end
when 50448.use begin -- Feuerpfeil
fbs.skill_group(1, 2, 48, 50448)
end
when 50449.use begin -- Federschreiten
fbs.skill_group(1, 2, 49, 50449)
end
when 50450.use begin -- Giftpfeil
fbs.skill_group(1, 2, 50, 50450)
end
when 50461.use begin -- Fingerschlag
fbs.skill_group(2, 1, 61, 50461)
end
when 50462.use begin -- Drachenwirbel
fbs.skill_group(2, 1, 62, 50462)
end
when 50463.use begin -- Verzauberte Klinge
fbs.skill_group(2, 1, 63, 50463)
end
when 50464.use begin -- Furcht
fbs.skill_group(2, 1, 64, 50464)
end
when 50465.use begin -- Verzauberte Rüstung
fbs.skill_group(2, 1, 65, 50465)
end
when 50466.use begin -- Zauber aufheben
fbs.skill_group(2, 1, 66, 50466)
end
when 50476.use begin -- Dunkler Schlag
fbs.skill_group(2, 2, 76, 50476)
end
when 50477.use begin -- Flammenschlag
fbs.skill_group(2, 2, 77, 50477)
end
when 50478.use begin -- Geist der Flamme
fbs.skill_group(2, 2, 78, 50478)
end
when 50479.use begin -- Dunkler Schutz
fbs.skill_group(2, 2, 79, 50479)
end
when 50480.use begin -- Geisterschlag
fbs.skill_group(2, 2, 80, 50480)
end
when 50481.use begin -- Dunkler Stein
fbs.skill_group(2, 2, 81, 50481)
end
when 50491.use begin -- Fliegender Talisman
fbs.skill_group(3, 1, 91, 50491)
end
when 50492.use begin -- Drachenschießen
fbs.skill_group(3, 1, 92, 50492)
end
when 50493.use begin -- Drachengebrüll
fbs.skill_group(3, 1, 93, 50493)
end
when 50494.use begin -- Segen
fbs.skill_group(3, 1, 94, 50494)
end
when 50495.use begin -- Reflektieren
fbs.skill_group(3, 1, 95, 50495)
end
when 50496.use begin -- Hilfe des Drachen
fbs.skill_group(3, 1, 96, 50496)
end
when 50506.use begin -- Blitzwurf
fbs.skill_group(3, 2, 106, 50506)
end
when 50507.use begin -- Blitz heraufbeschwören
fbs.skill_group(3, 2, 107, 50507)
end
when 50508.use begin -- Blitzkralle
fbs.skill_group(3, 2, 108, 50508)
end
when 50509.use begin -- Kurieren
fbs.skill_group(3, 2, 109, 50509)
end
when 50510.use begin -- Schnelligkeit
fbs.skill_group(3, 2, 110, 50510)
end
when 50511.use begin -- Angriff+
fbs.skill_group(3, 2, 111, 50511)
end
function skill_group(job_typ, group_typ, skill_typ, fb_vnum)
if pc.get_job() == job_typ then
if pc.get_skill_group() == group_typ then
if pc.get_skill_level(skill_typ) < 20 then
chat("Diese Fertigkeit habe ich noch nicht auf Meister!")
elseif pc.get_skill_level(skill_typ) >= 30 then
chat("Diese Fertigkeit habe ich schon gelernt!")
else
if pc.getqf("last_"..skill_typ) < get_global_time() then
fbs.skill_meister(skill_typ, fb_vnum)
elseif pc.getqf("exo") == 1 then
fbs.skill_meister(skill_typ, fb_vnum)
pc.setqf("exo", 0)
else
chat("Dieses Buch lese ich gerade, es ist ziemlich kompliziertes Zeug!")
end
end
else
chat("Dieses Fertigkeitsbuch verstehe ich leider nicht!")
end
else
chat("Dieses Fertigkeitsbuch verstehe ich leider nicht!")
end
end
function skill_meister(skill_typ, fb_vnum)
pc.removeitem(fb_vnum, 1)
if pc.getqf("konzi") == 1 then -- Anweisung wird ausgeführt sobald eine Exo Rolle gelesen wurde
fbs.skill_tech(skill_typ)
pc.setqf("konzi", 0)
else -- Anweisung wird ausgeführt wenn vor dem Lesen keine Exo Rolle gelesen wurde
if number(1,100) < 40 then -- liefert eine Zufallszahl und wird ausgeführt wenn diese kleiner als 40 ist
fbs.skill_tech(skill_typ)
else -- wird ausgeführt sollte die Zufallszahl größer als 40 sein
chat("Verdammt... Das Training ist Fehlgeschlagen!")
end
end
pc.setqf("last_"..skill_typ, get_global_time()+86400) --24h Stunden Sperre für das nächste FB
end
function skill_tech(skill_typ)
pc.setqf("tech_"..skill_typ, pc.getqf("tech_"..skill_typ)+1)
if pc.get_skill_level(skill_typ) == pc.getqf("tech_"..skill_typ)+19 then
pc.set_skill_level(skill_typ ,pc.get_skill_level(skill_typ)+1)
pc.setqf("tech_"..skill_typ, 0)
chat("Glückwunsch... Das Training wurde erfolgreich abgeschlossen!")
else
chat("Das Fertigkeitsbuch wurde erfolgreich gelesen!")
chat("Du musst noch "..pc.get_skill_level(skill_typ) - (pc.getqf("tech_"..skill_typ)+19).." Fertigkeitsbücher erfolgreich lesen!")
end
if pc.getqf("tech_"..skill_typ) > 10 then
pc.setqf("tech_"..skill_typ, 0)
end
end
when 50513.use begin
say_title("Seelenstein")
local seelicount = pc.count_item(50513)
if pc.get_skill_group() == 0 then
say("Du besitzt keine Fertigkeiten, die")
say("gegroßmeistert werden können.")
return
end
if pc.getqf("exo") == 0 and get_time() < pc.getqf("next_time") then -- and not is_test_server() then
if pc.is_skill_book_no_delay() then
say("Durch den gebrauch einer Exorzismuss-")
say("Schriftrolle kannst du einen weiteren")
say("Seelenstein lesen!")
wait()
say_title("Seelenstein")
else
say("Du hast heute bereits einen Seelenstein gelesen!")
return
end
end
local result = fbs.BuildGrandMasterSkillList(pc.get_job(), pc.get_skill_group())
local vnum_list = result[1]
local name_list = result[2]
if table.getn(vnum_list) == 0 then
say("Du besitzt keine Fertigkeiten, die")
say("gegroßmeistert werden können.")
return
end
say("Welche Fertigkeit möchtest du trainieren?")
say("")
local menu_list = {}
table.foreach(name_list, function(i, name) table.insert(menu_list, name) end)
table.insert(menu_list, "Abbrechen")
local s=select_table(menu_list)
if table.getn(menu_list) == s then
return
end
local skill_name=name_list[s]
local skill_vnum=vnum_list[s]
local skill_level = pc.get_skill_level(skill_vnum)
local cur_alignment = pc.get_real_alignment()
local need_alignment = 1000+500*(skill_level-30)
test_chat("Momentaner Rang: "..cur_alignment)
test_chat("Benötigter Rang: "..need_alignment)
local title=string.format("%s auf G%d trainieren", skill_name, skill_level-30+1)
if skill_level-30+1==10 then
title=string.format("%s auf P trainieren", skill_name)
end
say_title(title)
say("Durch das Lesen von Seelensteinen müssen")
say("dir als Zeichen des Opfers Rangpunkte")
say("abgezogen werden.")
say("")
if cur_alignment<-19000+need_alignment then
say_reward("Du hast zu wenig Rangpunkte!")
return
end
if cur_alignment<0 then
say_reward(string.format("Benötigter Rang: %d -> %d", need_alignment, need_alignment*2))
say_reward("Beim erfolgreichen Einlesen des")
say_reward("Seelensteines wird dir doppelt")
say_reward("so viel Rangpunkte abgezogen.")
need_alignment=need_alignment*2
elseif cur_alignment<need_alignment then
say_reward(string.format("Benötigter Rang: %d", need_alignment))
say_reward("Beim erfolgreichen Einlesen des")
say_reward("Seelensteines wird dir doppelt")
say_reward("so viel Rangpunkte abgezogen.")
else
say_reward(string.format("Benötigter Rang: %d", need_alignment))
end
say("")
local s=select("Lesen", "Abbrechen")
if s==2 then
return
end
if cur_alignment>=0 and cur_alignment<need_alignment then
say_title(string.format("%s bestätigen", title))
say("Das Lesen eines Seelensteines kostet Rang,")
say("wenn du diesen Seelenstein ließt,")
say("kommst du in den negativen Bereich.")
say("Bitte Bestätige das du diesen Seelenstein")
say("wirklich lesen möchtest! Das tust du indem")
say("du in den Textfeld das Wort")
say_reward("trainieren")
say("eingibst.")
local s=input()
if s!="trainieren" then
return
end
end
if pc.getqf("exo") == 0 and get_time() < pc.getqf("next_time") then
if pc.is_skill_book_no_delay() then
pc.remove_skill_book_no_delay()
else
say("Bitte an die Admins wenden!")
return
end
end
pc.setqf("next_time", get_time()+time_hour_to_sec(number(8, 12)))
pc.setqf("exo", 0)
pc.setqf("konzi", 0)
if need_alignment > 0 and pc.count_item(50513) > 0 then
pc.remove_item("50513", 1)
if pc.learn_grand_master_skill(skill_vnum) then
pc.change_alignment(-need_alignment)
say_title(string.format("%s erfolgreich", title))
if 40 == pc.get_skill_level(skill_vnum) then
say(string.format("%s ist nun perfeckt Gemeistert.", skill_name))
say("Herzlichen Glückwunsch!")
else
say(string.format("Das Großmeistern war erfolgreich!", skill_name, skill_level-30+1+1))
end
say("")
say_reward("Erfolgreich!")
say_reward(string.format("Es wurden %d Rangpunkte verbraucht", need_alignment))
say("")
else
say_title(string.format("%s fehlgeschlagen", title))
say("Das Großmeistern ist fehlgeschlagen.")
say("")
local rang = number(need_alignment/3, need_alignment/2)
say_reward("Fehlgeschlagen! Es wurden "..rang.." Rangpunkte verbraucht")
say("")
pc.change_alignment(-rang)
end
end
end
function BuildGrandMasterSkillList(job, group)
GRAND_MASTER_SKILL_LEVEL = 30
PERFECT_MASTER_SKILL_LEVEL = 40
local skill_list = special.active_skill_list[job+1][group]
local ret_vnum_list = {}
local ret_name_list = {}
table.foreach(skill_list,
function(i, skill_vnum)
local skill_level = pc.get_skill_level(skill_vnum)
if skill_level >= GRAND_MASTER_SKILL_LEVEL and skill_level < PERFECT_MASTER_SKILL_LEVEL then
table.insert(ret_vnum_list, skill_vnum)
local name=locale.GM_SKILL_NAME_DICT[skill_vnum]
if name == nil then name=skill_vnum end
table.insert(ret_name_list, name)
end
end)
return {ret_vnum_list, ret_name_list}
end
end
end