forked from metin2/server
1
0
Fork 0
server/gamefiles/data/quest/marriage_manage.quest

545 lines
16 KiB
Plaintext

quest marriage_manage begin
state start begin
when oldwoman.chat.gameforge.marriage_manage._10_npcChat with not pc.is_engaged_or_married() begin
if not npc.lock() then
say_title(gameforge.fortune_telling._100_sayTitle)
say(gameforge.marriage_manage._20_say)
return
end
if pc.level < 25 then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._30_say)
say_title(gameforge.marriage_manage._40_sayTitle)
say_reward(gameforge.marriage_manage._50_sayReward)
npc.unlock()
return
end
local m_ring_num = pc.countitem(70301)
local m_has_ring = m_ring_num > 0
if not m_has_ring then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._60_say)
say_item(gameforge.marriage_manage._70_sayItem, 70301, "")
say(gameforge.marriage_manage._80_say)
npc.unlock()
return
end
local m_sex = pc.get_sex()
local m_nationality= pc.get_empire()
if not marriage_manage.is_equip_wedding_dress() then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._90_say)
if m_sex==0 then
say_item(gameforge.marriage_manage._100_sayItem, marriage_manage.get_wedding_dress(m_sex), "")
say_reward(gameforge.marriage_manage._110_sayReward)
else
say_item(gameforge.marriage_manage._120_sayItem, marriage_manage.get_wedding_dress(m_sex), "")
say_reward(gameforge.marriage_manage._130_sayReward)
end
npc.unlock()
return
end
local NEED_MONEY = 1000000
if pc.get_money() < NEED_MONEY then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._140_say)
say_reward(gameforge.marriage_manage._150_sayReward)
npc.unlock()
return
end
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._160_say)
say_reward(gameforge.marriage_manage._170_sayReward)
local sname = input()
if sname == "" then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._180_say)
npc.unlock()
return
end
local u_vid = find_pc_by_name(sname)
local m_vid = pc.get_vid()
if u_vid == 0 then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._190_say)
say_reward(string.format(gameforge.marriage_manage._200_sayReward, sname))
npc.unlock()
return
end
if not npc.is_near_vid(u_vid, 10) then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._210_say)
say_reward(string.format(gameforge.marriage_manage._220_sayReward, sname))
npc.unlock()
return
end
local old = pc.select(u_vid)
local u_level = pc.get_level()
local u_job = pc.get_job()
local u_sex = pc.get_sex()
local u_nationality= pc.get_empire()
local u_name = pc.name
local u_gold = pc.get_money()
local u_married = pc.is_married()
local u_has_ring = pc.countitem(70301) > 0
local u_wear = marriage_manage.is_equip_wedding_dress()
pc.select(old)
local m_level = pc.get_level()
if u_vid == m_vid then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._230_say)
say_reward(gameforge.marriage_manage._240_sayReward)
npc.unlock()
return
end
if u_sex == m_sex then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._250_say)
npc.unlock()
return
end
if u_nationality != m_nationality then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._260_say)
npc.unlock()
return
end
if u_married then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._270_say)
say_reward(string.format(gameforge.marriage_manage._280_sayReward, sname))
npc.unlock()
return
end
if u_level < 25 then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._290_say)
npc.unlock()
return
end
if m_level - u_level > 15 or u_level - m_level > 15 then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._300_say)
npc.unlock()
return
end
if not u_has_ring then
if m_ring_num >= 2 then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._310_say)
else
say(gameforge.marriage_manage._320_say)
end
say_item(gameforge.marriage_manage._70_sayItem, 70301, "")
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._330_say)
npc.unlock()
return
end
if not u_wear then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._340_say)
if u_sex==0 then
say_title(gameforge.couple_ring._20_sayTitle)
say_item(gameforge.marriage_manage._100_sayItem, marriage_manage.get_wedding_dress(u_sex), "")
say(gameforge.marriage_manage._350_say)
else
say_title(gameforge.couple_ring._20_sayTitle)
say_item(gameforge.marriage_manage._120_sayItem, marriage_manage.get_wedding_dress(u_sex), "")
say(gameforge.marriage_manage._360_say)
end
npc.unlock()
return
end
local ok_sign = confirm(u_vid, string.format(gameforge.marriage_manage._365_confirm_chat,pc.name), 30)
if ok_sign == CONFIRM_OK then
local m_name = pc.name
if pc.get_gold()>=NEED_MONEY then
pc.change_gold(-NEED_MONEY)
pc.removeitem(70301, 1)
pc.give_item2(70302, 1)
local old = pc.select(u_vid)
pc.removeitem(70301, 1)
pc.give_item2(70302, 1)
pc.select(old)
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._370_say)
wait()
setskin(NOWINDOW)
marriage.engage_to(u_vid)
end
else
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._380_say)
end
npc.unlock()
end
when oldwoman.chat.gameforge.marriage_manage._390_npcChat with pc.is_engaged() begin
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._400_say)
wait()
setskin(NOWINDOW)
marriage.warp_to_my_marriage_map()
end
when 9011.chat.gameforge.marriage_manage._410_npcChat with pc.is_engaged() and marriage.in_my_wedding() begin
if not npc.lock() then
say_title(gameforge.marriage_manage._420_sayTitle)
say(gameforge.marriage_manage._430_say)
return
end
say_title(gameforge.marriage_manage._420_sayTitle)
say(gameforge.marriage_manage._440_say)
local sname = input()
local u_vid = find_pc_by_name(sname)
local m_vid = pc.get_vid()
if u_vid == 0 then
say_title(gameforge.marriage_manage._420_sayTitle)
say(gameforge.marriage_manage._450_say)
say_reward(string.format(gameforge.marriage_manage._200_sayReward, sname))
npc.unlock()
return
end
if not npc.is_near_vid(u_vid, 10) then
say_title(gameforge.marriage_manage._420_sayTitle)
say(gameforge.marriage_manage._460_say)
say_reward(string.format(gameforge.marriage_manage._470_sayReward, sname))
npc.unlock()
return
end
if u_vid == m_vid then
say_title(gameforge.marriage_manage._420_sayTitle)
say(gameforge.marriage_manage._480_say)
npc.unlock()
return
end
if u_vid != marriage.find_married_vid() then
say_title(gameforge.marriage_manage._490_sayTitle)
say(gameforge.marriage_manage._500_say)
npc.unlock()
return
end
local ok_sign = confirm(u_vid, string.format(gameforge.marriage_manage._365_confirm_chat,pc.name), 30)
if ok_sign != CONFIRM_OK then
say_title(gameforge.marriage_manage._490_sayTitle)
say(gameforge.marriage_manage._510_say)
npc.unlock()
return
end
say_title(gameforge.marriage_manage._420_sayTitle)
say(gameforge.marriage_manage._520_say)
marriage.set_to_marriage()
say(gameforge.marriage_manage._530_say)
npc.unlock()
end
function give_wedding_gift()
local male_item = {71072, 71073, 71074}
local female_item = {71069, 71070, 71071}
if pc.get_sex() == MALE then
pc.give_item2(male_item[number(1, 3)], 1)
else
pc.give_item2(female_item[number(1, 3)], 1)
end
end
when 9011.chat.gameforge.marriage_manage._540_npcChat with
(pc.is_engaged() or pc.is_married()) and
marriage.in_my_wedding() and
not marriage.wedding_is_playing_music() begin
marriage.wedding_music(true, "wedding.mp3")
setskin(NOWINDOW)
end
when 9011.chat.gameforge.marriage_manage._550_npcChat with
(pc.is_engaged() or pc.is_married()) and
marriage.in_my_wedding() and
marriage.wedding_is_playing_music() begin
marriage.wedding_music(false, "default")
setskin(NOWINDOW)
end
when 9011.chat.gameforge.marriage_manage._560_npcChat with
pc.is_married() and
marriage.in_my_wedding() begin
marriage.wedding_dark(true)
setskin(NOWINDOW)
end
when 9011.chat.gameforge.marriage_manage._570_npcChat with pc.is_married() and marriage.in_my_wedding() begin
marriage.wedding_snow(true)
setskin(NOWINDOW)
end
when 9011.chat.gameforge.marriage_manage._580_npcChat with pc.is_married() and marriage.in_my_wedding() begin
if not npc.lock() then
say_title(gameforge.marriage_manage._490_sayTitle)
say(gameforge.marriage_manage._590_say)
return
end
say_title(gameforge.marriage_manage._420_sayTitle)
say(gameforge.marriage_manage._600_say)
local s = select(gameforge.marriage_manage._610_select, gameforge.marriage_manage._620_select)
if s == 2 then
local u_vid = marriage.find_married_vid()
if u_vid == 0 then
say_title(gameforge.marriage_manage._420_sayTitle)
say(gameforge.marriage_manage._630_say)
npc.unlock()
return
end
say_title(gameforge.marriage_manage._420_sayTitle)
say(gameforge.marriage_manage._640_say)
local ok_sign = confirm(u_vid, gameforge.marriage_manage._650_confirm_chat, 30)
if ok_sign == CONFIRM_OK then
marriage.end_wedding()
else
say_title(gameforge.marriage_manage._490_sayTitle)
say(gameforge.marriage_manage._660_say)
end
end
npc.unlock()
end
when 11000.chat.gameforge.marriage_manage._670_npcChat or
11002.chat.gameforge.marriage_manage._680_npcChat or
11004.chat.gameforge.marriage_manage._680_npcChat with pc.is_married() begin
if not marriage_manage.check_divorce_time() then
return
end
local u_vid = marriage.find_married_vid()
if u_vid == 0 or not npc.is_near_vid(u_vid, 10) then
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._690_say)
return
end
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._700_say)
local MONEY_NEED_FOR_ONE = 500000
local s = select(gameforge.horse_upgrade2._180_select, gameforge.marriage_manage._710_select)
if s == 1 then
local m_enough_money = pc.gold > MONEY_NEED_FOR_ONE
local m_have_ring = pc.countitem(70302) > 0
local old = pc.select(u_vid)
local u_enough_money = pc.gold > MONEY_NEED_FOR_ONE
local u_have_ring = pc.countitem(70302) > 0
pc.select(old)
if not m_have_ring then
say(gameforge.marriage_manage._720_say)
return;
end
if not u_have_ring then
say(gameforge.marriage_manage._730_say)
return;
end
if not m_enough_money then
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._740_say)
say_reward(string.format(gameforge.marriage_manage._750_sayReward, MONEY_NEED_FOR_ONE/10000))
return;
end
if not u_enough_money then
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._740_say)
say_reward(gameforge.marriage_manage._760_sayReward)
return;
end
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._770_say)
local c= select(gameforge.horse_upgrade2._180_select, gameforge.marriage_manage._780_select)
if 2 == c then
say_pc_name()
say(gameforge.marriage_manage._790_say)
wait()
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._800_say)
say_reward(gameforge.marriage_manage._810_sayReward)
return
end
local ok_sign = confirm(u_vid, pc.name..gameforge.marriage_manage._815_confirm_chat, 30)
if ok_sign == CONFIRM_OK then
local m_enough_money = pc.gold > MONEY_NEED_FOR_ONE
local m_have_ring = pc.countitem(70302) > 0
local old = pc.select(u_vid)
local u_enough_money = pc.gold > MONEY_NEED_FOR_ONE
local u_have_ring = pc.countitem(70302) > 0
pc.select(old)
if m_have_ring and m_enough_money and u_have_ring and u_enough_money then
pc.removeitem(70302, 1)
pc.change_money(-MONEY_NEED_FOR_ONE)
local old = pc.select(u_vid)
pc.removeitem(70302, 1)
pc.change_money(-MONEY_NEED_FOR_ONE)
pc.select(old)
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._820_say)
say_reward(gameforge.marriage_manage._810_sayReward)
marriage.remove()
else
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._830_say)
say_reward(gameforge.marriage_manage._840_sayReward)
end
else
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._850_say)
say_reward(gameforge.marriage_manage._840_sayReward)
end
end
end
when 11000.chat.gameforge.marriage_manage._860_npcChat or
11002.chat.gameforge.marriage_manage._870_npcChat or
11004.chat.gameforge.marriage_manage._870_npcChat with
not pc.is_married() and
pc.count_item(70302)>0
begin
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._880_say)
say_reward(gameforge.marriage_manage._890_sayReward)
pc.remove_item(70302)
end
when 11000.chat.gameforge.marriage_manage._900_npcChat or
11002.chat.gameforge.marriage_manage._900_npcChat or
11004.chat.gameforge.marriage_manage._900_npcChat with pc.is_married() begin
if not marriage_manage.check_divorce_time() then
return
end
say_title(gameforge.marriage_manage._910_sayTitle)
say(gameforge.marriage_manage._920_say)
local s = select(gameforge.horse_upgrade2._180_select, gameforge.marriage_manage._930_select)
local NEED_MONEY = 1000000
if s == 2 then
return
end
if pc.money < NEED_MONEY then
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._940_say)
return
end
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._950_say)
local c = select(gameforge.marriage_manage._960_select, gameforge.marriage_manage._970_select)
if c == 2 then
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._980_say)
return
end
pc.removeitem(70302, 1)
pc.change_gold(-NEED_MONEY)
marriage.remove()
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._990_say)
end
when oldwoman.chat.gameforge.marriage_manage._1000_npcChat with not pc.is_engaged() begin
local t = marriage.get_wedding_list()
if table.getn(t) == 0 then
say_title(gameforge.couple_ring._20_sayTitle)
say(gameforge.marriage_manage._1010_say)
else
local wedding_names = {}
table.foreachi(t, function(n, p) wedding_names[n] = string.format(gameforge.marriage_manage._1015_foreach,p[3],p[4]) end)
wedding_names[table.getn(t)+1] = locale.confirm
local s = select_table(wedding_names)
if s != table.getn(wedding_names) then
marriage.join_wedding(t[s][1], t[s][2])
end
end
end
when 9011.click with not pc.is_engaged() and not pc.is_married() begin
say_title(gameforge.marriage_manage._420_sayTitle)
say(gameforge.marriage_manage._1020_say)
end
function check_divorce_time()
local DIVORCE_LIMIT_TIME = 86400
if is_test_server() then
DIVORCE_LIMIT_TIME = 60
end
if marriage.get_married_time() < DIVORCE_LIMIT_TIME then
say_title(gameforge.find_squareguard._30_sayTitle)
say(gameforge.marriage_manage._1030_say)
return false
end
return true
end
function is_equip_wedding_dress()
local a = pc.get_armor()
return a >= 11901 and a <= 11904
end
function get_wedding_dress(pc_sex)
if 0==pc_sex then
return 11901
else
return 11903
end
end
end
end