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