Kevin Luzetti 42 Postado 23 de Junho Compartilhar Postado 23 de Junho Este sistema faz com que, ao pisar em um tile específico, o Pokémon summon entre em um estado temporário de "embriaguez" por 30 segundos. Durante esse período, o Pokémon se movimenta de forma aleatória e emite frases engraçadas a cada 2 segundos, simulando um comportamento instável e descontraído. O efeito é controlado por uma variável interna que indica quando o Pokémon está sob essa condição. O estado de "bêbado" dura o tempo total estipulado (30 segundos), independentemente de o Pokémon permanecer sobre o tile ou não. Caso ele saia do tile, o efeito continua até seu término natural. Se o Pokémon voltar a pisar no tile depois que o efeito terminar, ele receberá o efeito novamente. local drunkPhrases = { "Hic! Isso é suco de berry?", "Wobba wobba wobba!", "Onde tá meu treinador?!", "Eu vejo dois Pikachus... ou três...", "Esse chão tá girando..." } local DRUNK_DURATION = 30 -- segundos local INTERVAL = 2 -- segundos local STORAGE_DRUNK = 25887 function isWalkable(pos) local tile = getTileThingByPos(pos) if tile.itemid == 0 or hasProperty(tile.uid, CONST_PROP_BLOCKSOLID) then return false end if getTopCreature(pos).uid > 0 then return false end return true end function getRandomWalkablePos(pos) local directions = { {x = pos.x + 1, y = pos.y, z = pos.z}, {x = pos.x - 1, y = pos.y, z = pos.z}, {x = pos.x, y = pos.y + 1, z = pos.z}, {x = pos.x, y = pos.y - 1, z = pos.z} } local valid = {} for _, newPos in ipairs(directions) do if isWalkable(newPos) then table.insert(valid, newPos) end end if #valid > 0 then return valid[math.random(#valid)] else return nil end end function simulateDrunkBehavior(cid, ticks) if not isCreature(cid) or getCreatureStorage(cid, STORAGE_DRUNK) ~= 1 then return end if ticks <= 0 then doCreatureSetStorage(cid, STORAGE_DRUNK, 0) return end doCreatureSay(cid, drunkPhrases[math.random(#drunkPhrases)], TALKTYPE_MONSTER) local currentPos = getThingPos(cid) local newPos = getRandomWalkablePos(currentPos) if newPos then doTeleportThing(cid, newPos, true) end addEvent(simulateDrunkBehavior, INTERVAL * 1000, cid, ticks - 1) end function onStepIn(cid, item, pos) if isSummon(cid) and getCreatureStorage(cid, STORAGE_DRUNK) ~= 1 then doCreatureSetStorage(cid, STORAGE_DRUNK, 1) simulateDrunkBehavior(cid, math.floor(DRUNK_DURATION / INTERVAL)) print("[DEBUG] " .. getCreatureName(cid) .. " ficou bêbado (summon).") end return true end function onStepOut(cid, item, pos) if isSummon(cid) and getCreatureStorage(cid, STORAGE_DRUNK) == 1 then doCreatureSetStorage(cid, STORAGE_DRUNK, 0) print("[DEBUG] " .. getCreatureName(cid) .. " saiu do efeito bêbado (summon).") end return true end <movevent type="StepIn" actionid="5013" event="script" value="beldo.lua"/> Também coloquei pra que caso ele receba esse DRUNK ele não consiga utilizar os ataques, então em move1.lua vocês coloquem. if getCreatureStorage(mypoke, 25887) == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Seu Pokémon está tonto e não pode usar esse movimento.") return true -- bloqueia o uso do movimento end 2 1 Link para o comentário https://tibiadevs.com/forums/topic/1155-drunken-wanderer-pokemon/ Compartilhar em outros sites Mais opções de compartilhamento...
Suporte Danijo 8 Postado 23 de Junho Suporte Compartilhar Postado 23 de Junho A equipe Tibia Devs agradeçe pela contribuição Com certeza será útil pra muita gente Link para o comentário https://tibiadevs.com/forums/topic/1155-drunken-wanderer-pokemon/#findComment-5956 Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Crie uma conta ou entre para comentar
Você precisar ser um membro para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora