Skip to content

Stamina não recuperava no Training Monk #8

Description

@Iaecarvalho

otg-server-main\data\events\scripts\creature.lua

-- Increase Stamina when Attacking Trainer
local staminaBonus = {
    target = 'Training Monk',
    period = 360000, -- 6 minutos em milissegundos
    bonus = 1, -- gain stamina
    events = {}
}

local function addStamina(name)
    local player = Player(name)
    if not player then
        staminaBonus.events[name] = nil
        return
    end

    local target = player:getTarget()
    -- Se perdeu o target ou o target não é o Trainer, para o loop
    if not target or target:getName() ~= staminaBonus.target then
        staminaBonus.events[name] = nil
        return
    end

    local currentStamina = player:getStamina()
    if currentStamina < 2520 then -- Trava de segurança: Máximo de 42 horas
        player:setStamina(currentStamina + staminaBonus.bonus)
    end
    
    -- Agenda o próximo ciclo
    staminaBonus.events[name] = addEvent(addStamina, staminaBonus.period, name)
end

function Creature:onTargetCombat(target)
    -- SISTEMA DE STAMINA
    if self and self:isPlayer() then
        local name = self:getName()
        
        if target and target:getName() == staminaBonus.target then
            -- Se já não houver um evento rodando, inicia um novo
            if not staminaBonus.events[name] then
                staminaBonus.events[name] = addEvent(addStamina, staminaBonus.period, name)
            end
        else
            -- SE MUDOU DE ALVO OU PAROU DE ATACAR O TRAINER:
            -- Remove o evento pendente da memória do servidor imediatamente para não dar stamina infinita
            if staminaBonus.events[name] then
                stopEvent(staminaBonus.events[name])
                staminaBonus.events[name] = nil
            end
        end
    end

-- Daqui para baixo é o seu código original intocado
    if hasEvent.onTargetCombat then

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions