local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talktopic, town, vocation, destination, voc = {}, {}, {}, {}, {}
--!!Config!!--
--Vocation setup
local vocation1 = {name = "sorcerer", id = 1,
text = "Are you sure that a Sorcerer is what you wish to become? This decision is irreversible!"}
local vocation2 = {name = "druid", id = 2,
text = "Are you sure that a Druid is what you wish to become? This decision is irreversible!"}
local vocation3 = {name = "paladin", id = 3,
text = "Are you sure that a Paladin is what you wish to become? This decision is irreversible!"}
local vocation4 = {name = "knight", id = 4,
text = "Are you sure that a Knight is what you wish to become? This decision is irreversible!"}
--local vocation4 = {name = "newvocation", id = 5,
--text = "Are you sure that a Newvocation is what you wish to become? This decision is irreversible!"}
--Item setup
local firstItems = {
{ -- sorcerer items
{itemid=2457, count=1}, -- Steel Helmet
{itemid=8819, count=1}, -- Magician's robe
{itemid=2649, count=1}, -- Leather legs
{itemid=2643, count=1}, -- Leather Boots
{itemid=2527, count=1}, -- rose Shield
{itemid=2190, count=1}, -- Wand of vortex
{itemid=2152, count=5}, -- Platinum Coins
},
{ -- druid items
{itemid=2457, count=1}, -- Steel Helmet
{itemid=8819, count=1}, -- Magician's robe
{itemid=2649, count=1}, -- Leather Legs
{itemid=2643, count=1}, -- Leather Boots
{itemid=2527, count=1}, -- rose Shield
{itemid=2182, count=1}, -- Snakebite Rod
{itemid=2152, count=25}, -- Platinum Coins
},
{ -- paladin items
{itemid=2457, count=1}, -- Steel Helmet
{itemid=2660, count=1}, -- Ranger's cloak
{itemid=2507, count=1}, -- Ranger legs
{itemid=2643, count=1}, -- Leather Boots
{itemid=2513, count=1}, -- Dark Shield
{itemid=2389, count=10}, -- Spears
{itemid=2544, count=100}, -- Arrows
{itemid=2456, count=1}, -- Bow
},
{ -- knight items
{itemid=2480, count=1}, -- Steel Helmet
{itemid=2463, count=1}, -- Plate Armor
{itemid=2647, count=1}, -- Plate Legs
{itemid=2643, count=1}, -- Leather Boots
{itemid=2521, count=1}, -- Dark Shield
{itemid=8602, count=1}, -- Jagged Sword
{itemid=8601, count=1}, -- Steel Axe
{itemid=2423, count=1}, -- Clerical Mace
{itemid=2152, count=25}, -- Platinum Coins
}--,
--{ -- newvocations items
-- {itemid=2457, count=1}, -- Steel Helmet
-- {itemid=2465, count=1}, -- Plate Armor
-- {itemid=2478, count=1}, -- Plate Legs
-- {itemid=2643, count=1}, -- Leather Boots
-- {itemid=2521, count=1}, -- Dark Shield
-- {itemid=8602, count=1}, -- Jagged Sword
-- {itemid=8601, count=1}, -- Steel Axe
-- {itemid=2423, count=1}, -- Clerical Mace
--
-- {itemid=2152, count=25}, -- Platinum Coins
-- }
}
--Home Town setup
local city1 = {name = "Camelot", id = 1, destination = {x=999, y=994, z=6},
text = "Camelot, eh? So what vocation do you wish to become? {"..vocation1.name .."}, {"..vocation2.name .."}, {"..vocation3.name .."} or {"..vocation4.name .."}?"}
local city2 = {name = "Sajona", id = 4, destination = {x=1165, y=892, z=7},
text = "Sajona, eh? So what vocation do you wish to become? {"..vocation1.name .."}, {"..vocation2.name .."}, {"..vocation3.name .."} or {"..vocation4.name .."}?"}
--local city3 = {name = "newcity", id = 3, destination = {x=1153, y=1139, z=7},
--text = "Newcity, eh? So what vocation do you wish to become? {"..vocation1.name .."}, {"..vocation2.name .."}, {"..vocation3.name .."} or {"..vocation4.name .."}?"}
local towntext = "What city do you wish to live in? {".. city1.name .."} or {".. city2.name .."}?"
--Text setup
local requiredlevel = 8
local lowlevel = "COME BACK WHEN YOU ARE LEVEL 8!"
local refuse = "Then come back when you are ready."
local refuse_voc = "Then what vocation do you want to become?"
----End Config-----
for _, items in ipairs(firstItems) do
table.insert(items, item)
end
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
function greetCallback(cid)
if(getPlayerLevel(cid) < requiredlevel) then
npcHandler:say(lowlevel, cid)
return false
else
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
talktopic[talkUser], town[talkUser], vocation[talkUser], destination[talkUser], voc[talkUser] = 0, 0, 0, 0, 0
return true
end
end
function creatureSayCallback(cid, type, msg)
talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(not npcHandler:isFocused(cid)) then
return false
end
--Select Home Town control
if talktopic[talkUser] == 0 and msgcontains(msg, "yes") then
talktopic[talkUser] = 1 --question one, what city do you want?
npcHandler:say(towntext, cid)
elseif talktopic[talkUser] == 0 and msgcontains(msg, "no") then
talktopic[talkUser] = 0
npcHandler:unGreet(cid)
elseif talktopic[talkUser] == 1 and msgcontains(msg, city1.name) then
town[talkUser] = city1.id
destination[talkUser] = city1.destination
npcHandler:say(city1.text, cid)
talktopic[talkUser] = 2 --question two, what vocation do you want?
elseif talktopic[talkUser] == 1 and msgcontains(msg, city2.name) then
town[talkUser] = city2.id
destination[talkUser] = city2.destination
npcHandler:say(city2.text, cid)
talktopic[talkUser] = 2 --question two, what vocation do you want?
--elseif talktopic[talkUser] == 1 and msgcontains(msg, city3.name) then
-- town[talkUser] = city3.id
-- destination[talkUser] = city3.destination
-- npcHandler:say(city3.text, cid)
-- talktopic[talkUser] = 3 --question two, what vocation do you want?
end
--Select Vocation control
if talktopic[talkUser] == 2 and msgcontains(msg, vocation1.name) then
talktopic[talkUser] = 3 --confirm dicision: are you sure you want to become...
voc[talkUser] = vocation1.id
npcHandler:say(vocation1.text, cid)
elseif talktopic[talkUser] == 2 and msgcontains(msg, vocation2.name) then
talktopic[talkUser] = 3 --confirm dicision: are you sure you want to become...
voc[talkUser] = vocation2.id
npcHandler:say(vocation2.text, cid)
elseif talktopic[talkUser] == 2 and msgcontains(msg, vocation3.name) then
talktopic[talkUser] = 3 --confirm dicision: are you sure you want to become...
voc[talkUser] = vocation3.id
npcHandler:say(vocation3.text, cid)
elseif talktopic[talkUser] == 2 and msgcontains(msg, vocation4.name) then
talktopic[talkUser] = 3 --confirm dicision: are you sure you want to become...
voc[talkUser] = vocation4.id
npcHandler:say(vocation4.text, cid)
--elseif talktopic[talkUser] == 2 and msgcontains(msg, vocation5.name) then
-- talktopic[talkUser] = 3 --confirm dicision: are you sure you want to become...
-- voc[talkUser] = vocation5.id
-- npcHandler:say(vocation5.text, cid)
end
--Confirm your choice control
if talktopic[talkUser] == 3 and msgcontains(msg, 'yes') then
talktopic[talkUser] = 4
vocation[talkUser] = voc[talkUser]
elseif talktopic[talkUser] == 3 and msgcontains(msg, 'no') then
talktopic[talkUser] = 2
npcHandler:say(refuse_voc, cid)
voc[talkUser] = 0
end
if(destination[talkUser] ~= 0 and vocation[talkUser] ~= 0 and town[talkUser] ~= 0 and talktopic[talkUser] == 4) then
if(getPlayerLevel(cid) < requiredlevel) then
npcHandler:say('You must first reach level ' .. requiredlevel .. '!', cid)
npcHandler:resetNpc()
else
if(getPlayerVocation(cid) > 0) then
npcHandler:say('Sorry, You already have a vocation!', cid)
npcHandler:resetNpc()
else
doPlayerSetVocation(cid, vocation[talkUser])
doPlayerSetTown(cid, town[talkUser])
npcHandler:resetNpc()
local tmp = getCreaturePosition(cid)
doTeleportThing(cid, destination[talkUser])
doSendMagicEffect(tmp, CONST_ME_POFF)
doSendMagicEffect(destination, CONST_ME_TELEPORT)
local backpack = doCreateItemEx(1988, 1)
local giveItems = firstItems[vocation[talkUser]]
if giveItems ~= nil then
for _, v in ipairs(giveItems) do
doAddContainerItem(backpack, v.itemid, v.count or 1)
end
doPlayerAddItemEx(cid, backpack, 0)
end
end
end
end
return true
end
npcHandler:setMessage(MESSAGE_GREET, "Hello |PLAYERNAME|. Are you prepared to face your destiny?")
npcHandler:setMessage(MESSAGE_WALKAWAY, "Goodbye adventurer!")
npcHandler:setMessage(MESSAGE_FAREWELL, "come back when you are ready!")
npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())