finish fully working stamina system for 56h with 2 hours of happy time for premium players

This commit is contained in:
ErikasKontenis
2019-11-13 19:22:15 +02:00
parent c01ff81bff
commit be93a8fa22
8 changed files with 90 additions and 5 deletions

View File

@@ -11,7 +11,10 @@ function onLogin(player)
loginStr = string.format("Your last visit on " .. configManager.getString(configKeys.SERVER_NAME) .. ": %s.", os.date("%a %b %d %X %Y", player:getLastLoginSaved()))
end
player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
-- Stamina
nextUseStaminaTime[player.uid] = 0
-- Promotion
if player:isPremium() then
if player:getVocation():getId() ~= 0 and player:getVocation():getId() < 5 and player:getStorageValue(30018) == 1 then

View File

@@ -0,0 +1,7 @@
function onLogout(player)
local playerId = player:getId()
if nextUseStaminaTime[playerId] then
nextUseStaminaTime[playerId] = nil
end
return true
end

View File

@@ -3,7 +3,10 @@ local maxDeathRecords = 50
function onDeath(player, corpse, killer, mostDamageKiller, unjustified, mostDamageUnjustified)
local playerId = player:getId()
if nextUseStaminaTime[playerId] then
nextUseStaminaTime[playerId] = nil
end
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You are dead.")
-- restart blessings values

View File

@@ -0,0 +1,27 @@
function onLogin(player)
if not configManager.getBoolean(configKeys.STAMINA_SYSTEM) then
return true
end
local lastLogout = player:getLastLogout()
local offlineTime = lastLogout ~= 0 and math.min(os.time() - lastLogout, 86400 * 21) or 0
offlineTime = offlineTime - 600
if offlineTime < 180 then
return true
end
local staminaMinutes = player:getStamina()
local maxNormalStaminaRegen = 3240 - math.min(3240, staminaMinutes)
local regainStaminaMinutes = offlineTime / 180
if regainStaminaMinutes > maxNormalStaminaRegen then
local happyHourStaminaRegen = (offlineTime - (maxNormalStaminaRegen * 180)) / 600
staminaMinutes = math.min(3360, math.max(3240, staminaMinutes) + happyHourStaminaRegen)
else
staminaMinutes = staminaMinutes + regainStaminaMinutes
end
player:setStamina(staminaMinutes)
return true
end