fog/core/functions.lua
2020-07-17 00:38:26 +02:00

369 lines
12 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--[[
Fate of the Gods - Adds roleplay mechanics.
Copyright © 2020 Hamlet and contributors.
Licensed under the EUPL, Version 1.2 or as soon they will be
approved by the European Commission subsequent versions of the
EUPL (the "Licence");
You may not use this work except in compliance with the Licence.
You may obtain a copy of the Licence at:
https://joinup.ec.europa.eu/software/page/eupl
https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32017D0863
Unless required by applicable law or agreed to in writing,
software distributed under the Licence is distributed on an
"AS IS" basis,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the Licence for the specific language governing permissions
and limitations under the Licence.
--]]
--
-- Functions
--
-- This is used to read values from the database
fog.fn_ReadDatabase = function(a_s_keyword)
local i_VALUE = fog.t_MOD_DATABASE:get_int(a_s_keyword)
return i_VALUE
end
-- This is used to check the experience level
fog.fn_LevelCheck = function(a_s_keyword)
local i_MODE = 2
local s_CLASS = ''
local i_EXPERIENCE_POINTS = fog.fn_ReadDatabase(a_s_keyword)
-- Constants
local I_CLASS_Z_UPPER_LIMIT, I_CLASS_Y_UPPER_LIMIT, I_CLASS_X_UPPER_LIMIT,
I_CLASS_W_UPPER_LIMIT, I_CLASS_V_UPPER_LIMIT, I_CLASS_U_UPPER_LIMIT,
I_CLASS_T_UPPER_LIMIT, I_CLASS_S_UPPER_LIMIT, I_CLASS_R_UPPER_LIMIT,
I_CLASS_Q_UPPER_LIMIT, I_CLASS_P_UPPER_LIMIT, I_CLASS_O_UPPER_LIMIT,
I_CLASS_N_UPPER_LIMIT, I_CLASS_M_UPPER_LIMIT, I_CLASS_L_UPPER_LIMIT,
I_CLASS_K_UPPER_LIMIT, I_CLASS_J_UPPER_LIMIT, I_CLASS_I_UPPER_LIMIT,
I_CLASS_H_UPPER_LIMIT, I_CLASS_G_UPPER_LIMIT, I_CLASS_F_UPPER_LIMIT,
I_CLASS_E_UPPER_LIMIT, I_CLASS_D_UPPER_LIMIT, I_CLASS_C_UPPER_LIMIT,
I_CLASS_B_UPPER_LIMIT
-- Class A: 75.025.000
if (i_MODE == 0) then
I_CLASS_Z_UPPER_LIMIT = 99
I_CLASS_Y_UPPER_LIMIT = 999
I_CLASS_X_UPPER_LIMIT = 1999
I_CLASS_W_UPPER_LIMIT = 2999
I_CLASS_V_UPPER_LIMIT = 4999
I_CLASS_U_UPPER_LIMIT = 7999
I_CLASS_T_UPPER_LIMIT = 12999
I_CLASS_S_UPPER_LIMIT = 20999
I_CLASS_R_UPPER_LIMIT = 33999
I_CLASS_Q_UPPER_LIMIT = 54999
I_CLASS_P_UPPER_LIMIT = 88999
I_CLASS_O_UPPER_LIMIT = 143999
I_CLASS_N_UPPER_LIMIT = 232999
I_CLASS_M_UPPER_LIMIT = 376999
I_CLASS_L_UPPER_LIMIT = 609999
I_CLASS_K_UPPER_LIMIT = 986999
I_CLASS_J_UPPER_LIMIT = 1596999
I_CLASS_I_UPPER_LIMIT = 2583999
I_CLASS_H_UPPER_LIMIT = 4180999
I_CLASS_G_UPPER_LIMIT = 6764999
I_CLASS_F_UPPER_LIMIT = 10945999
I_CLASS_E_UPPER_LIMIT = 17710999
I_CLASS_D_UPPER_LIMIT = 28656999
I_CLASS_C_UPPER_LIMIT = 46367999
I_CLASS_B_UPPER_LIMIT = 75024999
-- Class A: 1.677.721.600
elseif (i_MODE == 1) then
I_CLASS_Z_UPPER_LIMIT = 99
I_CLASS_Y_UPPER_LIMIT = 199
I_CLASS_X_UPPER_LIMIT = 399
I_CLASS_W_UPPER_LIMIT = 799
I_CLASS_V_UPPER_LIMIT = 1599
I_CLASS_U_UPPER_LIMIT = 3199
I_CLASS_T_UPPER_LIMIT = 6399
I_CLASS_S_UPPER_LIMIT = 12799
I_CLASS_R_UPPER_LIMIT = 25599
I_CLASS_Q_UPPER_LIMIT = 51199
I_CLASS_P_UPPER_LIMIT = 102399
I_CLASS_O_UPPER_LIMIT = 204799
I_CLASS_N_UPPER_LIMIT = 409599
I_CLASS_M_UPPER_LIMIT = 819199
I_CLASS_L_UPPER_LIMIT = 1638399
I_CLASS_K_UPPER_LIMIT = 3276799
I_CLASS_J_UPPER_LIMIT = 6553599
I_CLASS_I_UPPER_LIMIT = 13107199
I_CLASS_H_UPPER_LIMIT = 26214399
I_CLASS_G_UPPER_LIMIT = 52428799
I_CLASS_F_UPPER_LIMIT = 104857599
I_CLASS_E_UPPER_LIMIT = 209715199
I_CLASS_D_UPPER_LIMIT = 419430399
I_CLASS_C_UPPER_LIMIT = 838860799
I_CLASS_B_UPPER_LIMIT = 1677721599
-- Class A: 9.227.466
elseif (i_MODE == 2) then
I_CLASS_Z_UPPER_LIMIT = 89
I_CLASS_Y_UPPER_LIMIT = 144
I_CLASS_X_UPPER_LIMIT = 233
I_CLASS_W_UPPER_LIMIT = 377
I_CLASS_V_UPPER_LIMIT = 610
I_CLASS_U_UPPER_LIMIT = 987
I_CLASS_T_UPPER_LIMIT = 1597
I_CLASS_S_UPPER_LIMIT = 2584
I_CLASS_R_UPPER_LIMIT = 4181
I_CLASS_Q_UPPER_LIMIT = 6765
I_CLASS_P_UPPER_LIMIT = 10946
I_CLASS_O_UPPER_LIMIT = 17711
I_CLASS_N_UPPER_LIMIT = 28657
I_CLASS_M_UPPER_LIMIT = 46368
I_CLASS_L_UPPER_LIMIT = 75025
I_CLASS_K_UPPER_LIMIT = 121393
I_CLASS_J_UPPER_LIMIT = 196418
I_CLASS_I_UPPER_LIMIT = 317811
I_CLASS_H_UPPER_LIMIT = 514229
I_CLASS_G_UPPER_LIMIT = 832040
I_CLASS_F_UPPER_LIMIT = 1346269
I_CLASS_E_UPPER_LIMIT = 2178309
I_CLASS_D_UPPER_LIMIT = 3524578
I_CLASS_C_UPPER_LIMIT = 5702887
I_CLASS_B_UPPER_LIMIT = 9227465
end
if (i_EXPERIENCE_POINTS <= I_CLASS_Z_UPPER_LIMIT) then
s_CLASS = fog.l10n('class ') .. '"Z"' .. ' - ' ..
((I_CLASS_Z_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_Z_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_Y_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"Y"' .. ' - ' ..
((I_CLASS_Y_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_Y_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_X_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"X"' .. ' - ' ..
((I_CLASS_X_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_X_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_W_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"W"' .. ' - ' ..
((I_CLASS_W_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_W_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_V_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"V"' .. ' - ' ..
((I_CLASS_V_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_V_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_U_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"U"' .. ' - ' ..
((I_CLASS_U_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_U_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_T_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"T"' .. ' - ' ..
((I_CLASS_T_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_T_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_S_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"S"' .. ' - ' ..
((I_CLASS_S_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_S_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_R_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"R"' .. ' - ' ..
((I_CLASS_R_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_R_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_Q_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"Q"' .. ' - ' ..
((I_CLASS_Q_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_Q_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_P_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"P"' .. ' - ' ..
((I_CLASS_P_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_P_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_O_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"O"' .. ' - ' ..
((I_CLASS_O_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_O_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_N_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"N"' .. ' - ' ..
((I_CLASS_N_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_N_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_M_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"M"' .. ' - ' ..
((I_CLASS_M_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_M_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_L_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"L"' .. ' - ' ..
((I_CLASS_L_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_L_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_K_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"K"' .. ' - ' ..
((I_CLASS_K_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_K_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_J_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"J"' .. ' - ' ..
((I_CLASS_J_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_J_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_I_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"I"' .. ' - ' ..
((I_CLASS_I_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_I_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_H_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"H"' .. ' - ' ..
((I_CLASS_H_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_H_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_G_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"G"' .. ' - ' ..
((I_CLASS_G_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_G_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_F_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"F"' .. ' - ' ..
((I_CLASS_F_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_F_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_E_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"E"' .. ' - ' ..
((I_CLASS_E_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_E_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_D_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"D"' .. ' - ' ..
((I_CLASS_D_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_D_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_C_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"C"' .. ' - ' ..
((I_CLASS_C_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
elseif ((i_EXPERIENCE_POINTS > I_CLASS_C_UPPER_LIMIT)
and (i_EXPERIENCE_POINTS <= I_CLASS_B_UPPER_LIMIT))
then
s_CLASS = fog.l10n('class ') .. '"B"' .. ' - ' ..
((I_CLASS_B_UPPER_LIMIT + 1) - i_EXPERIENCE_POINTS) ..
fog.l10n('xp to the next class.')
else
s_CLASS = fog.l10n('class ') .. '"A"'
end
return s_CLASS
end
-- This is used to update the character's sheet inventory tab
fog.fn_FogMTGstats = function(a_s_player)
-- Constants
local s_LEVEL_AXE = fog.l10n('Axe: ');
local s_LEVEL_HOE = fog.l10n('Hoe: ');
local s_LEVEL_PICK = fog.l10n('Pick: ');
local s_LEVEL_SHOVEL = fog.l10n('Shovel: ');
local s_LEVEL_SWORD = fog.l10n('Sword: ');
-- Variables
local s_formspecText = '';
local s_keyword = a_s_player:get_player_name() .. '_';
local i_levelAxe, i_levelHoe, i_levelPick, i_levelShovel, i_levelSword
i_levelAxe = fog.fn_LevelCheck(s_keyword .. 'i_xp_axe');
i_levelHoe = fog.fn_LevelCheck(s_keyword .. 'i_xp_hoe');
i_levelPick = fog.fn_LevelCheck(s_keyword .. 'i_xp_pick');
i_levelShovel = fog.fn_LevelCheck(s_keyword .. 'i_xp_shovel');
i_levelSword = fog.fn_LevelCheck(s_keyword .. 'i_xp_sword');
s_formspecText = s_LEVEL_AXE .. i_levelAxe .. ',' ..
s_LEVEL_HOE .. i_levelHoe .. ',' ..
s_LEVEL_PICK .. i_levelPick .. ',' ..
s_LEVEL_SHOVEL .. i_levelShovel .. ',' ..
s_LEVEL_SWORD .. i_levelSword
return s_formspecText
end
-- This is used to register the charaxter's sheet inventory tab
sfinv.register_page('fog:charsheet', {
title = fog.l10n('Character\'s sheet'),
get = function(self, player, context)
local s_formspecString = fog.fn_FogMTGstats(player)
return sfinv.make_formspec(player, context,
'textlist[0,0;7.8,4.5;;' .. s_formspecString .. ']', true)
end
})