• 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!

[movements] Perfect Helmet of the Deep

thalesvasc

New Member
Joined
Sep 28, 2010
Messages
42
Reaction score
1
Hello All! So, i want to request this item's function(almost) like in Tibia rl...

Well, when you are using the item in the head slot, you won't receive damage from drown, but, if you walk without the helmet you will be drowning...and only if you are walking on the sea tiles wearing the helmet, your speed will increase a little bit.

Here is the functions and ID's:

Helmet of the Deep: 5461
Tiles that will increase your speed: 5405, 5406, 5407, 5408, 5409, 5410, 5428, 5429, 5430, 5431, 5432, 5433, 5434, 5435, 5436, 5437, 5438, 5743, 5744.

Formula condition speed:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
local condition = createConditionObject(CONDITION_NONE)
setConditionFormula(condition, 0.7, -56, 0.7, -56)
setCombatCondition(combat, condition)

Condition drown:

local condition = createConditionObject(CONDITION_DROWN)
setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -20)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 5000)


Please, I know this is not hard to do, and I know there's a lot of excelent scripters here =)
But I can't do it, If some1 can help me...THANKS and REP +

:$
 
edit data/movements/scripts/drown.lua
Lua:
local tiles = {5405,5406,5407,5408,5409,5410,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5743,5744}

local condition = createConditionObject(CONDITION_DROWN)
setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -20)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 2000)

local speed = createConditionObject(CONDITION_HASTE)
setConditionParam(speed, CONDITION_PARAM_TICKS, 5000)
setConditionFormula(speed, 0.3, -24, 0.3, -24)

function onStepIn(cid, item, position, fromPosition)
    if(isPlayer(cid)) and isInArray(isInArray({5405,5406,5407,5408,5409,5410}, getTileThingByPos(position))) then
        doAddCondition(cid, condition)
        if getPlayerSlotItem(cid, CONST_SLOT_HEAD).itemid == 5461 and isInArray(tiles, getTileThingByPos(position)) then
            doAddCondition(cid, speed)
        end
    end
    return true
end

function onStepOut(cid, item, position, fromPosition)
    doRemoveCondition(cid, CONDITION_DROWN)
    return true
end
edit the drown stepIn line from movements.xml:
XML:
<movevent type="StepIn" itemid="5405-5410;5428-5438;5743-5744" value="drown.lua"/>
 
EDIT#

Didn't work :/
I walk on the water normaly and i'm not taking any damage without the helmet, and when I use it doesn't change my speed ;/
 
EDIT#

I tried a lot here and I made it, and works 100% =D

Here we go:
local condition = createConditionObject(CONDITION_DROWN)
setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -20)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 2000)

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
local condition2 = createConditionObject(CONDITION_HASTE)
setConditionParam(condition2, CONDITION_PARAM_TICKS, -1)
setConditionFormula(condition2, 0.7, -56, 0.7, -56)
setCombatCondition(combat, condition2)


function onStepIn(cid, item, position, fromPosition)
if(isPlayer(cid)) and getPlayerSlotItem(cid, CONST_SLOT_HEAD).itemid == 5461 then
doAddCondition(cid, condition2)
else
doAddCondition(cid, condition)
return true
end
return false
end

function onStepOut(cid, item, position, fromPosition)
doRemoveCondition(cid, CONDITION_DROWN)
doRemoveCondition(cid, CONDITION_HASTE)

return true
end


Bye and Thanks a lot CyberM, at least u tried to help! =)
 
Hey, please, some1 help me again lmao :p

The script is working but what I have to change in the script, because the monsters are receiving the condition "drown" and when they walks appears the effect "poff" all the time!

What I need to add in the script to change this?

Here is the script:

local condition = createConditionObject(CONDITION_DROWN)
setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -20)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 2000)

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
local condition2 = createConditionObject(CONDITION_HASTE)
setConditionParam(condition2, CONDITION_PARAM_TICKS, -1)
setConditionFormula(condition2, 0.7, -56, 0.7, -56)
setCombatCondition(combat, condition2)


function onStepIn(cid, item, position, fromPosition)
if(isPlayer(cid)) and getPlayerSlotItem(cid, CONST_SLOT_HEAD).itemid == 5461 then
doAddCondition(cid, condition2)
else
doAddCondition(cid, condition)
return true
end
return false
end

function onStepOut(cid, item, position, fromPosition)
doRemoveCondition(cid, CONDITION_DROWN)
doRemoveCondition(cid, CONDITION_HASTE)

return true
end
 
Code:
function onStepIn(cid, item, position, fromPosition)
    if isPlayer(cid) then
        if getPlayerSlotItem(cid, CONST_SLOT_HEAD).itemid == 5461 then
            doAddCondition(cid, condition2)
        else
            doAddCondition(cid, condition)
            return true
        end
    end
    return false
end
use tabs next time
 
Back
Top