local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if msgcontains(msg, 'casar') or msgcontains(msg, 'casamento') then
if getPlayerStorageValue(cid,3066) == -1 then
selfSay('Voc\ê quer se casar?', cid)
talkState[talkUser] = 1
elseif getPlayerStorageValue(cid,3066) == 1 then
local fid = getPlayerGUID(cid)
local marrystatus = getOwnMarryStatus(fid)
if marrystatus ~= 0 then
local newpartner = getPlayerNameByGUID(marrystatus)
selfSay('Espere a aceita\ç\ão de {' .. newpartner .. '} para prosseguir com o casamento. Voc\ê quer {cancelar} isso?', cid)
talkState[talkUser] = 5
else
setPlayerStorageValue(cid,3066,-1)
selfSay('Voc\ê quer se casar?', cid)
talkState[talkUser] = 1
end
elseif getPlayerStorageValue(cid,3066) == 2 then
selfSay('Voc\ê ja est\á casado(a). Se voc\ê quer um {divorcio}, diga isto.', cid)
talkState[talkUser] = 0
end
elseif msgcontains(msg, 'divorcio') then
if getPlayerStorageValue(cid,3066) == 2 then
selfSay('Tem certeza que deseja se separar? Isto lhe custar\á 5000 gold coins.', cid)
talkState[talkUser] = 6
else
selfSay('Voc\ê n\ão est\á casado(a). Se voc\ê quer casar, diga {casar}.', cid)
talkState[talkUser] = 0
end
end
if talkState[talkUser] == 1 then
if msgcontains(msg, 'yes') then
local fid = getPlayerGUID(cid)
local marrystatus = getMarryStatus(fid)
if marrystatus == FALSE then
selfSay('Traga uma roupa de casamento e um anel e me diga qual \é o nome do seu(sua) futuro(a) parceiro(a)?', cid)
talkState[talkUser] = 2
else
local marryname = getPlayerNameByGUID(marrystatus)
selfSay('{' .. marryname .. '} definiu se casar com voc\ê. Se quiser {prosseguir} traga a roupa de casamento e o anel ou se quiser {cancelar} o casamento, diga isto.', cid)
talkState[talkUser] = 4
end
end
elseif talkState[talkUser] == 2 then
local p = msg
local player = getPlayerName(cid)
local fid = getPlayerGUID(cid)
local sid = getPlayerGUIDByName(p)
if sid == 0 then
selfSay('O player com este nome n\ão existe.', cid)
talkState[talkUser] = 0
elseif sid == fid then
selfSay('N\ão se preocupe, voc\ê sempre vai estar casado(a) com si mesmo(a), crian\ça.', cid)
talkState[talkUser] = 0
else
local marrystatus = getMarryStatus(fid)
local pmarriage = getPlayerMarriage(sid)
local ownstatus = getOwnMarryStatus(cid)
if pmarriage == FALSE then
if marrystatus == FALSE then
if ownstatus == FALSE then
if doPlayerRemoveItem(cid, 2124,1) then
setPlayerStorageValue(cid,3066,1)
addMarryStatus(fid,sid)
selfSay('Voc\ê acabou de marcar um casamento com {' .. p .. '}.', cid)
talkState[talkUser] = 0
else
selfSay('Voc\ê n\ão trouxe um wedding ring e um wedding outfit box.', cid)
talkState[talkUser] = 0
end
else
local partnername = getPlayerNameByGUID(ownstatus)
selfSay('{' .. p .. '} já definiu a data do casamento com {' .. partnername .. '}.', cid)
talkState[talkUser] = 0
end
else
local marryname = getPlayerNameByGUID(marrystatus)
selfSay('{' .. marryname .. '} definiu se casar com voc\ê. Se quiser {prosseguir} traga a roupa de casamento ou se quiser {cancelar} o casamento, diga isto.', cid)
talkState[talkUser] = 4
end
else
local pname = getPlayerNameByGUID(pmarriage)
selfSay('Desculpa, mas {' .. p .. '} j\á est\á casado(a) com {' .. pname .. '}.', cid)
talkState[talkUser] = 0
end
end
elseif talkState[talkUser] == 4 then
if msgcontains(msg, 'prosseguir') then
local fid = getPlayerGUID(cid)
local sid = getMarryStatus(fid)
local marryname = getPlayerNameByGUID(sid)
local pid = getPlayerByNameWildcard(marryname)
local tmf = getCreaturePosition(cid)
local tms = getCreaturePosition(pid)
local text = {'I love you!','My love!','Baby dear!'}
local chance1 = math.random(1,table.getn(text))
local chance2 = math.random(1,table.getn(text))
local dateFormat = "%A %d"..getMonthDayEnding(os.date("%d")).." %B %Y"
if isOnline(fid) == TRUE and isOnline(sid) == TRUE then
if getDistanceBetween(tmf, tms) <= 3 then
if doPlayerRemoveItem(cid, 2124,1) then setPlayerStorageValue(cid,3066,2)
setPlayerStorageValue(pid,3066,2)
doCancelMarryStatus(fid)
doCancelMarryStatus(sid)
setPlayerPartner(cid,sid)
setPlayerPartner(pid,fid)
setPlayerStorageValue(cid,10024,1)
setPlayerStorageValue(pid,10024,1)
local ring = doPlayerAddItem(cid,10502,1)
local ring2 = doPlayerAddItem(pid,10502,1)
doItemSetAttribute(ring, "description", 'Com amor, '.. getPlayerName(pid).. '.')
doItemSetAttribute(ring2, "description", 'Com amor, '.. getPlayerName(cid).. '.')
doCreatureSay(cid, text[chance1], TALKTYPE_ORANGE_1)
doCreatureSay(pid, text[chance2], TALKTYPE_ORANGE_1)
doSendMagicEffect(tmf, 35)
doSendMagicEffect(tms, 35)
selfSay('Parab\éns! Agora, noivo, pode beijar a noiva! Sejam felizes para sempre.', cid)
talkState[talkUser] = 0
else
selfSay('Voc\ê n\ão trouxe um wedding ring e um wedding outfit box.', cid)
end
else
selfSay('Seu parceiro(a) deve estar perto de voc\ê, assim voc\ê pode se casar!', cid)
talkState[talkUser] = 0
end
else
selfSay('Voc\ês precisam estar online ao mesmo tempo.', cid)
talkState[talkUser] = 0
end
elseif msgcontains(msg, 'cancelar') then
local fid = getPlayerGUID(cid)
local sid = getMarryStatus(fid)
local marryname = getPlayerNameByGUID(sid)
local pid = getPlayerByNameWildcard(marryname)
if isOnline(sid) == TRUE then
setPlayerStorageValue(pid,3066,-1)
end
doCancelMarryStatus(sid)
selfSay('Voc\ê cancelou seu casamento com {' .. marryname .. '}.', cid)
talkState[talkUser] = 0
end
elseif talkState[talkUser] == 5 then
if msgcontains(msg, 'cancel') or msgcontains(msg, 'yes') then
local fid = getPlayerGUID(cid)
setPlayerStorageValue(cid,3066,-1)
doCancelMarryStatus(fid)
talkState[talkUser] = 0
end
elseif talkState[talkUser] == 6 then
if msgcontains(msg, 'yes') then
if doPlayerRemoveMoney(cid, 5000) then
local fid = getPlayerGUID(cid)
local sid = getPlayerPartner(cid)
local marryname = getPlayerNameByGUID(sid)
local pid = getPlayerByNameWildcard(marryname)
if (isOnline(fid) == TRUE and isOnline(sid) == TRUE) then
setPlayerStorageValue(cid,3066,-1)
setPlayerStorageValue(pid,3066,-1)
setPlayerPartner(cid,0)
setPlayerPartner(pid,0)
setPlayerStorageValue(cid,10024,-1)
setPlayerStorageValue(pid,10024,-1)
selfSay('Voc\ê se divorciou.', cid)
talkState[talkUser] = 0
else
selfSay('Voc\ês precisam estar online ao mesmo tempo.', cid)
talkState[talkUser] = 0
end
else
selfSay('Voc\ê precisar para 5000 gold coins para se divorciar.',cid)
talkState[talkUser] = 0
end
end
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())