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

Lua Doors

data->global.lua
Delete closed doors id from levelDoors/questDoors and delete open doors id from openSpecialDoors
 
data->global.lua
Delete closed doors id from levelDoors/questDoors and delete open doors id from openSpecialDoors


global.lua
Lua:
math.randomseed(os.time())
dofile('data/lib/lib.lua')

NOT_MOVEABLE_ACTION = 100
PARTY_PROTECTION = 0 -- Set to 0 to disable.
ADVANCED_SECURE_MODE = 0 -- Set to 0 to disable.

STORAGEVALUE_PROMOTION = 30018

SERVER_NAME = configManager.getString(configKeys.SERVER_NAME)

-- Bestiary charm
GLOBAL_CHARM_GUT = 0
GLOBAL_CHARM_SCAVENGE = 0

--WEATHER
weatherConfig = {
    groundEffect = CONST_ME_LOSEENERGY,
    fallEffect = CONST_ANI_SMALLICE,
    thunderEffect = configManager.getBoolean(configKeys.WEATHER_THUNDER),
    minDMG = 1,
    maxDMG = 5
}

-- Event Schedule
SCHEDULE_LOOT_RATE = 100
SCHEDULE_EXP_RATE = 100
SCHEDULE_SKILL_RATE = 100

-- MARRY
PROPOSED_STATUS = 1
MARRIED_STATUS = 2
PROPACCEPT_STATUS = 3
LOOK_MARRIAGE_DESCR = TRUE
ITEM_WEDDING_RING = 2121
ITEM_ENGRAVED_WEDDING_RING = 10502

-- CHAT
CHAT_CHANNEL_ID_BEGIN = 153810

-- Scarlett Etzel
SCARLETT_MAY_TRANSFORM = 0
SCARLETT_MAY_DIE = 0

ropeSpots = {384, 418, 8278, 8592, 13189, 14436, 15635, 19518, 26019, 24621, 24622, 24623, 24624}
specialRopeSpots = { 14435 }

-- Impact Analyser
-- Every 2 seconds
updateInterval = 2
-- Healing
-- Global table to insert data
healingImpact = {}
-- Damage
-- Global table to insert data
damageImpact = {}

-- New prey => preyTimeLeft
nextPreyTime = {}

startupGlobalStorages = {
    GlobalStorage.TheAncientTombs.AshmunrahSwitchesGlobalStorage,
    GlobalStorage.TheAncientTombs.DiprathSwitchesGlobalStorage,
    GlobalStorage.TheAncientTombs.ThalasSwitchesGlobalStorage,
    GlobalStorage.HeroRathleton.FirstMachines,
    GlobalStorage.HeroRathleton.SecondMachines,
    GlobalStorage.HeroRathleton.ThirdMachines,
    GlobalStorage.HeroRathleton.DeepRunning,
    GlobalStorage.HeroRathleton.HorrorRunning,
    GlobalStorage.HeroRathleton.LavaRunning,
    GlobalStorage.HeroRathleton.MaxxenRunning,
    GlobalStorage.HeroRathleton.LavaCounter,
    GlobalStorage.HeroRathleton.FourthMachines,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal1,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal2,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal3,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal4,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal5,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal6,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal7,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal8,
    GlobalStorage.FerumbrasAscendant.Crystals.AllCrystals,
    GlobalStorage.FerumbrasAscendant.FerumbrasEssence,
    GlobalStorage.Feroxa.Active,
    GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats,
    GlobalStorage.FerumbrasAscendant.Elements.Active,
    GlobalStorage.FerumbrasAscendant.Elements.First,
    GlobalStorage.FerumbrasAscendant.Elements.Second,
    GlobalStorage.FerumbrasAscendant.Elements.Third,
    GlobalStorage.FerumbrasAscendant.Elements.Done
}

do -- Event Schedule rates
    local lootRate = Game.getEventSLoot()
    if lootRate ~= 100 then
        SCHEDULE_LOOT_RATE = lootRate
    end

    local expRate = Game.getEventSExp()
    if expRate ~= 100 then
        SCHEDULE_EXP_RATE = expRate
    end

    local skillRate = Game.getEventSSkill()
    if skillRate ~= 100 then
        SCHEDULE_SKILL_RATE = skillRate
    end
end

table.contains = function(array, value)
    for _, targetColumn in pairs(array) do
        if targetColumn == value then
            return true
        end
    end
    return false
end

string.split = function(str, sep)
    local res = {}
    for v in str:gmatch("([^" .. sep .. "]+)") do
        res[#res + 1] = v
    end
    return res
end

string.splitTrimmed = function(str, sep)
    local res = {}
    for v in str:gmatch("([^" .. sep .. "]+)") do
        res[#res + 1] = v:trim()
    end
    return res
end

string.trim = function(str)
    return str:match'^()%s*$' and '' or str:match'^%s*(.*%S)'
end

-- Stamina
if nextUseStaminaTime == nil then
    nextUseStaminaTime = {}
end

if nextUseStaminaPrey == nil then
    nextUseStaminaPrey = {}
end

if nextUseXpStamina == nil then
    nextUseXpStamina = {}
end

if lastItemImbuing == nil then
    lastItemImbuing = {}
end

if nextDelayPreyReroll == nil then
    nextDelayPreyReroll = {}
end

-- Delay potion
if not playerDelayPotion then
    playerDelayPotion = {}
end

function getExperienceForLevel(level)
    return math.floor((((level - 6) * level + 17) * level - 12) / 6) * 100
end
 
global.lua
Lua:
math.randomseed(os.time())
dofile('data/lib/lib.lua')

NOT_MOVEABLE_ACTION = 100
PARTY_PROTECTION = 0 -- Set to 0 to disable.
ADVANCED_SECURE_MODE = 0 -- Set to 0 to disable.

STORAGEVALUE_PROMOTION = 30018

SERVER_NAME = configManager.getString(configKeys.SERVER_NAME)

-- Bestiary charm
GLOBAL_CHARM_GUT = 0
GLOBAL_CHARM_SCAVENGE = 0

--WEATHER
weatherConfig = {
    groundEffect = CONST_ME_LOSEENERGY,
    fallEffect = CONST_ANI_SMALLICE,
    thunderEffect = configManager.getBoolean(configKeys.WEATHER_THUNDER),
    minDMG = 1,
    maxDMG = 5
}

-- Event Schedule
SCHEDULE_LOOT_RATE = 100
SCHEDULE_EXP_RATE = 100
SCHEDULE_SKILL_RATE = 100

-- MARRY
PROPOSED_STATUS = 1
MARRIED_STATUS = 2
PROPACCEPT_STATUS = 3
LOOK_MARRIAGE_DESCR = TRUE
ITEM_WEDDING_RING = 2121
ITEM_ENGRAVED_WEDDING_RING = 10502

-- CHAT
CHAT_CHANNEL_ID_BEGIN = 153810

-- Scarlett Etzel
SCARLETT_MAY_TRANSFORM = 0
SCARLETT_MAY_DIE = 0

ropeSpots = {384, 418, 8278, 8592, 13189, 14436, 15635, 19518, 26019, 24621, 24622, 24623, 24624}
specialRopeSpots = { 14435 }

-- Impact Analyser
-- Every 2 seconds
updateInterval = 2
-- Healing
-- Global table to insert data
healingImpact = {}
-- Damage
-- Global table to insert data
damageImpact = {}

-- New prey => preyTimeLeft
nextPreyTime = {}

startupGlobalStorages = {
    GlobalStorage.TheAncientTombs.AshmunrahSwitchesGlobalStorage,
    GlobalStorage.TheAncientTombs.DiprathSwitchesGlobalStorage,
    GlobalStorage.TheAncientTombs.ThalasSwitchesGlobalStorage,
    GlobalStorage.HeroRathleton.FirstMachines,
    GlobalStorage.HeroRathleton.SecondMachines,
    GlobalStorage.HeroRathleton.ThirdMachines,
    GlobalStorage.HeroRathleton.DeepRunning,
    GlobalStorage.HeroRathleton.HorrorRunning,
    GlobalStorage.HeroRathleton.LavaRunning,
    GlobalStorage.HeroRathleton.MaxxenRunning,
    GlobalStorage.HeroRathleton.LavaCounter,
    GlobalStorage.HeroRathleton.FourthMachines,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal1,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal2,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal3,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal4,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal5,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal6,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal7,
    GlobalStorage.FerumbrasAscendant.Crystals.Crystal8,
    GlobalStorage.FerumbrasAscendant.Crystals.AllCrystals,
    GlobalStorage.FerumbrasAscendant.FerumbrasEssence,
    GlobalStorage.Feroxa.Active,
    GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats,
    GlobalStorage.FerumbrasAscendant.Elements.Active,
    GlobalStorage.FerumbrasAscendant.Elements.First,
    GlobalStorage.FerumbrasAscendant.Elements.Second,
    GlobalStorage.FerumbrasAscendant.Elements.Third,
    GlobalStorage.FerumbrasAscendant.Elements.Done
}

do -- Event Schedule rates
    local lootRate = Game.getEventSLoot()
    if lootRate ~= 100 then
        SCHEDULE_LOOT_RATE = lootRate
    end

    local expRate = Game.getEventSExp()
    if expRate ~= 100 then
        SCHEDULE_EXP_RATE = expRate
    end

    local skillRate = Game.getEventSSkill()
    if skillRate ~= 100 then
        SCHEDULE_SKILL_RATE = skillRate
    end
end

table.contains = function(array, value)
    for _, targetColumn in pairs(array) do
        if targetColumn == value then
            return true
        end
    end
    return false
end

string.split = function(str, sep)
    local res = {}
    for v in str:gmatch("([^" .. sep .. "]+)") do
        res[#res + 1] = v
    end
    return res
end

string.splitTrimmed = function(str, sep)
    local res = {}
    for v in str:gmatch("([^" .. sep .. "]+)") do
        res[#res + 1] = v:trim()
    end
    return res
end

string.trim = function(str)
    return str:match'^()%s*$' and '' or str:match'^%s*(.*%S)'
end

-- Stamina
if nextUseStaminaTime == nil then
    nextUseStaminaTime = {}
end

if nextUseStaminaPrey == nil then
    nextUseStaminaPrey = {}
end

if nextUseXpStamina == nil then
    nextUseXpStamina = {}
end

if lastItemImbuing == nil then
    lastItemImbuing = {}
end

if nextDelayPreyReroll == nil then
    nextDelayPreyReroll = {}
end

-- Delay potion
if not playerDelayPotion then
    playerDelayPotion = {}
end

function getExperienceForLevel(level)
    return math.floor((((level - 6) * level + 17) * level - 12) / 6) * 100
end
I suppose otbr changed it. Idk then.
 
Back
Top