1
0
Fork 0
server/gamefiles/locale/english/quest/main_quest_flame_lv100.quest

562 lines
16 KiB
Plaintext

--2013.01.30 김용욱
--퀘스트 진행 npc
define YACKHWAN 20377 -- 약령도장 약환
define SCHOLAR 20380 -- 학자
define ALCHEMIST 20001 -- 연금술사
define BLACKSMITH 20016 -- 대장장이
-- 탁기의 저지1-1
define ITEM2_1 90010 -- 초석
define ITEM2_1_NEEDED 10
define ITEM2_2 30010 -- 곰의 쓸개
define ITEM2_2_NEEDED 50
define ITEM2_3 30025 -- 거미의 독주머니
define ITEM2_3_NEEDED 10
define ITEM2_4 51001 -- 활석
define ITEM2_4_NEEDED 200
define ITEM3_1 31077 -- 초석가루
quest main_quest_flame_lv100 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 100 begin
set_state (state1_1)
end
end
-- 탁기의 정체
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv100._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(YACKHWAN)
if 0 != v then
target.vid("__TARGET__", v, mob_name(YACKHWAN))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._010_sendLetter)
say(gameforge.main_quest_flame_lv100._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when YACKHWAN.chat.gameforge.main_quest_flame_lv100._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(YACKHWAN))
say(gameforge.main_quest_flame_lv100._030_say)
wait()--추가 대화
say_title(mob_name(YACKHWAN))
say(gameforge.main_quest_flame_lv100._040_say)
wait()--추가 대화
say_title(mob_name(YACKHWAN))
say(gameforge.main_quest_flame_lv100._060_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._070_say)
wait()--추가 대화
say_title(mob_name(YACKHWAN))
say(gameforge.main_quest_flame_lv100._080_say)
--다음 스테이트로
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin
when enter begin
--몬스터 처치 수 설정
pc.setqf("kill_count_1", 0)
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv100._090_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._010_sendLetter)
--남은 처치 수 안내문
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
main_quest_flame_lv100.kill_count()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._100_sayTitle)
say(gameforge.main_quest_flame_lv100._110_say)
--남은 처치 수 안내문
say(gameforge.main_quest_lv98._680_counterName)
say(string.format(gameforge.main_quest_lv98._670_sayReward, 300 - pc.getqf("kill_count_1")))
end
when YACKHWAN.chat.gameforge.main_quest_flame_lv100._010_sendLetter begin
say_title(mob_name(YACKHWAN))
say(gameforge.main_quest_flame_lv100._120_say)
end
when 2202.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 2203.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 2204.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 2205.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
-- 이 아래는 보험용으로 같은 이름의 vnum이 다른 몬스터를 잡았을때도 퀘스트가 클리어 되도록 하였다.
when 7020.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 7021.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 7022.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 7023.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
function kill_count()
local total_remain = 0
local remain1 = 300 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state1_3")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
--q.done()
end
end
state state1_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv100._130_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(YACKHWAN)
if 0 != v then
target.vid("__TARGET__", v, mob_name(YACKHWAN))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._010_sendLetter)
say(gameforge.main_quest_flame_lv100._140_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when YACKHWAN.chat.gameforge.main_quest_flame_lv100._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(YACKHWAN))
say(gameforge.main_quest_flame_lv100._150_say)
--보상
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 38143000))
pc.give_exp2(38143000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 149000))
pc.change_money(149000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30051),1))
pc.give_item2(30051, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50814),10))
pc.give_item2(50814, 10)
say()
--다음 스테이트로
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- 탁기의 저지1-1
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv100._160_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(ALCHEMIST)
if 0 != v then
target.vid("__TARGET__", v, mob_name(ALCHEMIST))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._160_sendLetter)
say(gameforge.main_quest_flame_lv100._170_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when ALCHEMIST.chat.gameforge.main_quest_flame_lv100._160_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(ALCHEMIST))
say(gameforge.main_quest_flame_lv100._180_say)
wait()--추가 대화
say_title(mob_name(ALCHEMIST))
say(gameforge.main_quest_flame_lv100._190_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._200_say)
wait()--추가 대화
say_title(mob_name(ALCHEMIST))
say(gameforge.main_quest_flame_lv100._210_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._220_say)
wait()--추가 대화
say_title(mob_name(ALCHEMIST))
say(gameforge.main_quest_flame_lv100._230_say)
--다음 스테이트로
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin -- 재료를 모아오는 부분. 재료를 모두 모은 시점이 파악이 안될 경우 이 state 에서 퀘스트를 완료할 수 있다.
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv100._240_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._160_sendLetter)
q.set_counter_name(gameforge.main_quest_flame_lv100._250_say)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._260_sayTitle)
say(gameforge.main_quest_flame_lv100._270_say)
say(gameforge.main_quest_flame_lv100._250_say)
local remain1 = ITEM2_1_NEEDED - pc.count_item(ITEM2_1)
local remain2 = ITEM2_2_NEEDED - pc.count_item(ITEM2_2)
local remain3 = ITEM2_3_NEEDED - pc.count_item(ITEM2_3)
local remain4 = ITEM2_4_NEEDED - pc.count_item(ITEM2_4)
if remain1 < 0 then
remain1 = 0
end
if remain2 < 0 then
remain2 = 0
end
if remain3 < 0 then
remain3 = 0
end
if remain4 < 0 then
remain4 = 0
end
say(string.format(gameforge.main_quest_lv98._690_sayReward,item_name(ITEM2_1) ,remain1,item_name(ITEM2_2) ,remain2))
say(string.format(gameforge.main_quest_lv98._690_sayReward,item_name(ITEM2_3) , remain3,item_name(ITEM2_4) , remain4))
say()
q.set_counter_value(remain1 + remain2 + remain3 + remain4)
local check = remain1 + remain2 + remain3 + remain4
if check <= 0 then
set_state (state2_3)
end
end
when ALCHEMIST.chat.gameforge.main_quest_flame_lv100._160_sendLetter begin
if pc.count_item(ITEM2_1) >= ITEM2_1_NEEDED and pc.count_item(ITEM2_2) >= ITEM2_2_NEEDED
and pc.count_item(ITEM2_3) >= ITEM2_3_NEEDED and pc.count_item(ITEM2_4) >= ITEM2_4_NEEDED then
pc.remove_item ( ITEM2_1,ITEM2_1_NEEDED)
pc.remove_item ( ITEM2_2,ITEM2_2_NEEDED)
pc.remove_item ( ITEM2_3,ITEM2_3_NEEDED)
pc.remove_item ( ITEM2_4,ITEM2_4_NEEDED)
say_title(mob_name(ALCHEMIST))
say(gameforge.main_quest_flame_lv100._280_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2(48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 150000))
pc.change_money(150000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30015),2))
pc.give_item2(30015, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70043),1))
pc.give_item2_select(70043)
item.set_socket(2, 60)
set_state (state3_1)
else
say_title(mob_name(ALCHEMIST))
say(gameforge.main_quest_flame_lv100._290_say)
end
end
when leave begin
--q.done()
end
end
state state2_3 begin -- 재료를 모두 모았다. 하지만 이 후에 재료를 다시 제거할 경우, 연금술사에게 말을 걸면 state2_2로 다시 넘어가게 된다.
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv100._300_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._160_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(ALCHEMIST)
if 0 != v then
target.vid("__TARGET__", v, mob_name(ALCHEMIST))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._160_sendLetter)
say(gameforge.main_quest_flame_lv100._310_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when ALCHEMIST.chat.gameforge.main_quest_flame_lv100._160_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(ITEM2_1) >= ITEM2_1_NEEDED and pc.count_item(ITEM2_2) >= ITEM2_2_NEEDED
and pc.count_item(ITEM2_3) >= ITEM2_3_NEEDED and pc.count_item(ITEM2_4) >= ITEM2_4_NEEDED then
pc.remove_item ( ITEM2_1,ITEM2_1_NEEDED)
pc.remove_item ( ITEM2_2,ITEM2_2_NEEDED)
pc.remove_item ( ITEM2_3,ITEM2_3_NEEDED)
pc.remove_item ( ITEM2_4,ITEM2_4_NEEDED)
say_title(mob_name(ALCHEMIST))
say(gameforge.main_quest_flame_lv100._280_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2(48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 150000))
pc.change_money(150000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30015),2))
pc.give_item2(30015, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70043),1))
pc.give_item2_select(70043)
item.set_socket(2, 60)
say()
set_state (state3_1)
else
say_title(mob_name(ALCHEMIST))
say(gameforge.main_quest_flame_lv100._290_say)
set_state (state2_2)
end
end
when leave begin
--q.done()
end
end
-- 탁기의 저지1-2
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv100._320_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(ALCHEMIST)
if 0 != v then
target.vid("__TARGET__", v, mob_name(ALCHEMIST))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._320_sendLetter)
say(gameforge.main_quest_flame_lv100._170_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when ALCHEMIST.chat.gameforge.main_quest_flame_lv100._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(ALCHEMIST))
say(gameforge.main_quest_flame_lv100._330_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._340_say)
wait()--추가 대화
say_title(mob_name(ALCHEMIST))
say(gameforge.main_quest_flame_lv100._350_say)
--다음 스테이트로
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv100._240_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._320_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(BLACKSMITH)
if 0 != v then
target.vid("__TARGET__", v, mob_name(BLACKSMITH))
end
q.set_counter_name(gameforge.main_quest_flame_lv100._250_say)
q.set_counter_value(1)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._360_sayTitle)
say(gameforge.main_quest_flame_lv100._370_say)
say(gameforge.main_quest_flame_lv100._250_say)
say(gameforge.main_quest_flame_lv100._380_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when BLACKSMITH.chat.gameforge.main_quest_flame_lv100._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(BLACKSMITH))
say(gameforge.main_quest_flame_lv100._390_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._400_say)
wait()--추가 대화
say_title(mob_name(BLACKSMITH))
say(gameforge.main_quest_flame_lv100._410_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._420_say)
pc.give_item2(ITEM3_1, 1)
--다음 스테이트로
set_state (state3_3)
end
when ALCHEMIST.chat.gameforge.main_quest_flame_lv100._320_sendLetter begin
say_title(mob_name(ALCHEMIST))
say(gameforge.main_quest_flame_lv100._430_say)
end
when leave begin
--q.done()
end
end
state state3_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv100._440_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._320_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(ALCHEMIST)
if 0 != v then
target.vid("__TARGET__", v, mob_name(ALCHEMIST))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._320_sendLetter)
say(gameforge.main_quest_flame_lv100._310_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when ALCHEMIST.chat.gameforge.main_quest_flame_lv100._320_sendLetter begin
target.delete("__TARGET__")
pc.remove_item(ITEM3_1, pc.count_item(ITEM3_1))
say_title(mob_name(ALCHEMIST))
say(gameforge.main_quest_flame_lv100._450_say)
--보상
wait()--reward
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 35843000))
pc.give_exp2(35843000)
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 152000))
pc.change_money(152000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50708),10))
pc.give_item2(50708, 10)
say()
say_reward(string.format(gameforge.main_quest_flame_lv99._430_say, 101))
--다음 스테이트로
set_state (__COMPLETE__)
set_quest_state ("main_quest_flame_lv101", "state0")
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end