local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
-- OTServ event handling functions start
function onCreatureAppear(cid) npcHandler
nCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler
nCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler
nCreatureSay(cid, type, msg) end
function onThink() npcHandler
nThink() end
-- OTServ event handling functions end
function creatureSayCallback(cid, type, msg)
if(npcHandler.focus ~= cid) then
return false
end
-- start config
local queststate1 = getPlayerStorageValue(cid,6667)
local queststate2 = getPlayerStorageValue(cid,6668)
local response01 = "Xerxes will kill those who actually pass the test! Do you really want me to test you?"
local response02 = "FOOL! Now you're doomed! But well ... So be it! Let's start out with the first question: What was the name of Xerxes favourite assistant?"
local response03 = "Correct! First time lucky.. Alright. Question Number two:What colour was the cloth with a sign saying Two above it?"
local response04 = "Correct again! You won't get this. What colour did the flag with a letter T have?"
local response05 = "Oh my GOD! Who was the only survivor of the warlock race?"
local response06 = "You definately won't get this once! Its lighter then a feather but no living creature can hold it for ten minutes?"
local response07 = "That was an easy one. Let's try the second: If you name it, you break it."
local response08 = "Hm. I bet you think you're smart. All right. How about this: What does everybody want to become but nobody to be?"
local response09 = "ARGH! You did it again! Well all right. Do you wish to continue the test? It does get harder"
local response10 = "GOOD! So I will get you at last. Answer this: What item was to the north of the altar?"
local response11 = "UHM UH OH ... How could you guess that? Are you mad??? All right. Question number two: What item was to the south of the altar?"
local response12 = "NO! NO! NO! That can't be true. You're not only mad, you are a complete idiot! Ah well. Here is the last question: What is Xerxes favourite number?"
local response13 = "WRONG!"
local response14 = "RIGHT!"
local wrong = "NO! HAHA! YOU FAILED!"
local keywordAbadon = "no"
local abadon = "Better for you..."
-- all keywords MUST be lower-case
local keyword01 = "test"
local keyword02 = "yes"
local keyword03 = "manubis"
local keyword04 = "blue"
local keyword05 = "green"
local keyword06 = "xerxes"
local keyword07 = "breath"
local keyword08 = "silence"
local keyword09 = "old"
local keyword10 = "yes"
local keyword11 = "knight armor"
local keyword12 = "demon helmet"
local keyword13 = "1132asas"
local keyword14 = "10"
local posPass = {x=34433, y=32525, z=13, stackpos=0}
local posFail = {x=34465, y=32591, z=7, stackpos=0}
-- end config
if msgcontains(msg, keyword01) then
selfSay(response01)
talkState = 13
elseif msgcontains(msg, keyword02) and talkState == 13 then
selfSay(response02)
talkState = 14
elseif msgcontains(msg, keywordAbadon) and talkState == 13 then
selfSay(abadon)
talkState = 0
-- let's start the right answers
elseif msgcontains(msg, keyword03) and talkState == 14 then
selfSay(response03)
talkState = 15
elseif msgcontains(msg, keyword04) and talkState == 15 then
selfSay(response04)
talkState = 16
elseif msgcontains(msg, keyword05) and talkState == 16 then
selfSay(response05)
talkState = 17
elseif msgcontains(msg, keyword06) and talkState == 17 then
selfSay(response06)
talkState = 18
elseif msgcontains(msg, keyword07) and talkState == 18 then
selfSay(response07)
talkState = 19
elseif msgcontains(msg, keyword08) and talkState == 19 then
selfSay(response08)
talkState = 20
elseif msgcontains(msg, keyword09) and talkState == 20 then
selfSay(response09)
talkState = 21
elseif msgcontains(msg, keyword10) and talkState == 21 then
selfSay(response10)
talkState = 22
elseif msgcontains(msg, keyword11) and talkState == 22 then
selfSay(response11)
talkState = 23
elseif msgcontains(msg, keyword12) and talkState == 23 then
selfSay(response12)
talkState = 24
elseif msgcontains(msg, keyword14) and talkState == 24 then
doTeleportThing(cid,posPass)
selfSay(response14)
-- let's start the wrong answers annd the "death" teleport
elseif msgcontains(msg, keyword03) == nil and talkState == 13 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword04) == nil and talkState == 14 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword05) == nil and talkState == 15 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword06) == nil and talkState == 16 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword07) == nil and talkState == 17 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword08) == nil and talkState == 18 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword09) == nil and talkState == 19 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword10) == nil and talkState == 20 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword11) == nil and talkState == 21 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword12) == nil and talkState == 22 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword13) == nil and talkState == 23 then
selfSay(wrong)
talkState = 0
--1st--
elseif msgcontains(msg, keyword01) and queststate1 == 1 then
selfSay(response01)
talkState = 1
elseif msgcontains(msg, keyword02) and talkState == 1 then
selfSay(response02)
talkState = 2
elseif msgcontains(msg, keywordAbadon) and talkState == 1 then
selfSay(abadon)
talkState = 0
-- let's start the right answers
elseif msgcontains(msg, keyword03) and talkState == 2 then
selfSay(response03)
talkState = 3
elseif msgcontains(msg, keyword04) and talkState == 3 then
selfSay(response04)
talkState = 4
elseif msgcontains(msg, keyword05) and talkState == 4 then
selfSay(response05)
talkState = 5
elseif msgcontains(msg, keyword06) and talkState == 5 then
selfSay(response06)
talkState = 6
elseif msgcontains(msg, keyword07) and talkState == 6 then
selfSay(response07)
talkState = 7
elseif msgcontains(msg, keyword08) and talkState == 7 then
selfSay(response08)
talkState = 8
elseif msgcontains(msg, keyword09) and talkState == 8 then
selfSay(response09)
talkState = 9
elseif msgcontains(msg, keyword10) and talkState == 9 then
selfSay(response10)
talkState = 10
elseif msgcontains(msg, keyword11) and talkState == 10 then
selfSay(response11)
talkState = 11
elseif msgcontains(msg, keyword12) and talkState == 11 then
selfSay(response12)
talkState = 12
elseif msgcontains(msg, keyword13) == nil and talkState == 12 then
selfSay(response13)
doTeleportThing(cid,posFail)
-- let's start the wrong answers annd the "death" teleport
elseif msgcontains(msg, keyword03) == nil and talkState == 2 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword04) == nil and talkState == 3 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword05) == nil and talkState == 4 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword06) == nil and talkState == 5 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword07) == nil and talkState == 6 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword08) == nil and talkState == 7 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword09) == nil and talkState == 8 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword10) == nil and talkState == 9 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword11) == nil and talkState == 10 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword12) == nil and talkState == 11 then
selfSay(wrong)
talkState = 0
doTeleportThing(cid,posFail)
elseif msgcontains(msg, keyword13) == nil and talkState == 12 then
selfSay(wrong)
talkState = 0
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())