mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-10-13 22:34:53 +02:00
finish fully working stamina system for 56h with 2 hours of happy time for premium players
This commit is contained in:
@@ -135,6 +135,33 @@ local soulCondition = Condition(CONDITION_SOUL, CONDITIONID_DEFAULT)
|
||||
soulCondition:setTicks(4 * 60 * 1000)
|
||||
soulCondition:setParameter(CONDITION_PARAM_SOULGAIN, 1)
|
||||
|
||||
local function useStamina(player)
|
||||
local staminaMinutes = player:getStamina()
|
||||
if staminaMinutes == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local playerId = player:getId()
|
||||
local currentTime = os.time()
|
||||
local timePassed = currentTime - nextUseStaminaTime[playerId]
|
||||
if timePassed <= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
if timePassed > 60 then
|
||||
if staminaMinutes > 2 then
|
||||
staminaMinutes = staminaMinutes - 2
|
||||
else
|
||||
staminaMinutes = 0
|
||||
end
|
||||
nextUseStaminaTime[playerId] = currentTime + 120
|
||||
else
|
||||
staminaMinutes = staminaMinutes - 1
|
||||
nextUseStaminaTime[playerId] = currentTime + 60
|
||||
end
|
||||
player:setStamina(staminaMinutes)
|
||||
end
|
||||
|
||||
function Player:onGainExperience(source, exp, rawExp)
|
||||
if not source or source:isPlayer() then
|
||||
return exp
|
||||
@@ -149,7 +176,19 @@ function Player:onGainExperience(source, exp, rawExp)
|
||||
|
||||
-- Apply experience stage multiplier
|
||||
exp = exp * Game.getExperienceStage(self:getLevel())
|
||||
|
||||
-- Stamina modifier
|
||||
if configManager.getBoolean(configKeys.STAMINA_SYSTEM) then
|
||||
useStamina(self)
|
||||
|
||||
local staminaMinutes = self:getStamina()
|
||||
if staminaMinutes > 2400 and self:isPremium() then
|
||||
exp = exp * 1.5
|
||||
elseif staminaMinutes <= 840 then
|
||||
exp = exp * 0.5
|
||||
end
|
||||
end
|
||||
|
||||
return exp
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user