local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
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
local message = {}
local config = {
['ape fur'] = {
itemId = 5526,
count = 100,
storageValue = 1,
text = {
'Have you really managed to fulfil the task and brought me 100 pieces of ape fur?',
'Only ape fur is good enough to touch the feet of our Caliph.',
'Ahhh, this softness! I\'m impressed, |PLAYERNAME|. You\'re on the best way to earn that turban. Now, please retrieve 100 fish fins.'
}
},
['fish fins'] = {
itemId = 5537,
count = 100,
storageValue = 2,
text = {
'Were you able to discover the undersea race and retrieved 100 fish fins?',
'I really wonder what the explorer society is up to. Actually I have no idea how they managed to dive unterwater.',
'I never thought you\'d make it, |PLAYERNAME|. Now we only need two enchanted chicken wings to start our waterwalking test!'
}
},
['enchanted chicken wings'] = {
itemId = 5664,
count = 2,
storageValue = 3,
text = {
'Were you able to get hold of two enchanted chicken wings?',
'Enchanted chicken wings are actually used to make boots of haste, so they could be magically extracted again. Djinns are said to be good at that.',
'Great, thank you very much. Just bring me 100 pieces of blue cloth now and I will happily show you how to make a turban.'
}
},
['blue cloth'] = {
itemId = 5496,
count = 100,
storageValue = 4,
text = {
'Ah, have you brought the 100 pieces of blue cloth?',
'It\'s a great material for turbans.',
'Ah! Congratulations - even if you are not a true weaponmaster, you surely deserve to wear this turban. Here, I\'ll tie it for you.'
}
}
}
local function creatureSayCallback(cid, type, msg)
if not npcHandler:isFocused(cid) then
return false
end
local player = Player(cid)
if msgcontains(msg, 'outfit') then
npcHandler:say(player:getSex() == PLAYERSEX_FEMALE and 'My turban? I know something better for a pretty girl like you. Why don\'t you go talk to Miraia?' or 'My turban? Eh no, you can\'t have it. Only oriental weaponmasters may wear it after having completed a difficult task.', cid)
elseif msgcontains(msg, 'task') then
if player:getSex() == PLAYERSEX_FEMALE then
npcHandler:say('I really don\'t want to make girls work for me. If you are looking for a job, ask Miraia.', cid)
return true
end
if player:getStorageValue(622036) < 1 then
npcHandler:say('You mean, you would like to prove that you deserve to wear such a turban?', cid)
npcHandler.topic[cid] = 1
end
elseif config[msg] and npcHandler.topic[cid] == 0 then
if player:getStorageValue(622036) == config[msg].storageValue then
npcHandler:say(config[msg].text[1], cid)
npcHandler.topic[cid] = 3
message[cid] = msg
else
npcHandler:say(config[msg].text[2], cid)
end
elseif msgcontains(msg, 'yes') then
if npcHandler.topic[cid] == 1 then
npcHandler:say({
'Alright, then listen to the following requirements. We are currently in dire need of ape fur since the Caliph has requested a new bathroom carpet. ...',
'Thus, please bring me 100 pieces of ape fur. Secondly, it came to our ears that the explorer society has discovered a new undersea race of fishmen. ...',
'Their fins are said to allow humans to walk on water! Please bring us 100 of these fish fin. ...',
'Third, if the plan of walking on water should fail, we need enchanted chicken wings to prevent the testers from drowning. Please bring me two. ...',
'Last but not least, just drop by with 100 pieces of blue cloth and I will happily show you how to make a turban. ...',
'Did you understand everything I told you and are willing to handle this task?'
}, cid)
npcHandler.topic[cid] = 2
elseif npcHandler.topic[cid] == 2 then
if player:getStorageValue(622037) ~= 1 then
player:setStorageValue(622037, 1)
end
player:setStorageValue(622036, 1)
npcHandler:say('Excellent! Come back to me once you have collected 100 pieces of ape fur.', cid)
npcHandler.topic[cid] = 0
elseif npcHandler.topic[cid] == 3 then
local targetMessage = config[message[cid]]
if not player:removeItem(targetMessage.itemId, targetMessage.count) then
npcHandler:say('That is a shameless lie.', cid)
npcHandler.topic[cid] = 0
return true
end
player:setStorageValue(622036, player:getStorageValue(622036) + 1)
if player:getStorageValue(622036) == 5 then
player:addOutfitAddon(343, 1)
player:addOutfitAddon(346, 1)
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
end
npcHandler:say(targetMessage.text[3], cid)
npcHandler.topic[cid] = 0
end
elseif msgcontains(msg, 'no') and npcHandler.topic[cid] ~= 0 then
npcHandler:say('What a pity.', cid)
npcHandler.topic[cid] = 0
end
return true
end
local function onReleaseFocus(cid)
message[cid] = nil
end
npcHandler:setMessage(MESSAGE_GREET, 'Greetings |PLAYERNAME|. What leads you to me?')
npcHandler:setMessage(MESSAGE_FAREWELL, 'Daraman\'s blessings.')
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:setCallback(CALLBACK_ONRELEASEFOCUS, onReleaseFocus)
npcHandler:addModule(FocusModule:new())