• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

TFS 1.X+ Mission 2 sea of light

nuelma123

New Member
Joined
Jun 6, 2011
Messages
66
Reaction score
1
Hello,
I have a problem with the mission 2 of the sea of light quest..

When I have to use the pick on the blue stone... it doesn't work.

I put code underneath.


NPC Spectulus:
Lua:
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 voices = {
    { text = 'Precisely.' },
    { text = 'So my initial calculations had been correct!' },
    { text = 'Looks like I have to find another way then.' },
    { text = 'Hm, I need to recapitulate my equipment...' }
}

npcHandler:addModule(VoiceModule:new(voices))

local function releasePlayer(cid)
    if not Player(cid) then
        return
    end

    npcHandler:releaseFocus(cid)
    npcHandler:resetNpc(cid)
end

local function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end

    local player = Player(cid)
    if msgcontains(msg, 'mission') then
        local cStorage = player:getStorageValue(Storage.SeaOfLightQuest.Questline)
        if cStorage == -1 then
            npcHandler:say('Alright, you look bright enough to fulfil my requests - at least you do not fall asleep while standing there. Ahem... I heard about a certain inventor who created a {magic device} to actually sail the {sea of light}. Will you help me find him?', cid)
            npcHandler.topic[cid] = 1
        elseif cStorage == 1 then
            npcHandler:say('You should find the beggar somewhere in Edron. Stay persistent, I\'m sure he knows more than he wants to tell us.', cid)
        elseif cStorage == 2 then
            if not player:removeItem(10613, 1) then
                npcHandler:say('o have you talked to the beggar? What did he tell you? Where are the plans...? Wh...? He did? He is? You\'ve already got the plans? Beautiful!! Amazing! Alright it will take some time to recapitulate these plans.', cid)
                return true
            end

            player:addExperience(400, true)
            player:setStorageValue(Storage.SeaOfLightQuest.Questline, 3)
            player:setStorageValue(Storage.SeaOfLightQuest.Mission1, 3)
            player:setStorageValue(Storage.SeaOfLightQuest.StudyTimer, os.time() + 1800)
            npcHandler:say('So have you talked to the beggar? What did he tell you? Where are the plans...? Wh...? He did? He is? You\'ve already got the plans? Beautiful!! Amazing! Alright it will take some time to recapitulate these plans.', cid)
            addEvent(releasePlayer, 1000, cid)
        elseif cStorage == 3 then
            local timeStorage = player:getStorageValue(Storage.SeaOfLightQuest.StudyTimer)
            if timeStorage > os.time() then
                npcHandler:say('It will take some time to work out the initial problem of the device. Come back when I\'ve found the component needed to finish it. Alright, B connects to D and another two nails marked with S go... hmmm.', cid)
            elseif timeStorage > 0 and timeStorage < os.time() then
                npcHandler:say('...connects to N942. Alright!! That\'s it! I just finished a prototype device! And it looks like I figured out the initial failure. A very special crystal is needed for the device to work. Aren\'t you as curious as me to know what went wrong?', cid)
                npcHandler.topic[cid] = 2
            end
        elseif cStorage == 4 then
            npcHandler:say('Did you enter the Lost Mines yet? They are west of Edron, close to the sea. You will also need a pick once you get to the crystal deposit.', cid)
        elseif cStorage == 5 then
            if player:getItemCount(10614) == 0 then
                npcHandler:say('Hm, so did you find a rare crystal? Show me... hey! That\'s not a rare crystal. What... where did you get that anyway? Please return to me with the right crystal.', cid)
                return true
            end

            player:addExperience(500, true)
            player:setStorageValue(Storage.SeaOfLightQuest.Questline, 6)
            player:setStorageValue(Storage.SeaOfLightQuest.Mission2, 3)
            npcHandler:say({
                'Did you find a rare crystal? Show me... Amazing, absolutely amazing. This crystal alone is worth a small fortune. Ahem, of course I\'m glad you brought it to me for further research instead of bringing it to a merchant. ...',
                'Please return here if you want to continue helping me with another mission.'
            }, cid)
            addEvent(releasePlayer, 1000, cid)
        elseif cStorage == 6 then
            npcHandler:say('Well, the only thing left to do would be to offer the crystal at the well of the collector. There must be a pedestal near the well, where you need to put your donation. Ha, do you think you could do that?', cid)
            npcHandler.topic[cid] = 5
        elseif cStorage == 7 then
            npcHandler:say('Found the well yet? Look on one of the ice isles near Carlin. I\'m perfectly sure that the well with the pedestal is located on one of them. And be careful with the carrying device, I only have this one prototype.', cid)
        elseif cStorage == 8 then
            npcHandler:say('So have you found the well and entered the lair? I hope you can find the {mirror crystal} in there. It is the only way to finish the {Lightboat}.', cid)
        elseif cStorage == 9 then
            if player:getItemCount(10616) == 0 then
                npcHandler:say('Put the mirror crystal into the special carrying device I gave you and bring it directly to me.', cid)
                return true
            end

            npcHandler:say('Do you have the mirror crystal? Unbelievable! Alright I will extract the crystal from the device myself, would you please give me the device with the crystal and step back?', cid)
            npcHandler.topic[cid] = 7
        end
    elseif msgcontains(msg, 'yes') then
        if npcHandler.topic[cid] == 1 then
            player:addExperience(100, true)
            player:setStorageValue(Storage.SeaOfLightQuest.Questline, 1)
            player:setStorageValue(Storage.SeaOfLightQuest.Mission1, 1)
            npcHandler:say({
                'That\'s the spirit! As time is of the essence, we should start right now. ...',
                'A beggar here in Edron brags about how smart he is and that he knows about a man who lost his sanity because of an experiment, but he won\'t tell anyone any details. Maybe he knows more.'
            }, cid)
            addEvent(releasePlayer, 1000, cid)
        elseif npcHandler.topic[cid] == 2 then
            npcHandler:say('The device needs a special crystal. It\'s called {mirror crystal}. The inventor somehow damaged it - with fatal results. He had to give up, as no second crystal was left to try. I, however, know of another one... but are you up to the task?', cid)
            npcHandler.topic[cid] = 3
        elseif npcHandler.topic[cid] == 3 then
            npcHandler:say('One remaining mirror crystal is in the hands of a creature called the collector which collects all kinds of crystals. The only way to get access to its lair is to donate a very rare crystal to a secret well. I need you to get one, will you help me?', cid)
            npcHandler.topic[cid] = 4
        elseif npcHandler.topic[cid] == 4 then
            player:setStorageValue(Storage.SeaOfLightQuest.Questline, 4)
            player:setStorageValue(Storage.SeaOfLightQuest.Mission1, 4)
            player:setStorageValue(Storage.SeaOfLightQuest.Mission2, 1)
            player:addMapMark(Position(33103, 31811, 7), MAPMARK_CROSS, 'Lost Mines')
            npcHandler:say({
                'Alright, now listen. West of Edron, near the ocean, you\'ll find the Lost Mines. Go down there to recover one of its rare crystals. But beware, people say the mine workers who died there years ago in an horrible accident are still digging. ...',
                'I will mark the location of the mines on your map. Be careful when entering these muddy depths and don\'t forget that you will need a pick to gather the crystals.'
            }, cid)
            npcHandler.topic[cid] = 0
        elseif npcHandler.topic[cid] == 5 then
            npcHandler:say('Good, because if you wouldn\'t do it... listen, this well is on one of the isles near Carlin. There you offer the crystal. Once you get access to its lair, find the collector and... convince it to give you the mirror crystal. Understood?', cid)
            npcHandler.topic[cid] = 6
        elseif npcHandler.topic[cid] == 6 then
            player:setStorageValue(Storage.SeaOfLightQuest.Questline, 7)
            player:setStorageValue(Storage.SeaOfLightQuest.Mission3, 1)
            player:addItem(10615, 1)
            npcHandler:say('To collect the unbelievably rare, practically unique mirror crystal, you will need to use this special carrying device I developed. If you find the crystal, use it to store it and transport it safely to me. There is no second one.', cid)
            npcHandler.topic[cid] = 0
        elseif npcHandler.topic[cid] == 7 then
            if not player:removeItem(10616, 1) then
                npcHandler:say('', cid)
                npcHandler.topic[cid] = 0
                return true
            end

            player:addItem(2145, 10)
            player:addItem(2154, 1)
            player:addExperience(1000, true)
            player:setStorageValue(Storage.SeaOfLightQuest.Mission3, 4)
            player:setStorageValue(Storage.SeaOfLightQuest.Questline, 10)
            npcHandler:say({
                'Ah yes, slowly, carefully, careful ...',
                '...and how shiny it is, almost there ...',
                '...now wh- no, NO, NOOO! It just ...',
                '...slipped. And cracked. Don\'t look at me like that ...',
                '...I need some time to get over this. What? Oh, yes you can take the remains if you like. Just get it out of my sight.'
            }, cid)
            addEvent(releasePlayer, 1000, cid)
        end
    elseif msgcontains(msg, 'no') then
        if npcHandler.topic[cid] == 1 then
            npcHandler:say('Yes, maybe it was the right decision. Astronomical research is nothing for the faint-hearted.', cid)
        elseif npcHandler.topic[cid] == 2 then
            npcHandler:say('Well, the... what? You... mean you\'re no longer interested? I see, well maybe I overestimated your spirit after all.', cid)
        elseif npcHandler.topic[cid] == 3 then
            npcHandler:say('Alright, alright. You\'ll never find out the true secrets of life with such attitude, hm.', cid)
        elseif npcHandler.topic[cid] == 4 then
            npcHandler:say('Come on, this is our only chance to finish the Lightboat.', cid)
        elseif npcHandler.topic[cid] == 5 then
            npcHandler:say('Thought so. Well, no reason to be ashamed. I\'ll have to find help elsewhere now, though.', cid)
        elseif npcHandler.topic[cid] == 6 then
            npcHandler:say('Come back if you made up your mind.', cid)
        elseif npcHandler.topic[cid] == 7 then
            npcHandler:say('Hmpf. *mumbles*', cid)
        end
        npcHandler.topic[cid] = 0
    end
    return true
end

keywordHandler:addKeyword({'device'}, StdModule.say, {npcHandler = npcHandler, text = 'I heard of a device which would allow man to sail the sea of light. I call it the {Lightboat}, probably the most important invention in our history. And I will not rest until I have found a way to put the plan of its inventor into action.'})
keywordHandler:addKeyword({'lightboat'}, StdModule.say, {npcHandler = npcHandler, text = 'I heard of a device which would allow man to sail the sea of light. I call it the {Lightboat}, probably the most important invention in our history. And I will not rest until I have found a way to put the plan of its inventor into action.'})
keywordHandler:addKeyword({'magic device'}, StdModule.say, {npcHandler = npcHandler, text = 'I heard of a device which would allow man to sail the sea of light. I call it the {Lightboat}, probably the most important invention in our history. And I will not rest until I have found a way to put the plan of its inventor into action.'})
keywordHandler:addKeyword({'sea of light'}, StdModule.say, {npcHandler = npcHandler, text = 'The sea of light is what I call the endless arrangement of shiny stars in the night sky. If we fail to complete the {magic device}, science will probably never uncover its secrets.'})
keywordHandler:addKeyword({'mirror crystal'}, StdModule.say, {npcHandler = npcHandler, text = 'I found the cause of the initial failure. A rare component, a mirror crystal was used to store magical energy. Miscalculations within the construction damaged this fragile power source. The unleashed energy must have been devastating.'})
keywordHandler:addKeyword({'lost mines'}, StdModule.say, {npcHandler = npcHandler, text = 'The people of Edron were digging there for minerals and gold. It seemed all that work was of no avail when they finally hit the motherlode. Gems, rare crystals and... water. So much that it flooded the whole system. And not a single soul escaped.'})
keywordHandler:addKeyword({'collector'}, StdModule.say, {npcHandler = npcHandler, text = 'I heard rumours of a fabled creature whose traces were found on an island near Carlin. It lives solely to collect all kinds of rare gems, crystals and minerals. Offering an item it does not already own, reportedly allows passage into its lair.'})

npcHandler:setMessage(MESSAGE_GREET, "Hello |PLAYERNAME|! You're late, do you have no concept of time? My mission is of utmost importance. If you are not interested in helping me, you might as well just leave.")
npcHandler:setMessage(MESSAGE_FAREWELL, "Yes yes. Goodbye |PLAYERNAME|.")
npcHandler:setMessage(MESSAGE_WALKAWAY, "Yes yes. Goodbye |PLAYERNAME|.")

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

ACTION: RARE CRYSTAL.lua :
Code:
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    if target.actionid ~= 4224 then
        return false
    end

    if player:getStorageValue(Storage.SeaOfLightQuest.Questline) ~= 7 then
        return false
    end

    player:setStorageValue(Storage.SeaOfLightQuest.Questline, 8)
    player:setStorageValue(Storage.SeaOfLightQuest.Mission3, 2)
    local destination = Position(32017, 31730, 8)
    player:teleportTo(destination)
    destination:sendMagicEffect(CONST_ME_TELEPORT)
    item:remove()
    return true
end

Iamge Crystal + action:

thanks
Post automatically merged:

nothing?
 
Last edited:
Back
Top